Re: [PATCH 2/3] mfd: rohm-bd71828: Use software nodes for gpio-keys

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 18/08/2025 01:47, Dmitry Torokhov wrote:
Refactor the rohm-bd71828 MFD driver to use software nodes for
instantiating the gpio-keys child device, replacing the old
platform_data mechanism.

Thanks for doing this Dmitry! I believe I didn't understand how providing the IRQs via swnode works... :)

If I visit the ROHM office this week, then I will try to test this using the PMIC HW. (Next week I'll be in ELCE, and after it I have probably already forgotten this...)

The power key's properties are now defined using software nodes and
property entries. The IRQ is passed as a resource attached to the
platform device.

This will allow dropping support for using platform data for configuring
gpio-keys in the future.

Signed-off-by: Dmitry Torokhov <dmitry.torokhov@xxxxxxxxx>
---
  drivers/mfd/rohm-bd71828.c | 81 +++++++++++++++++++++++++++-----------
  1 file changed, 58 insertions(+), 23 deletions(-)

diff --git a/drivers/mfd/rohm-bd71828.c b/drivers/mfd/rohm-bd71828.c
index a14b7aa69c3c..c29dde9996b7 100644
--- a/drivers/mfd/rohm-bd71828.c
+++ b/drivers/mfd/rohm-bd71828.c
@@ -4,7 +4,6 @@

// ...snip

+static int bd71828_reg_cnt;
+
+static int bd71828_i2c_register_swnodes(void)
+{
+	int error;
+
+	if (bd71828_reg_cnt == 0) {

Isn't this check racy...

+		error = software_node_register_node_group(bd71828_swnodes);
+		if (error)
+			return error;
+	}
+
+	bd71828_reg_cnt++;

... with this...

+	return 0;
+}
+
+static void bd71828_i2c_unregister_swnodes(void *dummy)
+{
+	if (bd71828_reg_cnt != 0) {

...this...

+		software_node_unregister_node_group(bd71828_swnodes);
+		bd71828_reg_cnt--;

...and this? Perhaps add a mutex or use atomics?

Also, shouldn't the software_node_unregister_node_group() be only called for the last instance to exit (Eg, "if (bd71828_reg_cnt == 0)" instead of the "if (bd71828_reg_cnt != 0) {")?

+	}
+}
+

Other than that - I like this idea :)

Thanks!

Yours,
	-- Matti




[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux