linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 00/11] firmware: arm_scmi: Add support for multiple device per protocol
@ 2019-12-18 11:17 Sudeep Holla
  2019-12-18 11:17 ` [PATCH v2 01/11] " Sudeep Holla
                   ` (10 more replies)
  0 siblings, 11 replies; 17+ messages in thread
From: Sudeep Holla @ 2019-12-18 11:17 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel; +Cc: Sudeep Holla, Cristian Marussi

Currently only one scmi device is created for each protocol enumerated.
However, there is requirement to make use of some procotols by multiple
kernel subsystems/frameworks. One such example is SCMI PERFORMANCE
protocol which can be used by both cpufreq and devfreq drivers.
Similarly, SENSOR protocol may be used by either hwmon or iio subsystems,
and POWER protocol may be used by genpd and regulator drivers.

This series adds support for multiple device per protocol using scmi device
name if one is available. It also updates existing drivers to add
scmi device names to driver id tables.

Regards,
Sudeep

v1[1]->v2:
	- Dropped all the changes that mixes up the device specific init
	  with the protocol
	- Used idr_replace to skip protocol initialisation as suggested
	- Added collected reviewed/acked-by
	- Reworded hwmon changes to reflect that hwmon/iio drivers will
	  be mutually exclusive and hwmon needs to be removed if IIO
	  support is added

[1] https://lore.kernel.org/lkml/20191210145345.11616-1-sudeep.holla@arm.com/

Sudeep Holla (11):
  firmware: arm_scmi: Add support for multiple device per protocol
  firmware: arm_scmi: Skip scmi mbox channel setup for addtional devices
  firmware: arm_scmi: Add names to scmi devices created
  firmware: arm_scmi: Add versions and identifier attributes using dev_groups
  firmware: arm_scmi: Match scmi device by both name and protocol id
  firmware: arm_scmi: Stash version in protocol init functions
  firmware: arm_scmi: Skip protocol initialisation for additional devices
  clk: scmi: Match scmi device by both name and protocol id
  cpufreq: scmi: Match scmi device by both name and protocol id
  hwmon: (scmi-hwmon) Match scmi device by both name and protocol id
  reset: reset-scmi: Match scmi device by both name and protocol id

 drivers/clk/clk-scmi.c                     |  2 +-
 drivers/cpufreq/scmi-cpufreq.c             |  2 +-
 drivers/firmware/arm_scmi/bus.c            | 29 ++++++-
 drivers/firmware/arm_scmi/clock.c          |  2 +
 drivers/firmware/arm_scmi/driver.c         | 92 +++++++++++++++++++++-
 drivers/firmware/arm_scmi/perf.c           |  2 +
 drivers/firmware/arm_scmi/power.c          |  2 +
 drivers/firmware/arm_scmi/reset.c          |  2 +
 drivers/firmware/arm_scmi/scmi_pm_domain.c |  2 +-
 drivers/firmware/arm_scmi/sensors.c        |  2 +
 drivers/hwmon/scmi-hwmon.c                 |  2 +-
 drivers/reset/reset-scmi.c                 |  2 +-
 include/linux/scmi_protocol.h              |  5 +-
 13 files changed, 134 insertions(+), 12 deletions(-)

-- 
2.17.1


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH v2 01/11] firmware: arm_scmi: Add support for multiple device per protocol
  2019-12-18 11:17 [PATCH v2 00/11] firmware: arm_scmi: Add support for multiple device per protocol Sudeep Holla
