Currently, HCCS driver directly uses Generic Communications Channel Shared 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; + } + + return 0; +} + static int hccs_check_chan_cmd_complete(struct hccs_dev *hdev) { struct hccs_mbox_client_info *cl_info = &hdev->cl_info; @@ -1224,6 +1237,10 @@ static int hccs_probe(struct platform_device *pdev) if (rc) return rc; + rc = hccs_check_pcc_info(hdev); + if (rc) + goto unregister_pcc_chan; + rc = hccs_get_dev_caps(hdev); if (rc) goto unregister_pcc_chan; -- 2.33.0