* [PATCH v3 1/7] i2c: core: Drop duplicate check before calling OF APIs
2025-04-07 15:44 [PATCH v3 0/7] i2c: core: Move client towards fwnode Andy Shevchenko
@ 2025-04-07 15:44 ` Andy Shevchenko
2025-04-08 14:43 ` Sakari Ailus
2025-04-07 15:44 ` [PATCH v3 2/7] i2c: core: Unify the firmware node type check Andy Shevchenko
` (6 subsequent siblings)
7 siblings, 1 reply; 15+ messages in thread
From: Andy Shevchenko @ 2025-04-07 15:44 UTC (permalink / raw)
To: Andy Shevchenko, Sakari Ailus, Mauro Carvalho Chehab,
Tomi Valkeinen, Jai Luthra, Wolfram Sang, linux-i2c, linux-kernel,
linux-media
Cc: Mauro Carvalho Chehab
OF APIs are usually NULL-aware and returns an error in case when
device node is not present or supported. We already have a check
for the returned value, no need to check for the parameter.
Tested-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
drivers/i2c/i2c-core-base.c | 18 +++++++-----------
1 file changed, 7 insertions(+), 11 deletions(-)
diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core-base.c
index ebda3926acf8..0d850d425734 100644
--- a/drivers/i2c/i2c-core-base.c
+++ b/drivers/i2c/i2c-core-base.c
@@ -1213,11 +1213,9 @@ struct i2c_client *i2c_new_ancillary_device(struct i2c_client *client,
u32 addr = default_addr;
int i;
- if (np) {
- i = of_property_match_string(np, "reg-names", name);
- if (i >= 0)
- of_property_read_u32_index(np, "reg", i, &addr);
- }
+ i = of_property_match_string(np, "reg-names", name);
+ if (i >= 0)
+ of_property_read_u32_index(np, "reg", i, &addr);
dev_dbg(&client->adapter->dev, "Address for %s : 0x%x\n", name, addr);
return i2c_new_dummy_device(client->adapter, addr);
@@ -1655,12 +1653,10 @@ int i2c_add_adapter(struct i2c_adapter *adapter)
struct device *dev = &adapter->dev;
int id;
- if (dev->of_node) {
- id = of_alias_get_id(dev->of_node, "i2c");
- if (id >= 0) {
- adapter->nr = id;
- return __i2c_add_numbered_adapter(adapter);
- }
+ id = of_alias_get_id(dev->of_node, "i2c");
+ if (id >= 0) {
+ adapter->nr = id;
+ return __i2c_add_numbered_adapter(adapter);
}
mutex_lock(&core_lock);
--
2.47.2
^ permalink raw reply related [flat|nested] 15+ messages in thread* Re: [PATCH v3 1/7] i2c: core: Drop duplicate check before calling OF APIs
2025-04-07 15:44 ` [PATCH v3 1/7] i2c: core: Drop duplicate check before calling OF APIs Andy Shevchenko
@ 2025-04-08 14:43 ` Sakari Ailus
0 siblings, 0 replies; 15+ messages in thread
From: Sakari Ailus @ 2025-04-08 14:43 UTC (permalink / raw)
To: Andy Shevchenko
Cc: Mauro Carvalho Chehab, Tomi Valkeinen, Jai Luthra, Wolfram Sang,
linux-i2c, linux-kernel, linux-media, Mauro Carvalho Chehab
On Mon, Apr 07, 2025 at 06:44:57PM +0300, Andy Shevchenko wrote:
> OF APIs are usually NULL-aware and returns an error in case when
s/return\K/s//
--
Sakari Ailus
^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH v3 2/7] i2c: core: Unify the firmware node type check
2025-04-07 15:44 [PATCH v3 0/7] i2c: core: Move client towards fwnode Andy Shevchenko
2025-04-07 15:44 ` [PATCH v3 1/7] i2c: core: Drop duplicate check before calling OF APIs Andy Shevchenko
@ 2025-04-07 15:44 ` Andy Shevchenko
2025-04-07 15:44 ` [PATCH v3 3/7] i2c: core: Switch to fwnode APIs to get IRQ Andy Shevchenko
` (5 subsequent siblings)
7 siblings, 0 replies; 15+ messages in thread
From: Andy Shevchenko @ 2025-04-07 15:44 UTC (permalink / raw)
To: Andy Shevchenko, Sakari Ailus, Mauro Carvalho Chehab,
Tomi Valkeinen, Jai Luthra, Wolfram Sang, linux-i2c, linux-kernel,
linux-media
Cc: Mauro Carvalho Chehab
OF and ACPI currently are using asymmetrical APIs to check
for the firmware node type. Unify them by using is_*_node()
against struct fwnode_handle pointer.
Tested-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
drivers/i2c/i2c-core-base.c | 14 ++++++++------
drivers/i2c/i2c-core-slave.c | 12 ++++++++----
2 files changed, 16 insertions(+), 10 deletions(-)
diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core-base.c
index 0d850d425734..b320a20957ed 100644
--- a/drivers/i2c/i2c-core-base.c
+++ b/drivers/i2c/i2c-core-base.c
@@ -494,6 +494,7 @@ static int i2c_smbus_host_notify_to_irq(const struct i2c_client *client)
static int i2c_device_probe(struct device *dev)
{
+ struct fwnode_handle *fwnode = dev_fwnode(dev);
struct i2c_client *client = i2c_verify_client(dev);
struct i2c_driver *driver;
bool do_power_on;
@@ -512,11 +513,11 @@ static int i2c_device_probe(struct device *dev)
/* Keep adapter active when Host Notify is required */
pm_runtime_get_sync(&client->adapter->dev);
irq = i2c_smbus_host_notify_to_irq(client);
- } else if (dev->of_node) {
+ } else if (is_of_node(fwnode)) {
irq = of_irq_get_byname(dev->of_node, "irq");
if (irq == -EINVAL || irq == -ENODATA)
irq = of_irq_get(dev->of_node, 0);
- } else if (ACPI_COMPANION(dev)) {
+ } else if (is_acpi_device_node(fwnode)) {
bool wake_capable;
irq = i2c_acpi_get_irq(client, &wake_capable);
@@ -1058,15 +1059,16 @@ EXPORT_SYMBOL_GPL(i2c_new_client_device);
*/
void i2c_unregister_device(struct i2c_client *client)
{
+ struct fwnode_handle *fwnode;
+
if (IS_ERR_OR_NULL(client))
return;
- if (client->dev.of_node) {
+ fwnode = dev_fwnode(&client->dev);
+ if (is_of_node(fwnode)) {
of_node_clear_flag(client->dev.of_node, OF_POPULATED);
of_node_put(client->dev.of_node);
- }
-
- if (ACPI_COMPANION(&client->dev))
+ } else if (is_acpi_device_node(fwnode))
acpi_device_clear_enumerated(ACPI_COMPANION(&client->dev));
device_remove_software_node(&client->dev);
diff --git a/drivers/i2c/i2c-core-slave.c b/drivers/i2c/i2c-core-slave.c
index faefe1dfa8e5..7ee6b992b835 100644
--- a/drivers/i2c/i2c-core-slave.c
+++ b/drivers/i2c/i2c-core-slave.c
@@ -11,6 +11,7 @@
#include <linux/err.h>
#include <linux/i2c.h>
#include <linux/of.h>
+#include <linux/property.h>
#include "i2c-core.h"
@@ -108,15 +109,18 @@ EXPORT_SYMBOL_GPL(i2c_slave_event);
*/
bool i2c_detect_slave_mode(struct device *dev)
{
- if (IS_BUILTIN(CONFIG_OF) && dev->of_node) {
+ struct fwnode_handle *fwnode = dev_fwnode(dev);
+
+ if (is_of_node(fwnode)) {
+ struct fwnode_handle *child __free(fwnode_handle) = NULL;
u32 reg;
- for_each_child_of_node_scoped(dev->of_node, child) {
- of_property_read_u32(child, "reg", ®);
+ fwnode_for_each_child_node(fwnode, child) {
+ fwnode_property_read_u32(child, "reg", ®);
if (reg & I2C_OWN_SLAVE_ADDRESS)
return true;
}
- } else if (IS_BUILTIN(CONFIG_ACPI) && ACPI_HANDLE(dev)) {
+ } else if (is_acpi_device_node(fwnode)) {
dev_dbg(dev, "ACPI slave is not supported yet\n");
}
return false;
--
2.47.2
^ permalink raw reply related [flat|nested] 15+ messages in thread* [PATCH v3 3/7] i2c: core: Switch to fwnode APIs to get IRQ
2025-04-07 15:44 [PATCH v3 0/7] i2c: core: Move client towards fwnode Andy Shevchenko
2025-04-07 15:44 ` [PATCH v3 1/7] i2c: core: Drop duplicate check before calling OF APIs Andy Shevchenko
2025-04-07 15:44 ` [PATCH v3 2/7] i2c: core: Unify the firmware node type check Andy Shevchenko
@ 2025-04-07 15:44 ` Andy Shevchenko
2025-04-07 15:45 ` [PATCH v3 4/7] i2c: core: Reuse fwnode variable where it makes sense Andy Shevchenko
` (4 subsequent siblings)
7 siblings, 0 replies; 15+ messages in thread
From: Andy Shevchenko @ 2025-04-07 15:44 UTC (permalink / raw)
To: Andy Shevchenko, Sakari Ailus, Mauro Carvalho Chehab,
Tomi Valkeinen, Jai Luthra, Wolfram Sang, linux-i2c, linux-kernel,
linux-media
Cc: Mauro Carvalho Chehab
Switch to fwnode APIs to get IRQ. In particular this enables
a support of the separate wakeup IRQ. The rest is converted
just for the sake of consistency and fwnode reuse.
Tested-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
drivers/i2c/i2c-core-base.c | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core-base.c
index b320a20957ed..e2fdfbdb1bd7 100644
--- a/drivers/i2c/i2c-core-base.c
+++ b/drivers/i2c/i2c-core-base.c
@@ -26,14 +26,13 @@
#include <linux/idr.h>
#include <linux/init.h>
#include <linux/interrupt.h>
-#include <linux/irqflags.h>
+#include <linux/irq.h>
#include <linux/jump_label.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/mutex.h>
#include <linux/of_device.h>
#include <linux/of.h>
-#include <linux/of_irq.h>
#include <linux/pinctrl/consumer.h>
#include <linux/pinctrl/devinfo.h>
#include <linux/pm_domain.h>
@@ -514,9 +513,9 @@ static int i2c_device_probe(struct device *dev)
pm_runtime_get_sync(&client->adapter->dev);
irq = i2c_smbus_host_notify_to_irq(client);
} else if (is_of_node(fwnode)) {
- irq = of_irq_get_byname(dev->of_node, "irq");
+ irq = fwnode_irq_get_byname(fwnode, "irq");
if (irq == -EINVAL || irq == -ENODATA)
- irq = of_irq_get(dev->of_node, 0);
+ irq = fwnode_irq_get(fwnode, 0);
} else if (is_acpi_device_node(fwnode)) {
bool wake_capable;
@@ -551,7 +550,7 @@ static int i2c_device_probe(struct device *dev)
if (client->flags & I2C_CLIENT_WAKE) {
int wakeirq;
- wakeirq = of_irq_get_byname(dev->of_node, "wakeup");
+ wakeirq = fwnode_irq_get_byname(fwnode, "wakeup");
if (wakeirq == -EPROBE_DEFER) {
status = wakeirq;
goto put_sync_adapter;
--
2.47.2
^ permalink raw reply related [flat|nested] 15+ messages in thread* [PATCH v3 4/7] i2c: core: Reuse fwnode variable where it makes sense
2025-04-07 15:44 [PATCH v3 0/7] i2c: core: Move client towards fwnode Andy Shevchenko
` (2 preceding siblings ...)
2025-04-07 15:44 ` [PATCH v3 3/7] i2c: core: Switch to fwnode APIs to get IRQ Andy Shevchenko
@ 2025-04-07 15:45 ` Andy Shevchenko
2025-04-07 15:45 ` [PATCH v3 5/7] i2c: core: Do not dereference fwnode in struct device Andy Shevchenko
` (3 subsequent siblings)
7 siblings, 0 replies; 15+ messages in thread
From: Andy Shevchenko @ 2025-04-07 15:45 UTC (permalink / raw)
To: Andy Shevchenko, Sakari Ailus, Mauro Carvalho Chehab,
Tomi Valkeinen, Jai Luthra, Wolfram Sang, linux-i2c, linux-kernel,
linux-media
Cc: Mauro Carvalho Chehab
Reuse fwnode variable where it makes sense. This avoids unneeded
duplication hidden in some macros and unifies the code for different
types of fwnode.
Tested-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
drivers/i2c/i2c-core-base.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core-base.c
index e2fdfbdb1bd7..c92badadd47a 100644
--- a/drivers/i2c/i2c-core-base.c
+++ b/drivers/i2c/i2c-core-base.c
@@ -571,7 +571,7 @@ static int i2c_device_probe(struct device *dev)
dev_dbg(dev, "probe\n");
- status = of_clk_set_defaults(dev->of_node, false);
+ status = of_clk_set_defaults(to_of_node(fwnode), false);
if (status < 0)
goto err_clear_wakeup_irq;
@@ -1065,10 +1065,10 @@ void i2c_unregister_device(struct i2c_client *client)
fwnode = dev_fwnode(&client->dev);
if (is_of_node(fwnode)) {
- of_node_clear_flag(client->dev.of_node, OF_POPULATED);
+ of_node_clear_flag(to_of_node(fwnode), OF_POPULATED);
of_node_put(client->dev.of_node);
} else if (is_acpi_device_node(fwnode))
- acpi_device_clear_enumerated(ACPI_COMPANION(&client->dev));
+ acpi_device_clear_enumerated(to_acpi_device_node(fwnode));
device_remove_software_node(&client->dev);
device_unregister(&client->dev);
--
2.47.2
^ permalink raw reply related [flat|nested] 15+ messages in thread* [PATCH v3 5/7] i2c: core: Do not dereference fwnode in struct device
2025-04-07 15:44 [PATCH v3 0/7] i2c: core: Move client towards fwnode Andy Shevchenko
` (3 preceding siblings ...)
2025-04-07 15:45 ` [PATCH v3 4/7] i2c: core: Reuse fwnode variable where it makes sense Andy Shevchenko
@ 2025-04-07 15:45 ` Andy Shevchenko
2025-04-07 15:45 ` [PATCH v3 6/7] i2c: core: Deprecate of_node in struct i2c_board_info Andy Shevchenko
` (2 subsequent siblings)
7 siblings, 0 replies; 15+ messages in thread
From: Andy Shevchenko @ 2025-04-07 15:45 UTC (permalink / raw)
To: Andy Shevchenko, Sakari Ailus, Mauro Carvalho Chehab,
Tomi Valkeinen, Jai Luthra, Wolfram Sang, linux-i2c, linux-kernel,
linux-media
Cc: Mauro Carvalho Chehab
In order to make the underneath API easier to change in the future,
prevent users from dereferencing fwnode from struct device.
Instead, use the specific device_set_node() API for that.
Tested-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
drivers/i2c/i2c-core-base.c | 18 ++++++++++--------
drivers/i2c/i2c-core-of.c | 1 -
2 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core-base.c
index c92badadd47a..d9e2f9559ce4 100644
--- a/drivers/i2c/i2c-core-base.c
+++ b/drivers/i2c/i2c-core-base.c
@@ -965,6 +965,7 @@ static void i2c_unlock_addr(struct i2c_adapter *adap, unsigned short addr,
struct i2c_client *
i2c_new_client_device(struct i2c_adapter *adap, struct i2c_board_info const *info)
{
+ struct fwnode_handle *fwnode;
struct i2c_client *client;
bool need_put = false;
int status;
@@ -1005,18 +1006,19 @@ i2c_new_client_device(struct i2c_adapter *adap, struct i2c_board_info const *inf
client->dev.parent = &client->adapter->dev;
client->dev.bus = &i2c_bus_type;
client->dev.type = &i2c_client_type;
- client->dev.of_node = of_node_get(info->of_node);
- client->dev.fwnode = info->fwnode;
device_enable_async_suspend(&client->dev);
+ fwnode = info->fwnode ?: of_fwnode_handle(info->of_node);
+ device_set_node(&client->dev, fwnode_handle_get(fwnode));
+
if (info->swnode) {
status = device_add_software_node(&client->dev, info->swnode);
if (status) {
dev_err(&adap->dev,
"Failed to add software node to client %s: %d\n",
client->name, status);
- goto out_err_put_of_node;
+ goto out_err_put_fwnode;
}
}
@@ -1035,8 +1037,8 @@ i2c_new_client_device(struct i2c_adapter *adap, struct i2c_board_info const *inf
out_remove_swnode:
device_remove_software_node(&client->dev);
need_put = true;
-out_err_put_of_node:
- of_node_put(info->of_node);
+out_err_put_fwnode:
+ fwnode_handle_put(fwnode);
out_err:
dev_err(&adap->dev,
"Failed to register i2c client %s at 0x%02x (%d)\n",
@@ -1064,11 +1066,11 @@ void i2c_unregister_device(struct i2c_client *client)
return;
fwnode = dev_fwnode(&client->dev);
- if (is_of_node(fwnode)) {
+ if (is_of_node(fwnode))
of_node_clear_flag(to_of_node(fwnode), OF_POPULATED);
- of_node_put(client->dev.of_node);
- } else if (is_acpi_device_node(fwnode))
+ else if (is_acpi_device_node(fwnode))
acpi_device_clear_enumerated(to_acpi_device_node(fwnode));
+ fwnode_handle_put(fwnode);
device_remove_software_node(&client->dev);
device_unregister(&client->dev);
diff --git a/drivers/i2c/i2c-core-of.c b/drivers/i2c/i2c-core-of.c
index 02feee6c9ba9..eb7fb202355f 100644
--- a/drivers/i2c/i2c-core-of.c
+++ b/drivers/i2c/i2c-core-of.c
@@ -49,7 +49,6 @@ int of_i2c_get_board_info(struct device *dev, struct device_node *node,
}
info->addr = addr;
- info->of_node = node;
info->fwnode = of_fwnode_handle(node);
if (of_property_read_bool(node, "host-notify"))
--
2.47.2
^ permalink raw reply related [flat|nested] 15+ messages in thread* [PATCH v3 6/7] i2c: core: Deprecate of_node in struct i2c_board_info
2025-04-07 15:44 [PATCH v3 0/7] i2c: core: Move client towards fwnode Andy Shevchenko
` (4 preceding siblings ...)
2025-04-07 15:45 ` [PATCH v3 5/7] i2c: core: Do not dereference fwnode in struct device Andy Shevchenko
@ 2025-04-07 15:45 ` Andy Shevchenko
2025-04-08 14:42 ` Sakari Ailus
2025-04-07 15:45 ` [PATCH v3 7/7] media: i2c: ds90ub960: Remove of_node assignment Andy Shevchenko
2025-04-08 14:43 ` [PATCH v3 0/7] i2c: core: Move client towards fwnode Sakari Ailus
7 siblings, 1 reply; 15+ messages in thread
From: Andy Shevchenko @ 2025-04-07 15:45 UTC (permalink / raw)
To: Andy Shevchenko, Sakari Ailus, Mauro Carvalho Chehab,
Tomi Valkeinen, Jai Luthra, Wolfram Sang, linux-i2c, linux-kernel,
linux-media
Cc: Mauro Carvalho Chehab
Two members of the same or similar semantics is quite confusing to begin with.
Moreover, the fwnode covers all possible firmware descriptions that Linux kernel
supports. Deprecate of_node in struct i2c_board_info, so users will be warned
and in the future remote it completely.
Tested-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
include/linux/i2c.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/linux/i2c.h b/include/linux/i2c.h
index 2e4903b7f7bc..cc1437f29823 100644
--- a/include/linux/i2c.h
+++ b/include/linux/i2c.h
@@ -405,7 +405,7 @@ static inline bool i2c_detect_slave_mode(struct device *dev) { return false; }
* @addr: stored in i2c_client.addr
* @dev_name: Overrides the default <busnr>-<addr> dev_name if set
* @platform_data: stored in i2c_client.dev.platform_data
- * @of_node: pointer to OpenFirmware device node
+ * @of_node: **DEPRECATED** - use @fwnode for this
* @fwnode: device node supplied by the platform firmware
* @swnode: software node for the device
* @resources: resources associated with the device
--
2.47.2
^ permalink raw reply related [flat|nested] 15+ messages in thread* Re: [PATCH v3 6/7] i2c: core: Deprecate of_node in struct i2c_board_info
2025-04-07 15:45 ` [PATCH v3 6/7] i2c: core: Deprecate of_node in struct i2c_board_info Andy Shevchenko
@ 2025-04-08 14:42 ` Sakari Ailus
2025-04-08 14:47 ` Andy Shevchenko
0 siblings, 1 reply; 15+ messages in thread
From: Sakari Ailus @ 2025-04-08 14:42 UTC (permalink / raw)
To: Andy Shevchenko
Cc: Mauro Carvalho Chehab, Tomi Valkeinen, Jai Luthra, Wolfram Sang,
linux-i2c, linux-kernel, linux-media, Mauro Carvalho Chehab
Hi Andy,
On Mon, Apr 07, 2025 at 06:45:02PM +0300, Andy Shevchenko wrote:
> Two members of the same or similar semantics is quite confusing to begin with.
> Moreover, the fwnode covers all possible firmware descriptions that Linux kernel
> supports. Deprecate of_node in struct i2c_board_info, so users will be warned
> and in the future remote it completely.
Too long lines, should be up to 75 characters long only.
>
> Tested-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> ---
> include/linux/i2c.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/include/linux/i2c.h b/include/linux/i2c.h
> index 2e4903b7f7bc..cc1437f29823 100644
> --- a/include/linux/i2c.h
> +++ b/include/linux/i2c.h
> @@ -405,7 +405,7 @@ static inline bool i2c_detect_slave_mode(struct device *dev) { return false; }
> * @addr: stored in i2c_client.addr
> * @dev_name: Overrides the default <busnr>-<addr> dev_name if set
> * @platform_data: stored in i2c_client.dev.platform_data
> - * @of_node: pointer to OpenFirmware device node
> + * @of_node: **DEPRECATED** - use @fwnode for this
> * @fwnode: device node supplied by the platform firmware
> * @swnode: software node for the device
> * @resources: resources associated with the device
--
Regards,
Sakari Ailus
^ permalink raw reply [flat|nested] 15+ messages in thread* Re: [PATCH v3 6/7] i2c: core: Deprecate of_node in struct i2c_board_info
2025-04-08 14:42 ` Sakari Ailus
@ 2025-04-08 14:47 ` Andy Shevchenko
0 siblings, 0 replies; 15+ messages in thread
From: Andy Shevchenko @ 2025-04-08 14:47 UTC (permalink / raw)
To: Sakari Ailus
Cc: Mauro Carvalho Chehab, Tomi Valkeinen, Jai Luthra, Wolfram Sang,
linux-i2c, linux-kernel, linux-media, Mauro Carvalho Chehab
On Tue, Apr 08, 2025 at 02:42:51PM +0000, Sakari Ailus wrote:
> On Mon, Apr 07, 2025 at 06:45:02PM +0300, Andy Shevchenko wrote:
> > Two members of the same or similar semantics is quite confusing to begin with.
> > Moreover, the fwnode covers all possible firmware descriptions that Linux kernel
> > supports. Deprecate of_node in struct i2c_board_info, so users will be warned
> > and in the future remote it completely.
>
> Too long lines, should be up to 75 characters long only.
It's media CI complains, but this code is for I²C :-)
But in _this_ case I agree with you. It's more for the
external users of Git, rather than for us.
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH v3 7/7] media: i2c: ds90ub960: Remove of_node assignment
2025-04-07 15:44 [PATCH v3 0/7] i2c: core: Move client towards fwnode Andy Shevchenko
` (5 preceding siblings ...)
2025-04-07 15:45 ` [PATCH v3 6/7] i2c: core: Deprecate of_node in struct i2c_board_info Andy Shevchenko
@ 2025-04-07 15:45 ` Andy Shevchenko
2025-04-08 14:43 ` [PATCH v3 0/7] i2c: core: Move client towards fwnode Sakari Ailus
7 siblings, 0 replies; 15+ messages in thread
From: Andy Shevchenko @ 2025-04-07 15:45 UTC (permalink / raw)
To: Andy Shevchenko, Sakari Ailus, Mauro Carvalho Chehab,
Tomi Valkeinen, Jai Luthra, Wolfram Sang, linux-i2c, linux-kernel,
linux-media
Cc: Mauro Carvalho Chehab
Remove of_node assignment which duplicates fwnode in struct i2c_board_info.
In general drivers must not set both, it's quite confusing. The I²C core
will consider fwnode with a priority and of_node is subject to remove from
above mentioned data structure.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
drivers/media/i2c/ds90ub960.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/drivers/media/i2c/ds90ub960.c b/drivers/media/i2c/ds90ub960.c
index 5dde8452739b..5afdbbad9ff4 100644
--- a/drivers/media/i2c/ds90ub960.c
+++ b/drivers/media/i2c/ds90ub960.c
@@ -1682,7 +1682,6 @@ static int ub960_rxport_add_serializer(struct ub960_data *priv, u8 nport)
struct device *dev = &priv->client->dev;
struct ds90ub9xx_platform_data *ser_pdata = &rxport->ser.pdata;
struct i2c_board_info ser_info = {
- .of_node = to_of_node(rxport->ser.fwnode),
.fwnode = rxport->ser.fwnode,
.platform_data = ser_pdata,
};
--
2.47.2
^ permalink raw reply related [flat|nested] 15+ messages in thread* Re: [PATCH v3 0/7] i2c: core: Move client towards fwnode
2025-04-07 15:44 [PATCH v3 0/7] i2c: core: Move client towards fwnode Andy Shevchenko
` (6 preceding siblings ...)
2025-04-07 15:45 ` [PATCH v3 7/7] media: i2c: ds90ub960: Remove of_node assignment Andy Shevchenko
@ 2025-04-08 14:43 ` Sakari Ailus
2025-04-08 14:48 ` Andy Shevchenko
7 siblings, 1 reply; 15+ messages in thread
From: Sakari Ailus @ 2025-04-08 14:43 UTC (permalink / raw)
To: Andy Shevchenko
Cc: Mauro Carvalho Chehab, Tomi Valkeinen, Jai Luthra, Wolfram Sang,
linux-i2c, linux-kernel, linux-media, Mauro Carvalho Chehab
Hi Andy,
On Mon, Apr 07, 2025 at 06:44:56PM +0300, Andy Shevchenko wrote:
> The struct i2c_board_info has of_node and fwnode members. This is quite
> confusing as they are of the same semantics and it's tend to have an issue
> if user assigns both. Luckily there is only a single driver that does this
> and fix is provided in the last patch. Nevertheless the series moves
> the client handling code to use fwnode and deprecates the of_node member
> in the respective documentation.
>
> Tomi tested the last patch, but since it was separate there is no tag (yet).
Apart from the two minor commit message comments:
Reviewed-by: Sakari Ailus <sakari.ailus@linux.intel.com>
--
Sakari Ailus
^ permalink raw reply [flat|nested] 15+ messages in thread* Re: [PATCH v3 0/7] i2c: core: Move client towards fwnode
2025-04-08 14:43 ` [PATCH v3 0/7] i2c: core: Move client towards fwnode Sakari Ailus
@ 2025-04-08 14:48 ` Andy Shevchenko
2025-04-08 15:08 ` Sakari Ailus
0 siblings, 1 reply; 15+ messages in thread
From: Andy Shevchenko @ 2025-04-08 14:48 UTC (permalink / raw)
To: Sakari Ailus
Cc: Mauro Carvalho Chehab, Tomi Valkeinen, Jai Luthra, Wolfram Sang,
linux-i2c, linux-kernel, linux-media, Mauro Carvalho Chehab
On Tue, Apr 08, 2025 at 02:43:40PM +0000, Sakari Ailus wrote:
> On Mon, Apr 07, 2025 at 06:44:56PM +0300, Andy Shevchenko wrote:
> > The struct i2c_board_info has of_node and fwnode members. This is quite
> > confusing as they are of the same semantics and it's tend to have an issue
> > if user assigns both. Luckily there is only a single driver that does this
> > and fix is provided in the last patch. Nevertheless the series moves
> > the client handling code to use fwnode and deprecates the of_node member
> > in the respective documentation.
> >
> > Tomi tested the last patch, but since it was separate there is no tag (yet).
>
> Apart from the two minor commit message comments:
>
> Reviewed-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Thank you for your review!
Does it imply that media patch can go via I²C subsystem?
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH v3 0/7] i2c: core: Move client towards fwnode
2025-04-08 14:48 ` Andy Shevchenko
@ 2025-04-08 15:08 ` Sakari Ailus
2025-04-08 16:35 ` Tomi Valkeinen
0 siblings, 1 reply; 15+ messages in thread
From: Sakari Ailus @ 2025-04-08 15:08 UTC (permalink / raw)
To: Andy Shevchenko
Cc: Mauro Carvalho Chehab, Tomi Valkeinen, Jai Luthra, Wolfram Sang,
linux-i2c, linux-kernel, linux-media, Mauro Carvalho Chehab
On Tue, Apr 08, 2025 at 05:48:53PM +0300, Andy Shevchenko wrote:
> On Tue, Apr 08, 2025 at 02:43:40PM +0000, Sakari Ailus wrote:
> > On Mon, Apr 07, 2025 at 06:44:56PM +0300, Andy Shevchenko wrote:
> > > The struct i2c_board_info has of_node and fwnode members. This is quite
> > > confusing as they are of the same semantics and it's tend to have an issue
> > > if user assigns both. Luckily there is only a single driver that does this
> > > and fix is provided in the last patch. Nevertheless the series moves
> > > the client handling code to use fwnode and deprecates the of_node member
> > > in the respective documentation.
> > >
> > > Tomi tested the last patch, but since it was separate there is no tag (yet).
> >
> > Apart from the two minor commit message comments:
> >
> > Reviewed-by: Sakari Ailus <sakari.ailus@linux.intel.com>
>
> Thank you for your review!
> Does it imply that media patch can go via I²C subsystem?
Good point. Yes, and you can use this for the last patch:
Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com>
I wonder if Tomi would still be able to test (or at least ack) it. I see he
has tested the rest but this one is missing hist Tested-by:.
--
Sakari Ailus
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH v3 0/7] i2c: core: Move client towards fwnode
2025-04-08 15:08 ` Sakari Ailus
@ 2025-04-08 16:35 ` Tomi Valkeinen
0 siblings, 0 replies; 15+ messages in thread
From: Tomi Valkeinen @ 2025-04-08 16:35 UTC (permalink / raw)
To: Sakari Ailus, Andy Shevchenko
Cc: Mauro Carvalho Chehab, Jai Luthra, Wolfram Sang, linux-i2c,
linux-kernel, linux-media, Mauro Carvalho Chehab
On 08/04/2025 18:08, Sakari Ailus wrote:
> On Tue, Apr 08, 2025 at 05:48:53PM +0300, Andy Shevchenko wrote:
>> On Tue, Apr 08, 2025 at 02:43:40PM +0000, Sakari Ailus wrote:
>>> On Mon, Apr 07, 2025 at 06:44:56PM +0300, Andy Shevchenko wrote:
>>>> The struct i2c_board_info has of_node and fwnode members. This is quite
>>>> confusing as they are of the same semantics and it's tend to have an issue
>>>> if user assigns both. Luckily there is only a single driver that does this
>>>> and fix is provided in the last patch. Nevertheless the series moves
>>>> the client handling code to use fwnode and deprecates the of_node member
>>>> in the respective documentation.
>>>>
>>>> Tomi tested the last patch, but since it was separate there is no tag (yet).
>>>
>>> Apart from the two minor commit message comments:
>>>
>>> Reviewed-by: Sakari Ailus <sakari.ailus@linux.intel.com>
>>
>> Thank you for your review!
>> Does it imply that media patch can go via I²C subsystem?
>
> Good point. Yes, and you can use this for the last patch:
>
> Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com>
>
> I wonder if Tomi would still be able to test (or at least ack) it. I see he
> has tested the rest but this one is missing hist Tested-by:.
I think Andy just missed it, as it wasn't explicit. I did test the v2,
with the 7th patch from this series on top (it was not included in v2).
I haven't tested v3, but I don't think anything really has changed.
Tomi
^ permalink raw reply [flat|nested] 15+ messages in thread