@ 2019-12-18 11:17 ` Sudeep Holla
  2019-12-18 11:17 ` [PATCH v2 02/11] firmware: arm_scmi: Skip scmi mbox channel setup for addtional devices Sudeep Holla
                   ` (9 subsequent siblings)
  10 siblings, 0 replies; 17+ messages in thread
From: Sudeep Holla @ 2019-12-18 11:17 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel; +Cc: Sudeep Holla, Cristian Marussi

Currently only one scmi device is created for each protocol enumerated.
However, there is requirement to make use of some procotols by multiple
kernel subsystems/frameworks. One such example is SCMI PERFORMANCE
protocol which can be used by both cpufreq and devfreq drivers.
Similarly, SENSOR protocol may be used by hwmon and iio subsystems,
and POWER protocol may be used by genpd and regulator drivers.

In order to achieve that, let us extend the scmi bus to match based
not only protocol id but also the scmi device name if one is available.

Reviewed-by: Cristian Marussi <cristian.marussi@arm.com>
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
---
 drivers/firmware/arm_scmi/bus.c    | 20 +++++++++++++++++---
 drivers/firmware/arm_scmi/driver.c |  6 +++---
 include/linux/scmi_protocol.h      |  5 ++++-
 3 files changed, 24 insertions(+), 7 deletions(-)

diff --git a/drivers/firmware/arm_scmi/bus.c b/drivers/firmware/arm_scmi/bus.c
index 7a30952b463d..3714e6307b05 100644
--- a/drivers/firmware/arm_scmi/bus.c
+++ b/drivers/firmware/arm_scmi/bus.c
@@ -28,8 +28,12 @@ scmi_dev_match_id(struct scmi_device *scmi_dev, struct scmi_driver *scmi_drv)
 		return NULL;
 
 	for (; id->protocol_id; id++)
-		if (id->protocol_id == scmi_dev->protocol_id)
-			return id;
+		if (id->protocol_id == scmi_dev->protocol_id) {
+			if (!id->name)
+				return id;
+			else if (!strcmp(id->name, scmi_dev->name))
+				return id;
+		}
 
 	return NULL;
 }
@@ -125,7 +129,8 @@ static void scmi_device_release(struct device *dev)
 }
 
 struct scmi_device *
-scmi_device_create(struct device_node *np, struct device *parent, int protocol)
+scmi_device_create(struct device_node *np, struct device *parent, int protocol,
+		   const char *name)
 {
 	int id, retval;
 	struct scmi_device *scmi_dev;
@@ -134,8 +139,15 @@ scmi_device_create(struct device_node *np, struct device *parent, int protocol)
 	if (!scmi_dev)
 		return NULL;
 
+	scmi_dev->name = kstrdup_const(name ?: "unknown", GFP_KERNEL);
+	if (!scmi_dev->name) {
+		kfree(scmi_dev);
+		return NULL;
+	}
+
 	id = ida_simple_get(&scmi_bus_id, 1, 0, GFP_KERNEL);
 	if (id < 0) {
+		kfree_const(scmi_dev->name);
 		kfree(scmi_dev);
 		return NULL;
 	}
@@ -154,6 +166,7 @@ scmi_device_create(struct device_node *np, struct device *parent, int protocol)
 
 	return scmi_dev;
 put_dev:
+	kfree_const(scmi_dev->name);
 	put_device(&scmi_dev->dev);
 	ida_simple_remove(&scmi_bus_id, id);
 	return NULL;
@@ -161,6 +174,7 @@ scmi_device_create(struct device_node *np, struct device *parent, int protocol)
 
 void scmi_device_destroy(struct scmi_device *scmi_dev)
 {
+	kfree_const(scmi_dev->name);
 	scmi_handle_put(scmi_dev->handle);
 	ida_simple_remove(&scmi_bus_id, scmi_dev->id);
 	device_unregister(&scmi_dev->dev);
diff --git a/drivers/firmware/arm_scmi/driver.c b/drivers/firmware/arm_scmi/driver.c
index 3eb0382491ce..dee7ce3bd815 100644
--- a/drivers/firmware/arm_scmi/driver.c
+++ b/drivers/firmware/arm_scmi/driver.c
@@ -803,11 +803,11 @@ scmi_mbox_txrx_setup(struct scmi_info *info, struct device *dev, int prot_id)
 
 static inline void
 scmi_create_protocol_device(struct device_node *np, struct scmi_info *info,
-			    int prot_id)
+			    int prot_id, const char *name)
 {
 	struct scmi_device *sdev;
 
-	sdev = scmi_device_create(np, info->dev, prot_id);
+	sdev = scmi_device_create(np, info->dev, prot_id, name);
 	if (!sdev) {
 		dev_err(info->dev, "failed to create %d protocol device\n",
 			prot_id);
@@ -892,7 +892,7 @@ static int scmi_probe(struct platform_device *pdev)
 			continue;
 		}
 
-		scmi_create_protocol_device(child, info, prot_id);
+		scmi_create_protocol_device(child, info, prot_id, NULL);
 	}
 
 	return 0;
diff --git a/include/linux/scmi_protocol.h b/include/linux/scmi_protocol.h
index 881fea47c83d..5c873a59b387 100644
--- a/include/linux/scmi_protocol.h
+++ b/include/linux/scmi_protocol.h
@@ -257,6 +257,7 @@ enum scmi_std_protocol {
 struct scmi_device {
 	u32 id;
 	u8 protocol_id;
+	const char *name;
 	struct device dev;
 	struct scmi_handle *handle;
 };
@@ -264,11 +265,13 @@ struct scmi_device {
 #define to_scmi_dev(d) container_of(d, struct scmi_device, dev)
 
 struct scmi_device *
-scmi_device_create(struct device_node *np, struct device *parent, int protocol);
+scmi_device_create(struct device_node *np, struct device *parent, int protocol,
+		   const char *name);
 void scmi_device_destroy(struct scmi_device *scmi_dev);
 
 struct scmi_device_id {
 	u8 protocol_id;
+	const char *name;
 };
 
 struct scmi_driver {
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v2 02/11] firmware: arm_scmi: Skip scmi mbox channel setup for addtional devices
  2019-12-18 11:17 [PATCH v2 00/11] firmware: arm_scmi: Add support for multiple device per protocol Sudeep Holla
  2019-12-18 11:17 ` [PATCH v2 01/11] " Sudeep Holla
@ 2019-12-18 11:17 ` Sudeep Holla
  2019-12-18 11:17 ` [PATCH v2 03/11] firmware: arm_scmi: Add names to scmi devices created Sudeep Holla
                   ` (8 subsequent siblings)
  10 siblings, 0 replies; 17+ messages in thread
From: Sudeep Holla @ 2019-12-18 11:17 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel; +Cc: Sudeep Holla, Cristian Marussi

Now that the scmi bus supports adding multiple devices per protocol,
and since scmi_create_protocol_device calls scmi_mbox_chan_setup,
we must avoid allocating and initialising the mbox channel if it is
already initialised.

Reviewed-by: Cristian Marussi <cristian.marussi@arm.com>
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
---
 drivers/firmware/arm_scmi/driver.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/firmware/arm_scmi/driver.c b/drivers/firmware/arm_scmi/driver.c
index dee7ce3bd815..2952fcd8dd8a 100644
--- a/drivers/firmware/arm_scmi/driver.c
+++ b/drivers/firmware/arm_scmi/driver.c
@@ -735,6 +735,11 @@ static int scmi_mbox_chan_setup(struct scmi_info *info, struct device *dev,
 	idx = tx ? 0 : 1;
 	idr = tx ? &info->tx_idr : &info->rx_idr;
 
+	/* check if already allocated, used for multiple device per protocol */
+	cinfo = idr_find(idr, prot_id);
+	if (cinfo)
+		return 0;
+
 	if (scmi_mailbox_check(np, idx)) {
 		cinfo = idr_find(idr, SCMI_PROTOCOL_BASE);
 		if (unlikely(!cinfo)) /* Possible only if platform has no Rx */
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v2 03/11] firmware: arm_scmi: Add names to scmi devices created
  2019-12-18 11:17 [PATCH v2 00/11] firmware: arm_scmi: Add support for multiple device per protocol Sudeep Holla
  2019-12-18 11:17 ` [PATCH v2 01/11] " Sudeep Holla
  2019-12-18 11:17 ` [PATCH v2 02/11] firmware: arm_scmi: Skip scmi mbox channel setup for addtional devices Sudeep Holla
@ 2019-12-18 11:17 ` Sudeep Holla
  2019-12-18 11:17 ` [PATCH v2 04/11] firmware: arm_scmi: Add versions and identifier attributes using dev_groups Sudeep Holla
                   ` (7 subsequent siblings)
  10 siblings, 0 replies; 17+ messages in thread
