summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorIwona Winiarska <iwona.winiarska@intel.com>2022-05-09 21:18:57 +0300
committerIwona Winiarska <iwona.winiarska@intel.com>2022-05-23 15:06:36 +0300
commit5978bb7d4ef834345327153eb101d8de8baa14b1 (patch)
tree2c8d24e08001b418d583895197118c71747e788f /drivers
parent81ccbc296937c00f183c04bad033d83edd6a6524 (diff)
downloadlinux-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>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/peci/peci-core.c10
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)