aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/bcm27xx/patches-5.15/950-0379-rpivid-Switch-to-new-clock-api.patch
diff options
context:
space:
mode:
authorÁlvaro Fernández Rojas <noltari@gmail.com>2022-05-16 23:40:32 +0200
committerÁlvaro Fernández Rojas <noltari@gmail.com>2022-05-17 15:11:22 +0200
commit20ea6adbf199097c4f5f591ffee088340630dae4 (patch)
treed6719d95e136611a1c25bbf7789652d6d402779d /target/linux/bcm27xx/patches-5.15/950-0379-rpivid-Switch-to-new-clock-api.patch
parentbca05bd072180dc38ef740b37ded9572a6db1981 (diff)
downloadupstream-20ea6adbf199097c4f5f591ffee088340630dae4.tar.gz
upstream-20ea6adbf199097c4f5f591ffee088340630dae4.tar.bz2
upstream-20ea6adbf199097c4f5f591ffee088340630dae4.zip
bcm27xx: add support for linux v5.15
Build system: x86_64 Build-tested: bcm2708, bcm2709, bcm2710, bcm2711 Run-tested: bcm2708/RPiB+, bcm2709/RPi3B, bcm2710/RPi3B, bcm2711/RPi4B Signed-off-by: Marty Jones <mj8263788@gmail.com> Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
Diffstat (limited to 'target/linux/bcm27xx/patches-5.15/950-0379-rpivid-Switch-to-new-clock-api.patch')
-rw-r--r--target/linux/bcm27xx/patches-5.15/950-0379-rpivid-Switch-to-new-clock-api.patch54
1 files changed, 54 insertions, 0 deletions
diff --git a/target/linux/bcm27xx/patches-5.15/950-0379-rpivid-Switch-to-new-clock-api.patch b/target/linux/bcm27xx/patches-5.15/950-0379-rpivid-Switch-to-new-clock-api.patch
new file mode 100644
index 0000000000..3bcd2450e7
--- /dev/null
+++ b/target/linux/bcm27xx/patches-5.15/950-0379-rpivid-Switch-to-new-clock-api.patch
@@ -0,0 +1,54 @@
+From 792ae143562fc4d4c22e492d3b1a3216d0fa2d14 Mon Sep 17 00:00:00 2001
+From: Dom Cobley <popcornmix@gmail.com>
+Date: Mon, 19 Apr 2021 19:30:26 +0100
+Subject: [PATCH] rpivid: Switch to new clock api
+
+Signed-off-by: Dom Cobley <popcornmix@gmail.com>
+---
+ drivers/staging/media/rpivid/rpivid.h | 1 +
+ drivers/staging/media/rpivid/rpivid_video.c | 11 +++--------
+ 2 files changed, 4 insertions(+), 8 deletions(-)
+
+--- a/drivers/staging/media/rpivid/rpivid.h
++++ b/drivers/staging/media/rpivid/rpivid.h
+@@ -172,6 +172,7 @@ struct rpivid_dev {
+ void __iomem *base_h265;
+
+ struct clk *clock;
++ struct clk_request *hevc_req;
+
+ struct rpivid_hw_irq_ctrl ic_active1;
+ struct rpivid_hw_irq_ctrl ic_active2;
+--- a/drivers/staging/media/rpivid/rpivid_video.c
++++ b/drivers/staging/media/rpivid/rpivid_video.c
+@@ -499,8 +499,8 @@ static int rpivid_start_streaming(struct
+ if (V4L2_TYPE_IS_OUTPUT(vq->type) && dev->dec_ops->start)
+ ret = dev->dec_ops->start(ctx);
+
+- ret = clk_set_rate(dev->clock, max_hevc_clock);
+- if (ret) {
++ dev->hevc_req = clk_request_start(dev->clock, max_hevc_clock);
++ if (!dev->hevc_req) {
+ dev_err(dev->dev, "Failed to set clock rate\n");
+ goto out;
+ }
+@@ -520,18 +520,13 @@ static void rpivid_stop_streaming(struct
+ {
+ struct rpivid_ctx *ctx = vb2_get_drv_priv(vq);
+ struct rpivid_dev *dev = ctx->dev;
+- long min_hevc_clock = clk_round_rate(dev->clock, 0);
+- int ret;
+
+ if (V4L2_TYPE_IS_OUTPUT(vq->type) && dev->dec_ops->stop)
+ dev->dec_ops->stop(ctx);
+
+ rpivid_queue_cleanup(vq, VB2_BUF_STATE_ERROR);
+
+- ret = clk_set_rate(dev->clock, min_hevc_clock);
+- if (ret)
+- dev_err(dev->dev, "Failed to set minimum clock rate\n");
+-
++ clk_request_done(dev->hevc_req);
+ clk_disable_unprepare(dev->clock);
+ }
+