From: Sudeep Holla @ 2019-12-18 11:17 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel; +Cc: Sudeep Holla, Cristian Marussi

Now that scmi bus provides option to create named scmi device, let us
create the default devices with names. This will help to add names for
matching to respective drivers and eventually to add multiple devices
and drivers per protocol.

Reviewed-by: Cristian Marussi <cristian.marussi@arm.com>
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
---
 drivers/firmware/arm_scmi/driver.c | 36 +++++++++++++++++++++++++++++-
 1 file changed, 35 insertions(+), 1 deletion(-)

diff --git a/drivers/firmware/arm_scmi/driver.c b/drivers/firmware/arm_scmi/driver.c
index 2952fcd8dd8a..0bbdc7c9eb0f 100644
--- a/drivers/firmware/arm_scmi/driver.c
+++ b/drivers/firmware/arm_scmi/driver.c
@@ -829,6 +829,40 @@ scmi_create_protocol_device(struct device_node *np, struct scmi_info *info,
 	scmi_set_handle(sdev);
 }
 
+#define MAX_SCMI_DEV_PER_PROTOCOL	2
+struct scmi_prot_devnames {
+	int protocol_id;
+	char *names[MAX_SCMI_DEV_PER_PROTOCOL];
+};
+
+static struct scmi_prot_devnames devnames[] = {
+	{ SCMI_PROTOCOL_POWER,  { "genpd" },},
+	{ SCMI_PROTOCOL_PERF,   { "cpufreq" },},
+	{ SCMI_PROTOCOL_CLOCK,  { "clocks" },},
+	{ SCMI_PROTOCOL_SENSOR, { "hwmon" },},
+	{ SCMI_PROTOCOL_RESET,  { "reset" },},
+};
+
+static inline void
+scmi_create_protocol_devices(struct device_node *np, struct scmi_info *info,
+			     int prot_id)
+{
+	int loop, cnt;
+
+	for (loop = 0; loop < ARRAY_SIZE(devnames); loop++) {
+		if (devnames[loop].protocol_id != prot_id)
+			continue;
+
+		for (cnt = 0; cnt < ARRAY_SIZE(devnames[loop].names); cnt++) {
+			const char *name = devnames[loop].names[cnt];
+
+			if (name)
+				scmi_create_protocol_device(np, info, prot_id,
+							    name);
+		}
+	}
+}
+
 static int scmi_probe(struct platform_device *pdev)
 {
 	int ret;
@@ -897,7 +931,7 @@ static int scmi_probe(struct platform_device *pdev)
 			continue;
 		}
 
-		scmi_create_protocol_device(child, info, prot_id, NULL);
+		scmi_create_protocol_devices(child, info, prot_id);
 	}
 
 	return 0;
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v2 04/11] firmware: arm_scmi: Add versions and identifier attributes using dev_groups
  2019-12-18 11:17 [PATCH v2 00/11] firmware: arm_scmi: Add support for multiple device per protocol Sudeep Holla
                   ` (2 preceding siblings ...)
  2019-12-18 11:17 ` [PATCH v2 03/11] firmware: arm_scmi: Add names to scmi devices created Sudeep Holla
@ 2019-12-18 11:17 ` Sudeep Holla
  2019-12-18 11:17 ` [PATCH v2 05/11] firmware: arm_scmi: Match scmi device by both name and protocol id Sudeep Holla
                   ` (6 subsequent siblings)
  10 siblings, 0 replies; 17+ messages in thread
From: Sudeep Holla @ 2019-12-18 11:17 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel; +Cc: Sudeep Holla, Cristian Marussi

Platform drivers now have the option to have the platform core create
and remove any needed sysfs attribute files. Using the same, let's add
the scmi firmware and protocol version attributes as well as vendor and
sub-vendor identifiers to sysfs.

It helps to identify the firmware details from the sysfs entries similar
to ARM SCPI implementation.

Reviewed-by: Cristian Marussi <cristian.marussi@arm.com>
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
---
 drivers/firmware/arm_scmi/driver.c | 47 ++++++++++++++++++++++++++++++
 1 file changed, 47 insertions(+)

diff --git a/drivers/firmware/arm_scmi/driver.c b/drivers/firmware/arm_scmi/driver.c
index 0bbdc7c9eb0f..26b2c438bd59 100644
--- a/drivers/firmware/arm_scmi/driver.c
+++ b/drivers/firmware/arm_scmi/driver.c
@@ -979,6 +979,52 @@ static int scmi_remove(struct platform_device *pdev)
 	return ret;
 }
 
+static ssize_t protocol_version_show(struct device *dev,
+				     struct device_attribute *attr, char *buf)
+{
+	struct scmi_info *info = dev_get_drvdata(dev);
+
+	return sprintf(buf, "%u.%u\n", info->version.major_ver,
+		       info->version.minor_ver);
+}
+static DEVICE_ATTR_RO(protocol_version);
+
+static ssize_t firmware_version_show(struct device *dev,
+				     struct device_attribute *attr, char *buf)
+{
+	struct scmi_info *info = dev_get_drvdata(dev);
+
+	return sprintf(buf, "0x%x\n", info->version.impl_ver);
+}
+static DEVICE_ATTR_RO(firmware_version);
+
+static ssize_t vendor_id_show(struct device *dev,
+			      struct device_attribute *attr, char *buf)
+{
+	struct scmi_info *info = dev_get_drvdata(dev);
+
+	return sprintf(buf, "%s\n", info->version.vendor_id);
+}
+static DEVICE_ATTR_RO(vendor_id);
+
+static ssize_t sub_vendor_id_show(struct device *dev,
+				  struct device_attribute *attr, char *buf)
+{
+	struct scmi_info *info = dev_get_drvdata(dev);
+
+	return sprintf(buf, "%s\n", info->version.sub_vendor_id);
+}
+static DEVICE_ATTR_RO(sub_vendor_id);
+
+static struct attribute *versions_attrs[] = {
+	&dev_attr_firmware_version.attr,
+	&dev_attr_protocol_version.attr,
+	&dev_attr_vendor_id.attr,
+	&dev_attr_sub_vendor_id.attr,
+	NULL,
+};
+ATTRIBUTE_GROUPS(versions);
+
 static const struct scmi_desc scmi_generic_desc = {
 	.max_rx_timeout_ms = 30,	/* We may increase this if required */
 	.max_msg = 20,		/* Limited by MBOX_TX_QUEUE_LEN */
@@ -997,6 +1043,7 @@ static struct platform_driver scmi_driver = {
 	.driver = {
 		   .name = "arm-scmi",
 		   .of_match_table = scmi_of_match,
+		   .dev_groups = versions_groups,
 		   },
 	.probe = scmi_probe,
 	.remove = scmi_remove,
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v2 05/11] firmware: arm_scmi: Match scmi device by both name and protocol id
  2019-12-18 11:17 [PATCH v2 00/11] firmware: arm_scmi: Add support for multiple device per protocol Sudeep Holla
                   ` (3 preceding siblings ...)
  2019-12-18 11:17 ` [PATCH v2 04/11] firmware: arm_scmi: Add versions and identifier attributes using dev_groups Sudeep Holla
@ 2019-12-18 11:17 ` Sudeep Holla
  2019-12-18 11:17 ` [PATCH v2 06/11] firmware: arm_scmi: Stash version in protocol init functions Sudeep Holla
                   ` (5 subsequent siblings)
  10 siblings, 0 replies; 17+ messages in thread
