From e520884467a024d59579e1bcec21badf6be9a093 Mon Sep 17 00:00:00 2001 From: Herman Chen Date: Thu, 25 May 2023 16:34:04 +0800 Subject: [PATCH 01/16] video: rockchip: mpp: fix dma_buf_vmap/vunmap adapt to kernel 6.1 Signed-off-by: Herman Chen Change-Id: I9c6767ccf2711432c10674815139b9109d62af4e --- drivers/video/rockchip/mpp/mpp_iommu.c | 15 +++++++-------- drivers/video/rockchip/mpp/mpp_rkvdec.c | 21 +++++++++++---------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/drivers/video/rockchip/mpp/mpp_iommu.c b/drivers/video/rockchip/mpp/mpp_iommu.c index fe8a1a414b94..7d1ee04c11b1 100644 --- a/drivers/video/rockchip/mpp/mpp_iommu.c +++ b/drivers/video/rockchip/mpp/mpp_iommu.c @@ -272,14 +272,14 @@ fail: int mpp_dma_unmap_kernel(struct mpp_dma_session *dma, struct mpp_dma_buffer *buffer) { - void *vaddr = buffer->vaddr; + struct iosys_map map = IOSYS_MAP_INIT_VADDR(buffer->vaddr); struct dma_buf *dmabuf = buffer->dmabuf; - if (IS_ERR_OR_NULL(vaddr) || + if (IS_ERR_OR_NULL(map.vaddr) || IS_ERR_OR_NULL(dmabuf)) return -EINVAL; - dma_buf_vunmap(dmabuf, vaddr); + dma_buf_vunmap(dmabuf, &map); buffer->vaddr = NULL; dma_buf_end_cpu_access(dmabuf, DMA_FROM_DEVICE); @@ -291,7 +291,7 @@ int mpp_dma_map_kernel(struct mpp_dma_session *dma, struct mpp_dma_buffer *buffer) { int ret; - void *vaddr; + struct iosys_map map; struct dma_buf *dmabuf = buffer->dmabuf; if (IS_ERR_OR_NULL(dmabuf)) @@ -303,14 +303,13 @@ int mpp_dma_map_kernel(struct mpp_dma_session *dma, goto failed_access; } - vaddr = dma_buf_vmap(dmabuf); - if (!vaddr) { + ret = dma_buf_vmap(dmabuf, &map); + if (ret) { dev_dbg(dma->dev, "can't vmap the dma buffer\n"); - ret = -EIO; goto failed_vmap; } - buffer->vaddr = vaddr; + buffer->vaddr = map.vaddr; return 0; diff --git a/drivers/video/rockchip/mpp/mpp_rkvdec.c b/drivers/video/rockchip/mpp/mpp_rkvdec.c index cad51ddc562b..bfe2f4dc35bf 100644 --- a/drivers/video/rockchip/mpp/mpp_rkvdec.c +++ b/drivers/video/rockchip/mpp/mpp_rkvdec.c @@ -558,7 +558,7 @@ static int fill_scaling_list_pps(struct rkvdec_task *task, int pps_info_size, int sub_addr_offset) { struct dma_buf *dmabuf = NULL; - void *vaddr = NULL; + struct iosys_map map; u8 *pps = NULL; u32 scaling_fd = 0; int ret = 0; @@ -573,16 +573,15 @@ static int fill_scaling_list_pps(struct rkvdec_task *task, ret = dma_buf_begin_cpu_access(dmabuf, DMA_FROM_DEVICE); if (ret) { mpp_err("can't access the pps buffer\n"); - goto done; + goto access_failed; } - vaddr = dma_buf_vmap(dmabuf); - if (!vaddr) { + ret = dma_buf_vmap(dmabuf, &map); + if (ret) { mpp_err("can't access the pps buffer\n"); - ret = -EIO; - goto done; + goto vmap_failed; } - pps = vaddr + offset; + pps = map.vaddr + offset; /* NOTE: scaling buffer in pps, have no offset */ memcpy(&scaling_fd, pps + base, sizeof(scaling_fd)); scaling_fd = le32_to_cpu(scaling_fd); @@ -596,7 +595,7 @@ static int fill_scaling_list_pps(struct rkvdec_task *task, if (IS_ERR(mem_region)) { mpp_err("scaling list fd %d attach failed\n", scaling_fd); ret = PTR_ERR(mem_region); - goto done; + goto task_fd_failed; } tmp = mem_region->iova & 0xffffffff; @@ -610,9 +609,11 @@ static int fill_scaling_list_pps(struct rkvdec_task *task, memcpy(pps + base, &tmp, sizeof(tmp)); } -done: - dma_buf_vunmap(dmabuf, vaddr); +task_fd_failed: + dma_buf_vunmap(dmabuf, &map); +vmap_failed: dma_buf_end_cpu_access(dmabuf, DMA_FROM_DEVICE); +access_failed: dma_buf_put(dmabuf); return ret; From 53023d88f9dd2c75c9f85ecc8c5412baf190041d Mon Sep 17 00:00:00 2001 From: Yandong Lin Date: Tue, 30 May 2023 10:47:17 +0800 Subject: [PATCH 02/16] video: rockchip: mpp: iommu: fix adapt to kernel 6.1 Add mpp_iommu_reserve_iova api to implement reserve_iova. Signed-off-by: Yandong Lin Change-Id: Ie4873af15d461842ddedd5b21a05fabf5bfda837 --- drivers/video/rockchip/mpp/mpp_iommu.c | 28 ++++++++++++++++++++++++ drivers/video/rockchip/mpp/mpp_iommu.h | 14 ++++++++++++ drivers/video/rockchip/mpp/mpp_rkvdec2.c | 2 +- drivers/video/rockchip/mpp/mpp_rkvenc2.c | 2 +- 4 files changed, 44 insertions(+), 2 deletions(-) diff --git a/drivers/video/rockchip/mpp/mpp_iommu.c b/drivers/video/rockchip/mpp/mpp_iommu.c index 7d1ee04c11b1..d4b65f9b3dc9 100644 --- a/drivers/video/rockchip/mpp/mpp_iommu.c +++ b/drivers/video/rockchip/mpp/mpp_iommu.c @@ -632,3 +632,31 @@ int mpp_iommu_dev_deactivate(struct mpp_iommu_info *info, struct mpp_dev *dev) return 0; } + +int mpp_iommu_reserve_iova(struct mpp_iommu_info *info, dma_addr_t iova, size_t size) +{ + + struct iommu_domain *domain; + struct mpp_iommu_dma_cookie *cookie; + struct iova_domain *iovad; + unsigned long pfn_lo, pfn_hi; + + if (!info) + return 0; + + domain = info->domain; + if (!domain || !domain->iova_cookie) + return -EINVAL; + + cookie = (struct mpp_iommu_dma_cookie *)domain->iova_cookie; + iovad = &cookie->iovad; + + /* iova will be freed automatically by put_iova_domain() */ + pfn_lo = iova_pfn(iovad, iova); + pfn_hi = iova_pfn(iovad, iova + size - 1); + if (!reserve_iova(iovad, pfn_lo, pfn_hi)) + return -EINVAL; + + return 0; + +} diff --git a/drivers/video/rockchip/mpp/mpp_iommu.h b/drivers/video/rockchip/mpp/mpp_iommu.h index 87d1b5c612d2..c4c0199f8558 100644 --- a/drivers/video/rockchip/mpp/mpp_iommu.h +++ b/drivers/video/rockchip/mpp/mpp_iommu.h @@ -14,6 +14,19 @@ #include #include #include +#include + +enum iommu_dma_cookie_type { + IOMMU_DMA_IOVA_COOKIE, + IOMMU_DMA_MSI_COOKIE, +}; + +/* Keep in mind: member order must keep align with struct iommu_dma_cookie */ +struct mpp_iommu_dma_cookie { + enum iommu_dma_cookie_type type; + /* Full allocator for IOMMU_DMA_IOVA_COOKIE */ + struct iova_domain iovad; +}; struct mpp_dma_buffer { /* link to dma session buffer list */ @@ -122,6 +135,7 @@ int mpp_av1_iommu_enable(struct device *dev); int mpp_iommu_dev_activate(struct mpp_iommu_info *info, struct mpp_dev *dev); int mpp_iommu_dev_deactivate(struct mpp_iommu_info *info, struct mpp_dev *dev); +int mpp_iommu_reserve_iova(struct mpp_iommu_info *info, dma_addr_t iova, size_t size); static inline int mpp_iommu_down_read(struct mpp_iommu_info *info) { diff --git a/drivers/video/rockchip/mpp/mpp_rkvdec2.c b/drivers/video/rockchip/mpp/mpp_rkvdec2.c index 175582feb370..82b0c3965110 100644 --- a/drivers/video/rockchip/mpp/mpp_rkvdec2.c +++ b/drivers/video/rockchip/mpp/mpp_rkvdec2.c @@ -1426,7 +1426,7 @@ static int rkvdec2_alloc_rcbbuf(struct platform_device *pdev, struct rkvdec2_dev return -EINVAL; } /* alloc reserve iova for rcb */ - ret = iommu_dma_reserve_iova(dev, iova, rcb_size); + ret = mpp_iommu_reserve_iova(dec->mpp.iommu_info, iova, rcb_size); if (ret) { dev_err(dev, "alloc rcb iova error.\n"); return ret; diff --git a/drivers/video/rockchip/mpp/mpp_rkvenc2.c b/drivers/video/rockchip/mpp/mpp_rkvenc2.c index 24d1f89ea994..8c45b0d269c5 100644 --- a/drivers/video/rockchip/mpp/mpp_rkvenc2.c +++ b/drivers/video/rockchip/mpp/mpp_rkvenc2.c @@ -2282,7 +2282,7 @@ static int rkvenc2_alloc_rcbbuf(struct platform_device *pdev, struct rkvenc_dev return -EINVAL; } /* alloc reserve iova for rcb */ - ret = iommu_dma_reserve_iova(dev, iova, sram_used); + ret = mpp_iommu_reserve_iova(enc->mpp.iommu_info, iova, sram_used); if (ret) { dev_err(dev, "alloc rcb iova error.\n"); return ret; From c407d3fd782d4cc767ea47f4d4aa362473a66ae4 Mon Sep 17 00:00:00 2001 From: Finley Xiao Date: Fri, 31 Mar 2023 21:23:23 +0800 Subject: [PATCH 03/16] video: rockchip: mpp: rkvdec: remove old power model Signed-off-by: Finley Xiao Change-Id: I1b6307901c0e37f4ff46d63bd23baf0bb17a528f --- drivers/video/rockchip/mpp/mpp_rkvdec.c | 126 ++---------------------- 1 file changed, 7 insertions(+), 119 deletions(-) diff --git a/drivers/video/rockchip/mpp/mpp_rkvdec.c b/drivers/video/rockchip/mpp/mpp_rkvdec.c index bfe2f4dc35bf..0e6089986014 100644 --- a/drivers/video/rockchip/mpp/mpp_rkvdec.c +++ b/drivers/video/rockchip/mpp/mpp_rkvdec.c @@ -12,7 +12,6 @@ #include #include #include -#include #include #include #include @@ -182,7 +181,6 @@ struct rkvdec_dev { struct devfreq *devfreq; struct devfreq *parent_devfreq; struct notifier_block devfreq_nb; - struct thermal_cooling_device *devfreq_cooling; struct thermal_zone_device *thermal_zone; u32 static_power_coeff; s32 ts[4]; @@ -418,106 +416,9 @@ static struct devfreq_dev_profile devfreq_profile = { .target = devfreq_target, .get_cur_freq = devfreq_get_cur_freq, .get_dev_status = devfreq_get_dev_status, + .is_cooling_device = true, }; -static unsigned long -model_static_power(struct devfreq *devfreq, - unsigned long voltage) -{ - struct device *dev = devfreq->dev.parent; - struct rkvdec_dev *dec = dev_get_drvdata(dev); - struct thermal_zone_device *tz = dec->thermal_zone; - - int temperature; - unsigned long temp; - unsigned long temp_squared, temp_cubed, temp_scaling_factor; - const unsigned long voltage_cubed = (voltage * voltage * voltage) >> 10; - - if (!IS_ERR_OR_NULL(tz) && tz->ops->get_temp) { - int ret; - - ret = tz->ops->get_temp(tz, &temperature); - if (ret) { - dev_warn_ratelimited(dev, "ddr thermal zone failed\n"); - temperature = FALLBACK_STATIC_TEMPERATURE; - } - } else { - temperature = FALLBACK_STATIC_TEMPERATURE; - } - - /* - * Calculate the temperature scaling factor. To be applied to the - * voltage scaled power. - */ - temp = temperature / 1000; - temp_squared = temp * temp; - temp_cubed = temp_squared * temp; - temp_scaling_factor = (dec->ts[3] * temp_cubed) - + (dec->ts[2] * temp_squared) + (dec->ts[1] * temp) + dec->ts[0]; - - return (((dec->static_power_coeff * voltage_cubed) >> 20) - * temp_scaling_factor) / 1000000; -} - -static struct devfreq_cooling_power cooling_power_data = { - .get_static_power = model_static_power, - .dyn_power_coeff = 120, -}; - -static int power_model_simple_init(struct mpp_dev *mpp) -{ - struct rkvdec_dev *dec = to_rkvdec_dev(mpp); - struct device_node *np = mpp->dev->of_node; - - u32 temp; - const char *tz_name; - struct device_node *power_model_node; - - power_model_node = of_get_child_by_name(np, "vcodec_power_model"); - if (!power_model_node) { - dev_err(mpp->dev, "could not find power_model node\n"); - return -ENODEV; - } - - if (of_property_read_string(power_model_node, - "thermal-zone", - &tz_name)) { - dev_err(mpp->dev, "ts in power_model not available\n"); - return -EINVAL; - } - - dec->thermal_zone = thermal_zone_get_zone_by_name(tz_name); - if (IS_ERR(dec->thermal_zone)) { - pr_warn("Error getting ddr thermal zone, not yet ready?\n"); - dec->thermal_zone = NULL; - return -EPROBE_DEFER; - } - - if (of_property_read_u32(power_model_node, - "static-power-coefficient", - &dec->static_power_coeff)) { - dev_err(mpp->dev, "static-power-coefficient not available\n"); - return -EINVAL; - } - if (of_property_read_u32(power_model_node, - "dynamic-power-coefficient", - &temp)) { - dev_err(mpp->dev, "dynamic-power-coefficient not available\n"); - return -EINVAL; - } - cooling_power_data.dyn_power_coeff = (unsigned long)temp; - - if (of_property_read_u32_array(power_model_node, - "ts", - (u32 *)dec->ts, - 4)) { - dev_err(mpp->dev, "ts in power_model not available\n"); - return -EINVAL; - } - - return 0; -} - static int devfreq_notifier_call(struct notifier_block *nb, unsigned long event, void *data) @@ -1370,38 +1271,25 @@ static int rkvdec_devfreq_init(struct mpp_dev *mpp) "rkvdec_leakage", "vcodec"); if (ret) { dev_err(mpp->dev, "Failed to init_opp_table\n"); - goto done; + return ret; } dec->devfreq = devm_devfreq_add_device(mpp->dev, &devfreq_profile, "userspace", NULL); if (IS_ERR(dec->devfreq)) { ret = PTR_ERR(dec->devfreq); - goto done; + return ret; } stat = &dec->devfreq->last_status; stat->current_frequency = clk_get_rate(dec->aclk_info.clk); ret = devfreq_register_opp_notifier(mpp->dev, dec->devfreq); - if (ret) - goto done; - - /* power simplle init */ - ret = power_model_simple_init(mpp); - if (!ret && dec->devfreq) { - dec->devfreq_cooling = - of_devfreq_cooling_register_power(mpp->dev->of_node, - dec->devfreq, - &cooling_power_data); - if (IS_ERR_OR_NULL(dec->devfreq_cooling)) { - ret = -ENXIO; - dev_err(mpp->dev, "Failed to register cooling\n"); - goto done; - } + if (ret < 0) { + dev_err(mpp->dev, "failed to register opp notifier\n"); + return ret; } -done: - return ret; + return 0; } #else static inline int rkvdec_devfreq_remove(struct mpp_dev *mpp) From 5eb44985aed70cef2ff45dcb899683aea85a0be5 Mon Sep 17 00:00:00 2001 From: Finley Xiao Date: Fri, 31 Mar 2023 21:44:45 +0800 Subject: [PATCH 04/16] video: rockchip: mpp: rkvdec2: remove old power model Signed-off-by: Finley Xiao Change-Id: I04ac1e8a9d2963f990fc7e0b8d22c5a18bf2f640 --- drivers/video/rockchip/mpp/mpp_rkvdec2.c | 43 +----------------------- drivers/video/rockchip/mpp/mpp_rkvdec2.h | 2 -- 2 files changed, 1 insertion(+), 44 deletions(-) diff --git a/drivers/video/rockchip/mpp/mpp_rkvdec2.c b/drivers/video/rockchip/mpp/mpp_rkvdec2.c index 82b0c3965110..0bf3737c7e96 100644 --- a/drivers/video/rockchip/mpp/mpp_rkvdec2.c +++ b/drivers/video/rockchip/mpp/mpp_rkvdec2.c @@ -17,8 +17,6 @@ #include "hack/mpp_rkvdec2_hack_rk3568.c" -#include -#include #include #include #include @@ -787,6 +785,7 @@ static struct devfreq_dev_profile rkvdec2_devfreq_profile = { .target = rkvdec2_devfreq_target, .get_dev_status = rkvdec2_devfreq_get_dev_status, .get_cur_freq = rkvdec2_devfreq_get_cur_freq, + .is_cooling_device = true, }; static int devfreq_vdec2_ondemand_func(struct devfreq *df, unsigned long *freq) @@ -813,22 +812,6 @@ static struct devfreq_governor devfreq_vdec2_ondemand = { .event_handler = devfreq_vdec2_ondemand_handler, }; -static unsigned long rkvdec2_get_static_power(struct devfreq *devfreq, - unsigned long voltage) -{ - struct rkvdec2_dev *dec = devfreq->data; - - if (!dec->model_data) - return 0; - else - return rockchip_ipa_get_static_power(dec->model_data, - voltage); -} - -static struct devfreq_cooling_power vdec2_cooling_power_data = { - .get_static_power = rkvdec2_get_static_power, -}; - static struct monitor_dev_profile vdec2_mdevp = { .type = MONITOR_TPYE_DEV, .low_temp_adjust = rockchip_monitor_dev_low_temp_adjust, @@ -839,7 +822,6 @@ static int rkvdec2_devfreq_init(struct mpp_dev *mpp) { struct rkvdec2_dev *dec = to_rkvdec2_dev(mpp); struct clk *clk_core = dec->core_clk_info.clk; - struct devfreq_cooling_power *vdec2_dcp = &vdec2_cooling_power_data; int ret = 0; if (!clk_core) @@ -884,28 +866,6 @@ static int rkvdec2_devfreq_init(struct mpp_dev *mpp) devfreq_register_opp_notifier(mpp->dev, dec->devfreq); - of_property_read_u32(mpp->dev->of_node, "dynamic-power-coefficient", - (u32 *)&vdec2_dcp->dyn_power_coeff); - dec->model_data = rockchip_ipa_power_model_init(mpp->dev, - "vdec_leakage"); - if (IS_ERR_OR_NULL(dec->model_data)) { - dec->model_data = NULL; - dev_err(mpp->dev, "failed to initialize power model\n"); - } else if (dec->model_data->dynamic_coefficient) { - vdec2_dcp->dyn_power_coeff = - dec->model_data->dynamic_coefficient; - } - if (!vdec2_dcp->dyn_power_coeff) { - dev_err(mpp->dev, "failed to get dynamic-coefficient\n"); - goto out; - } - - dec->devfreq_cooling = - of_devfreq_cooling_register_power(mpp->dev->of_node, - dec->devfreq, vdec2_dcp); - if (IS_ERR_OR_NULL(dec->devfreq_cooling)) - dev_err(mpp->dev, "failed to register cooling device\n"); - vdec2_mdevp.data = dec->devfreq; dec->mdev_info = rockchip_system_monitor_register(mpp->dev, &vdec2_mdevp); if (IS_ERR(dec->mdev_info)) { @@ -913,7 +873,6 @@ static int rkvdec2_devfreq_init(struct mpp_dev *mpp) dec->mdev_info = NULL; } -out: return 0; devfreq_err: diff --git a/drivers/video/rockchip/mpp/mpp_rkvdec2.h b/drivers/video/rockchip/mpp/mpp_rkvdec2.h index aef2f3a5af20..5ff89a256d85 100644 --- a/drivers/video/rockchip/mpp/mpp_rkvdec2.h +++ b/drivers/video/rockchip/mpp/mpp_rkvdec2.h @@ -195,8 +195,6 @@ struct rkvdec2_dev { unsigned long volt; unsigned long core_rate_hz; unsigned long core_last_rate_hz; - struct ipa_power_model_data *model_data; - struct thermal_cooling_device *devfreq_cooling; struct monitor_dev_info *mdev_info; #endif From c127ccc23272498a590324b086888a6e42c8ccf4 Mon Sep 17 00:00:00 2001 From: Finley Xiao Date: Sun, 2 Apr 2023 14:55:20 +0800 Subject: [PATCH 05/16] video: rockchip: mpp: rkvenc: remove old power model Signed-off-by: Finley Xiao Change-Id: I333110472a1e66cde196b1880b317ebecb413a87 --- drivers/video/rockchip/mpp/mpp_rkvenc.c | 45 +------------------------ 1 file changed, 1 insertion(+), 44 deletions(-) diff --git a/drivers/video/rockchip/mpp/mpp_rkvenc.c b/drivers/video/rockchip/mpp/mpp_rkvenc.c index e6f7784b7284..2d5840ca8db8 100644 --- a/drivers/video/rockchip/mpp/mpp_rkvenc.c +++ b/drivers/video/rockchip/mpp/mpp_rkvenc.c @@ -12,7 +12,6 @@ #include #include #include -#include #include #include #include @@ -198,8 +197,6 @@ struct rkvenc_dev { unsigned long volt; unsigned long core_rate_hz; unsigned long core_last_rate_hz; - struct ipa_power_model_data *model_data; - struct thermal_cooling_device *devfreq_cooling; struct monitor_dev_info *mdev_info; #endif /* for iommu pagefault handle */ @@ -926,6 +923,7 @@ static struct devfreq_dev_profile rkvenc_devfreq_profile = { .target = rkvenc_devfreq_target, .get_dev_status = rkvenc_devfreq_get_dev_status, .get_cur_freq = rkvenc_devfreq_get_cur_freq, + .is_cooling_device = true, }; static int devfreq_venc_ondemand_func(struct devfreq *df, unsigned long *freq) @@ -952,22 +950,6 @@ static struct devfreq_governor devfreq_venc_ondemand = { .event_handler = devfreq_venc_ondemand_handler, }; -static unsigned long rkvenc_get_static_power(struct devfreq *devfreq, - unsigned long voltage) -{ - struct rkvenc_dev *enc = devfreq->data; - - if (!enc->model_data) - return 0; - else - return rockchip_ipa_get_static_power(enc->model_data, - voltage); -} - -static struct devfreq_cooling_power venc_cooling_power_data = { - .get_static_power = rkvenc_get_static_power, -}; - static struct monitor_dev_profile enc_mdevp = { .type = MONITOR_TPYE_DEV, .low_temp_adjust = rockchip_monitor_dev_low_temp_adjust, @@ -1020,7 +1002,6 @@ static int rkvenc_devfreq_init(struct mpp_dev *mpp) { struct rkvenc_dev *enc = to_rkvenc_dev(mpp); struct clk *clk_core = enc->core_clk_info.clk; - struct devfreq_cooling_power *venc_dcp = &venc_cooling_power_data; struct rockchip_opp_info opp_info = {0}; int ret = 0; @@ -1067,28 +1048,6 @@ static int rkvenc_devfreq_init(struct mpp_dev *mpp) devfreq_register_opp_notifier(mpp->dev, enc->devfreq); - of_property_read_u32(mpp->dev->of_node, "dynamic-power-coefficient", - (u32 *)&venc_dcp->dyn_power_coeff); - enc->model_data = rockchip_ipa_power_model_init(mpp->dev, - "venc_leakage"); - if (IS_ERR_OR_NULL(enc->model_data)) { - enc->model_data = NULL; - dev_err(mpp->dev, "failed to initialize power model\n"); - } else if (enc->model_data->dynamic_coefficient) { - venc_dcp->dyn_power_coeff = - enc->model_data->dynamic_coefficient; - } - if (!venc_dcp->dyn_power_coeff) { - dev_err(mpp->dev, "failed to get dynamic-coefficient\n"); - goto out; - } - - enc->devfreq_cooling = - of_devfreq_cooling_register_power(mpp->dev->of_node, - enc->devfreq, venc_dcp); - if (IS_ERR_OR_NULL(enc->devfreq_cooling)) - dev_err(mpp->dev, "failed to register cooling device\n"); - enc_mdevp.data = enc->devfreq; enc->mdev_info = rockchip_system_monitor_register(mpp->dev, &enc_mdevp); if (IS_ERR(enc->mdev_info)) { @@ -1096,8 +1055,6 @@ static int rkvenc_devfreq_init(struct mpp_dev *mpp) enc->mdev_info = NULL; } -out: - return 0; devfreq_err: From 4d6861cc43b9411659a53f188c166e194e11a115 Mon Sep 17 00:00:00 2001 From: Yandong Lin Date: Tue, 30 May 2023 11:54:52 +0800 Subject: [PATCH 06/16] video: rockchip: mpp: rkvenc2: fix adapt to kernel 6.1 issue Signed-off-by: Yandong Lin Change-Id: I8d15a61066b7ecc27aabb33d9fd867586da603e1 --- drivers/video/rockchip/mpp/mpp_rkvenc2.c | 25 ++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/drivers/video/rockchip/mpp/mpp_rkvenc2.c b/drivers/video/rockchip/mpp/mpp_rkvenc2.c index 8c45b0d269c5..0b0f623c95b7 100644 --- a/drivers/video/rockchip/mpp/mpp_rkvenc2.c +++ b/drivers/video/rockchip/mpp/mpp_rkvenc2.c @@ -1721,9 +1721,6 @@ static int rkvenc_devfreq_init(struct mpp_dev *mpp) struct rkvenc_dev *enc = to_rkvenc_dev(mpp); struct clk *clk_core = enc->core_clk_info.clk; struct device *dev = mpp->dev; - struct opp_table *reg_table = NULL; - struct opp_table *clk_table = NULL; - const char *const reg_names[] = { "venc", "mem" }; int ret = 0; if (!clk_core) @@ -1731,18 +1728,22 @@ static int rkvenc_devfreq_init(struct mpp_dev *mpp) if (of_find_property(dev->of_node, "venc-supply", NULL) && of_find_property(dev->of_node, "mem-supply", NULL)) { - reg_table = dev_pm_opp_set_regulators(dev, reg_names, 2); - if (IS_ERR(reg_table)) - return PTR_ERR(reg_table); + const char *const reg_names[] = { "venc", "mem", NULL }; + + ret = dev_pm_opp_set_regulators(dev, reg_names); + if (ret) + return ret; } else { - reg_table = dev_pm_opp_set_regulators(dev, reg_names, 1); - if (IS_ERR(reg_table)) - return PTR_ERR(reg_table); + const char *const reg_names[] = { "venc", NULL }; + + ret = dev_pm_opp_set_regulators(dev, reg_names); + if (ret) + return ret; } - clk_table = dev_pm_opp_set_clkname(dev, "clk_core"); - if (IS_ERR(clk_table)) - return PTR_ERR(clk_table); + ret = dev_pm_opp_set_clkname(dev, "clk_core"); + if (ret) + return ret; rockchip_get_opp_data(rockchip_rkvenc_of_match, &enc->opp_info); ret = rockchip_init_opp_table(dev, &enc->opp_info, "leakage", "venc"); From b206c8f2b0eb227c9a51b091e352e9ee83049c8d Mon Sep 17 00:00:00 2001 From: Tao Huang Date: Thu, 1 Jun 2023 09:39:13 +0800 Subject: [PATCH 07/16] drm: DRM_IGNORE_IOTCL_PERMIT drop depends on ANDROID According to commit 1045a06724f3 ("remove CONFIG_ANDROID"). Signed-off-by: Tao Huang Change-Id: I59ab120e00569bcdb85564a1e1c8bef9d3f02688 --- drivers/gpu/drm/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig index 03b75d98abe8..cd641b1bce7b 100644 --- a/drivers/gpu/drm/Kconfig +++ b/drivers/gpu/drm/Kconfig @@ -43,7 +43,7 @@ config DRM_EDID config DRM_IGNORE_IOTCL_PERMIT bool "Ignore drm ioctl permission" - depends on DRM && ANDROID && NO_GKI + depends on DRM && NO_GKI config DRM_MIPI_DSI bool From 1a9f428fcd702fe77965fb5e75cf121982a35aa0 Mon Sep 17 00:00:00 2001 From: Tao Huang Date: Thu, 1 Jun 2023 09:54:02 +0800 Subject: [PATCH 08/16] arm64: rockchip_linux_defconfig: reorder configs only for kernel 6.1 Signed-off-by: Tao Huang Change-Id: I14f84bd19a87080c9caaadede4ef21e0e239dad0 --- arch/arm64/configs/rockchip_linux_defconfig | 50 ++++++++++----------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/arch/arm64/configs/rockchip_linux_defconfig b/arch/arm64/configs/rockchip_linux_defconfig index 01020d5862fb..c94a100f53da 100644 --- a/arch/arm64/configs/rockchip_linux_defconfig +++ b/arch/arm64/configs/rockchip_linux_defconfig @@ -20,7 +20,6 @@ CONFIG_NAMESPACES=y CONFIG_USER_NS=y CONFIG_BLK_DEV_INITRD=y CONFIG_EMBEDDED=y -# CONFIG_COMPAT_BRK is not set CONFIG_PROFILING=y CONFIG_ARCH_ROCKCHIP=y # CONFIG_ARM64_ERRATUM_826319 is not set @@ -83,20 +82,14 @@ CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y CONFIG_CPU_FREQ_GOV_INTERACTIVE=y CONFIG_CPUFREQ_DT=y CONFIG_ARM_ROCKCHIP_CPUFREQ=y -CONFIG_ARM_SCMI_PROTOCOL=y -CONFIG_ROCKCHIP_SIP=y CONFIG_ARM64_CRYPTO=y -CONFIG_CRYPTO_SHA1_ARM64_CE=y -CONFIG_CRYPTO_SHA2_ARM64_CE=y -CONFIG_CRYPTO_GHASH_ARM64_CE=y -CONFIG_CRYPTO_AES_ARM64_CE_CCM=y -CONFIG_CRYPTO_AES_ARM64_CE_BLK=y CONFIG_MODULES=y CONFIG_MODULE_FORCE_LOAD=y CONFIG_MODULE_UNLOAD=y CONFIG_MODULE_FORCE_UNLOAD=y CONFIG_PARTITION_ADVANCED=y CONFIG_CMDLINE_PARTITION=y +# CONFIG_COMPAT_BRK is not set # CONFIG_COMPACTION is not set CONFIG_DEFAULT_MMAP_MIN_ADDR=32768 CONFIG_CMA=y @@ -132,12 +125,15 @@ CONFIG_PCI=y CONFIG_PCIEPORTBUS=y CONFIG_PCIEASPM_POWERSAVE=y CONFIG_PCIEASPM_EXT=y +# CONFIG_VGA_ARB is not set CONFIG_PCIE_ROCKCHIP_HOST=y CONFIG_PCIE_DW_ROCKCHIP=y CONFIG_DEVTMPFS=y CONFIG_DEVTMPFS_MOUNT=y CONFIG_DEBUG_DEVRES=y CONFIG_CONNECTOR=y +CONFIG_ARM_SCMI_PROTOCOL=y +CONFIG_ROCKCHIP_SIP=y CONFIG_MTD=y CONFIG_MTD_CMDLINE_PARTS=y CONFIG_MTD_BLOCK=y @@ -168,7 +164,6 @@ CONFIG_NETDEVICES=y # CONFIG_NET_VENDOR_ARC is not set # CONFIG_NET_VENDOR_ATHEROS is not set # CONFIG_NET_VENDOR_BROADCOM is not set -# CONFIG_NET_VENDOR_BROCADE is not set # CONFIG_NET_VENDOR_CAVIUM is not set # CONFIG_NET_VENDOR_CHELSIO is not set # CONFIG_NET_VENDOR_CISCO is not set @@ -187,6 +182,7 @@ CONFIG_NETDEVICES=y # CONFIG_NET_VENDOR_NVIDIA is not set # CONFIG_NET_VENDOR_OKI is not set # CONFIG_NET_VENDOR_QLOGIC is not set +# CONFIG_NET_VENDOR_BROCADE is not set # CONFIG_NET_VENDOR_QUALCOMM is not set # CONFIG_NET_VENDOR_RDC is not set CONFIG_R8168=y @@ -302,32 +298,31 @@ CONFIG_USB_VIDEO_CLASS=y # CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV is not set # CONFIG_USB_GSPCA is not set CONFIG_V4L_PLATFORM_DRIVERS=y +CONFIG_V4L_MEM2MEM_DRIVERS=y CONFIG_VIDEO_ROCKCHIP_CIF=y CONFIG_VIDEO_ROCKCHIP_RKISP1=y CONFIG_VIDEO_ROCKCHIP_ISP=y CONFIG_VIDEO_ROCKCHIP_ISPP=y CONFIG_VIDEO_ROCKCHIP_HDMIRX=y -CONFIG_V4L_MEM2MEM_DRIVERS=y CONFIG_VIDEO_ROCKCHIP_RGA=y -CONFIG_VIDEO_LT6911UXC=y -CONFIG_VIDEO_LT7911D=y -CONFIG_VIDEO_RK628_CSI=y -CONFIG_VIDEO_RK628_BT1120=y -CONFIG_VIDEO_TC35874X=y -CONFIG_VIDEO_RK_IRCUT=y CONFIG_VIDEO_GC8034=y CONFIG_VIDEO_IMX415=y CONFIG_VIDEO_IMX464=y CONFIG_VIDEO_OS04A10=y +CONFIG_VIDEO_OV13850=y CONFIG_VIDEO_OV4689=y CONFIG_VIDEO_OV5695=y CONFIG_VIDEO_OV7251=y -CONFIG_VIDEO_OV13850=y -# CONFIG_VGA_ARB is not set +CONFIG_VIDEO_LT6911UXC=y +CONFIG_VIDEO_LT7911D=y +CONFIG_VIDEO_TC35874X=y +CONFIG_VIDEO_RK628_CSI=y +CONFIG_VIDEO_RK628_BT1120=y +CONFIG_VIDEO_RK_IRCUT=y CONFIG_DRM=y CONFIG_DRM_IGNORE_IOTCL_PERMIT=y -CONFIG_DRM_DP_AUX_CHARDEV=y CONFIG_DRM_LOAD_EDID_FIRMWARE=y +CONFIG_DRM_DP_AUX_CHARDEV=y CONFIG_DRM_ROCKCHIP=y CONFIG_ROCKCHIP_ANALOGIX_DP=y CONFIG_ROCKCHIP_CDN_DP=y @@ -489,12 +484,6 @@ CONFIG_DMABUF_HEAPS_PAGE_POOL=y CONFIG_DMABUF_HEAPS_SYSTEM=y CONFIG_DMABUF_HEAPS_CMA=y CONFIG_STAGING=y -CONFIG_FIQ_DEBUGGER=y -CONFIG_FIQ_DEBUGGER_NO_SLEEP=y -CONFIG_FIQ_DEBUGGER_CONSOLE=y -CONFIG_FIQ_DEBUGGER_CONSOLE_DEFAULT_ENABLE=y -CONFIG_FIQ_DEBUGGER_TRUST_ZONE=y -CONFIG_RK_CONSOLE_THREAD=y CONFIG_COMMON_CLK_RK808=y CONFIG_COMMON_CLK_SCMI=y CONFIG_COMMON_CLK_PWM=y @@ -528,6 +517,12 @@ CONFIG_ROCKCHIP_SYSTEM_MONITOR=y CONFIG_ROCKCHIP_VENDOR_STORAGE=y CONFIG_ROCKCHIP_MMC_VENDOR_STORAGE=y CONFIG_ROCKCHIP_VENDOR_STORAGE_UPDATE_LOADER=y +CONFIG_FIQ_DEBUGGER=y +CONFIG_FIQ_DEBUGGER_NO_SLEEP=y +CONFIG_FIQ_DEBUGGER_CONSOLE=y +CONFIG_FIQ_DEBUGGER_CONSOLE_DEFAULT_ENABLE=y +CONFIG_FIQ_DEBUGGER_TRUST_ZONE=y +CONFIG_RK_CONSOLE_THREAD=y CONFIG_ROCKCHIP_DEBUG=y CONFIG_PM_DEVFREQ=y CONFIG_DEVFREQ_GOV_PERFORMANCE=y @@ -609,6 +604,11 @@ CONFIG_CRYPTO_TWOFISH=y CONFIG_CRYPTO_ANSI_CPRNG=y CONFIG_CRYPTO_USER_API_HASH=y CONFIG_CRYPTO_USER_API_SKCIPHER=y +CONFIG_CRYPTO_GHASH_ARM64_CE=y +CONFIG_CRYPTO_SHA1_ARM64_CE=y +CONFIG_CRYPTO_SHA2_ARM64_CE=y +CONFIG_CRYPTO_AES_ARM64_CE_BLK=y +CONFIG_CRYPTO_AES_ARM64_CE_CCM=y CONFIG_CRYPTO_DEV_ROCKCHIP=y CONFIG_CRYPTO_DEV_ROCKCHIP_DEV=y CONFIG_CRC_CCITT=y From a9bc1db909ce38cfb1b27afbb72f7ec65854967e Mon Sep 17 00:00:00 2001 From: Tao Huang Date: Thu, 1 Jun 2023 10:11:03 +0800 Subject: [PATCH 09/16] arm64: rockchip_linux_defconfig: Remove Android only configs -CONFIG_CPU_FREQ_TIMES=y -CONFIG_DMABUF_HEAPS_DEFERRED_FREE=y -CONFIG_DMABUF_HEAPS_PAGE_POOL=y -CONFIG_IOMMU_LIMIT_IOVA_ALIGNMENT=y -CONFIG_IOMMU_IOVA_ALIGNMENT=4 Signed-off-by: Tao Huang Change-Id: I7c4015e93a5181e2fbb9c9893534f169136ee82c --- arch/arm64/configs/rockchip_linux_defconfig | 5 ----- 1 file changed, 5 deletions(-) diff --git a/arch/arm64/configs/rockchip_linux_defconfig b/arch/arm64/configs/rockchip_linux_defconfig index c94a100f53da..5af9fa5ff833 100644 --- a/arch/arm64/configs/rockchip_linux_defconfig +++ b/arch/arm64/configs/rockchip_linux_defconfig @@ -74,7 +74,6 @@ CONFIG_ARM_CPUIDLE=y CONFIG_ARM_PSCI_CPUIDLE=y CONFIG_CPU_FREQ=y CONFIG_CPU_FREQ_STAT=y -CONFIG_CPU_FREQ_TIMES=y CONFIG_CPU_FREQ_GOV_POWERSAVE=y CONFIG_CPU_FREQ_GOV_USERSPACE=y CONFIG_CPU_FREQ_GOV_ONDEMAND=y @@ -479,8 +478,6 @@ CONFIG_RK_DMABUF_DEBUG=y CONFIG_SW_SYNC=y CONFIG_DMABUF_HEAPS=y CONFIG_DMABUF_SYSFS_STATS=y -CONFIG_DMABUF_HEAPS_DEFERRED_FREE=y -CONFIG_DMABUF_HEAPS_PAGE_POOL=y CONFIG_DMABUF_HEAPS_SYSTEM=y CONFIG_DMABUF_HEAPS_CMA=y CONFIG_STAGING=y @@ -489,8 +486,6 @@ CONFIG_COMMON_CLK_SCMI=y CONFIG_COMMON_CLK_PWM=y CONFIG_MAILBOX=y CONFIG_ROCKCHIP_MBOX=y -CONFIG_IOMMU_LIMIT_IOVA_ALIGNMENT=y -CONFIG_IOMMU_IOVA_ALIGNMENT=4 CONFIG_ROCKCHIP_IOMMU=y CONFIG_ARM_SMMU_V3=y CONFIG_RPMSG_ROCKCHIP=y From e6aa862b3ed5de60fc844af4972afa10e5c35e6c Mon Sep 17 00:00:00 2001 From: Tao Huang Date: Thu, 1 Jun 2023 18:43:59 +0800 Subject: [PATCH 10/16] arm64: rockchip_linux_defconfig: Remove unused configs -# CONFIG_ARCH_RANDOM is not set 9592eef7c16e ("random: remove CONFIG_ARCH_RANDOM"). -CONFIG_ARM_CPUIDLE=y 51280acad855 ("cpuidle: cpuidle-arm: remove arm64 support"). -CONFIG_ARM64_CRYPTO=y 4a329fecc9aa ("crypto: Kconfig - submenus for arm and arm64"). -CONFIG_ZSMALLOC=y b3fbd58fcbb1 ("mm: Kconfig: simplify zswap configuration"). select by ZRAM. -# CONFIG_USB_GSPCA is not set 2a621b0859d1 ("media: gspca: Drop default m"). -CONFIG_ANDROID=y 1045a06724f3 ("remove CONFIG_ANDROID"). -CONFIG_CRYPTO_SHA512=y 5261cdf457ce (crypto: drbg - select SHA512). select by CRYPTO_DRBG_HMAC. Signed-off-by: Tao Huang Change-Id: I4fb4ea89f8d32470c9cad8054b89ca81c3df935a --- arch/arm64/configs/rockchip_linux_defconfig | 7 ------- 1 file changed, 7 deletions(-) diff --git a/arch/arm64/configs/rockchip_linux_defconfig b/arch/arm64/configs/rockchip_linux_defconfig index 5af9fa5ff833..fe8165a4e4f7 100644 --- a/arch/arm64/configs/rockchip_linux_defconfig +++ b/arch/arm64/configs/rockchip_linux_defconfig @@ -61,7 +61,6 @@ CONFIG_SETEND_EMULATION=y # CONFIG_ARM64_TLB_RANGE is not set # CONFIG_ARM64_BTI is not set # CONFIG_ARM64_E0PD is not set -# CONFIG_ARCH_RANDOM is not set # CONFIG_ARM64_MTE is not set # CONFIG_ARM64_SVE is not set CONFIG_ARM64_PSEUDO_NMI=y @@ -70,7 +69,6 @@ CONFIG_PM_ADVANCED_DEBUG=y CONFIG_WQ_POWER_EFFICIENT_DEFAULT=y CONFIG_ENERGY_MODEL=y CONFIG_CPU_IDLE=y -CONFIG_ARM_CPUIDLE=y CONFIG_ARM_PSCI_CPUIDLE=y CONFIG_CPU_FREQ=y CONFIG_CPU_FREQ_STAT=y @@ -81,7 +79,6 @@ CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y CONFIG_CPU_FREQ_GOV_INTERACTIVE=y CONFIG_CPUFREQ_DT=y CONFIG_ARM_ROCKCHIP_CPUFREQ=y -CONFIG_ARM64_CRYPTO=y CONFIG_MODULES=y CONFIG_MODULE_FORCE_LOAD=y CONFIG_MODULE_UNLOAD=y @@ -92,7 +89,6 @@ CONFIG_CMDLINE_PARTITION=y # CONFIG_COMPACTION is not set CONFIG_DEFAULT_MMAP_MIN_ADDR=32768 CONFIG_CMA=y -CONFIG_ZSMALLOC=y CONFIG_NET=y CONFIG_PACKET=y CONFIG_UNIX=y @@ -295,7 +291,6 @@ CONFIG_MEDIA_SUPPORT=y CONFIG_MEDIA_USB_SUPPORT=y CONFIG_USB_VIDEO_CLASS=y # CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV is not set -# CONFIG_USB_GSPCA is not set CONFIG_V4L_PLATFORM_DRIVERS=y CONFIG_V4L_MEM2MEM_DRIVERS=y CONFIG_VIDEO_ROCKCHIP_CIF=y @@ -551,7 +546,6 @@ CONFIG_PHY_ROCKCHIP_SNPS_PCIE3=y CONFIG_PHY_ROCKCHIP_TYPEC=y CONFIG_PHY_ROCKCHIP_USB=y CONFIG_PHY_ROCKCHIP_USBDP=y -CONFIG_ANDROID=y CONFIG_NVMEM_ROCKCHIP_EFUSE=y CONFIG_NVMEM_ROCKCHIP_OTP=y CONFIG_TEE=y @@ -594,7 +588,6 @@ CONFIG_NLS_ASCII=y CONFIG_NLS_ISO8859_1=y CONFIG_NLS_UTF8=y CONFIG_UNICODE=y -CONFIG_CRYPTO_SHA512=y CONFIG_CRYPTO_TWOFISH=y CONFIG_CRYPTO_ANSI_CPRNG=y CONFIG_CRYPTO_USER_API_HASH=y From 8dabb59a0517d2d8b370c12b80944b73a3acb57d Mon Sep 17 00:00:00 2001 From: Tao Huang Date: Thu, 1 Jun 2023 19:00:13 +0800 Subject: [PATCH 11/16] arm64: rockchip_linux_defconfig: Replace I2C_HID by I2C_HID_OF According to commit b33752c30023 ("HID: i2c-hid: Reorganize so ACPI and OF are separate modules"), replace I2C_HID by I2C_HID_OF. Signed-off-by: Tao Huang Change-Id: I23eb34acdc6f0603285b8a9abe6100c227bf27a9 --- arch/arm64/configs/rockchip_linux_defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm64/configs/rockchip_linux_defconfig b/arch/arm64/configs/rockchip_linux_defconfig index fe8165a4e4f7..63eb1e8c2e64 100644 --- a/arch/arm64/configs/rockchip_linux_defconfig +++ b/arch/arm64/configs/rockchip_linux_defconfig @@ -410,7 +410,7 @@ CONFIG_UHID=y CONFIG_HID_KENSINGTON=y CONFIG_HID_MULTITOUCH=y CONFIG_USB_HIDDEV=y -CONFIG_I2C_HID=y +CONFIG_I2C_HID_OF=y CONFIG_USB_ANNOUNCE_NEW_DEVICES=y # CONFIG_USB_DEFAULT_PERSIST is not set CONFIG_USB_OTG=y From 48e353f4732152b0b3a882be0af086a2bb6deaaf Mon Sep 17 00:00:00 2001 From: Tao Huang Date: Thu, 1 Jun 2023 19:06:36 +0800 Subject: [PATCH 12/16] arm64: rockchip_linux_defconfig: address renamed CONFIG_DEBUG_INFO=y CONFIG_DEBUG_INFO is now implicitly selected if one picks one of the explicit options that could be DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT, DEBUG_INFO_DWARF4, DEBUG_INFO_DWARF5. According to commit f9b3cd245784 ("Kconfig.debug: make DEBUG_INFO selectable from a choice"), we use DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT. Signed-off-by: Tao Huang Change-Id: I7acc85b5fc3e41f82e78337949346576cf621ef8 --- arch/arm64/configs/rockchip_linux_defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm64/configs/rockchip_linux_defconfig b/arch/arm64/configs/rockchip_linux_defconfig index 63eb1e8c2e64..44f8b2b8d0a1 100644 --- a/arch/arm64/configs/rockchip_linux_defconfig +++ b/arch/arm64/configs/rockchip_linux_defconfig @@ -610,7 +610,7 @@ CONFIG_DMA_CMA=y CONFIG_PRINTK_TIME=y CONFIG_PRINTK_TIME_FROM_ARM_ARCH_TIMER=y CONFIG_DYNAMIC_DEBUG=y -CONFIG_DEBUG_INFO=y +CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y CONFIG_MAGIC_SYSRQ=y CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0 CONFIG_SCHEDSTATS=y From d664f49dd01d6c4b65ed7040327456ebd77a389e Mon Sep 17 00:00:00 2001 From: Tao Huang Date: Thu, 1 Jun 2023 19:13:49 +0800 Subject: [PATCH 13/16] arm64: rockchip_linux_defconfig: Use DEBUG_INFO_REDUCED We've had DEBUG_INFO enabled for arm64 defconfigs since the initial commit. This is probably not that frequently used but substantially inflates the size of the build tree and amount of I/O needed during the build. This was causing issues with storage usage in some automated CI environments which don't expect defconfigs to be quite this big, and generally increases the resource consumption for both them and people doing local builds. The main use case for the debug info is decoding things with scripts/faddr2line but that doesn't need the full DEBUG_INFO, DEBUG_INFO_REDUCED is enough for it, so enable that by default. Signed-off-by: Tao Huang Change-Id: Iaed05d8e472d331692e6a58b41edd81d600cf529 --- arch/arm64/configs/rockchip_linux_defconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/arm64/configs/rockchip_linux_defconfig b/arch/arm64/configs/rockchip_linux_defconfig index 44f8b2b8d0a1..8a4c8ac090a8 100644 --- a/arch/arm64/configs/rockchip_linux_defconfig +++ b/arch/arm64/configs/rockchip_linux_defconfig @@ -611,6 +611,7 @@ CONFIG_PRINTK_TIME=y CONFIG_PRINTK_TIME_FROM_ARM_ARCH_TIMER=y CONFIG_DYNAMIC_DEBUG=y CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y +CONFIG_DEBUG_INFO_REDUCED=y CONFIG_MAGIC_SYSRQ=y CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0 CONFIG_SCHEDSTATS=y From 086a82237c1f6b5421231cf34a93124e821c0039 Mon Sep 17 00:00:00 2001 From: Yu Qiaowei Date: Wed, 31 May 2023 08:44:16 +0000 Subject: [PATCH 14/16] video: rockchip: rga3: fix compile errors on kernel-6.1 Signed-off-by: Yu Qiaowei Change-Id: I3b0de1f1da992975c13f99de7574ff0cd0865e25 --- drivers/video/rockchip/rga3/rga_dma_buf.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/video/rockchip/rga3/rga_dma_buf.c b/drivers/video/rockchip/rga3/rga_dma_buf.c index d6ccd01eb4e0..214de47bab6d 100644 --- a/drivers/video/rockchip/rga3/rga_dma_buf.c +++ b/drivers/video/rockchip/rga3/rga_dma_buf.c @@ -209,6 +209,8 @@ static dma_addr_t rga_iommu_dma_alloc_iova(struct iommu_domain *domain, shift = iova_shift(iovad); iova_len = size >> shift; + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(6, 1, 0)) /* * Freeing non-power-of-two-sized allocations back into the IOVA caches * will come back to bite us badly, so we have to waste a bit of space @@ -217,6 +219,7 @@ static dma_addr_t rga_iommu_dma_alloc_iova(struct iommu_domain *domain, */ if (iova_len < (1 << (IOVA_RANGE_CACHE_MAX_SIZE - 1))) iova_len = roundup_pow_of_two(iova_len); +#endif #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 10, 0)) dma_limit = min_not_zero(dma_limit, dev->bus_dma_limit); From 983b4117637aabdb8c1f5396cce8257c8dbaf1bc Mon Sep 17 00:00:00 2001 From: Zefa Chen Date: Thu, 25 May 2023 11:11:45 +0800 Subject: [PATCH 15/16] phy: rockchip: mipi-rx: fixes build error for kernel 6.1 Signed-off-by: Zefa Chen Change-Id: Ia4fe55b20738c5be310d73edf7716615da849615 --- drivers/phy/rockchip/phy-rockchip-mipi-rx.c | 46 ++++----------------- 1 file changed, 9 insertions(+), 37 deletions(-) diff --git a/drivers/phy/rockchip/phy-rockchip-mipi-rx.c b/drivers/phy/rockchip/phy-rockchip-mipi-rx.c index a99764257220..245c8731a027 100644 --- a/drivers/phy/rockchip/phy-rockchip-mipi-rx.c +++ b/drivers/phy/rockchip/phy-rockchip-mipi-rx.c @@ -794,22 +794,11 @@ static int mipidphy_update_sensor_mbus(struct v4l2_subdev *sd) return ret; sensor->mbus = mbus; - switch (mbus.flags & V4L2_MBUS_CSI2_LANES) { - case V4L2_MBUS_CSI2_1_LANE: - sensor->lanes = 1; - break; - case V4L2_MBUS_CSI2_2_LANE: - sensor->lanes = 2; - break; - case V4L2_MBUS_CSI2_3_LANE: - sensor->lanes = 3; - break; - case V4L2_MBUS_CSI2_4_LANE: - sensor->lanes = 4; - break; - default: - return -EINVAL; - } + if (mbus.type == V4L2_MBUS_CSI2_DPHY || + mbus.type == V4L2_MBUS_CSI2_CPHY) + sensor->lanes = mbus.bus.mipi_csi2.num_data_lanes; + else if (mbus.type == V4L2_MBUS_CCP2) + sensor->lanes = mbus.bus.mipi_csi1.data_lane; return 0; } @@ -1414,10 +1403,10 @@ static int csi_mipidphy_stream_on(struct mipidphy_priv *priv, write_csiphy_reg(priv, CSIPHY_CTRL_DIG_RST, 0x1e); write_csiphy_reg(priv, CSIPHY_CTRL_DIG_RST, 0x1f); if (drv_data->chip_id == CHIP_ID_RK3326S) { - if (sensor->mbus.flags & V4L2_MBUS_CSI2_CONTINUOUS_CLOCK) - clk_mode = 0x03; - else if (sensor->mbus.flags & V4L2_MBUS_CSI2_NONCONTINUOUS_CLOCK) + if (sensor->mbus.bus.mipi_csi2.flags & V4L2_MBUS_CSI2_NONCONTINUOUS_CLOCK) clk_mode = 0; + else + clk_mode = 0x03; write_csiphy_reg(priv, CSIPHY_CLK_MODE, clk_mode); } } else { @@ -1708,7 +1697,7 @@ static int rockchip_mipidphy_fwnode_parse(struct device *dev, if (vep->bus_type == V4L2_MBUS_CSI2_DPHY) { config->type = V4L2_MBUS_CSI2_DPHY; - config->flags = vep->bus.mipi_csi2.flags; + config->bus.mipi_csi2.flags = vep->bus.mipi_csi2.flags; s_asd->lanes = vep->bus.mipi_csi2.num_data_lanes; } else if (vep->bus_type == V4L2_MBUS_CCP2) { /* V4L2_MBUS_CCP2 for lvds */ @@ -1719,23 +1708,6 @@ static int rockchip_mipidphy_fwnode_parse(struct device *dev, return -EINVAL; } - switch (s_asd->lanes) { - case 1: - config->flags |= V4L2_MBUS_CSI2_1_LANE; - break; - case 2: - config->flags |= V4L2_MBUS_CSI2_2_LANE; - break; - case 3: - config->flags |= V4L2_MBUS_CSI2_3_LANE; - break; - case 4: - config->flags |= V4L2_MBUS_CSI2_4_LANE; - break; - default: - return -EINVAL; - } - return 0; } From a41b37cce25eff86fa855e4be7236b0e4a68feac Mon Sep 17 00:00:00 2001 From: Zefa Chen Date: Thu, 25 May 2023 11:37:06 +0800 Subject: [PATCH 16/16] phy: rockchip: csi2-dphy: fixes build error for kernel 6.1 Signed-off-by: Zefa Chen Change-Id: I12808b5d617789d87fe4e528d8335fdb5ac5b4be --- drivers/phy/rockchip/phy-rockchip-csi2-dphy.c | 45 +++++-------------- 1 file changed, 10 insertions(+), 35 deletions(-) diff --git a/drivers/phy/rockchip/phy-rockchip-csi2-dphy.c b/drivers/phy/rockchip/phy-rockchip-csi2-dphy.c index 1fa8d3aea989..97e236cf10f2 100644 --- a/drivers/phy/rockchip/phy-rockchip-csi2-dphy.c +++ b/drivers/phy/rockchip/phy-rockchip-csi2-dphy.c @@ -121,22 +121,13 @@ static int csi2_dphy_update_sensor_mbus(struct v4l2_subdev *sd) return ret; sensor->mbus = mbus; - switch (mbus.flags & V4L2_MBUS_CSI2_LANES) { - case V4L2_MBUS_CSI2_1_LANE: - sensor->lanes = 1; - break; - case V4L2_MBUS_CSI2_2_LANE: - sensor->lanes = 2; - break; - case V4L2_MBUS_CSI2_3_LANE: - sensor->lanes = 3; - break; - case V4L2_MBUS_CSI2_4_LANE: - sensor->lanes = 4; - break; - default: - return -EINVAL; - } + + if (mbus.type == V4L2_MBUS_CSI2_DPHY || + mbus.type == V4L2_MBUS_CSI2_CPHY) + sensor->lanes = mbus.bus.mipi_csi2.num_data_lanes; + else if (mbus.type == V4L2_MBUS_CCP2) + sensor->lanes = mbus.bus.mipi_csi1.data_lane; + if (dphy->drv_data->vendor == PHY_VENDOR_INNO) { ret = v4l2_subdev_call(sensor_sd, core, ioctl, RKMODULE_GET_BUS_CONFIG, &bus_config); @@ -491,9 +482,10 @@ static int rockchip_csi2_dphy_fwnode_parse(struct device *dev, return -EINVAL; } - if (vep->bus_type == V4L2_MBUS_CSI2_DPHY) { + if (vep->bus_type == V4L2_MBUS_CSI2_DPHY || + vep->bus_type == V4L2_MBUS_CSI2_CPHY) { config->type = V4L2_MBUS_CSI2_DPHY; - config->flags = vep->bus.mipi_csi2.flags; + config->bus.mipi_csi2.flags = vep->bus.mipi_csi2.flags; s_asd->lanes = vep->bus.mipi_csi2.num_data_lanes; } else if (vep->bus_type == V4L2_MBUS_CCP2) { config->type = V4L2_MBUS_CCP2; @@ -503,23 +495,6 @@ static int rockchip_csi2_dphy_fwnode_parse(struct device *dev, return -EINVAL; } - switch (s_asd->lanes) { - case 1: - config->flags |= V4L2_MBUS_CSI2_1_LANE; - break; - case 2: - config->flags |= V4L2_MBUS_CSI2_2_LANE; - break; - case 3: - config->flags |= V4L2_MBUS_CSI2_3_LANE; - break; - case 4: - config->flags |= V4L2_MBUS_CSI2_4_LANE; - break; - default: - return -EINVAL; - } - return 0; }