* [PATCH 0/2] i3c: master: switch to use new callback .i3c_xfers() from .priv_xfers()
@ 2025-10-27 20:57 ` Frank Li
0 siblings, 0 replies; 8+ messages in thread
From: Frank Li @ 2025-10-27 20:57 UTC (permalink / raw)
To: Jorge Marques, Alexandre Belloni, Przemysław Gaj,
Wolfram Sang, Tommaso Merciai
Cc: linux-i3c, linux-kernel, Frank Li
switch all controller driver use new callback .i3c_xfers() from
.priv_xfers() and remove .priv_xfers() in framework.
This serise is base on
https://lore.kernel.org/linux-i3c/20251027-i3c_ddr-v7-0-866a0ff7fc46@nxp.com/T/#t
Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
Frank Li (2):
i3c: master: switch to use new callback .i3c_xfers() from .priv_xfers()
i3c: master: cleanup callback .priv_xfers()
drivers/i3c/master.c | 17 ++---------------
drivers/i3c/master/adi-i3c-master.c | 8 ++++----
drivers/i3c/master/dw-i3c-master.c | 8 ++++----
drivers/i3c/master/i3c-master-cdns.c | 8 ++++----
drivers/i3c/master/mipi-i3c-hci/core.c | 8 ++++----
drivers/i3c/master/renesas-i3c.c | 6 +++---
include/linux/i3c/master.h | 6 ------
7 files changed, 21 insertions(+), 40 deletions(-)
---
base-commit: f22e2617a331cf4800d6468cf0455db05a74c9a4
change-id: 20251027-i3c_xfer_cleanup_master-cf75a712dc7c
Best regards,
--
Frank Li <Frank.Li@nxp.com>
--
linux-i3c mailing list
linux-i3c@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-i3c
^ permalink raw reply [flat|nested] 8+ messages in thread* [PATCH 0/2] i3c: master: switch to use new callback .i3c_xfers() from .priv_xfers() @ 2025-10-27 20:57 ` Frank Li 0 siblings, 0 replies; 8+ messages in thread From: Frank Li @ 2025-10-27 20:57 UTC (permalink / raw) To: Jorge Marques, Alexandre Belloni, Przemysław Gaj, Wolfram Sang, Tommaso Merciai Cc: linux-i3c, linux-kernel, Frank Li switch all controller driver use new callback .i3c_xfers() from .priv_xfers() and remove .priv_xfers() in framework. This serise is base on https://lore.kernel.org/linux-i3c/20251027-i3c_ddr-v7-0-866a0ff7fc46@nxp.com/T/#t Signed-off-by: Frank Li <Frank.Li@nxp.com> --- Frank Li (2): i3c: master: switch to use new callback .i3c_xfers() from .priv_xfers() i3c: master: cleanup callback .priv_xfers() drivers/i3c/master.c | 17 ++--------------- drivers/i3c/master/adi-i3c-master.c | 8 ++++---- drivers/i3c/master/dw-i3c-master.c | 8 ++++---- drivers/i3c/master/i3c-master-cdns.c | 8 ++++---- drivers/i3c/master/mipi-i3c-hci/core.c | 8 ++++---- drivers/i3c/master/renesas-i3c.c | 6 +++--- include/linux/i3c/master.h | 6 ------ 7 files changed, 21 insertions(+), 40 deletions(-) --- base-commit: f22e2617a331cf4800d6468cf0455db05a74c9a4 change-id: 20251027-i3c_xfer_cleanup_master-cf75a712dc7c Best regards, -- Frank Li <Frank.Li@nxp.com> ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 1/2] i3c: master: switch to use new callback .i3c_xfers() from .priv_xfers() 2025-10-27 20:57 ` Frank Li @ 2025-10-27 20:57 ` Frank Li -1 siblings, 0 replies; 8+ messages in thread From: Frank Li @ 2025-10-27 20:57 UTC (permalink / raw) To: Jorge Marques, Alexandre Belloni, Przemysław Gaj, Wolfram Sang, Tommaso Merciai Cc: linux-i3c, linux-kernel, Frank Li Switch to use the new .i3c_xfers() callback, which supports all I3C transfer modes (SDR and HDR). Also replace struct i3c_priv_xfer with the new struct i3c_xfer, as i3c_priv_xfer is now an alias of i3c_xfer. No functional changes. Signed-off-by: Frank Li <Frank.Li@nxp.com> --- drivers/i3c/master/adi-i3c-master.c | 8 ++++---- drivers/i3c/master/dw-i3c-master.c | 8 ++++---- drivers/i3c/master/i3c-master-cdns.c | 8 ++++---- drivers/i3c/master/mipi-i3c-hci/core.c | 8 ++++---- drivers/i3c/master/renesas-i3c.c | 6 +++--- 5 files changed, 19 insertions(+), 19 deletions(-) diff --git a/drivers/i3c/master/adi-i3c-master.c b/drivers/i3c/master/adi-i3c-master.c index 82ac0b3d057abddc78671ce973db12f528984ea1..00eb80e492afc736046f04fa454be16bb718004a 100644 --- a/drivers/i3c/master/adi-i3c-master.c +++ b/drivers/i3c/master/adi-i3c-master.c @@ -365,9 +365,9 @@ static int adi_i3c_master_send_ccc_cmd(struct i3c_master_controller *m, return 0; } -static int adi_i3c_master_priv_xfers(struct i3c_dev_desc *dev, - struct i3c_priv_xfer *xfers, - int nxfers) +static int adi_i3c_master_i3c_xfers(struct i3c_dev_desc *dev, + struct i3c_xfer *xfers, + int nxfers, enum i3c_xfer_mode mode) { struct i3c_master_controller *m = i3c_dev_get_master(dev); struct adi_i3c_master *master = to_adi_i3c_master(m); @@ -919,7 +919,7 @@ static const struct i3c_master_controller_ops adi_i3c_master_ops = { .do_daa = adi_i3c_master_do_daa, .supports_ccc_cmd = adi_i3c_master_supports_ccc_cmd, .send_ccc_cmd = adi_i3c_master_send_ccc_cmd, - .priv_xfers = adi_i3c_master_priv_xfers, + .i3c_xfers = adi_i3c_master_i3c_xfers, .i2c_xfers = adi_i3c_master_i2c_xfers, .request_ibi = adi_i3c_master_request_ibi, .enable_ibi = adi_i3c_master_enable_ibi, diff --git a/drivers/i3c/master/dw-i3c-master.c b/drivers/i3c/master/dw-i3c-master.c index 9ceedf09c3b6a6e75063ae09a22854f6f3151a3f..b07452a150cfe4c461aac471c3bd6970a681ecc1 100644 --- a/drivers/i3c/master/dw-i3c-master.c +++ b/drivers/i3c/master/dw-i3c-master.c @@ -897,9 +897,9 @@ static int dw_i3c_master_daa(struct i3c_master_controller *m) return ret; } -static int dw_i3c_master_priv_xfers(struct i3c_dev_desc *dev, - struct i3c_priv_xfer *i3c_xfers, - int i3c_nxfers) +static int dw_i3c_master_i3c_xfers(struct i3c_dev_desc *dev, + struct i3c_xfer *i3c_xfers, + int i3c_nxfers, enum i3c_xfer_mode mode) { struct dw_i3c_i2c_dev_data *data = i3c_dev_get_master_data(dev); struct i3c_master_controller *m = i3c_dev_get_master(dev); @@ -1493,7 +1493,7 @@ static const struct i3c_master_controller_ops dw_mipi_i3c_ops = { .do_daa = dw_i3c_master_daa, .supports_ccc_cmd = dw_i3c_master_supports_ccc_cmd, .send_ccc_cmd = dw_i3c_master_send_ccc_cmd, - .priv_xfers = dw_i3c_master_priv_xfers, + .i3c_xfers = dw_i3c_master_i3c_xfers, .attach_i2c_dev = dw_i3c_master_attach_i2c_dev, .detach_i2c_dev = dw_i3c_master_detach_i2c_dev, .i2c_xfers = dw_i3c_master_i2c_xfers, diff --git a/drivers/i3c/master/i3c-master-cdns.c b/drivers/i3c/master/i3c-master-cdns.c index 97b151564d3d31092975cec14958a17ddcd91d13..8eb76b8ca2b00a46a65f3a6dc7416d8af7ca288d 100644 --- a/drivers/i3c/master/i3c-master-cdns.c +++ b/drivers/i3c/master/i3c-master-cdns.c @@ -720,9 +720,9 @@ static int cdns_i3c_master_send_ccc_cmd(struct i3c_master_controller *m, return ret; } -static int cdns_i3c_master_priv_xfers(struct i3c_dev_desc *dev, - struct i3c_priv_xfer *xfers, - int nxfers) +static int cdns_i3c_master_i3c_xfers(struct i3c_dev_desc *dev, + struct i3c_xfer *xfers, + int nxfers, enum i3c_xfer_mode mode) { struct i3c_master_controller *m = i3c_dev_get_master(dev); struct cdns_i3c_master *master = to_cdns_i3c_master(m); @@ -1519,7 +1519,7 @@ static const struct i3c_master_controller_ops cdns_i3c_master_ops = { .detach_i2c_dev = cdns_i3c_master_detach_i2c_dev, .supports_ccc_cmd = cdns_i3c_master_supports_ccc_cmd, .send_ccc_cmd = cdns_i3c_master_send_ccc_cmd, - .priv_xfers = cdns_i3c_master_priv_xfers, + .i3c_xfers = cdns_i3c_master_i3c_xfers, .i2c_xfers = cdns_i3c_master_i2c_xfers, .enable_ibi = cdns_i3c_master_enable_ibi, .disable_ibi = cdns_i3c_master_disable_ibi, diff --git a/drivers/i3c/master/mipi-i3c-hci/core.c b/drivers/i3c/master/mipi-i3c-hci/core.c index 47e42cb4dbe71edc5a022f4cb0fdf33a281eb4a7..607d77ab0e54691705845c33a79939820a83c9f0 100644 --- a/drivers/i3c/master/mipi-i3c-hci/core.c +++ b/drivers/i3c/master/mipi-i3c-hci/core.c @@ -266,9 +266,9 @@ static int i3c_hci_daa(struct i3c_master_controller *m) return hci->cmd->perform_daa(hci); } -static int i3c_hci_priv_xfers(struct i3c_dev_desc *dev, - struct i3c_priv_xfer *i3c_xfers, - int nxfers) +static int i3c_hci_i3c_xfers(struct i3c_dev_desc *dev, + struct i3c_xfer *i3c_xfers, int nxfers, + enum i3c_xfer_mode mode) { struct i3c_master_controller *m = i3c_dev_get_master(dev); struct i3c_hci *hci = to_i3c_hci(m); @@ -515,7 +515,7 @@ static const struct i3c_master_controller_ops i3c_hci_ops = { .bus_cleanup = i3c_hci_bus_cleanup, .do_daa = i3c_hci_daa, .send_ccc_cmd = i3c_hci_send_ccc_cmd, - .priv_xfers = i3c_hci_priv_xfers, + .i3c_xfers = i3c_hci_i3c_xfers, .i2c_xfers = i3c_hci_i2c_xfers, .attach_i3c_dev = i3c_hci_attach_i3c_dev, .reattach_i3c_dev = i3c_hci_reattach_i3c_dev, diff --git a/drivers/i3c/master/renesas-i3c.c b/drivers/i3c/master/renesas-i3c.c index 275f7b9242886ee77a647149a808e2f184fb0447..426a418f29b61256fbbfc50cf578bf04629ec391 100644 --- a/drivers/i3c/master/renesas-i3c.c +++ b/drivers/i3c/master/renesas-i3c.c @@ -794,8 +794,8 @@ static int renesas_i3c_send_ccc_cmd(struct i3c_master_controller *m, return ret; } -static int renesas_i3c_priv_xfers(struct i3c_dev_desc *dev, struct i3c_priv_xfer *i3c_xfers, - int i3c_nxfers) +static int renesas_i3c_i3c_xfers(struct i3c_dev_desc *dev, struct i3c_xfer *i3c_xfers, + int i3c_nxfers, enum i3c_xfer_mode mode) { struct i3c_master_controller *m = i3c_dev_get_master(dev); struct renesas_i3c *i3c = to_renesas_i3c(m); @@ -1282,7 +1282,7 @@ static const struct i3c_master_controller_ops renesas_i3c_ops = { .do_daa = renesas_i3c_daa, .supports_ccc_cmd = renesas_i3c_supports_ccc_cmd, .send_ccc_cmd = renesas_i3c_send_ccc_cmd, - .priv_xfers = renesas_i3c_priv_xfers, + .i3c_xfers = renesas_i3c_i3c_xfers, .attach_i2c_dev = renesas_i3c_attach_i2c_dev, .detach_i2c_dev = renesas_i3c_detach_i2c_dev, .i2c_xfers = renesas_i3c_i2c_xfers, -- 2.34.1 -- linux-i3c mailing list linux-i3c@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-i3c ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 1/2] i3c: master: switch to use new callback .i3c_xfers() from .priv_xfers() @ 2025-10-27 20:57 ` Frank Li 0 siblings, 0 replies; 8+ messages in thread From: Frank Li @ 2025-10-27 20:57 UTC (permalink / raw) To: Jorge Marques, Alexandre Belloni, Przemysław Gaj, Wolfram Sang, Tommaso Merciai Cc: linux-i3c, linux-kernel, Frank Li Switch to use the new .i3c_xfers() callback, which supports all I3C transfer modes (SDR and HDR). Also replace struct i3c_priv_xfer with the new struct i3c_xfer, as i3c_priv_xfer is now an alias of i3c_xfer. No functional changes. Signed-off-by: Frank Li <Frank.Li@nxp.com> --- drivers/i3c/master/adi-i3c-master.c | 8 ++++---- drivers/i3c/master/dw-i3c-master.c | 8 ++++---- drivers/i3c/master/i3c-master-cdns.c | 8 ++++---- drivers/i3c/master/mipi-i3c-hci/core.c | 8 ++++---- drivers/i3c/master/renesas-i3c.c | 6 +++--- 5 files changed, 19 insertions(+), 19 deletions(-) diff --git a/drivers/i3c/master/adi-i3c-master.c b/drivers/i3c/master/adi-i3c-master.c index 82ac0b3d057abddc78671ce973db12f528984ea1..00eb80e492afc736046f04fa454be16bb718004a 100644 --- a/drivers/i3c/master/adi-i3c-master.c +++ b/drivers/i3c/master/adi-i3c-master.c @@ -365,9 +365,9 @@ static int adi_i3c_master_send_ccc_cmd(struct i3c_master_controller *m, return 0; } -static int adi_i3c_master_priv_xfers(struct i3c_dev_desc *dev, - struct i3c_priv_xfer *xfers, - int nxfers) +static int adi_i3c_master_i3c_xfers(struct i3c_dev_desc *dev, + struct i3c_xfer *xfers, + int nxfers, enum i3c_xfer_mode mode) { struct i3c_master_controller *m = i3c_dev_get_master(dev); struct adi_i3c_master *master = to_adi_i3c_master(m); @@ -919,7 +919,7 @@ static const struct i3c_master_controller_ops adi_i3c_master_ops = { .do_daa = adi_i3c_master_do_daa, .supports_ccc_cmd = adi_i3c_master_supports_ccc_cmd, .send_ccc_cmd = adi_i3c_master_send_ccc_cmd, - .priv_xfers = adi_i3c_master_priv_xfers, + .i3c_xfers = adi_i3c_master_i3c_xfers, .i2c_xfers = adi_i3c_master_i2c_xfers, .request_ibi = adi_i3c_master_request_ibi, .enable_ibi = adi_i3c_master_enable_ibi, diff --git a/drivers/i3c/master/dw-i3c-master.c b/drivers/i3c/master/dw-i3c-master.c index 9ceedf09c3b6a6e75063ae09a22854f6f3151a3f..b07452a150cfe4c461aac471c3bd6970a681ecc1 100644 --- a/drivers/i3c/master/dw-i3c-master.c +++ b/drivers/i3c/master/dw-i3c-master.c @@ -897,9 +897,9 @@ static int dw_i3c_master_daa(struct i3c_master_controller *m) return ret; } -static int dw_i3c_master_priv_xfers(struct i3c_dev_desc *dev, - struct i3c_priv_xfer *i3c_xfers, - int i3c_nxfers) +static int dw_i3c_master_i3c_xfers(struct i3c_dev_desc *dev, + struct i3c_xfer *i3c_xfers, + int i3c_nxfers, enum i3c_xfer_mode mode) { struct dw_i3c_i2c_dev_data *data = i3c_dev_get_master_data(dev); struct i3c_master_controller *m = i3c_dev_get_master(dev); @@ -1493,7 +1493,7 @@ static const struct i3c_master_controller_ops dw_mipi_i3c_ops = { .do_daa = dw_i3c_master_daa, .supports_ccc_cmd = dw_i3c_master_supports_ccc_cmd, .send_ccc_cmd = dw_i3c_master_send_ccc_cmd, - .priv_xfers = dw_i3c_master_priv_xfers, + .i3c_xfers = dw_i3c_master_i3c_xfers, .attach_i2c_dev = dw_i3c_master_attach_i2c_dev, .detach_i2c_dev = dw_i3c_master_detach_i2c_dev, .i2c_xfers = dw_i3c_master_i2c_xfers, diff --git a/drivers/i3c/master/i3c-master-cdns.c b/drivers/i3c/master/i3c-master-cdns.c index 97b151564d3d31092975cec14958a17ddcd91d13..8eb76b8ca2b00a46a65f3a6dc7416d8af7ca288d 100644 --- a/drivers/i3c/master/i3c-master-cdns.c +++ b/drivers/i3c/master/i3c-master-cdns.c @@ -720,9 +720,9 @@ static int cdns_i3c_master_send_ccc_cmd(struct i3c_master_controller *m, return ret; } -static int cdns_i3c_master_priv_xfers(struct i3c_dev_desc *dev, - struct i3c_priv_xfer *xfers, - int nxfers) +static int cdns_i3c_master_i3c_xfers(struct i3c_dev_desc *dev, + struct i3c_xfer *xfers, + int nxfers, enum i3c_xfer_mode mode) { struct i3c_master_controller *m = i3c_dev_get_master(dev); struct cdns_i3c_master *master = to_cdns_i3c_master(m); @@ -1519,7 +1519,7 @@ static const struct i3c_master_controller_ops cdns_i3c_master_ops = { .detach_i2c_dev = cdns_i3c_master_detach_i2c_dev, .supports_ccc_cmd = cdns_i3c_master_supports_ccc_cmd, .send_ccc_cmd = cdns_i3c_master_send_ccc_cmd, - .priv_xfers = cdns_i3c_master_priv_xfers, + .i3c_xfers = cdns_i3c_master_i3c_xfers, .i2c_xfers = cdns_i3c_master_i2c_xfers, .enable_ibi = cdns_i3c_master_enable_ibi, .disable_ibi = cdns_i3c_master_disable_ibi, diff --git a/drivers/i3c/master/mipi-i3c-hci/core.c b/drivers/i3c/master/mipi-i3c-hci/core.c index 47e42cb4dbe71edc5a022f4cb0fdf33a281eb4a7..607d77ab0e54691705845c33a79939820a83c9f0 100644 --- a/drivers/i3c/master/mipi-i3c-hci/core.c +++ b/drivers/i3c/master/mipi-i3c-hci/core.c @@ -266,9 +266,9 @@ static int i3c_hci_daa(struct i3c_master_controller *m) return hci->cmd->perform_daa(hci); } -static int i3c_hci_priv_xfers(struct i3c_dev_desc *dev, - struct i3c_priv_xfer *i3c_xfers, - int nxfers) +static int i3c_hci_i3c_xfers(struct i3c_dev_desc *dev, + struct i3c_xfer *i3c_xfers, int nxfers, + enum i3c_xfer_mode mode) { struct i3c_master_controller *m = i3c_dev_get_master(dev); struct i3c_hci *hci = to_i3c_hci(m); @@ -515,7 +515,7 @@ static const struct i3c_master_controller_ops i3c_hci_ops = { .bus_cleanup = i3c_hci_bus_cleanup, .do_daa = i3c_hci_daa, .send_ccc_cmd = i3c_hci_send_ccc_cmd, - .priv_xfers = i3c_hci_priv_xfers, + .i3c_xfers = i3c_hci_i3c_xfers, .i2c_xfers = i3c_hci_i2c_xfers, .attach_i3c_dev = i3c_hci_attach_i3c_dev, .reattach_i3c_dev = i3c_hci_reattach_i3c_dev, diff --git a/drivers/i3c/master/renesas-i3c.c b/drivers/i3c/master/renesas-i3c.c index 275f7b9242886ee77a647149a808e2f184fb0447..426a418f29b61256fbbfc50cf578bf04629ec391 100644 --- a/drivers/i3c/master/renesas-i3c.c +++ b/drivers/i3c/master/renesas-i3c.c @@ -794,8 +794,8 @@ static int renesas_i3c_send_ccc_cmd(struct i3c_master_controller *m, return ret; } -static int renesas_i3c_priv_xfers(struct i3c_dev_desc *dev, struct i3c_priv_xfer *i3c_xfers, - int i3c_nxfers) +static int renesas_i3c_i3c_xfers(struct i3c_dev_desc *dev, struct i3c_xfer *i3c_xfers, + int i3c_nxfers, enum i3c_xfer_mode mode) { struct i3c_master_controller *m = i3c_dev_get_master(dev); struct renesas_i3c *i3c = to_renesas_i3c(m); @@ -1282,7 +1282,7 @@ static const struct i3c_master_controller_ops renesas_i3c_ops = { .do_daa = renesas_i3c_daa, .supports_ccc_cmd = renesas_i3c_supports_ccc_cmd, .send_ccc_cmd = renesas_i3c_send_ccc_cmd, - .priv_xfers = renesas_i3c_priv_xfers, + .i3c_xfers = renesas_i3c_i3c_xfers, .attach_i2c_dev = renesas_i3c_attach_i2c_dev, .detach_i2c_dev = renesas_i3c_detach_i2c_dev, .i2c_xfers = renesas_i3c_i2c_xfers, -- 2.34.1 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 2/2] i3c: master: cleanup callback .priv_xfers() 2025-10-27 20:57 ` Frank Li @ 2025-10-27 20:57 ` Frank Li -1 siblings, 0 replies; 8+ messages in thread From: Frank Li @ 2025-10-27 20:57 UTC (permalink / raw) To: Jorge Marques, Alexandre Belloni, Przemysław Gaj, Wolfram Sang, Tommaso Merciai Cc: linux-i3c, linux-kernel, Frank Li Remove the .priv_xfers() callback from the framework after all master controller drivers have switched to use the new .i3c_xfers() callback. Signed-off-by: Frank Li <Frank.Li@nxp.com> --- drivers/i3c/master.c | 17 ++--------------- include/linux/i3c/master.h | 6 ------ 2 files changed, 2 insertions(+), 21 deletions(-) diff --git a/drivers/i3c/master.c b/drivers/i3c/master.c index 16a480865ff4a28857f1ea6df33dbe4a66d1468c..ad9714247161121a7de2c97ecf8302e58f6e7957 100644 --- a/drivers/i3c/master.c +++ b/drivers/i3c/master.c @@ -2821,14 +2821,10 @@ EXPORT_SYMBOL_GPL(i3c_generic_ibi_recycle_slot); static int i3c_master_check_ops(const struct i3c_master_controller_ops *ops) { - if (!ops || !ops->bus_init || + if (!ops || !ops->bus_init || !ops->i3c_xfers || !ops->send_ccc_cmd || !ops->do_daa || !ops->i2c_xfers) return -EINVAL; - /* Must provide one of priv_xfers (SDR only) or i3c_xfers (all modes) */ - if (!ops->priv_xfers && !ops->i3c_xfers) - return -EINVAL; - if (ops->request_ibi && (!ops->enable_ibi || !ops->disable_ibi || !ops->free_ibi || !ops->recycle_ibi_slot)) @@ -3033,16 +3029,7 @@ int i3c_dev_do_xfers_locked(struct i3c_dev_desc *dev, struct i3c_xfer *xfers, if (mode != I3C_SDR && !(master->this->info.hdr_cap & BIT(mode))) return -EOPNOTSUPP; - if (master->ops->i3c_xfers) - return master->ops->i3c_xfers(dev, xfers, nxfers, mode); - - if (!master->ops->priv_xfers) - return -EOPNOTSUPP; - - if (mode != I3C_SDR) - return -EINVAL; - - return master->ops->priv_xfers(dev, xfers, nxfers); + return master->ops->i3c_xfers(dev, xfers, nxfers, mode); } int i3c_dev_disable_ibi_locked(struct i3c_dev_desc *dev) diff --git a/include/linux/i3c/master.h b/include/linux/i3c/master.h index 7e22f9d2a2ca3f4ab808db50f809efd192c795cd..028696abd61abc4bde73a04a1f291db874f2292c 100644 --- a/include/linux/i3c/master.h +++ b/include/linux/i3c/master.h @@ -417,8 +417,6 @@ struct i3c_bus { * all CCC commands are supported. * @send_ccc_cmd: send a CCC command * This method is mandatory. - * @priv_xfers: do one or several private I3C SDR transfers - * This method is mandatory. * @attach_i2c_dev: called every time an I2C device is attached to the bus. * This is a good place to attach master controller specific * data to I2C devices. @@ -474,10 +472,6 @@ struct i3c_master_controller_ops { const struct i3c_ccc_cmd *cmd); int (*send_ccc_cmd)(struct i3c_master_controller *master, struct i3c_ccc_cmd *cmd); - /* Depreciated, please use i3c_xfers() */ - int (*priv_xfers)(struct i3c_dev_desc *dev, - struct i3c_priv_xfer *xfers, - int nxfers); int (*i3c_xfers)(struct i3c_dev_desc *dev, struct i3c_priv_xfer *xfers, int nxfers, enum i3c_xfer_mode mode); -- 2.34.1 -- linux-i3c mailing list linux-i3c@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-i3c ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 2/2] i3c: master: cleanup callback .priv_xfers() @ 2025-10-27 20:57 ` Frank Li 0 siblings, 0 replies; 8+ messages in thread From: Frank Li @ 2025-10-27 20:57 UTC (permalink / raw) To: Jorge Marques, Alexandre Belloni, Przemysław Gaj, Wolfram Sang, Tommaso Merciai Cc: linux-i3c, linux-kernel, Frank Li Remove the .priv_xfers() callback from the framework after all master controller drivers have switched to use the new .i3c_xfers() callback. Signed-off-by: Frank Li <Frank.Li@nxp.com> --- drivers/i3c/master.c | 17 ++--------------- include/linux/i3c/master.h | 6 ------ 2 files changed, 2 insertions(+), 21 deletions(-) diff --git a/drivers/i3c/master.c b/drivers/i3c/master.c index 16a480865ff4a28857f1ea6df33dbe4a66d1468c..ad9714247161121a7de2c97ecf8302e58f6e7957 100644 --- a/drivers/i3c/master.c +++ b/drivers/i3c/master.c @@ -2821,14 +2821,10 @@ EXPORT_SYMBOL_GPL(i3c_generic_ibi_recycle_slot); static int i3c_master_check_ops(const struct i3c_master_controller_ops *ops) { - if (!ops || !ops->bus_init || + if (!ops || !ops->bus_init || !ops->i3c_xfers || !ops->send_ccc_cmd || !ops->do_daa || !ops->i2c_xfers) return -EINVAL; - /* Must provide one of priv_xfers (SDR only) or i3c_xfers (all modes) */ - if (!ops->priv_xfers && !ops->i3c_xfers) - return -EINVAL; - if (ops->request_ibi && (!ops->enable_ibi || !ops->disable_ibi || !ops->free_ibi || !ops->recycle_ibi_slot)) @@ -3033,16 +3029,7 @@ int i3c_dev_do_xfers_locked(struct i3c_dev_desc *dev, struct i3c_xfer *xfers, if (mode != I3C_SDR && !(master->this->info.hdr_cap & BIT(mode))) return -EOPNOTSUPP; - if (master->ops->i3c_xfers) - return master->ops->i3c_xfers(dev, xfers, nxfers, mode); - - if (!master->ops->priv_xfers) - return -EOPNOTSUPP; - - if (mode != I3C_SDR) - return -EINVAL; - - return master->ops->priv_xfers(dev, xfers, nxfers); + return master->ops->i3c_xfers(dev, xfers, nxfers, mode); } int i3c_dev_disable_ibi_locked(struct i3c_dev_desc *dev) diff --git a/include/linux/i3c/master.h b/include/linux/i3c/master.h index 7e22f9d2a2ca3f4ab808db50f809efd192c795cd..028696abd61abc4bde73a04a1f291db874f2292c 100644 --- a/include/linux/i3c/master.h +++ b/include/linux/i3c/master.h @@ -417,8 +417,6 @@ struct i3c_bus { * all CCC commands are supported. * @send_ccc_cmd: send a CCC command * This method is mandatory. - * @priv_xfers: do one or several private I3C SDR transfers - * This method is mandatory. * @attach_i2c_dev: called every time an I2C device is attached to the bus. * This is a good place to attach master controller specific * data to I2C devices. @@ -474,10 +472,6 @@ struct i3c_master_controller_ops { const struct i3c_ccc_cmd *cmd); int (*send_ccc_cmd)(struct i3c_master_controller *master, struct i3c_ccc_cmd *cmd); - /* Depreciated, please use i3c_xfers() */ - int (*priv_xfers)(struct i3c_dev_desc *dev, - struct i3c_priv_xfer *xfers, - int nxfers); int (*i3c_xfers)(struct i3c_dev_desc *dev, struct i3c_priv_xfer *xfers, int nxfers, enum i3c_xfer_mode mode); -- 2.34.1 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 0/2] i3c: master: switch to use new callback .i3c_xfers() from .priv_xfers() 2025-10-27 20:57 ` Frank Li @ 2025-12-02 23:16 ` Alexandre Belloni -1 siblings, 0 replies; 8+ messages in thread From: Alexandre Belloni @ 2025-12-02 23:16 UTC (permalink / raw) To: Frank Li Cc: Jorge Marques, Przemysław Gaj, Wolfram Sang, Tommaso Merciai, linux-i3c, linux-kernel Hello, This series need rebasing On 27/10/2025 16:57:38-0400, Frank Li wrote: > switch all controller driver use new callback .i3c_xfers() from > .priv_xfers() and remove .priv_xfers() in framework. > > This serise is base on > https://lore.kernel.org/linux-i3c/20251027-i3c_ddr-v7-0-866a0ff7fc46@nxp.com/T/#t > > Signed-off-by: Frank Li <Frank.Li@nxp.com> > --- > Frank Li (2): > i3c: master: switch to use new callback .i3c_xfers() from .priv_xfers() > i3c: master: cleanup callback .priv_xfers() > > drivers/i3c/master.c | 17 ++--------------- > drivers/i3c/master/adi-i3c-master.c | 8 ++++---- > drivers/i3c/master/dw-i3c-master.c | 8 ++++---- > drivers/i3c/master/i3c-master-cdns.c | 8 ++++---- > drivers/i3c/master/mipi-i3c-hci/core.c | 8 ++++---- > drivers/i3c/master/renesas-i3c.c | 6 +++--- > include/linux/i3c/master.h | 6 ------ > 7 files changed, 21 insertions(+), 40 deletions(-) > --- > base-commit: f22e2617a331cf4800d6468cf0455db05a74c9a4 > change-id: 20251027-i3c_xfer_cleanup_master-cf75a712dc7c > > Best regards, > -- > Frank Li <Frank.Li@nxp.com> > > > -- > linux-i3c mailing list > linux-i3c@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-i3c -- Alexandre Belloni, co-owner and COO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com -- linux-i3c mailing list linux-i3c@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-i3c ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 0/2] i3c: master: switch to use new callback .i3c_xfers() from .priv_xfers() @ 2025-12-02 23:16 ` Alexandre Belloni 0 siblings, 0 replies; 8+ messages in thread From: Alexandre Belloni @ 2025-12-02 23:16 UTC (permalink / raw) To: Frank Li Cc: Jorge Marques, Przemysław Gaj, Wolfram Sang, Tommaso Merciai, linux-i3c, linux-kernel Hello, This series need rebasing On 27/10/2025 16:57:38-0400, Frank Li wrote: > switch all controller driver use new callback .i3c_xfers() from > .priv_xfers() and remove .priv_xfers() in framework. > > This serise is base on > https://lore.kernel.org/linux-i3c/20251027-i3c_ddr-v7-0-866a0ff7fc46@nxp.com/T/#t > > Signed-off-by: Frank Li <Frank.Li@nxp.com> > --- > Frank Li (2): > i3c: master: switch to use new callback .i3c_xfers() from .priv_xfers() > i3c: master: cleanup callback .priv_xfers() > > drivers/i3c/master.c | 17 ++--------------- > drivers/i3c/master/adi-i3c-master.c | 8 ++++---- > drivers/i3c/master/dw-i3c-master.c | 8 ++++---- > drivers/i3c/master/i3c-master-cdns.c | 8 ++++---- > drivers/i3c/master/mipi-i3c-hci/core.c | 8 ++++---- > drivers/i3c/master/renesas-i3c.c | 6 +++--- > include/linux/i3c/master.h | 6 ------ > 7 files changed, 21 insertions(+), 40 deletions(-) > --- > base-commit: f22e2617a331cf4800d6468cf0455db05a74c9a4 > change-id: 20251027-i3c_xfer_cleanup_master-cf75a712dc7c > > Best regards, > -- > Frank Li <Frank.Li@nxp.com> > > > -- > linux-i3c mailing list > linux-i3c@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-i3c -- Alexandre Belloni, co-owner and COO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2025-12-02 23:17 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-10-27 20:57 [PATCH 0/2] i3c: master: switch to use new callback .i3c_xfers() from .priv_xfers() Frank Li 2025-10-27 20:57 ` Frank Li 2025-10-27 20:57 ` [PATCH 1/2] " Frank Li 2025-10-27 20:57 ` Frank Li 2025-10-27 20:57 ` [PATCH 2/2] i3c: master: cleanup callback .priv_xfers() Frank Li 2025-10-27 20:57 ` Frank Li 2025-12-02 23:16 ` [PATCH 0/2] i3c: master: switch to use new callback .i3c_xfers() from .priv_xfers() Alexandre Belloni 2025-12-02 23:16 ` Alexandre Belloni
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.