From: Sudeep Holla @ 2019-12-18 11:17 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel; +Cc: Sudeep Holla, Cristian Marussi

The scmi bus now has support to match the driver with devices not only
based on their protocol id but also based on their device name if one is
available. This was added to cater the need to support multiple devices
and drivers for the same protocol.

Let us add the name "genpd" to scmi_device_id table in the driver so
that in matches only with device with the same name and protocol id
SCMI_PROTOCOL_POWER.

Reviewed-by: Cristian Marussi <cristian.marussi@arm.com>
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
---
 drivers/firmware/arm_scmi/scmi_pm_domain.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/firmware/arm_scmi/scmi_pm_domain.c b/drivers/firmware/arm_scmi/scmi_pm_domain.c
index 87f737e01473..bafbfe358f97 100644
--- a/drivers/firmware/arm_scmi/scmi_pm_domain.c
+++ b/drivers/firmware/arm_scmi/scmi_pm_domain.c
@@ -112,7 +112,7 @@ static int scmi_pm_domain_probe(struct scmi_device *sdev)
 }
 
 static const struct scmi_device_id scmi_id_table[] = {
-	{ SCMI_PROTOCOL_POWER },
+	{ SCMI_PROTOCOL_POWER, "genpd" },
 	{ },
 };
 MODULE_DEVICE_TABLE(scmi, scmi_id_table);
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v2 06/11] firmware: arm_scmi: Stash version in protocol init functions
  2019-12-18 11:17 [PATCH v2 00/11] firmware: arm_scmi: Add support for multiple device per protocol Sudeep Holla
                   ` (4 preceding siblings ...)
  2019-12-18 11:17 ` [PATCH v2 05/11] firmware: arm_scmi: Match scmi device by both name and protocol id Sudeep Holla
