Skip to content

Commit 6a846f7

Browse files
cazouHans Verkuil
authored andcommitted
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. Tested-by: Diederik de Haas <didi.debian@cknow.org> # Rock 5B Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com> Signed-off-by: Detlev Casanova <detlev.casanova@collabora.com> Signed-off-by: Nicolas Dufresne <nicolas.dufresne@collabora.com> Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
1 parent f9c7b7d commit 6a846f7

2 files changed

Lines changed: 7 additions & 20 deletions

File tree

drivers/media/platform/rockchip/rkvdec/rkvdec.c

Lines changed: 6 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1312,15 +1312,10 @@ static const struct of_device_id of_rkvdec_match[] = {
13121312
};
13131313
MODULE_DEVICE_TABLE(of, of_rkvdec_match);
13141314

1315-
static const char * const rkvdec_clk_names[] = {
1316-
"axi", "ahb", "cabac", "core"
1317-
};
1318-
13191315
static int rkvdec_probe(struct platform_device *pdev)
13201316
{
13211317
const struct rkvdec_variant *variant;
13221318
struct rkvdec_dev *rkvdec;
1323-
unsigned int i;
13241319
int ret, irq;
13251320

13261321
variant = of_device_get_match_data(&pdev->dev);
@@ -1337,19 +1332,12 @@ static int rkvdec_probe(struct platform_device *pdev)
13371332
mutex_init(&rkvdec->vdev_lock);
13381333
INIT_DELAYED_WORK(&rkvdec->watchdog_work, rkvdec_watchdog_func);
13391334

1340-
rkvdec->clocks = devm_kcalloc(&pdev->dev, ARRAY_SIZE(rkvdec_clk_names),
1341-
sizeof(*rkvdec->clocks), GFP_KERNEL);
1342-
if (!rkvdec->clocks)
1343-
return -ENOMEM;
1344-
1345-
for (i = 0; i < ARRAY_SIZE(rkvdec_clk_names); i++)
1346-
rkvdec->clocks[i].id = rkvdec_clk_names[i];
1347-
1348-
ret = devm_clk_bulk_get(&pdev->dev, ARRAY_SIZE(rkvdec_clk_names),
1349-
rkvdec->clocks);
1350-
if (ret)
1335+
ret = devm_clk_bulk_get_all_enabled(&pdev->dev, &rkvdec->clocks);
1336+
if (ret < 0)
13511337
return ret;
13521338

1339+
rkvdec->num_clocks = ret;
1340+
13531341
rkvdec->regs = devm_platform_ioremap_resource(pdev, 0);
13541342
if (IS_ERR(rkvdec->regs))
13551343
return PTR_ERR(rkvdec->regs);
@@ -1427,16 +1415,14 @@ static int rkvdec_runtime_resume(struct device *dev)
14271415
{
14281416
struct rkvdec_dev *rkvdec = dev_get_drvdata(dev);
14291417

1430-
return clk_bulk_prepare_enable(ARRAY_SIZE(rkvdec_clk_names),
1431-
rkvdec->clocks);
1418+
return clk_bulk_prepare_enable(rkvdec->num_clocks, rkvdec->clocks);
14321419
}
14331420

14341421
static int rkvdec_runtime_suspend(struct device *dev)
14351422
{
14361423
struct rkvdec_dev *rkvdec = dev_get_drvdata(dev);
14371424

1438-
clk_bulk_disable_unprepare(ARRAY_SIZE(rkvdec_clk_names),
1439-
rkvdec->clocks);
1425+
clk_bulk_disable_unprepare(rkvdec->num_clocks, rkvdec->clocks);
14401426
return 0;
14411427
}
14421428
#endif

drivers/media/platform/rockchip/rkvdec/rkvdec.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,7 @@ struct rkvdec_dev {
125125
struct v4l2_m2m_dev *m2m_dev;
126126
struct device *dev;
127127
struct clk_bulk_data *clocks;
128+
unsigned int num_clocks;
128129
void __iomem *regs;
129130
struct mutex vdev_lock; /* serializes ioctls */
130131
struct delayed_work watchdog_work;

0 commit comments

Comments
 (0)