mirror of
git://nv-tegra.nvidia.com/linux-nv-oot.git
synced 2025-12-23 01:31:30 +03:00
camera: Handle probe deferral
Probing a driver can be deferred if a resource is not ready and this is accomplished by returning -EPROBE_DEFER from the .probe function. This tells to kernel to probe the driver again some time later. When probing a driver is deferred it is not necessary to print an error message because this is an expected error case. To avoid printing an error message on probe deferral, the dev_err_probe() function can be used which will only print an error if the error code is not -EPROBE_DEFER. Therefore, update the camera drivers to use dev_err_probe() to avoid printing an error message when -EPROBE_DEFER if returned from ICC. This change will also cause the probing of the rtcpu-debug driver to be deferred if -EPROBE_DEFER is returned and prevent the rtcpu-debug driver from being probed at all if an real error is encountered. Bug 4496044 Change-Id: I8a5313750e11b4bd661191c0c544c39e43478089 Signed-off-by: Jon Hunter <jonathanh@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3084829 Tested-by: mobile promotions <svcmobile_promotions@nvidia.com> Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
This commit is contained in:
committed by
mobile promotions
parent
e5075835ab
commit
f0538cd58d
@@ -1,5 +1,5 @@
|
|||||||
// SPDX-License-Identifier: GPL-2.0
|
// SPDX-License-Identifier: GPL-2.0
|
||||||
// Copyright (c) 2022-2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
// SPDX-FileCopyrightText: Copyright (c) 2022-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||||
|
|
||||||
#include "soc/tegra/camrtc-dbg-messages.h"
|
#include "soc/tegra/camrtc-dbg-messages.h"
|
||||||
|
|
||||||
@@ -1882,11 +1882,9 @@ static int camrtc_debug_probe(struct tegra_ivc_channel *ch)
|
|||||||
}
|
}
|
||||||
|
|
||||||
crd->icc_path = devm_of_icc_get(crd->mem_devices[0], "write");
|
crd->icc_path = devm_of_icc_get(crd->mem_devices[0], "write");
|
||||||
if (IS_ERR(crd->icc_path)) {
|
if (IS_ERR(crd->icc_path))
|
||||||
dev_err(dev, "failed to get icc path for rtcpu, err: %ld\n",
|
return dev_err_probe(dev, PTR_ERR(crd->icc_path),
|
||||||
PTR_ERR(crd->icc_path));
|
"failed to get icc write handle\n");
|
||||||
crd->icc_path = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (camrtc_debug_populate(ch))
|
if (camrtc_debug_populate(ch))
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|||||||
@@ -252,10 +252,9 @@ static int vi5_probe(struct platform_device *pdev)
|
|||||||
vi5 = pdata->private_data;
|
vi5 = pdata->private_data;
|
||||||
|
|
||||||
vi5->icc_write = devm_of_icc_get(dev, "write");
|
vi5->icc_write = devm_of_icc_get(dev, "write");
|
||||||
if (IS_ERR(vi5->icc_write)) {
|
if (IS_ERR(vi5->icc_write))
|
||||||
dev_err(dev, "failed to get icc write handle\n");
|
return dev_err_probe(&pdev->dev, PTR_ERR(vi5->icc_write),
|
||||||
return PTR_ERR(vi5->icc_write);
|
"failed to get icc write handle\n");
|
||||||
}
|
|
||||||
|
|
||||||
err = nvhost_client_device_get_resources(pdev);
|
err = nvhost_client_device_get_resources(pdev);
|
||||||
if (err)
|
if (err)
|
||||||
|
|||||||
Reference in New Issue
Block a user