diff options
Diffstat (limited to 'drivers/peci/peci-core.c')
-rw-r--r-- | drivers/peci/peci-core.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/peci/peci-core.c b/drivers/peci/peci-core.c index 08bf1a759324..b3328d6d1c6f 100644 --- a/drivers/peci/peci-core.c +++ b/drivers/peci/peci-core.c @@ -1743,7 +1743,7 @@ static struct peci_client *peci_of_register_device(struct peci_adapter *adapter, { struct peci_board_info info = {}; struct peci_client *client; - u32 addr; + u32 addr, domain_id; int ret; dev_dbg(&adapter->dev, "register %pOF\n", node); @@ -1757,8 +1757,16 @@ static struct peci_client *peci_of_register_device(struct peci_adapter *adapter, ret = peci_check_addr_validity(addr); if (ret) return ERR_PTR(ret); + + ret = of_property_read_u32(node, "domain", &domain_id); + if (ret || peci_check_domain_validity(domain_id)) { + dev_dbg(&adapter->dev, "invalid domain on %pOF, fallback to domain 0\n", node); + domain_id = 0; + } + info.addr = addr; info.of_node = node; + info.domain_id = domain_id; client = peci_new_device(adapter, &info); if (!client) |