@ 2019-12-18 11:17 ` Sudeep Holla
  2019-12-18 11:17 ` [PATCH v2 07/11] firmware: arm_scmi: Skip protocol initialisation for additional devices Sudeep Holla
                   ` (4 subsequent siblings)
  10 siblings, 0 replies; 17+ messages in thread
From: Sudeep Holla @ 2019-12-18 11:17 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel; +Cc: Sudeep Holla, Cristian Marussi

In order to avoid querying the individual protocol versions multiple
time with more that one device created for each protocol, we can simple
store the copy in the protocol specific private data and use them whenever
required.

Reviewed-by: Cristian Marussi <cristian.marussi@arm.com>
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
---
 drivers/firmware/arm_scmi/clock.c   | 2 ++
 drivers/firmware/arm_scmi/perf.c    | 2 ++
 drivers/firmware/arm_scmi/power.c   | 2 ++
 drivers/firmware/arm_scmi/reset.c   | 2 ++
 drivers/firmware/arm_scmi/sensors.c | 2 ++
 5 files changed, 10 insertions(+)

diff --git a/drivers/firmware/arm_scmi/clock.c b/drivers/firmware/arm_scmi/clock.c
index 32526a793f3a..4c2227662b26 100644
--- a/drivers/firmware/arm_scmi/clock.c
+++ b/drivers/firmware/arm_scmi/clock.c
@@ -65,6 +65,7 @@ struct scmi_clock_set_rate {
 };
 
 struct clock_info {
+	u32 version;
 	int num_clocks;
 	int max_async_req;
 	atomic_t cur_async_req;
@@ -340,6 +341,7 @@ static int scmi_clock_protocol_init(struct scmi_handle *handle)
 			scmi_clock_describe_rates_get(handle, clkid, clk);
 	}
 
+	cinfo->version = version;
 	handle->clk_ops = &clk_ops;
 	handle->clk_priv = cinfo;
 
diff --git a/drivers/firmware/arm_scmi/perf.c b/drivers/firmware/arm_scmi/perf.c
index 601af4edad5e..ec81e6f7e7a4 100644
--- a/drivers/firmware/arm_scmi/perf.c
+++ b/drivers/firmware/arm_scmi/perf.c
@@ -145,6 +145,7 @@ struct perf_dom_info {
 };
 
 struct scmi_perf_info {
+	u32 version;
 	int num_domains;
 	bool power_scale_mw;
 	u64 stats_addr;
@@ -736,6 +737,7 @@ static int scmi_perf_protocol_init(struct scmi_handle *handle)
 			scmi_perf_domain_init_fc(handle, domain, &dom->fc_info);
 	}
 
+	pinfo->version = version;
 	handle->perf_ops = &perf_ops;
 	handle->perf_priv = pinfo;
 
diff --git a/drivers/firmware/arm_scmi/power.c b/drivers/firmware/arm_scmi/power.c
index 5abef7079c0a..214886ce84f1 100644
--- a/drivers/firmware/arm_scmi/power.c
+++ b/drivers/firmware/arm_scmi/power.c
@@ -50,6 +50,7 @@ struct power_dom_info {
 };
 
 struct scmi_power_info {
+	u32 version;
 	int num_domains;
 	u64 stats_addr;
 	u32 stats_size;
@@ -207,6 +208,7 @@ static int scmi_power_protocol_init(struct scmi_handle *handle)
 		scmi_power_domain_attributes_get(handle, domain, dom);
 	}
 
+	pinfo->version = version;
 	handle->power_ops = &power_ops;
 	handle->power_priv = pinfo;
 
diff --git a/drivers/firmware/arm_scmi/reset.c b/drivers/firmware/arm_scmi/reset.c
index ab42c21c5517..de73054554f3 100644
--- a/drivers/firmware/arm_scmi/reset.c
+++ b/drivers/firmware/arm_scmi/reset.c
@@ -48,6 +48,7 @@ struct reset_dom_info {
 };
 
 struct scmi_reset_info {
+	u32 version;
 	int num_domains;
 	struct reset_dom_info *dom_info;
 };
@@ -217,6 +218,7 @@ static int scmi_reset_protocol_init(struct scmi_handle *handle)
 		scmi_reset_domain_attributes_get(handle, domain, dom);
 	}
 
+	pinfo->version = version;
 	handle->reset_ops = &reset_ops;
 	handle->reset_priv = pinfo;
 
diff --git a/drivers/firmware/arm_scmi/sensors.c b/drivers/firmware/arm_scmi/sensors.c
index a400ea805fc2..eba61b9c1f53 100644
--- a/drivers/firmware/arm_scmi/sensors.c
+++ b/drivers/firmware/arm_scmi/sensors.c
@@ -68,6 +68,7 @@ struct scmi_msg_sensor_reading_get {
 };
 
 struct sensors_info {
+	u32 version;
 	int num_sensors;
 	int max_requests;
 	u64 reg_addr;
@@ -294,6 +295,7 @@ static int scmi_sensors_protocol_init(struct scmi_handle *handle)
 
 	scmi_sensor_description_get(handle, sinfo);
 
+	sinfo->version = version;
 	handle->sensor_ops = &sensor_ops;
 	handle->sensor_priv = sinfo;
 
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v2 07/11] firmware: arm_scmi: Skip protocol initialisation for additional devices
  2019-12-18 11:17 [PATCH v2 00/11] firmware: arm_scmi: Add support for multiple device per protocol Sudeep Holla
                   ` (5 preceding siblings ...)
  2019-12-18 11:17 ` [PATCH v2 06/11] firmware: arm_scmi: Stash version in protocol init functions Sudeep Holla
@ 2019-12-18 11:17 ` Sudeep Holla
  2019-12-24 14:33   ` Sudeep Holla
  2019-12-18 11:17 ` [PATCH v2 08/11] clk: scmi: Match scmi device by both name and protocol id Sudeep Holla
                   ` (3 subsequent siblings)
  10 siblings, 1 reply; 17+ messages in thread
From: Sudeep Holla @ 2019-12-18 11:17 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel; +Cc: Sudeep Holla, Cristian Marussi

The scmi bus now supports adding multiple devices per protocol,
and since scmi_protocol_init is called for each scmi device created,
we must avoid allocating protocol private data and initialising the
protocol itself if it is already initialised.

In order to achieve the same, we can simple replace the idr pointer
from protocol initialisation function to a dummy function.

Suggested-by: Cristian Marussi <cristian.marussi@arm.com>
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
---
 drivers/firmware/arm_scmi/bus.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/drivers/firmware/arm_scmi/bus.c b/drivers/firmware/arm_scmi/bus.c
index 3714e6307b05..db55c43a2cbd 100644
--- a/drivers/firmware/arm_scmi/bus.c
+++ b/drivers/firmware/arm_scmi/bus.c
@@ -60,6 +60,11 @@ static int scmi_protocol_init(int protocol_id, struct scmi_handle *handle)
 	return fn(handle);
 }
 
+static int scmi_protocol_dummy_init(struct scmi_handle *handle)
+{
+	return 0;
+}
+
 static int scmi_dev_probe(struct device *dev)
 {
 	struct scmi_driver *scmi_drv = to_scmi_driver(dev->driver);
@@ -78,6 +83,10 @@ static int scmi_dev_probe(struct device *dev)
 	if (ret)
 		return ret;
 
+	/* Skip protocol initialisation for additional devices */
+	idr_replace(&scmi_protocols, &scmi_protocol_dummy_init,
+		    scmi_dev->protocol_id);
+
 	return scmi_drv->probe(scmi_dev);
 }
 
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v2 08/11] clk: scmi: Match scmi device by both name and protocol id
  2019-12-18 11:17 [PATCH v2 00/11] firmware: arm_scmi: Add support for multiple device per protocol Sudeep Holla
                   ` (6 preceding siblings ...)
  2019-12-18 11:17 ` [PATCH v2 07/11] firmware: arm_scmi: Skip protocol initialisation for additional devices Sudeep Holla
@ 2019-12-18 11:17 ` Sudeep Holla
  2019-12-26 22:04   ` Stephen Boyd
  2019-12-18 11:17 ` [PATCH v2 09/11] cpufreq: " Sudeep Holla
                   ` (2 subsequent siblings)
  10 siblings, 1 reply; 17+ messages in thread
From: Sudeep Holla @ 2019-12-18 11:17 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel
  Cc: Sudeep Holla, Cristian Marussi, Michael Turquette, Stephen Boyd,
	linux-clk

The scmi bus now has support to match the driver with devices not only
based on their protocol id but also based on their device name if one is
available. This was added to cater the need to support multiple devices
and drivers for the same protocol.

Let us add the name "clocks" to scmi_device_id table in the driver so
that in matches only with device with the same name and protocol id
SCMI_PROTOCOL_CLOCK.

Cc: Michael Turquette <mturquette@baylibre.com>
Cc: Stephen Boyd <sboyd@kernel.org>
Cc: linux-clk@vger.kernel.org
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
---
 drivers/clk/clk-scmi.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/clk/clk-scmi.c b/drivers/clk/clk-scmi.c
index 886f7c5df51a..c491f5de0f3f 100644
--- a/drivers/clk/clk-scmi.c
+++ b/drivers/clk/clk-scmi.c
@@ -176,7 +176,7 @@ static int scmi_clocks_probe(struct scmi_device *sdev)
 }
 
 static const struct scmi_device_id scmi_id_table[] = {
-	{ SCMI_PROTOCOL_CLOCK },
+	{ SCMI_PROTOCOL_CLOCK, "clocks" },
 	{ },
 };
 MODULE_DEVICE_TABLE(scmi, scmi_id_table);
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v2 09/11] cpufreq: scmi: Match scmi device by both name and protocol id
  2019-12-18 11:17 [PATCH v2 00/11] firmware: arm_scmi: Add support for multiple device per protocol Sudeep Holla
                   ` (7 preceding siblings ...)
  2019-12-18 11:17 ` [PATCH v2 08/11] clk: scmi: Match scmi device by both name and protocol id Sudeep Holla
@ 2019-12-18 11:17 ` Sudeep Holla
  2019-12-18 11:17 ` [PATCH v2 10/11] hwmon: (scmi-hwmon) " Sudeep Holla
  2019-12-18 11:17 ` [PATCH v2 11/11] reset: reset-scmi: " Sudeep Holla
  10 siblings, 0 replies; 17+ messages in thread
