From 2f7c68cb55ecb7331f2381deb497c27155f32faf Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Wed, 03 Jan 2024 09:43:39 +0000
Subject: [PATCH] update kernel to 5.10.198
---
kernel/drivers/media/platform/rockchip/isp/rkisp_tb_helper.c | 53 +++++++++++++++++++++++++++++++++++------------------
1 files changed, 35 insertions(+), 18 deletions(-)
diff --git a/kernel/drivers/media/platform/rockchip/isp/rkisp_tb_helper.c b/kernel/drivers/media/platform/rockchip/isp/rkisp_tb_helper.c
index 6bc9b34..4ae04a4 100644
--- a/kernel/drivers/media/platform/rockchip/isp/rkisp_tb_helper.c
+++ b/kernel/drivers/media/platform/rockchip/isp/rkisp_tb_helper.c
@@ -17,10 +17,14 @@
#include <linux/regmap.h>
#include <linux/dma-buf.h>
#include <linux/highmem.h>
+#include <linux/soc/rockchip/rockchip_thunderboot_service.h>
#include "rkisp_tb_helper.h"
static struct platform_device *rkisp_tb_pdev;
+static struct clk_bulk_data *rkisp_tb_clk;
+static int rkisp_tb_clk_num;
+static struct rk_tb_client tb_cl;
struct shm_data {
int npages;
@@ -71,7 +75,7 @@
{
struct shm_data *data = dma_buf->priv;
- return vm_map_ram(data->pages, data->npages, 0, PAGE_KERNEL);
+ return vm_map_ram(data->pages, data->npages, 0);
}
static void shm_vunmap(struct dma_buf *dma_buf, void *vaddr)
@@ -79,20 +83,6 @@
struct shm_data *data = dma_buf->priv;
vm_unmap_ram(vaddr, data->npages);
-}
-
-static void *shm_kmap(struct dma_buf *dma_buf, unsigned long page_num)
-{
- struct shm_data *data = dma_buf->priv;
-
- return kmap(data->pages[page_num]);
-}
-
-static void shm_kunmap(struct dma_buf *dma_buf, unsigned long page_num, void *addr)
-{
- struct shm_data *data = dma_buf->priv;
-
- return kunmap(data->pages[page_num]);
}
static int shm_mmap(struct dma_buf *dma_buf, struct vm_area_struct *vma)
@@ -138,8 +128,6 @@
.map_dma_buf = shm_map_dma_buf,
.unmap_dma_buf = shm_unmap_dma_buf,
.release = shm_release,
- .map = shm_kmap,
- .unmap = shm_kunmap,
.mmap = shm_mmap,
.vmap = shm_vmap,
.vunmap = shm_vunmap,
@@ -175,20 +163,35 @@
static int __maybe_unused rkisp_tb_clocks_loader_protect(void)
{
+ int ret = 0;
+
if (rkisp_tb_pdev) {
pm_runtime_enable(&rkisp_tb_pdev->dev);
pm_runtime_get_sync(&rkisp_tb_pdev->dev);
+ if (rkisp_tb_clk_num) {
+ ret = clk_bulk_prepare_enable(rkisp_tb_clk_num, rkisp_tb_clk);
+ if (ret)
+ dev_err(&rkisp_tb_pdev->dev, "Cannot enable clock\n");
+ }
}
- return 0;
+
+ return ret;
}
static int __maybe_unused rkisp_tb_clocks_loader_unprotect(void)
{
if (rkisp_tb_pdev) {
+ if (rkisp_tb_clk_num)
+ clk_bulk_disable_unprepare(rkisp_tb_clk_num, rkisp_tb_clk);
pm_runtime_put_sync(&rkisp_tb_pdev->dev);
pm_runtime_disable(&rkisp_tb_pdev->dev);
}
return 0;
+}
+
+static void rkisp_tb_cb(void *data)
+{
+ rkisp_tb_clocks_loader_unprotect();
}
static int __maybe_unused rkisp_tb_runtime_suspend(struct device *dev)
@@ -218,7 +221,18 @@
static int rkisp_tb_plat_probe(struct platform_device *pdev)
{
rkisp_tb_pdev = pdev;
+ rkisp_tb_clk_num = devm_clk_bulk_get_all(&pdev->dev, &rkisp_tb_clk);
+ if (rkisp_tb_clk_num <= 0) {
+ dev_warn(&pdev->dev, "get clk fail:%d\n", rkisp_tb_clk_num);
+ rkisp_tb_clk_num = 0;
+ }
rkisp_tb_clocks_loader_protect();
+
+ if (IS_ENABLED(CONFIG_ROCKCHIP_THUNDER_BOOT_SERVICE)) {
+ tb_cl.cb = rkisp_tb_cb;
+ return rk_tb_client_register_cb(&tb_cl);
+ }
+
return 0;
}
@@ -263,6 +277,9 @@
void rkisp_tb_unprotect_clk(void)
{
+ if (IS_ENABLED(CONFIG_ROCKCHIP_THUNDER_BOOT_SERVICE))
+ return;
+
rkisp_tb_clocks_loader_unprotect();
}
EXPORT_SYMBOL(rkisp_tb_unprotect_clk);
--
Gitblit v1.6.2