On Thu, Sep 21, 2023 at 10:27:36AM +0800, lihuisong (C) wrote:I understand you.
在 2023/9/20 22:11, Sudeep Holla 写道:OK
On Wed, Sep 20, 2023 at 02:47:03PM +0800, Huisong Li wrote:Yeah, it is just validation now. we want to plan this driver can support
Currently, HCCS driver directly uses Generic Communications Channel SharedIs this the only use of the PCC type information you have or do you plan to
Memory Region which is used in type0/1/2 to communicate with platform,
but actually doesn't support type3/4/5.
So this patch adds the check for PCC subspace type.
Signed-off-by: Huisong Li <lihuisong@xxxxxxxxxx>
---
drivers/soc/hisilicon/kunpeng_hccs.c | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/drivers/soc/hisilicon/kunpeng_hccs.c b/drivers/soc/hisilicon/kunpeng_hccs.c
index f3810d9d1caa..4ba3bfd45a01 100644
--- a/drivers/soc/hisilicon/kunpeng_hccs.c
+++ b/drivers/soc/hisilicon/kunpeng_hccs.c
@@ -174,6 +174,19 @@ static int hccs_register_pcc_channel(struct hccs_dev *hdev)
return rc;
}
+static int hccs_check_pcc_info(struct hccs_dev *hdev)
+{
+ struct pcc_mbox_chan *pcc_chan = hdev->cl_info.pcc_chan;
+
+ if (pcc_chan->type >= ACPI_PCCT_TYPE_EXT_PCC_MASTER_SUBSPACE) {
+ dev_err(hdev->dev, "unsupport for subspace type%u.\n",
+ pcc_chan->type);
+ return -EOPNOTSUPP;
+ }
use it for something other than the validation.
more types.
I don't think it is a good idea to just export raw ACPI PCC type to theJust for sake of argument, I can say all users of PCC must then do theIf export PCC type, it is good for the user of PCC to be more universal and
similar validation. I don't know where to draw the line here.
more compatible.
client drivers. What if the driver in the future needs to work on a DTIt's also an alternative path.
platform as well and need to work with non-PCC mailbox channel ?
Yeah, it is great that the PCC client drivers don't need to know which PCC type is used.
Also pushing the client PCC drivers to have more ACPI knowledge to understand
what each type means is also something I prefer to avoid. The real information
you want is whether this is an initiator(previously known master) channel ornot just for this.
responder(previously known as slave) channel. It boils down to unidirectional
vs bidirectional and what direction in bidirectional channels.
Maybe it is ok.
It would be good if mbox framework can be taught that, or atleast make an
attempt to see what people think about it. Just patching it the way you are
proposing is just going to hide real issue here.
Agreed, but refer above for my concern on the solution proposed.Ideally I would expect the driver to make this transparent and give errorI understand you.
during transmit if not supported.
I just check this type only once during the initializing phase.
Otherwise, every once need to verify it when send PCC command.
Thanks for agreeing.The driver must be able to work with different PCC type to support varietyAgree more with you.
of platforms TBH. What is the issue exactly here ? Is this to prevent the
IMO, the user of PCC has the ability to support variety of platforms if they
can get PCC type.
In this case, to prevent type 4 is necessary if driver cannot act as a
slave.
on the other hand, If one driver acts as a slave, platform must supply slave
subspace for them.
use of Type 4 ? I think we must do something better but I don't know whatYes, we can try to do it better. I have a concern, like below.
that is yet.
You know that the use of PCC can use polling mode and interrupt mode toAgain this must be addressed at mailbox API level.
communicate with platform.
I'm not sure if the obtaining of the polling mode and interrupt mode is an
issue to prevent driver to be more universal.
please see the above reply😁
But this driver can know if they support interrupt mode based on structAgreed, I was about to ask the same.
mbox_chan::struct mbox_controller::txdone_irq after requesting PCC channel.
Because I'm not sure it's a better way.Again agreed.
You know that drivers used interrupt mode need to fill the rx_callbackI am not sure if I followed all the details here. May be a rough hack helps
function into mbx_client when register PCC channel.
And drivers used polling mode don't do it.
If we use this way, drivers that both support the two mode have to modify
the rx_callback pointer after requesting PCC channel.
to understand what you are proposing ? Ofcourse not for merging, just to
understand the issue better.
--
Regards,
Sudeep
.