From: Sudeep Holla @ 2019-12-18 11:17 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel; +Cc: Sudeep Holla, Cristian Marussi

The scmi bus now has support to match the driver with devices not only
based on their protocol id but also based on their device name if one is
available. This was added to cater the need to support multiple devices
and drivers for the same protocol.

Let us add the name "cpufreq" to scmi_device_id table in the driver so
that in matches only with device with the same name and protocol id
SCMI_PROTOCOL_PERF. This will help to add "devfreq" device/driver.

Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
---
 drivers/cpufreq/scmi-cpufreq.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/cpufreq/scmi-cpufreq.c b/drivers/cpufreq/scmi-cpufreq.c
index e6182c89df79..61623e2ff149 100644
--- a/drivers/cpufreq/scmi-cpufreq.c
+++ b/drivers/cpufreq/scmi-cpufreq.c
@@ -261,7 +261,7 @@ static void scmi_cpufreq_remove(struct scmi_device *sdev)
 }
 
 static const struct scmi_device_id scmi_id_table[] = {
-	{ SCMI_PROTOCOL_PERF },
+	{ SCMI_PROTOCOL_PERF, "cpufreq" },
 	{ },
 };
 MODULE_DEVICE_TABLE(scmi, scmi_id_table);
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v2 10/11] hwmon: (scmi-hwmon) Match scmi device by both name and protocol id
  2019-12-18 11:17 [PATCH v2 00/11] firmware: arm_scmi: Add support for multiple device per protocol Sudeep Holla
                   ` (8 preceding siblings ...)
  2019-12-18 11:17 ` [PATCH v2 09/11] cpufreq: " Sudeep Holla
@ 2019-12-18 11:17 ` Sudeep Holla
  2020-01-04 16:19   ` Guenter Roeck
  2019-12-18 11:17 ` [PATCH v2 11/11] reset: reset-scmi: " Sudeep Holla
  10 siblings, 1 reply; 17+ messages in thread
From: Sudeep Holla @ 2019-12-18 11:17 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel
  Cc: Sudeep Holla, Cristian Marussi, Guenter Roeck, linux-hwmon

The scmi bus now has support to match the driver with devices not only
based on their protocol id but also based on their device name if one is
available. This was added to cater the need to support multiple devices
and drivers for the same protocol.

Let us add the name "hwmon" to scmi_device_id table in the driver so
that in matches only with device with the same name and protocol id
SCMI_PROTOCOL_SENSOR. This is just for sake of completion and must
not be used to add IIO support in parallel. Instead, if IIO support is
added ever in future, we need to drop this hwmon driver entirely and
use the iio->hwmon bridge to access the sensors as hwmon devices if
needed.

Cc: Guenter Roeck <linux@roeck-us.net>
Cc: linux-hwmon@vger.kernel.org
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
---
 drivers/hwmon/scmi-hwmon.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/hwmon/scmi-hwmon.c b/drivers/hwmon/scmi-hwmon.c
index 8a7732c0bef3..286d3cfda7de 100644
--- a/drivers/hwmon/scmi-hwmon.c
+++ b/drivers/hwmon/scmi-hwmon.c
@@ -259,7 +259,7 @@ static int scmi_hwmon_probe(struct scmi_device *sdev)
 }
 
 static const struct scmi_device_id scmi_id_table[] = {
-	{ SCMI_PROTOCOL_SENSOR },
+	{ SCMI_PROTOCOL_SENSOR, "hwmon" },
 	{ },
 };
 MODULE_DEVICE_TABLE(scmi, scmi_id_table);
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v2 11/11] reset: reset-scmi: Match scmi device by both name and protocol id
  2019-12-18 11:17 [PATCH v2 00/11] firmware: arm_scmi: Add support for multiple device per protocol Sudeep Holla
                   ` (9 preceding siblings ...)
  2019-12-18 11:17 ` [PATCH v2 10/11] hwmon: (scmi-hwmon) " Sudeep Holla
@ 2019-12-18 11:17 ` Sudeep Holla
  10 siblings, 0 replies; 17+ messages in thread
