Revert "i3c: Make i3c_master_unregister() return void"

This reverts commit 87e0f28eda which is
commit 0f74f8b667 upstream.

It breaks the Android kernel abi and can be brought back in the future
in an abi-safe way if it is really needed.

Bug: 161946584
Change-Id: Ia86a905c65bddaf79dc1e8fffc0609cb2b5b115c
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
Greg Kroah-Hartman
2024-12-30 11:12:57 +00:00
parent 86f0a42718
commit 3504076522
6 changed files with 19 additions and 8 deletions

View File

@@ -2696,13 +2696,17 @@ EXPORT_SYMBOL_GPL(i3c_master_register);
* @master: master used to send frames on the bus
*
* Basically undo everything done in i3c_master_register().
*
* Return: 0 in case of success, a negative error code otherwise.
*/
void i3c_master_unregister(struct i3c_master_controller *master)
int i3c_master_unregister(struct i3c_master_controller *master)
{
i3c_master_i2c_adapter_cleanup(master);
i3c_master_unregister_i3c_devs(master);
i3c_master_bus_cleanup(master);
device_unregister(&master->dev);
return 0;
}
EXPORT_SYMBOL_GPL(i3c_master_unregister);

View File

@@ -1184,8 +1184,11 @@ err_disable_core_clk:
static int dw_i3c_remove(struct platform_device *pdev)
{
struct dw_i3c_master *master = platform_get_drvdata(pdev);
int ret;
i3c_master_unregister(&master->base);
ret = i3c_master_unregister(&master->base);
if (ret)
return ret;
reset_control_assert(master->core_rst);

View File

@@ -1666,8 +1666,11 @@ err_disable_pclk:
static int cdns_i3c_master_remove(struct platform_device *pdev)
{
struct cdns_i3c_master *master = platform_get_drvdata(pdev);
int ret;
i3c_master_unregister(&master->base);
ret = i3c_master_unregister(&master->base);
if (ret)
return ret;
clk_disable_unprepare(master->sysclk);
clk_disable_unprepare(master->pclk);

View File

@@ -769,9 +769,7 @@ static int i3c_hci_remove(struct platform_device *pdev)
{
struct i3c_hci *hci = platform_get_drvdata(pdev);
i3c_master_unregister(&hci->master);
return 0;
return i3c_master_unregister(&hci->master);
}
static const __maybe_unused struct of_device_id i3c_hci_of_match[] = {

View File

@@ -1651,8 +1651,11 @@ err_disable_clks:
static int svc_i3c_master_remove(struct platform_device *pdev)
{
struct svc_i3c_master *master = platform_get_drvdata(pdev);
int ret;
i3c_master_unregister(&master->base);
ret = i3c_master_unregister(&master->base);
if (ret)
return ret;
pm_runtime_dont_use_autosuspend(&pdev->dev);
pm_runtime_disable(&pdev->dev);

View File

@@ -541,7 +541,7 @@ int i3c_master_register(struct i3c_master_controller *master,
struct device *parent,
const struct i3c_master_controller_ops *ops,
bool secondary);
void i3c_master_unregister(struct i3c_master_controller *master);
int i3c_master_unregister(struct i3c_master_controller *master);
/**
* i3c_dev_get_master_data() - get master private data attached to an I3C