[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <b3e905af-639a-4390-8fb7-50a947bf4fcf@oss.qualcomm.com>
Date: Thu, 23 Oct 2025 14:05:39 +0530
From: Kumari Pallavi <kumari.pallavi@....qualcomm.com>
To: Krzysztof Kozlowski <krzk@...nel.org>, kpallavi@....qualcomm.com,
srini@...nel.org, amahesh@....qualcomm.com, arnd@...db.de,
gregkh@...uxfoundation.org
Cc: quic_bkumar@...cinc.com, ekansh.gupta@....qualcomm.com,
linux-kernel@...r.kernel.org, quic_chennak@...cinc.com,
dri-devel@...ts.freedesktop.org, linux-arm-msm@...r.kernel.org,
jingyi.wang@....qualcomm.com, aiqun.yu@....qualcomm.com,
ktadakam@....qualcomm.com
Subject: Re: [PATCH v2 2/3] misc: fastrpc: Add support for new DSP IOVA
formatting
On 10/18/2025 10:54 PM, Krzysztof Kozlowski wrote:
> On 15/10/2025 06:57, Kumari Pallavi wrote:
>> static int fastrpc_rpmsg_probe(struct rpmsg_device *rpdev)
>> {
>> struct device *rdev = &rpdev->dev;
>> @@ -2291,6 +2319,22 @@ static int fastrpc_rpmsg_probe(struct rpmsg_device *rpdev)
>> const char *domain;
>> bool secure_dsp;
>> unsigned int vmids[FASTRPC_MAX_VMIDS];
>> + struct device_node *root;
>> + const struct of_device_id *match;
>> + const struct fastrpc_soc_data *soc_data = NULL;
>> +
>> + root = of_find_node_by_path("/");
>> + if (!root)
>> + return -ENODEV;
>> +
>> + match = of_match_node(qcom_soc_match_table, root);
>
> This is really odd way of doing things. You want to check machine, not
> some node. Use proper API for that.
>
> OTOH, I don't understand why you are checking machine in the first
> place. If your device is different, then please follow writing bindings
> - it explains exactly this case here.
>
On the Kaanapali SoC, enabling ADSP and CDSP functionality requires new
DSP IOVA formatting and hardware-specific configuration. Going forward,
SoC will support the updated IOVA format.
To handle this, we referred to the implementation in
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/tree/drivers/soc/qcom/qcom_pd_mapper.c,
which aligns well with the requirements and serves as a suitable
reference for our use case.
If there are alternative approaches or suggestions for handling this
more effectively, we’re happy to discuss and consider them.
>> + of_node_put(root);
>> + if (!match || !match->data) {
>> + soc_data = &default_soc_data;
>> + dev_dbg(rdev, "no compatible SoC found at root node\n");
>> + } else {
>> + soc_data = match->data;
>> + }
>>
>
>
> Best regards,
> Krzysztof
Thanks,
Pallavi
Powered by blists - more mailing lists