From: Sudeep Holla @ 2019-12-18 11:17 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel; +Cc: Sudeep Holla, Cristian Marussi

The scmi bus now has support to match the driver with devices not only
based on their protocol id but also based on their device name if one is
available. This was added to cater the need to support multiple devices
and drivers for the same protocol.

Let us add the name "reset" to scmi_device_id table in the driver so
that in matches only with device with the same name and protocol id
SCMI_PROTOCOL_RESET.

Acked-by: Philipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
---
 drivers/reset/reset-scmi.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/reset/reset-scmi.c b/drivers/reset/reset-scmi.c
index b46df80ec6c3..8d3a858e3b19 100644
--- a/drivers/reset/reset-scmi.c
+++ b/drivers/reset/reset-scmi.c
@@ -108,7 +108,7 @@ static int scmi_reset_probe(struct scmi_device *sdev)
 }
 
 static const struct scmi_device_id scmi_id_table[] = {
-	{ SCMI_PROTOCOL_RESET },
+	{ SCMI_PROTOCOL_RESET, "reset" },
 	{ },
 };
 MODULE_DEVICE_TABLE(scmi, scmi_id_table);
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* Re: [PATCH v2 07/11] firmware: arm_scmi: Skip protocol initialisation for additional devices
  2019-12-18 11:17 ` [PATCH v2 07/11] firmware: arm_scmi: Skip protocol initialisation for additional devices Sudeep Holla
@ 2019-12-24 14:33   ` Sudeep Holla
  2019-12-24 14:35     ` Cristian Marussi
  0 siblings, 1 reply; 17+ messages in thread
From: Sudeep Holla @ 2019-12-24 14:33 UTC (permalink / raw)
  To: linux-arm, open list; +Cc: Cristian Marussi, Sudeep Holla

On Wed, Dec 18, 2019 at 11:19 AM Sudeep Holla <sudeep.holla@arm.com> wrote:
>
> The scmi bus now supports adding multiple devices per protocol,
> and since scmi_protocol_init is called for each scmi device created,
> we must avoid allocating protocol private data and initialising the
> protocol itself if it is already initialised.
>
> In order to achieve the same, we can simple replace the idr pointer
> from protocol initialisation function to a dummy function.
>
> Suggested-by: Cristian Marussi <cristian.marussi@arm.com>


Hi Cristian,

Are you fine with this approach ? If yes, I plan to apply this series.

--
Regards,
Sudeep

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v2 07/11] firmware: arm_scmi: Skip protocol initialisation for additional devices
  2019-12-24 14:33   ` Sudeep Holla
@ 2019-12-24 14:35     ` Cristian Marussi
  0 siblings, 0 replies; 17+ messages in thread
From: Cristian Marussi @ 2019-12-24 14:35 UTC (permalink / raw)
  To: Sudeep Holla, linux-arm, open list

Hi

On 24/12/2019 14:33, Sudeep Holla wrote:
> On Wed, Dec 18, 2019 at 11:19 AM Sudeep Holla <sudeep.holla@arm.com> wrote:
>>
>> The scmi bus now supports adding multiple devices per protocol,
>> and since scmi_protocol_init is called for each scmi device created,
>> we must avoid allocating protocol private data and initialising the
>> protocol itself if it is already initialised.
>>
>> In order to achieve the same, we can simple replace the idr pointer
>> from protocol initialisation function to a dummy function.
>>
>> Suggested-by: Cristian Marussi <cristian.marussi@arm.com>
> 
> 
> Hi Cristian,
> 
> Are you fine with this approach ? If yes, I plan to apply this series.
> 

Yes sure...forgot this was pending.

Reviewed-by: Cristian Marussi <cristian.marussi@arm.com>

Cristian
> --
> Regards,
> Sudeep
> 


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v2 08/11] clk: scmi: Match scmi device by both name and protocol id
  2019-12-18 11:17 ` [PATCH v2 08/11] clk: scmi: Match scmi device by both name and protocol id Sudeep Holla
@ 2019-12-26 22:04   ` Stephen Boyd
  0 siblings, 0 replies; 17+ messages in thread
From: Stephen Boyd @ 2019-12-26 22:04 UTC (permalink / raw)
  To: Sudeep Holla, linux-arm-kernel, linux-kernel
  Cc: Sudeep Holla, Cristian Marussi, Michael Turquette, linux-clk

Quoting Sudeep Holla (2019-12-18 03:17:39)
> The scmi bus now has support to match the driver with devices not only
> based on their protocol id but also based on their device name if one is
> available. This was added to cater the need to support multiple devices
> and drivers for the same protocol.
> 
> Let us add the name "clocks" to scmi_device_id table in the driver so
> that in matches only with device with the same name and protocol id
> SCMI_PROTOCOL_CLOCK.
> 
> Cc: Michael Turquette <mturquette@baylibre.com>
> Cc: Stephen Boyd <sboyd@kernel.org>
> Cc: linux-clk@vger.kernel.org
> Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
> ---

Acked-by: Stephen Boyd <sboyd@kernel.org>


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v2 10/11] hwmon: (scmi-hwmon) Match scmi device by both name and protocol id
  2019-12-18 11:17 ` [PATCH v2 10/11] hwmon: (scmi-hwmon) " Sudeep Holla
