mirror of
https://github.com/LibreELEC/LibreELEC.tv
synced 2025-09-24 19:46:01 +07:00
95 lines
3.2 KiB
Diff
95 lines
3.2 KiB
Diff
From 530bfe6e2e279e18f6a80186382fcb5cd89ce337 Mon Sep 17 00:00:00 2001
|
|
From: Detlev Casanova <detlev.casanova@collabora.com>
|
|
Date: Tue, 10 Jun 2025 16:40:09 -0400
|
|
Subject: [PATCH 076/113] DETLEV(v3): media: rkvdec: Enable all clocks without
|
|
naming them
|
|
|
|
For other variants, the clock names and number will differ.
|
|
|
|
There is no need to keep track of the clock names in the driver so drop
|
|
them to avoid having a list for each variant.
|
|
|
|
Signed-off-by: Detlev Casanova <detlev.casanova@collabora.com>
|
|
---
|
|
.../media/platform/rockchip/rkvdec/rkvdec.c | 24 +++++--------------
|
|
.../media/platform/rockchip/rkvdec/rkvdec.h | 1 +
|
|
2 files changed, 7 insertions(+), 18 deletions(-)
|
|
|
|
diff --git a/drivers/media/platform/rockchip/rkvdec/rkvdec.c b/drivers/media/platform/rockchip/rkvdec/rkvdec.c
|
|
index a0dca7bff071..3f9f2e8857f4 100644
|
|
--- a/drivers/media/platform/rockchip/rkvdec/rkvdec.c
|
|
+++ b/drivers/media/platform/rockchip/rkvdec/rkvdec.c
|
|
@@ -1311,15 +1311,10 @@ static const struct of_device_id of_rkvdec_match[] = {
|
|
};
|
|
MODULE_DEVICE_TABLE(of, of_rkvdec_match);
|
|
|
|
-static const char * const rkvdec_clk_names[] = {
|
|
- "axi", "ahb", "cabac", "core"
|
|
-};
|
|
-
|
|
static int rkvdec_probe(struct platform_device *pdev)
|
|
{
|
|
const struct rkvdec_variant *variant;
|
|
struct rkvdec_dev *rkvdec;
|
|
- unsigned int i;
|
|
int ret, irq;
|
|
|
|
variant = of_device_get_match_data(&pdev->dev);
|
|
@@ -1339,19 +1334,12 @@ static int rkvdec_probe(struct platform_device *pdev)
|
|
mutex_init(&rkvdec->vdev_lock);
|
|
INIT_DELAYED_WORK(&rkvdec->watchdog_work, rkvdec_watchdog_func);
|
|
|
|
- rkvdec->clocks = devm_kcalloc(&pdev->dev, ARRAY_SIZE(rkvdec_clk_names),
|
|
- sizeof(*rkvdec->clocks), GFP_KERNEL);
|
|
- if (!rkvdec->clocks)
|
|
- return -ENOMEM;
|
|
-
|
|
- for (i = 0; i < ARRAY_SIZE(rkvdec_clk_names); i++)
|
|
- rkvdec->clocks[i].id = rkvdec_clk_names[i];
|
|
-
|
|
- ret = devm_clk_bulk_get(&pdev->dev, ARRAY_SIZE(rkvdec_clk_names),
|
|
- rkvdec->clocks);
|
|
- if (ret)
|
|
+ ret = devm_clk_bulk_get_all_enabled(&pdev->dev, &rkvdec->clocks);
|
|
+ if (ret < 0)
|
|
return ret;
|
|
|
|
+ rkvdec->clk_count = ret;
|
|
+
|
|
rkvdec->regs = devm_platform_ioremap_resource(pdev, 0);
|
|
if (IS_ERR(rkvdec->regs))
|
|
return PTR_ERR(rkvdec->regs);
|
|
@@ -1427,7 +1415,7 @@ static int rkvdec_runtime_resume(struct device *dev)
|
|
{
|
|
struct rkvdec_dev *rkvdec = dev_get_drvdata(dev);
|
|
|
|
- return clk_bulk_prepare_enable(ARRAY_SIZE(rkvdec_clk_names),
|
|
+ return clk_bulk_prepare_enable(rkvdec->clk_count,
|
|
rkvdec->clocks);
|
|
}
|
|
|
|
@@ -1435,7 +1423,7 @@ static int rkvdec_runtime_suspend(struct device *dev)
|
|
{
|
|
struct rkvdec_dev *rkvdec = dev_get_drvdata(dev);
|
|
|
|
- clk_bulk_disable_unprepare(ARRAY_SIZE(rkvdec_clk_names),
|
|
+ clk_bulk_disable_unprepare(rkvdec->clk_count,
|
|
rkvdec->clocks);
|
|
return 0;
|
|
}
|
|
diff --git a/drivers/media/platform/rockchip/rkvdec/rkvdec.h b/drivers/media/platform/rockchip/rkvdec/rkvdec.h
|
|
index 117ebf198a1e..5c238e443d7d 100644
|
|
--- a/drivers/media/platform/rockchip/rkvdec/rkvdec.h
|
|
+++ b/drivers/media/platform/rockchip/rkvdec/rkvdec.h
|
|
@@ -131,6 +131,7 @@ struct rkvdec_dev {
|
|
struct v4l2_m2m_dev *m2m_dev;
|
|
struct device *dev;
|
|
struct clk_bulk_data *clocks;
|
|
+ unsigned int clk_count;
|
|
void __iomem *regs;
|
|
struct mutex vdev_lock; /* serializes ioctls */
|
|
struct delayed_work watchdog_work;
|
|
--
|
|
2.34.1
|
|
|