diff options
author | Iwona Winiarska <iwona.winiarska@intel.com> | 2022-05-09 21:18:57 +0300 |
---|---|---|
committer | Iwona Winiarska <iwona.winiarska@intel.com> | 2022-05-23 15:06:36 +0300 |
commit | 5978bb7d4ef834345327153eb101d8de8baa14b1 (patch) | |
tree | 2c8d24e08001b418d583895197118c71747e788f | |
parent | 81ccbc296937c00f183c04bad033d83edd6a6524 (diff) | |
download | linux-5978bb7d4ef834345327153eb101d8de8baa14b1.tar.xz |
peci: core: Use "domain" of-property
peci_client can be created dynamically using sysfs API or during build
time using DTS.
Let's use extended DTS properties to create peci_client corresponding to
specific Domain ID.
Signed-off-by: Iwona Winiarska <iwona.winiarska@intel.com>
-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) |