From: kernel test robot <lkp@intel.com>
To: cros-kernel-buildreports@googlegroups.com
Cc: oe-kbuild-all@lists.linux.dev
Subject: [chrome-os:chromeos-6.6 36/36] drivers/gpu/drm/mediatek/mtk_disp_outproc.c:61:8: warning: no previous prototype for function 'mtk_disp_outproc_crc_cnt'
Date: Tue, 9 Dec 2025 09:31:18 +0800 [thread overview]
Message-ID: <202512090902.2tc2BsdI-lkp@intel.com> (raw)
tree: https://chromium.googlesource.com/chromiumos/third_party/kernel chromeos-6.6
head: 5df2e81b9f63652fba901d69ccdd1518f736ad21
commit: 128c3864e6ce89c2eae2231e0fd787f0a309c69f [36/36] CHROMIUM: drm/mediatek: Remove mtk_disp_outproc.h and migrate CRC headers
config: arm64-allmodconfig (https://download.01.org/0day-ci/archive/20251209/202512090902.2tc2BsdI-lkp@intel.com/config)
compiler: clang version 19.1.7 (https://github.com/llvm/llvm-project cd708029e0b2869e80abe31ddb175f7c35361f90)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251209/202512090902.2tc2BsdI-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202512090902.2tc2BsdI-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> drivers/gpu/drm/mediatek/mtk_disp_outproc.c:61:8: warning: no previous prototype for function 'mtk_disp_outproc_crc_cnt' [-Wmissing-prototypes]
61 | size_t mtk_disp_outproc_crc_cnt(struct device *dev)
| ^
drivers/gpu/drm/mediatek/mtk_disp_outproc.c:61:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
61 | size_t mtk_disp_outproc_crc_cnt(struct device *dev)
| ^
| static
>> drivers/gpu/drm/mediatek/mtk_disp_outproc.c:68:6: warning: no previous prototype for function 'mtk_disp_outproc_crc_entry' [-Wmissing-prototypes]
68 | u32 *mtk_disp_outproc_crc_entry(struct device *dev)
| ^
drivers/gpu/drm/mediatek/mtk_disp_outproc.c:68:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
68 | u32 *mtk_disp_outproc_crc_entry(struct device *dev)
| ^
| static
>> drivers/gpu/drm/mediatek/mtk_disp_outproc.c:75:6: warning: no previous prototype for function 'mtk_disp_outproc_crc_read' [-Wmissing-prototypes]
75 | void mtk_disp_outproc_crc_read(struct device *dev)
| ^
drivers/gpu/drm/mediatek/mtk_disp_outproc.c:75:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
75 | void mtk_disp_outproc_crc_read(struct device *dev)
| ^
| static
>> drivers/gpu/drm/mediatek/mtk_disp_outproc.c:82:6: warning: no previous prototype for function 'mtk_disp_outproc_register_vblank_cb' [-Wmissing-prototypes]
82 | void mtk_disp_outproc_register_vblank_cb(struct device *dev,
| ^
drivers/gpu/drm/mediatek/mtk_disp_outproc.c:82:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
82 | void mtk_disp_outproc_register_vblank_cb(struct device *dev,
| ^
| static
>> drivers/gpu/drm/mediatek/mtk_disp_outproc.c:92:6: warning: no previous prototype for function 'mtk_disp_outproc_unregister_vblank_cb' [-Wmissing-prototypes]
92 | void mtk_disp_outproc_unregister_vblank_cb(struct device *dev)
| ^
drivers/gpu/drm/mediatek/mtk_disp_outproc.c:92:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
92 | void mtk_disp_outproc_unregister_vblank_cb(struct device *dev)
| ^
| static
>> drivers/gpu/drm/mediatek/mtk_disp_outproc.c:100:6: warning: no previous prototype for function 'mtk_disp_outproc_enable_vblank' [-Wmissing-prototypes]
100 | void mtk_disp_outproc_enable_vblank(struct device *dev)
| ^
drivers/gpu/drm/mediatek/mtk_disp_outproc.c:100:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
100 | void mtk_disp_outproc_enable_vblank(struct device *dev)
| ^
| static
>> drivers/gpu/drm/mediatek/mtk_disp_outproc.c:108:6: warning: no previous prototype for function 'mtk_disp_outproc_disable_vblank' [-Wmissing-prototypes]
108 | void mtk_disp_outproc_disable_vblank(struct device *dev)
| ^
drivers/gpu/drm/mediatek/mtk_disp_outproc.c:108:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
108 | void mtk_disp_outproc_disable_vblank(struct device *dev)
| ^
| static
>> drivers/gpu/drm/mediatek/mtk_disp_outproc.c:137:6: warning: no previous prototype for function 'mtk_disp_outproc_config' [-Wmissing-prototypes]
137 | void mtk_disp_outproc_config(struct device *dev, unsigned int w,
| ^
drivers/gpu/drm/mediatek/mtk_disp_outproc.c:137:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
137 | void mtk_disp_outproc_config(struct device *dev, unsigned int w,
| ^
| static
>> drivers/gpu/drm/mediatek/mtk_disp_outproc.c:156:6: warning: no previous prototype for function 'mtk_disp_outproc_start' [-Wmissing-prototypes]
156 | void mtk_disp_outproc_start(struct device *dev)
| ^
drivers/gpu/drm/mediatek/mtk_disp_outproc.c:156:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
156 | void mtk_disp_outproc_start(struct device *dev)
| ^
| static
>> drivers/gpu/drm/mediatek/mtk_disp_outproc.c:184:6: warning: no previous prototype for function 'mtk_disp_outproc_stop' [-Wmissing-prototypes]
184 | void mtk_disp_outproc_stop(struct device *dev)
| ^
drivers/gpu/drm/mediatek/mtk_disp_outproc.c:184:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
184 | void mtk_disp_outproc_stop(struct device *dev)
| ^
| static
>> drivers/gpu/drm/mediatek/mtk_disp_outproc.c:207:6: warning: no previous prototype for function 'mtk_disp_outproc_crc_reset' [-Wmissing-prototypes]
207 | void mtk_disp_outproc_crc_reset(struct device *dev, struct cmdq_pkt *cmdq_pkt)
| ^
drivers/gpu/drm/mediatek/mtk_disp_outproc.c:207:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
207 | void mtk_disp_outproc_crc_reset(struct device *dev, struct cmdq_pkt *cmdq_pkt)
| ^
| static
>> drivers/gpu/drm/mediatek/mtk_disp_outproc.c:221:6: warning: no previous prototype for function 'mtk_disp_outproc_crc_attach' [-Wmissing-prototypes]
221 | void mtk_disp_outproc_crc_attach(struct device *dev, struct mtk_crtc *data)
| ^
drivers/gpu/drm/mediatek/mtk_disp_outproc.c:221:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
221 | void mtk_disp_outproc_crc_attach(struct device *dev, struct mtk_crtc *data)
| ^
| static
>> drivers/gpu/drm/mediatek/mtk_disp_outproc.c:228:6: warning: no previous prototype for function 'mtk_disp_outproc_crc_detach' [-Wmissing-prototypes]
228 | void mtk_disp_outproc_crc_detach(struct device *dev)
| ^
drivers/gpu/drm/mediatek/mtk_disp_outproc.c:228:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
228 | void mtk_disp_outproc_crc_detach(struct device *dev)
| ^
| static
>> drivers/gpu/drm/mediatek/mtk_disp_outproc.c:235:5: warning: no previous prototype for function 'mtk_disp_outproc_clk_enable' [-Wmissing-prototypes]
235 | int mtk_disp_outproc_clk_enable(struct device *dev)
| ^
drivers/gpu/drm/mediatek/mtk_disp_outproc.c:235:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
235 | int mtk_disp_outproc_clk_enable(struct device *dev)
| ^
| static
>> drivers/gpu/drm/mediatek/mtk_disp_outproc.c:242:6: warning: no previous prototype for function 'mtk_disp_outproc_clk_disable' [-Wmissing-prototypes]
242 | void mtk_disp_outproc_clk_disable(struct device *dev)
| ^
drivers/gpu/drm/mediatek/mtk_disp_outproc.c:242:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
242 | void mtk_disp_outproc_clk_disable(struct device *dev)
| ^
| static
15 warnings generated.
vim +/mtk_disp_outproc_crc_cnt +61 drivers/gpu/drm/mediatek/mtk_disp_outproc.c
f3e6b1244e7c0a Nancy.Lin 2025-01-10 60
b7c8e781f020aa Sunny.Shen 2024-09-11 @61 size_t mtk_disp_outproc_crc_cnt(struct device *dev)
b7c8e781f020aa Sunny.Shen 2024-09-11 62 {
b7c8e781f020aa Sunny.Shen 2024-09-11 63 struct mtk_disp_outproc *priv = dev_get_drvdata(dev);
b7c8e781f020aa Sunny.Shen 2024-09-11 64
b7c8e781f020aa Sunny.Shen 2024-09-11 65 return priv->crc.cnt;
b7c8e781f020aa Sunny.Shen 2024-09-11 66 }
b7c8e781f020aa Sunny.Shen 2024-09-11 67
b7c8e781f020aa Sunny.Shen 2024-09-11 @68 u32 *mtk_disp_outproc_crc_entry(struct device *dev)
b7c8e781f020aa Sunny.Shen 2024-09-11 69 {
b7c8e781f020aa Sunny.Shen 2024-09-11 70 struct mtk_disp_outproc *priv = dev_get_drvdata(dev);
b7c8e781f020aa Sunny.Shen 2024-09-11 71
b7c8e781f020aa Sunny.Shen 2024-09-11 72 return priv->crc.va;
b7c8e781f020aa Sunny.Shen 2024-09-11 73 }
b7c8e781f020aa Sunny.Shen 2024-09-11 74
b7c8e781f020aa Sunny.Shen 2024-09-11 @75 void mtk_disp_outproc_crc_read(struct device *dev)
b7c8e781f020aa Sunny.Shen 2024-09-11 76 {
b7c8e781f020aa Sunny.Shen 2024-09-11 77 struct mtk_disp_outproc *priv = dev_get_drvdata(dev);
b7c8e781f020aa Sunny.Shen 2024-09-11 78
b7c8e781f020aa Sunny.Shen 2024-09-11 79 mtk_crtc_read_crc(&priv->crc);
b7c8e781f020aa Sunny.Shen 2024-09-11 80 }
b7c8e781f020aa Sunny.Shen 2024-09-11 81
f3e6b1244e7c0a Nancy.Lin 2025-01-10 @82 void mtk_disp_outproc_register_vblank_cb(struct device *dev,
f3e6b1244e7c0a Nancy.Lin 2025-01-10 83 void (*vblank_cb)(void *),
f3e6b1244e7c0a Nancy.Lin 2025-01-10 84 void *vblank_cb_data)
f3e6b1244e7c0a Nancy.Lin 2025-01-10 85 {
f3e6b1244e7c0a Nancy.Lin 2025-01-10 86 struct mtk_disp_outproc *priv = dev_get_drvdata(dev);
f3e6b1244e7c0a Nancy.Lin 2025-01-10 87
f3e6b1244e7c0a Nancy.Lin 2025-01-10 88 priv->vblank_cb = vblank_cb;
f3e6b1244e7c0a Nancy.Lin 2025-01-10 89 priv->vblank_cb_data = vblank_cb_data;
f3e6b1244e7c0a Nancy.Lin 2025-01-10 90 }
f3e6b1244e7c0a Nancy.Lin 2025-01-10 91
f3e6b1244e7c0a Nancy.Lin 2025-01-10 @92 void mtk_disp_outproc_unregister_vblank_cb(struct device *dev)
f3e6b1244e7c0a Nancy.Lin 2025-01-10 93 {
f3e6b1244e7c0a Nancy.Lin 2025-01-10 94 struct mtk_disp_outproc *priv = dev_get_drvdata(dev);
f3e6b1244e7c0a Nancy.Lin 2025-01-10 95
f3e6b1244e7c0a Nancy.Lin 2025-01-10 96 priv->vblank_cb = NULL;
f3e6b1244e7c0a Nancy.Lin 2025-01-10 97 priv->vblank_cb_data = NULL;
f3e6b1244e7c0a Nancy.Lin 2025-01-10 98 }
f3e6b1244e7c0a Nancy.Lin 2025-01-10 99
f3e6b1244e7c0a Nancy.Lin 2025-01-10 @100 void mtk_disp_outproc_enable_vblank(struct device *dev)
f3e6b1244e7c0a Nancy.Lin 2025-01-10 101 {
f3e6b1244e7c0a Nancy.Lin 2025-01-10 102 struct mtk_disp_outproc *priv = dev_get_drvdata(dev);
f3e6b1244e7c0a Nancy.Lin 2025-01-10 103
d5581be4f939c5 Jason-jh Lin 2025-10-31 104 writel(OVL_OUTPROC_FME_CPL_INTEN | OVL_OUTPROC_FME_UND_INTEN,
d5581be4f939c5 Jason-jh Lin 2025-10-31 105 priv->regs + DISP_REG_OVL_OUTPROC_INTEN);
f3e6b1244e7c0a Nancy.Lin 2025-01-10 106 }
f3e6b1244e7c0a Nancy.Lin 2025-01-10 107
f3e6b1244e7c0a Nancy.Lin 2025-01-10 @108 void mtk_disp_outproc_disable_vblank(struct device *dev)
f3e6b1244e7c0a Nancy.Lin 2025-01-10 109 {
f3e6b1244e7c0a Nancy.Lin 2025-01-10 110 struct mtk_disp_outproc *priv = dev_get_drvdata(dev);
f3e6b1244e7c0a Nancy.Lin 2025-01-10 111
f3e6b1244e7c0a Nancy.Lin 2025-01-10 112 writel(0x0, priv->regs + DISP_REG_OVL_OUTPROC_INTEN);
f3e6b1244e7c0a Nancy.Lin 2025-01-10 113 }
f3e6b1244e7c0a Nancy.Lin 2025-01-10 114
f3e6b1244e7c0a Nancy.Lin 2025-01-10 115 static irqreturn_t mtk_disp_outproc_irq_handler(int irq, void *dev_id)
f3e6b1244e7c0a Nancy.Lin 2025-01-10 116 {
f3e6b1244e7c0a Nancy.Lin 2025-01-10 117 struct mtk_disp_outproc *priv = dev_id;
f3e6b1244e7c0a Nancy.Lin 2025-01-10 118 u32 val;
f3e6b1244e7c0a Nancy.Lin 2025-01-10 119
f3e6b1244e7c0a Nancy.Lin 2025-01-10 120 val = readl(priv->regs + DISP_REG_OVL_OUTPROC_INTSTA);
f3e6b1244e7c0a Nancy.Lin 2025-01-10 121 if (!val)
f3e6b1244e7c0a Nancy.Lin 2025-01-10 122 return IRQ_NONE;
f3e6b1244e7c0a Nancy.Lin 2025-01-10 123
f3e6b1244e7c0a Nancy.Lin 2025-01-10 124 writel(0x0, priv->regs + DISP_REG_OVL_OUTPROC_INTSTA);
f3e6b1244e7c0a Nancy.Lin 2025-01-10 125
f3e6b1244e7c0a Nancy.Lin 2025-01-10 126 if (priv->vblank_cb)
f3e6b1244e7c0a Nancy.Lin 2025-01-10 127 priv->vblank_cb(priv->vblank_cb_data);
f3e6b1244e7c0a Nancy.Lin 2025-01-10 128
d5581be4f939c5 Jason-jh Lin 2025-10-31 129 if (val & OVL_OUTPROC_FME_CPL_INTEN)
d5581be4f939c5 Jason-jh Lin 2025-10-31 130 DRM_DEV_DEBUG_DRIVER(priv->dev, "frame complete!\n");
d5581be4f939c5 Jason-jh Lin 2025-10-31 131 if (val & OVL_OUTPROC_FME_UND_INTEN)
d5581be4f939c5 Jason-jh Lin 2025-10-31 132 dev_err(priv->dev, "frame underflow!\n");
d5581be4f939c5 Jason-jh Lin 2025-10-31 133
f3e6b1244e7c0a Nancy.Lin 2025-01-10 134 return IRQ_HANDLED;
f3e6b1244e7c0a Nancy.Lin 2025-01-10 135 }
f3e6b1244e7c0a Nancy.Lin 2025-01-10 136
f3e6b1244e7c0a Nancy.Lin 2025-01-10 @137 void mtk_disp_outproc_config(struct device *dev, unsigned int w,
f3e6b1244e7c0a Nancy.Lin 2025-01-10 138 unsigned int h, unsigned int vrefresh,
f3e6b1244e7c0a Nancy.Lin 2025-01-10 139 unsigned int bpc, struct cmdq_pkt *cmdq_pkt)
f3e6b1244e7c0a Nancy.Lin 2025-01-10 140 {
f3e6b1244e7c0a Nancy.Lin 2025-01-10 141 struct mtk_disp_outproc *priv = dev_get_drvdata(dev);
f3e6b1244e7c0a Nancy.Lin 2025-01-10 142 unsigned int tmp;
f3e6b1244e7c0a Nancy.Lin 2025-01-10 143
f3e6b1244e7c0a Nancy.Lin 2025-01-10 144 dev_dbg(dev, "%s-w:%d, h:%d\n", __func__, w, h);
f3e6b1244e7c0a Nancy.Lin 2025-01-10 145
f3e6b1244e7c0a Nancy.Lin 2025-01-10 146 tmp = readl(priv->regs + DISP_REG_OVL_OUTPROC_SHADOW_CTRL);
f3e6b1244e7c0a Nancy.Lin 2025-01-10 147 tmp = tmp | OVL_OUTPROC_BYPASS_SHADOW;
f3e6b1244e7c0a Nancy.Lin 2025-01-10 148 writel(tmp, priv->regs + DISP_REG_OVL_OUTPROC_SHADOW_CTRL);
f3e6b1244e7c0a Nancy.Lin 2025-01-10 149
f3e6b1244e7c0a Nancy.Lin 2025-01-10 150 mtk_ddp_write_mask(cmdq_pkt, h << 16 | w, &priv->cmdq_reg, priv->regs,
f3e6b1244e7c0a Nancy.Lin 2025-01-10 151 DISP_REG_OVL_OUTPROC_ROI_SIZE, ~0);
f3e6b1244e7c0a Nancy.Lin 2025-01-10 152 mtk_ddp_write_mask(cmdq_pkt, DATAPATH_CON_OUTPUT_CLAMP, &priv->cmdq_reg, priv->regs,
f3e6b1244e7c0a Nancy.Lin 2025-01-10 153 DISP_REG_OVL_OUTPROC_DATAPATH_CON, DATAPATH_CON_OUTPUT_CLAMP);
f3e6b1244e7c0a Nancy.Lin 2025-01-10 154 }
f3e6b1244e7c0a Nancy.Lin 2025-01-10 155
f3e6b1244e7c0a Nancy.Lin 2025-01-10 @156 void mtk_disp_outproc_start(struct device *dev)
f3e6b1244e7c0a Nancy.Lin 2025-01-10 157 {
f3e6b1244e7c0a Nancy.Lin 2025-01-10 158 struct mtk_disp_outproc *priv = dev_get_drvdata(dev);
b7c8e781f020aa Sunny.Shen 2024-09-11 159 unsigned int crc_mode_en = OVL_OUTPROC_HG_FOVL_CK_ON |
b7c8e781f020aa Sunny.Shen 2024-09-11 160 OVL_OUTPROC_HF_FOVL_CK_ON |
b7c8e781f020aa Sunny.Shen 2024-09-11 161 OVL_OUTPROC_OP_8BIT_MODE;
f3e6b1244e7c0a Nancy.Lin 2025-01-10 162
f3e6b1244e7c0a Nancy.Lin 2025-01-10 163 mtk_ddp_write_mask(NULL, OVL_OUTPROC_RST, &priv->cmdq_reg, priv->regs,
f3e6b1244e7c0a Nancy.Lin 2025-01-10 164 DISP_REG_OVL_OUTPROC_RST, OVL_OUTPROC_RST);
f3e6b1244e7c0a Nancy.Lin 2025-01-10 165 mtk_ddp_write_mask(NULL, 0, &priv->cmdq_reg, priv->regs,
f3e6b1244e7c0a Nancy.Lin 2025-01-10 166 DISP_REG_OVL_OUTPROC_RST, OVL_OUTPROC_RST);
f3e6b1244e7c0a Nancy.Lin 2025-01-10 167 mtk_ddp_write(NULL, 0, &priv->cmdq_reg, priv->regs,
f3e6b1244e7c0a Nancy.Lin 2025-01-10 168 DISP_REG_OVL_OUTPROC_INTSTA);
f3e6b1244e7c0a Nancy.Lin 2025-01-10 169 mtk_ddp_write_mask(NULL, OVL_OUTPROC_OVL_EN, &priv->cmdq_reg, priv->regs,
f3e6b1244e7c0a Nancy.Lin 2025-01-10 170 DISP_REG_OVL_OUTPROC_EN, OVL_OUTPROC_OVL_EN);
b7c8e781f020aa Sunny.Shen 2024-09-11 171
b7c8e781f020aa Sunny.Shen 2024-09-11 172 if (priv->crc.cnt) {
b7c8e781f020aa Sunny.Shen 2024-09-11 173 mtk_ddp_write_mask(NULL, crc_mode_en, &priv->cmdq_reg, priv->regs,
b7c8e781f020aa Sunny.Shen 2024-09-11 174 DISP_REG_OVL_OUTPROC_MODE, crc_mode_en);
b7c8e781f020aa Sunny.Shen 2024-09-11 175 mtk_ddp_write(NULL, OVL_OUTPROC_CRC_EN, &priv->cmdq_reg, priv->regs,
b7c8e781f020aa Sunny.Shen 2024-09-11 176 DISP_REG_OVL_OUTPROC_TRIG);
b7c8e781f020aa Sunny.Shen 2024-09-11 177
b7c8e781f020aa Sunny.Shen 2024-09-11 178 #if IS_REACHABLE(CONFIG_MTK_CMDQ)
b7c8e781f020aa Sunny.Shen 2024-09-11 179 mtk_crtc_start_crc_cmdq(&priv->crc);
b7c8e781f020aa Sunny.Shen 2024-09-11 180 #endif
b7c8e781f020aa Sunny.Shen 2024-09-11 181 }
f3e6b1244e7c0a Nancy.Lin 2025-01-10 182 }
f3e6b1244e7c0a Nancy.Lin 2025-01-10 183
f3e6b1244e7c0a Nancy.Lin 2025-01-10 @184 void mtk_disp_outproc_stop(struct device *dev)
f3e6b1244e7c0a Nancy.Lin 2025-01-10 185 {
f3e6b1244e7c0a Nancy.Lin 2025-01-10 186 struct mtk_disp_outproc *priv = dev_get_drvdata(dev);
b7c8e781f020aa Sunny.Shen 2024-09-11 187 unsigned int crc_mode_en = OVL_OUTPROC_HG_FOVL_CK_ON |
b7c8e781f020aa Sunny.Shen 2024-09-11 188 OVL_OUTPROC_HF_FOVL_CK_ON |
b7c8e781f020aa Sunny.Shen 2024-09-11 189 OVL_OUTPROC_OP_8BIT_MODE;
b7c8e781f020aa Sunny.Shen 2024-09-11 190
b7c8e781f020aa Sunny.Shen 2024-09-11 191 mtk_ddp_write(NULL, 0, &priv->cmdq_reg, priv->regs,
b7c8e781f020aa Sunny.Shen 2024-09-11 192 DISP_REG_OVL_OUTPROC_TRIG);
b7c8e781f020aa Sunny.Shen 2024-09-11 193 mtk_ddp_write_mask(NULL, 0, &priv->cmdq_reg, priv->regs,
b7c8e781f020aa Sunny.Shen 2024-09-11 194 DISP_REG_OVL_OUTPROC_MODE, crc_mode_en);
f3e6b1244e7c0a Nancy.Lin 2025-01-10 195
f3e6b1244e7c0a Nancy.Lin 2025-01-10 196 mtk_ddp_write(NULL, 0, &priv->cmdq_reg, priv->regs,
f3e6b1244e7c0a Nancy.Lin 2025-01-10 197 DISP_REG_OVL_OUTPROC_INTEN);
f3e6b1244e7c0a Nancy.Lin 2025-01-10 198 mtk_ddp_write_mask(NULL, 0, &priv->cmdq_reg, priv->regs,
f3e6b1244e7c0a Nancy.Lin 2025-01-10 199 DISP_REG_OVL_OUTPROC_EN, OVL_OUTPROC_OVL_EN);
b7c8e781f020aa Sunny.Shen 2024-09-11 200
b7c8e781f020aa Sunny.Shen 2024-09-11 201 #if IS_REACHABLE(CONFIG_MTK_CMDQ)
b7c8e781f020aa Sunny.Shen 2024-09-11 202 if (priv->crc.cnt)
b7c8e781f020aa Sunny.Shen 2024-09-11 203 mtk_crtc_stop_crc_cmdq(&priv->crc);
b7c8e781f020aa Sunny.Shen 2024-09-11 204 #endif
f3e6b1244e7c0a Nancy.Lin 2025-01-10 205 }
f3e6b1244e7c0a Nancy.Lin 2025-01-10 206
31d89b3b35a1b3 xiandong.wang 2025-11-24 @207 void mtk_disp_outproc_crc_reset(struct device *dev, struct cmdq_pkt *cmdq_pkt)
31d89b3b35a1b3 xiandong.wang 2025-11-24 208 {
31d89b3b35a1b3 xiandong.wang 2025-11-24 209 struct mtk_disp_outproc *priv = dev_get_drvdata(dev);
31d89b3b35a1b3 xiandong.wang 2025-11-24 210 struct mtk_crtc_crc *crc = &priv->crc;
31d89b3b35a1b3 xiandong.wang 2025-11-24 211
31d89b3b35a1b3 xiandong.wang 2025-11-24 212 /* reset crc */
31d89b3b35a1b3 xiandong.wang 2025-11-24 213 mtk_ddp_write_mask(cmdq_pkt, OVL_OUTPROC_CRC_CLR, &priv->cmdq_reg, priv->regs,
31d89b3b35a1b3 xiandong.wang 2025-11-24 214 crc->rst_ofs, crc->rst_msk);
31d89b3b35a1b3 xiandong.wang 2025-11-24 215
31d89b3b35a1b3 xiandong.wang 2025-11-24 216 /* clear reset bit */
31d89b3b35a1b3 xiandong.wang 2025-11-24 217 mtk_ddp_write_mask(cmdq_pkt, 0, &priv->cmdq_reg, priv->regs,
31d89b3b35a1b3 xiandong.wang 2025-11-24 218 crc->rst_ofs, crc->rst_msk);
31d89b3b35a1b3 xiandong.wang 2025-11-24 219 }
31d89b3b35a1b3 xiandong.wang 2025-11-24 220
31d89b3b35a1b3 xiandong.wang 2025-11-24 @221 void mtk_disp_outproc_crc_attach(struct device *dev, struct mtk_crtc *data)
31d89b3b35a1b3 xiandong.wang 2025-11-24 222 {
31d89b3b35a1b3 xiandong.wang 2025-11-24 223 struct mtk_disp_outproc *priv = dev_get_drvdata(dev);
31d89b3b35a1b3 xiandong.wang 2025-11-24 224
31d89b3b35a1b3 xiandong.wang 2025-11-24 225 mtk_crtc_create_crc_cmdq(&priv->crc, data);
31d89b3b35a1b3 xiandong.wang 2025-11-24 226 }
31d89b3b35a1b3 xiandong.wang 2025-11-24 227
31d89b3b35a1b3 xiandong.wang 2025-11-24 @228 void mtk_disp_outproc_crc_detach(struct device *dev)
31d89b3b35a1b3 xiandong.wang 2025-11-24 229 {
31d89b3b35a1b3 xiandong.wang 2025-11-24 230 struct mtk_disp_outproc *priv = dev_get_drvdata(dev);
31d89b3b35a1b3 xiandong.wang 2025-11-24 231
31d89b3b35a1b3 xiandong.wang 2025-11-24 232 mtk_crtc_destroy_crc_cmdq(&priv->crc);
31d89b3b35a1b3 xiandong.wang 2025-11-24 233 }
31d89b3b35a1b3 xiandong.wang 2025-11-24 234
f3e6b1244e7c0a Nancy.Lin 2025-01-10 @235 int mtk_disp_outproc_clk_enable(struct device *dev)
f3e6b1244e7c0a Nancy.Lin 2025-01-10 236 {
f3e6b1244e7c0a Nancy.Lin 2025-01-10 237 struct mtk_disp_outproc *priv = dev_get_drvdata(dev);
f3e6b1244e7c0a Nancy.Lin 2025-01-10 238
f3e6b1244e7c0a Nancy.Lin 2025-01-10 239 return clk_prepare_enable(priv->clk);
f3e6b1244e7c0a Nancy.Lin 2025-01-10 240 }
f3e6b1244e7c0a Nancy.Lin 2025-01-10 241
f3e6b1244e7c0a Nancy.Lin 2025-01-10 @242 void mtk_disp_outproc_clk_disable(struct device *dev)
f3e6b1244e7c0a Nancy.Lin 2025-01-10 243 {
f3e6b1244e7c0a Nancy.Lin 2025-01-10 244 struct mtk_disp_outproc *priv = dev_get_drvdata(dev);
f3e6b1244e7c0a Nancy.Lin 2025-01-10 245
f3e6b1244e7c0a Nancy.Lin 2025-01-10 246 clk_disable_unprepare(priv->clk);
f3e6b1244e7c0a Nancy.Lin 2025-01-10 247 }
f3e6b1244e7c0a Nancy.Lin 2025-01-10 248
:::::: The code at line 61 was first introduced by commit
:::::: b7c8e781f020aabd1461232257632f4c04ba97ca CHROMIUM: drm/mediatek: Add CRC support for MT8196
:::::: TO: Sunny.Shen <sunny.shen@mediatek.corp-partner.google.com>
:::::: CC: Chromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
reply other threads:[~2025-12-09 1:31 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202512090902.2tc2BsdI-lkp@intel.com \
--to=lkp@intel.com \
--cc=cros-kernel-buildreports@googlegroups.com \
--cc=oe-kbuild-all@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.