Skip to content

Commit dd4f373

Browse files
Roy-CW.Yehmbgg
authored andcommitted
soc: mediatek: mmsys: add config api for RSZ switching and DCM
Due to MT8195 HW design, some RSZs have additional settings that need to be configured in MMSYS. Signed-off-by: Roy-CW.Yeh <roy-cw.yeh@mediatek.com> Signed-off-by: Moudy Ho <moudy.ho@mediatek.com> Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> Change-Id: I41978bf14951221c88abbe70d8c24cb0770e11e3 Link: https://lore.kernel.org/r/20230206091109.1324-5-moudy.ho@mediatek.com Signed-off-by: Matthias Brugger <matthias.bgg@gmail.com>
1 parent 7ceff25 commit dd4f373

3 files changed

Lines changed: 63 additions & 0 deletions

File tree

drivers/soc/mediatek/mt8195-mmsys.h

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,19 @@
146146
#define MT8195_VDO1_MIXER_SOUT_SEL_IN 0xf68
147147
#define MT8195_MIXER_SOUT_SEL_IN_FROM_DISP_MIXER 0
148148

149+
/* VPPSYS1 */
150+
#define MT8195_VPP1_HW_DCM_1ST_DIS0 0x150
151+
#define MT8195_VPP1_HW_DCM_1ST_DIS1 0x160
152+
#define MT8195_VPP1_HW_DCM_2ND_DIS0 0x1a0
153+
#define MT8195_VPP1_HW_DCM_2ND_DIS1 0x1b0
154+
#define MT8195_SVPP2_BUF_BF_RSZ_SWITCH 0xf48
155+
#define MT8195_SVPP3_BUF_BF_RSZ_SWITCH 0xf74
156+
157+
/* VPPSYS1 HW DCM client*/
158+
#define MT8195_SVPP1_MDP_RSZ BIT(25)
159+
#define MT8195_SVPP2_MDP_RSZ BIT(4)
160+
#define MT8195_SVPP3_MDP_RSZ BIT(5)
161+
149162
static const struct mtk_mmsys_routes mmsys_mt8195_routing_table[] = {
150163
{
151164
DDP_COMPONENT_OVL0, DDP_COMPONENT_RDMA0,

drivers/soc/mediatek/mtk-mmsys.c

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,50 @@ void mtk_mmsys_ddp_dpi_fmt_config(struct device *dev, u32 val)
242242
}
243243
EXPORT_SYMBOL_GPL(mtk_mmsys_ddp_dpi_fmt_config);
244244

245+
void mtk_mmsys_vpp_rsz_merge_config(struct device *dev, u32 id, bool enable,
246+
struct cmdq_pkt *cmdq_pkt)
247+
{
248+
u32 reg;
249+
250+
switch (id) {
251+
case 2:
252+
reg = MT8195_SVPP2_BUF_BF_RSZ_SWITCH;
253+
break;
254+
case 3:
255+
reg = MT8195_SVPP3_BUF_BF_RSZ_SWITCH;
256+
break;
257+
default:
258+
dev_err(dev, "Invalid id %d\n", id);
259+
return;
260+
}
261+
262+
mtk_mmsys_update_bits(dev_get_drvdata(dev), reg, ~0, enable, cmdq_pkt);
263+
}
264+
EXPORT_SYMBOL_GPL(mtk_mmsys_vpp_rsz_merge_config);
265+
266+
void mtk_mmsys_vpp_rsz_dcm_config(struct device *dev, bool enable,
267+
struct cmdq_pkt *cmdq_pkt)
268+
{
269+
u32 client;
270+
271+
client = MT8195_SVPP1_MDP_RSZ;
272+
mtk_mmsys_update_bits(dev_get_drvdata(dev),
273+
MT8195_VPP1_HW_DCM_1ST_DIS0, client,
274+
((enable) ? client : 0), cmdq_pkt);
275+
mtk_mmsys_update_bits(dev_get_drvdata(dev),
276+
MT8195_VPP1_HW_DCM_2ND_DIS0, client,
277+
((enable) ? client : 0), cmdq_pkt);
278+
279+
client = MT8195_SVPP2_MDP_RSZ | MT8195_SVPP3_MDP_RSZ;
280+
mtk_mmsys_update_bits(dev_get_drvdata(dev),
281+
MT8195_VPP1_HW_DCM_1ST_DIS1, client,
282+
((enable) ? client : 0), cmdq_pkt);
283+
mtk_mmsys_update_bits(dev_get_drvdata(dev),
284+
MT8195_VPP1_HW_DCM_2ND_DIS1, client,
285+
((enable) ? client : 0), cmdq_pkt);
286+
}
287+
EXPORT_SYMBOL_GPL(mtk_mmsys_vpp_rsz_dcm_config);
288+
245289
static int mtk_mmsys_reset_update(struct reset_controller_dev *rcdev, unsigned long id,
246290
bool assert)
247291
{

include/linux/soc/mediatek/mtk-mmsys.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,4 +99,10 @@ void mtk_mmsys_mixer_in_config(struct device *dev, int idx, bool alpha_sel, u16
9999
void mtk_mmsys_mixer_in_channel_swap(struct device *dev, int idx, bool channel_swap,
100100
struct cmdq_pkt *cmdq_pkt);
101101

102+
void mtk_mmsys_vpp_rsz_merge_config(struct device *dev, u32 id, bool enable,
103+
struct cmdq_pkt *cmdq_pkt);
104+
105+
void mtk_mmsys_vpp_rsz_dcm_config(struct device *dev, bool enable,
106+
struct cmdq_pkt *cmdq_pkt);
107+
102108
#endif /* __MTK_MMSYS_H */

0 commit comments

Comments
 (0)