Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/msm/mdss: export UBWC data

DPU programming requires knowledge of some of UBWC parameters. This
results in duplication of UBWC data between MDSS and DPU drivers. Export
the required data from MDSS driver.

Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Patchwork: https://patchwork.freedesktop.org/patch/550052/
Link: https://lore.kernel.org/r/20230728213320.97309-4-dmitry.baryshkov@linaro.org

+40 -17
+13 -17
drivers/gpu/drm/msm/msm_mdss.c
··· 13 13 #include <linux/pm_runtime.h> 14 14 #include <linux/reset.h> 15 15 16 - #include "msm_drv.h" 16 + #include "msm_mdss.h" 17 17 #include "msm_kms.h" 18 18 19 19 #define HW_REV 0x0 ··· 25 25 #define UBWC_PREDICTION_MODE 0x154 26 26 27 27 #define MIN_IB_BW 400000000UL /* Min ib vote 400MB */ 28 - 29 - struct msm_mdss_data { 30 - u32 ubwc_enc_version; 31 - /* can be read from register 0x58 */ 32 - u32 ubwc_dec_version; 33 - u32 ubwc_swizzle; 34 - u32 ubwc_static; 35 - u32 highest_bank_bit; 36 - u32 macrotile_mode; 37 - }; 38 28 39 29 struct msm_mdss { 40 30 struct device *dev; ··· 175 185 return 0; 176 186 } 177 187 178 - #define UBWC_1_0 0x10000000 179 - #define UBWC_2_0 0x20000000 180 - #define UBWC_3_0 0x30000000 181 - #define UBWC_4_0 0x40000000 182 - #define UBWC_4_3 0x40030000 183 - 184 188 static void msm_mdss_setup_ubwc_dec_20(struct msm_mdss *msm_mdss) 185 189 { 186 190 const struct msm_mdss_data *data = msm_mdss->mdss_data; ··· 218 234 writel_relaxed(2, msm_mdss->mmio + UBWC_CTRL_2); 219 235 writel_relaxed(1, msm_mdss->mmio + UBWC_PREDICTION_MODE); 220 236 } 237 + } 238 + 239 + const struct msm_mdss_data *msm_mdss_get_mdss_data(struct device *dev) 240 + { 241 + struct msm_mdss *mdss; 242 + 243 + if (!dev) 244 + return ERR_PTR(-EINVAL); 245 + 246 + mdss = dev_get_drvdata(dev); 247 + 248 + return mdss->mdss_data; 221 249 } 222 250 223 251 static int msm_mdss_enable(struct msm_mdss *msm_mdss)
+27
drivers/gpu/drm/msm/msm_mdss.h
··· 1 + /* SPDX-License-Identifier: GPL-2.0-only */ 2 + /* 3 + * Copyright (c) 2018, The Linux Foundation 4 + */ 5 + 6 + #ifndef __MSM_MDSS_H__ 7 + #define __MSM_MDSS_H__ 8 + 9 + struct msm_mdss_data { 10 + u32 ubwc_enc_version; 11 + /* can be read from register 0x58 */ 12 + u32 ubwc_dec_version; 13 + u32 ubwc_swizzle; 14 + u32 ubwc_static; 15 + u32 highest_bank_bit; 16 + u32 macrotile_mode; 17 + }; 18 + 19 + #define UBWC_1_0 0x10000000 20 + #define UBWC_2_0 0x20000000 21 + #define UBWC_3_0 0x30000000 22 + #define UBWC_4_0 0x40000000 23 + #define UBWC_4_3 0x40030000 24 + 25 + const struct msm_mdss_data *msm_mdss_get_mdss_data(struct device *dev); 26 + 27 + #endif /* __MSM_MDSS_H__ */