@ 2020-01-04 16:19   ` Guenter Roeck
  2020-01-06 10:39     ` Sudeep Holla
  0 siblings, 1 reply; 17+ messages in thread
From: Guenter Roeck @ 2020-01-04 16:19 UTC (permalink / raw)
  To: Sudeep Holla
  Cc: linux-arm-kernel, linux-kernel, Cristian Marussi, linux-hwmon

On Wed, Dec 18, 2019 at 11:17:41AM +0000, Sudeep Holla wrote:
> The scmi bus now has support to match the driver with devices not only
> based on their protocol id but also based on their device name if one is
> available. This was added to cater the need to support multiple devices
> and drivers for the same protocol.
> 
> Let us add the name "hwmon" to scmi_device_id table in the driver so
> that in matches only with device with the same name and protocol id
> SCMI_PROTOCOL_SENSOR. This is just for sake of completion and must
> not be used to add IIO support in parallel. Instead, if IIO support is
> added ever in future, we need to drop this hwmon driver entirely and
> use the iio->hwmon bridge to access the sensors as hwmon devices if
> needed.
> 

Acked-by: Guenter Roeck <linux@roeck-us.net>

[ assuming the series will be pushed into the kernel together ]

> Cc: Guenter Roeck <linux@roeck-us.net>
> Cc: linux-hwmon@vger.kernel.org
> Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
> ---
>  drivers/hwmon/scmi-hwmon.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/hwmon/scmi-hwmon.c b/drivers/hwmon/scmi-hwmon.c
> index 8a7732c0bef3..286d3cfda7de 100644
> --- a/drivers/hwmon/scmi-hwmon.c
> +++ b/drivers/hwmon/scmi-hwmon.c
> @@ -259,7 +259,7 @@ static int scmi_hwmon_probe(struct scmi_device *sdev)
>  }
>  
>  static const struct scmi_device_id scmi_id_table[] = {
> -	{ SCMI_PROTOCOL_SENSOR },
> +	{ SCMI_PROTOCOL_SENSOR, "hwmon" },
>  	{ },
>  };
>  MODULE_DEVICE_TABLE(scmi, scmi_id_table);

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v2 10/11] hwmon: (scmi-hwmon) Match scmi device by both name and protocol id
  2020-01-04 16:19   ` Guenter Roeck
@ 2020-01-06 10:39     ` Sudeep Holla
  0 siblings, 0 replies; 17+ messages in thread
From: Sudeep Holla @ 2020-01-06 10:39 UTC (permalink / raw)
  To: Guenter Roeck
  Cc: linux-arm-kernel, linux-kernel, Cristian Marussi, linux-hwmon,
	Sudeep Holla

On Sat, Jan 04, 2020 at 08:19:46AM -0800, Guenter Roeck wrote:
> On Wed, Dec 18, 2019 at 11:17:41AM +0000, Sudeep Holla wrote:
> > The scmi bus now has support to match the driver with devices not only
> > based on their protocol id but also based on their device name if one is
> > available. This was added to cater the need to support multiple devices
> > and drivers for the same protocol.
> >
> > Let us add the name "hwmon" to scmi_device_id table in the driver so
> > that in matches only with device with the same name and protocol id
> > SCMI_PROTOCOL_SENSOR. This is just for sake of completion and must
> > not be used to add IIO support in parallel. Instead, if IIO support is
> > added ever in future, we need to drop this hwmon driver entirely and
> > use the iio->hwmon bridge to access the sensors as hwmon devices if
> > needed.
> >
>
> Acked-by: Guenter Roeck <linux@roeck-us.net>
>

Thanks

> [ assuming the series will be pushed into the kernel together ]
>

Indeed.

--
Regards,
Sudeep

^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2020-01-06 10:39 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-12-18 11:17 [PATCH v2 00/11] firmware: arm_scmi: Add support for multiple device per protocol Sudeep Holla
2019-12-18 11:17 ` [PATCH v2 01/11] " Sudeep Holla
2019-12-18 11:17 ` [PATCH v2 02/11] firmware: arm_scmi: Skip scmi mbox channel setup for addtional devices Sudeep Holla
2019-12-18 11:17 ` [PATCH v2 03/11] firmware: arm_scmi: Add names to scmi devices created Sudeep Holla
2019-12-18 11:17 ` [PATCH v2 04/11] firmware: arm_scmi: Add versions and identifier attributes using dev_groups Sudeep Holla
2019-12-18 11:17 ` [PATCH v2 05/11] firmware: arm_scmi: Match scmi device by both name and protocol id Sudeep Holla
2019-12-18 11:17 ` [PATCH v2 06/11] firmware: arm_scmi: Stash version in protocol init functions Sudeep Holla
2019-12-18 11:17 ` [PATCH v2 07/11] firmware: arm_scmi: Skip protocol initialisation for additional devices Sudeep Holla
2019-12-24 14:33   ` Sudeep Holla
2019-12-24 14:35     ` Cristian Marussi
2019-12-18 11:17 ` [PATCH v2 08/11] clk: scmi: Match scmi device by both name and protocol id Sudeep Holla
2019-12-26 22:04   ` Stephen Boyd
2019-12-18 11:17 ` [PATCH v2 09/11] cpufreq: " Sudeep Holla
2019-12-18 11:17 ` [PATCH v2 10/11] hwmon: (scmi-hwmon) " Sudeep Holla
2020-01-04 16:19   ` Guenter Roeck
2020-01-06 10:39     ` Sudeep Holla
2019-12-18 11:17 ` [PATCH v2 11/11] reset: reset-scmi: " Sudeep Holla

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).