From: Parshuram Thombare <pthombar@cadence.com> To: <bbrezillon@kernel.org>, <vitor.soares@synopsys.com> Cc: <pgaj@cadence.com>, <linux-i3c@lists.infradead.org>, <linux-kernel@vger.kernel.org>, <mparab@cadence.com>, <praneeth@ti.com>, Parshuram Thombare <pthombar@cadence.com> Subject: [PATCH v7 2/7] i3c: master: use i3c_master_register only for main master Date: Mon, 11 May 2020 15:13:05 +0200 [thread overview] Message-ID: <1589202785-6174-1-git-send-email-pthombar@cadence.com> (raw) In-Reply-To: <1589202702-4879-1-git-send-email-pthombar@cadence.com> Removed last argument 'secondary' and refactored i3c_master_register to move code that can be common to i3c_secondary_master_register to separate function i3c_master_init. Signed-off-by: Parshuram Thombare <pthombar@cadence.com> --- drivers/i3c/master.c | 69 +++++++++++++++++----------- drivers/i3c/master/dw-i3c-master.c | 2 +- drivers/i3c/master/i3c-master-cdns.c | 2 +- include/linux/i3c/master.h | 3 +- 4 files changed, 46 insertions(+), 30 deletions(-) diff --git a/drivers/i3c/master.c b/drivers/i3c/master.c index 5f4bd52121fe..ba07a7d49633 100644 --- a/drivers/i3c/master.c +++ b/drivers/i3c/master.c @@ -2391,31 +2391,10 @@ static int i3c_master_check_ops(const struct i3c_master_controller_ops *ops) return 0; } -/** - * i3c_master_register() - register an I3C master - * @master: master used to send frames on the bus - * @parent: the parent device (the one that provides this I3C master - * controller) - * @ops: the master controller operations - * @secondary: true if you are registering a secondary master. Will return - * -ENOTSUPP if set to true since secondary masters are not yet - * supported - * - * This function takes care of everything for you: - * - * - creates and initializes the I3C bus - * - populates the bus with static I2C devs if @parent->of_node is not - * NULL - * - registers all I3C devices added by the controller during bus - * initialization - * - registers the I2C adapter and all I2C devices - * - * Return: 0 in case of success, a negative error code otherwise. - */ -int i3c_master_register(struct i3c_master_controller *master, - struct device *parent, - const struct i3c_master_controller_ops *ops, - bool secondary) +static int i3c_master_init(struct i3c_master_controller *master, + struct device *parent, + const struct i3c_master_controller_ops *ops, + bool secondary) { struct i3c_bus *i3cbus = i3c_master_get_bus(master); enum i3c_bus_mode mode = I3C_BUS_MODE_PURE; @@ -2482,6 +2461,45 @@ int i3c_master_register(struct i3c_master_controller *master, if (ret) goto err_put_dev; + return 0; + +err_put_dev: + put_device(&master->dev); + + return ret; +} + +/** + * i3c_master_register() - register an I3C master + * @master: master used to send frames on the bus + * @parent: the parent device (the one that provides this I3C master + * controller) + * @ops: the master controller operations + * @secondary: true if you are registering a secondary master. Will return + * -ENOTSUPP if set to true since secondary masters are not yet + * supported + * + * This function takes care of everything for you: + * + * - creates and initializes the I3C bus + * - populates the bus with static I2C devs if @parent->of_node is not + * NULL + * - registers all I3C devices added by the controller during bus + * initialization + * - registers the I2C adapter and all I2C devices + * + * Return: 0 in case of success, a negative error code otherwise. + */ +int i3c_master_register(struct i3c_master_controller *master, + struct device *parent, + const struct i3c_master_controller_ops *ops) +{ + int ret; + + ret = i3c_master_init(master, parent, ops, false); + if (ret) + return ret; + ret = device_add(&master->dev); if (ret) goto err_cleanup_bus; @@ -2511,7 +2529,6 @@ int i3c_master_register(struct i3c_master_controller *master, err_cleanup_bus: i3c_master_bus_cleanup(master); -err_put_dev: put_device(&master->dev); return ret; diff --git a/drivers/i3c/master/dw-i3c-master.c b/drivers/i3c/master/dw-i3c-master.c index 1d83c97431c7..5d5a8a90ec06 100644 --- a/drivers/i3c/master/dw-i3c-master.c +++ b/drivers/i3c/master/dw-i3c-master.c @@ -1158,7 +1158,7 @@ static int dw_i3c_probe(struct platform_device *pdev) master->free_pos = GENMASK(master->maxdevs - 1, 0); ret = i3c_master_register(&master->base, &pdev->dev, - &dw_mipi_i3c_ops, false); + &dw_mipi_i3c_ops); if (ret) goto err_assert_rst; diff --git a/drivers/i3c/master/i3c-master-cdns.c b/drivers/i3c/master/i3c-master-cdns.c index 8889a4fdb454..ed4f43807f9e 100644 --- a/drivers/i3c/master/i3c-master-cdns.c +++ b/drivers/i3c/master/i3c-master-cdns.c @@ -1615,7 +1615,7 @@ static int cdns_i3c_master_probe(struct platform_device *pdev) writel(DEVS_CTRL_DEV_CLR_ALL, master->regs + DEVS_CTRL); ret = i3c_master_register(&master->base, &pdev->dev, - &cdns_i3c_master_ops, false); + &cdns_i3c_master_ops); if (ret) goto err_disable_sysclk; diff --git a/include/linux/i3c/master.h b/include/linux/i3c/master.h index f13fd8b1dd79..f5ba82c390bc 100644 --- a/include/linux/i3c/master.h +++ b/include/linux/i3c/master.h @@ -533,8 +533,7 @@ int i3c_master_set_info(struct i3c_master_controller *master, int i3c_master_register(struct i3c_master_controller *master, struct device *parent, - const struct i3c_master_controller_ops *ops, - bool secondary); + const struct i3c_master_controller_ops *ops); int i3c_master_unregister(struct i3c_master_controller *master); /** -- 2.17.1
WARNING: multiple messages have this Message-ID (diff)
From: Parshuram Thombare <pthombar@cadence.com> To: <bbrezillon@kernel.org>, <vitor.soares@synopsys.com> Cc: mparab@cadence.com, Parshuram Thombare <pthombar@cadence.com>, praneeth@ti.com, linux-kernel@vger.kernel.org, pgaj@cadence.com, linux-i3c@lists.infradead.org Subject: [PATCH v7 2/7] i3c: master: use i3c_master_register only for main master Date: Mon, 11 May 2020 15:13:05 +0200 [thread overview] Message-ID: <1589202785-6174-1-git-send-email-pthombar@cadence.com> (raw) In-Reply-To: <1589202702-4879-1-git-send-email-pthombar@cadence.com> Removed last argument 'secondary' and refactored i3c_master_register to move code that can be common to i3c_secondary_master_register to separate function i3c_master_init. Signed-off-by: Parshuram Thombare <pthombar@cadence.com> --- drivers/i3c/master.c | 69 +++++++++++++++++----------- drivers/i3c/master/dw-i3c-master.c | 2 +- drivers/i3c/master/i3c-master-cdns.c | 2 +- include/linux/i3c/master.h | 3 +- 4 files changed, 46 insertions(+), 30 deletions(-) diff --git a/drivers/i3c/master.c b/drivers/i3c/master.c index 5f4bd52121fe..ba07a7d49633 100644 --- a/drivers/i3c/master.c +++ b/drivers/i3c/master.c @@ -2391,31 +2391,10 @@ static int i3c_master_check_ops(const struct i3c_master_controller_ops *ops) return 0; } -/** - * i3c_master_register() - register an I3C master - * @master: master used to send frames on the bus - * @parent: the parent device (the one that provides this I3C master - * controller) - * @ops: the master controller operations - * @secondary: true if you are registering a secondary master. Will return - * -ENOTSUPP if set to true since secondary masters are not yet - * supported - * - * This function takes care of everything for you: - * - * - creates and initializes the I3C bus - * - populates the bus with static I2C devs if @parent->of_node is not - * NULL - * - registers all I3C devices added by the controller during bus - * initialization - * - registers the I2C adapter and all I2C devices - * - * Return: 0 in case of success, a negative error code otherwise. - */ -int i3c_master_register(struct i3c_master_controller *master, - struct device *parent, - const struct i3c_master_controller_ops *ops, - bool secondary) +static int i3c_master_init(struct i3c_master_controller *master, + struct device *parent, + const struct i3c_master_controller_ops *ops, + bool secondary) { struct i3c_bus *i3cbus = i3c_master_get_bus(master); enum i3c_bus_mode mode = I3C_BUS_MODE_PURE; @@ -2482,6 +2461,45 @@ int i3c_master_register(struct i3c_master_controller *master, if (ret) goto err_put_dev; + return 0; + +err_put_dev: + put_device(&master->dev); + + return ret; +} + +/** + * i3c_master_register() - register an I3C master + * @master: master used to send frames on the bus + * @parent: the parent device (the one that provides this I3C master + * controller) + * @ops: the master controller operations + * @secondary: true if you are registering a secondary master. Will return + * -ENOTSUPP if set to true since secondary masters are not yet + * supported + * + * This function takes care of everything for you: + * + * - creates and initializes the I3C bus + * - populates the bus with static I2C devs if @parent->of_node is not + * NULL + * - registers all I3C devices added by the controller during bus + * initialization + * - registers the I2C adapter and all I2C devices + * + * Return: 0 in case of success, a negative error code otherwise. + */ +int i3c_master_register(struct i3c_master_controller *master, + struct device *parent, + const struct i3c_master_controller_ops *ops) +{ + int ret; + + ret = i3c_master_init(master, parent, ops, false); + if (ret) + return ret; + ret = device_add(&master->dev); if (ret) goto err_cleanup_bus; @@ -2511,7 +2529,6 @@ int i3c_master_register(struct i3c_master_controller *master, err_cleanup_bus: i3c_master_bus_cleanup(master); -err_put_dev: put_device(&master->dev); return ret; diff --git a/drivers/i3c/master/dw-i3c-master.c b/drivers/i3c/master/dw-i3c-master.c index 1d83c97431c7..5d5a8a90ec06 100644 --- a/drivers/i3c/master/dw-i3c-master.c +++ b/drivers/i3c/master/dw-i3c-master.c @@ -1158,7 +1158,7 @@ static int dw_i3c_probe(struct platform_device *pdev) master->free_pos = GENMASK(master->maxdevs - 1, 0); ret = i3c_master_register(&master->base, &pdev->dev, - &dw_mipi_i3c_ops, false); + &dw_mipi_i3c_ops); if (ret) goto err_assert_rst; diff --git a/drivers/i3c/master/i3c-master-cdns.c b/drivers/i3c/master/i3c-master-cdns.c index 8889a4fdb454..ed4f43807f9e 100644 --- a/drivers/i3c/master/i3c-master-cdns.c +++ b/drivers/i3c/master/i3c-master-cdns.c @@ -1615,7 +1615,7 @@ static int cdns_i3c_master_probe(struct platform_device *pdev) writel(DEVS_CTRL_DEV_CLR_ALL, master->regs + DEVS_CTRL); ret = i3c_master_register(&master->base, &pdev->dev, - &cdns_i3c_master_ops, false); + &cdns_i3c_master_ops); if (ret) goto err_disable_sysclk; diff --git a/include/linux/i3c/master.h b/include/linux/i3c/master.h index f13fd8b1dd79..f5ba82c390bc 100644 --- a/include/linux/i3c/master.h +++ b/include/linux/i3c/master.h @@ -533,8 +533,7 @@ int i3c_master_set_info(struct i3c_master_controller *master, int i3c_master_register(struct i3c_master_controller *master, struct device *parent, - const struct i3c_master_controller_ops *ops, - bool secondary); + const struct i3c_master_controller_ops *ops); int i3c_master_unregister(struct i3c_master_controller *master); /** -- 2.17.1 _______________________________________________ linux-i3c mailing list linux-i3c@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-i3c
next prev parent reply other threads:[~2020-05-11 13:13 UTC|newest] Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-05-11 13:11 [PATCH v7 0/7] I3C mastership handover support Parshuram Thombare 2020-05-11 13:11 ` Parshuram Thombare 2020-05-11 13:12 ` [PATCH v7 1/7] i3c: master: secondary master initialization document Parshuram Thombare 2020-05-11 13:12 ` Parshuram Thombare 2020-05-11 16:05 ` Boris Brezillon 2020-05-11 16:05 ` Boris Brezillon 2020-05-12 5:03 ` Parshuram Raju Thombare 2020-05-12 5:03 ` Parshuram Raju Thombare 2020-05-12 7:35 ` Boris Brezillon 2020-05-12 7:35 ` Boris Brezillon 2020-05-11 13:13 ` Parshuram Thombare [this message] 2020-05-11 13:13 ` [PATCH v7 2/7] i3c: master: use i3c_master_register only for main master Parshuram Thombare 2020-05-11 15:44 ` Boris Brezillon 2020-05-11 15:44 ` Boris Brezillon 2020-05-12 4:57 ` Parshuram Raju Thombare 2020-05-12 4:57 ` Parshuram Raju Thombare 2020-05-11 13:13 ` [PATCH v7 3/7] i3c: master: add i3c_secondary_master_register Parshuram Thombare 2020-05-11 13:13 ` Parshuram Thombare 2020-05-11 16:14 ` Boris Brezillon 2020-05-11 16:14 ` Boris Brezillon 2020-05-12 6:42 ` Parshuram Raju Thombare 2020-05-12 6:42 ` Parshuram Raju Thombare 2020-05-11 13:14 ` [PATCH v7 4/7] i3c: master: add mastership handover support Parshuram Thombare 2020-05-11 13:14 ` Parshuram Thombare 2020-05-11 16:38 ` Boris Brezillon 2020-05-11 16:38 ` Boris Brezillon 2020-05-12 6:24 ` Parshuram Raju Thombare 2020-05-12 6:24 ` Parshuram Raju Thombare 2020-05-11 13:15 ` [PATCH v7 5/7] i3c: master: add defslvs processing Parshuram Thombare 2020-05-11 13:15 ` Parshuram Thombare 2020-05-11 13:16 ` [PATCH v7 6/7] i3c: master: sysfs key for acquire bus Parshuram Thombare 2020-05-11 13:16 ` Parshuram Thombare 2020-05-11 13:17 ` [PATCH v7 7/7] i3c: master: mastership handover, defslvs processing in cdns controller driver Parshuram Thombare 2020-05-11 13:17 ` Parshuram Thombare
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1589202785-6174-1-git-send-email-pthombar@cadence.com \ --to=pthombar@cadence.com \ --cc=bbrezillon@kernel.org \ --cc=linux-i3c@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=mparab@cadence.com \ --cc=pgaj@cadence.com \ --cc=praneeth@ti.com \ --cc=vitor.soares@synopsys.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
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.