summaryrefslogtreecommitdiff
path: root/drivers/accel
diff options
context:
space:
mode:
authorQuentin Schulz <quentin.schulz@cherry.de>2025-12-15 18:07:56 +0100
committerTomeu Vizoso <tomeu@tomeuvizoso.net>2026-01-10 17:49:14 +0100
commit57d8ae156935b311e068759682eb12a2a6c48a9a (patch)
tree96b197abad19d282752e766bf8feab03c435d660 /drivers/accel
parent34f4495a7f72895776b81969639f527c99eb12b9 (diff)
accel/rocket: factor out code with find_core_for_dev in rocket_remove
There already is a function to return the offset of the core for a given struct device, so let's reuse that function instead of reimplementing the same logic. There's one change in behavior when a struct device is passed which doesn't match any core's. Before, we would continue through rocket_remove() but now we exit early, to match what other callers of find_core_for_dev() (rocket_device_runtime_resume/suspend()) are doing. This however should never happen. Aside from that, no intended change in behavior. Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de> Reviewed-by: Tomeu Vizoso <tomeu@tomeuvizoso.net> Signed-off-by: Tomeu Vizoso <tomeu@tomeuvizoso.net> Link: https://patch.msgid.link/20251215-rocket-reuse-find-core-v1-1-be86a1d2734c@cherry.de
Diffstat (limited to 'drivers/accel')
-rw-r--r--drivers/accel/rocket/rocket_drv.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/drivers/accel/rocket/rocket_drv.c b/drivers/accel/rocket/rocket_drv.c
index f6ef4c7aeef1..e4cb2efeb55a 100644
--- a/drivers/accel/rocket/rocket_drv.c
+++ b/drivers/accel/rocket/rocket_drv.c
@@ -193,17 +193,18 @@ static int rocket_probe(struct platform_device *pdev)
return ret;
}
+static int find_core_for_dev(struct device *dev);
+
static void rocket_remove(struct platform_device *pdev)
{
struct device *dev = &pdev->dev;
+ int core = find_core_for_dev(dev);
- for (unsigned int core = 0; core < rdev->num_cores; core++) {
- if (rdev->cores[core].dev == dev) {
- rocket_core_fini(&rdev->cores[core]);
- rdev->num_cores--;
- break;
- }
- }
+ if (core < 0)
+ return;
+
+ rocket_core_fini(&rdev->cores[core]);
+ rdev->num_cores--;
if (rdev->num_cores == 0) {
/* Last core removed, deinitialize DRM device. */