mirror of
https://github.com/torvalds/linux.git
synced 2026-07-28 01:55:51 +02:00
MediaTek SoC driver updates
This adds subsys ID compatibility in MediaTek CMDQ, paving the way for adding support for the MT8196 SoC, and fixes the Multimedia System (MMSYS) routing masks for the MT8167 SoC. -----BEGIN PGP SIGNATURE----- iLoEABYKAGIWIQQn3Xxr56ypAcSHzXSaNgTPrZeEeAUCahVx0RsUgAAAAAAEAA5t YW51MiwyLjUrMS4xMiwyLDIoHGFuZ2Vsb2dpb2FjY2hpbm8uZGVscmVnbm9AY29s bGFib3JhLmNvbQAKCRCaNgTPrZeEePMUAQCjH13K5gKhUjgk/NgaRijJyvaSVZKA aKWzxZG4RlCZwgEAqJQlroFFduMT2O4849BENENaHFg1gXiiY4kruvvNigg= =Xuda -----END PGP SIGNATURE----- Merge tag 'mtk-soc-for-v7.2' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/mediatek/linux into soc/drivers MediaTek SoC driver updates This adds subsys ID compatibility in MediaTek CMDQ, paving the way for adding support for the MT8196 SoC, and fixes the Multimedia System (MMSYS) routing masks for the MT8167 SoC. * tag 'mtk-soc-for-v7.2' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/mediatek/linux: soc: mediatek: mtk-mmsys: Restore MT8167 routing masks lost during merge soc: mediatek: mtk-cmdq: Add cmdq_pkt_jump_rel_temp() for removing shift_pa soc: mediatek: Use pkt_write function pointer for subsys ID compatibility Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
This commit is contained in:
commit
adbd66a8f7
|
|
@ -10,24 +10,29 @@
|
|||
#define MT8167_DISP_REG_CONFIG_DISP_RDMA0_SOUT_SEL_IN 0x06c
|
||||
|
||||
#define MT8167_DITHER_MOUT_EN_RDMA0 0x1
|
||||
#define MT8167_DITHER_MOUT_EN_MASK 0x7
|
||||
|
||||
#define MT8167_RDMA0_SOUT_DSI0 0x2
|
||||
#define MT8167_RDMA0_SOUT_MASK 0x3
|
||||
|
||||
#define MT8167_DSI0_SEL_IN_RDMA0 0x1
|
||||
#define MT8167_DSI0_SEL_IN_MASK 0x3
|
||||
|
||||
static const struct mtk_mmsys_routes mt8167_mmsys_routing_table[] = {
|
||||
MMSYS_ROUTE(OVL0, COLOR0,
|
||||
MT8167_DISP_REG_CONFIG_DISP_OVL0_MOUT_EN, OVL0_MOUT_EN_COLOR0,
|
||||
OVL0_MOUT_EN_COLOR0),
|
||||
MMSYS_ROUTE(DITHER0, RDMA0,
|
||||
MT8167_DISP_REG_CONFIG_DISP_DITHER_MOUT_EN, MT8167_DITHER_MOUT_EN_RDMA0,
|
||||
MT8167_DISP_REG_CONFIG_DISP_DITHER_MOUT_EN, MT8167_DITHER_MOUT_EN_MASK,
|
||||
MT8167_DITHER_MOUT_EN_RDMA0),
|
||||
MMSYS_ROUTE(OVL0, COLOR0,
|
||||
MT8167_DISP_REG_CONFIG_DISP_COLOR0_SEL_IN, COLOR0_SEL_IN_OVL0,
|
||||
COLOR0_SEL_IN_OVL0),
|
||||
MMSYS_ROUTE(RDMA0, DSI0,
|
||||
MT8167_DISP_REG_CONFIG_DISP_DSI0_SEL_IN, MT8167_DSI0_SEL_IN_RDMA0,
|
||||
MT8167_DISP_REG_CONFIG_DISP_DSI0_SEL_IN, MT8167_DSI0_SEL_IN_MASK,
|
||||
MT8167_DSI0_SEL_IN_RDMA0),
|
||||
MMSYS_ROUTE(RDMA0, DSI0,
|
||||
MT8167_DISP_REG_CONFIG_DISP_RDMA0_SOUT_SEL_IN, MT8167_RDMA0_SOUT_DSI0,
|
||||
MT8167_DISP_REG_CONFIG_DISP_RDMA0_SOUT_SEL_IN, MT8167_RDMA0_SOUT_MASK,
|
||||
MT8167_RDMA0_SOUT_DSI0),
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -167,9 +167,11 @@ static void mtk_mmsys_update_bits(struct mtk_mmsys *mmsys, u32 offset, u32 mask,
|
|||
u32 tmp;
|
||||
|
||||
if (mmsys->cmdq_base.size && cmdq_pkt) {
|
||||
ret = cmdq_pkt_write_mask(cmdq_pkt, mmsys->cmdq_base.subsys,
|
||||
mmsys->cmdq_base.offset + offset, val,
|
||||
mask);
|
||||
ret = mmsys->cmdq_base.pkt_write_mask(cmdq_pkt,
|
||||
mmsys->cmdq_base.subsys,
|
||||
mmsys->cmdq_base.pa_base,
|
||||
mmsys->cmdq_base.offset + offset,
|
||||
val, mask);
|
||||
if (ret)
|
||||
pr_debug("CMDQ unavailable: using CPU write\n");
|
||||
else
|
||||
|
|
|
|||
|
|
@ -990,6 +990,7 @@ int mtk_mutex_enable_by_cmdq(struct mtk_mutex *mutex, void *pkt)
|
|||
struct mtk_mutex_ctx *mtx = container_of(mutex, struct mtk_mutex_ctx,
|
||||
mutex[mutex->id]);
|
||||
struct cmdq_pkt *cmdq_pkt = (struct cmdq_pkt *)pkt;
|
||||
dma_addr_t en_addr = mtx->addr + DISP_REG_MUTEX_EN(mutex->id);
|
||||
|
||||
WARN_ON(&mtx->mutex[mutex->id] != mutex);
|
||||
|
||||
|
|
@ -998,8 +999,8 @@ int mtk_mutex_enable_by_cmdq(struct mtk_mutex *mutex, void *pkt)
|
|||
return -ENODEV;
|
||||
}
|
||||
|
||||
cmdq_pkt_write(cmdq_pkt, mtx->cmdq_reg.subsys,
|
||||
mtx->addr + DISP_REG_MUTEX_EN(mutex->id), 1);
|
||||
mtx->cmdq_reg.pkt_write(cmdq_pkt, mtx->cmdq_reg.subsys, en_addr, en_addr, 1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mtk_mutex_enable_by_cmdq);
|
||||
|
|
|
|||
|
|
@ -445,6 +445,24 @@ static inline int cmdq_pkt_jump(struct cmdq_pkt *pkt, dma_addr_t addr, u8 shift_
|
|||
*/
|
||||
int cmdq_pkt_jump_rel(struct cmdq_pkt *pkt, s32 offset, u8 shift_pa);
|
||||
|
||||
/**
|
||||
* cmdq_pkt_jump_rel_temp() - Temporary wrapper for new CMDQ helper API
|
||||
* @pkt: the CMDQ packet
|
||||
* @offset: relative offset of target instruction buffer from current PC.
|
||||
* @shift_pa: [DEPRECATED] shift bits of physical address in CMDQ instruction.
|
||||
* This value is got by cmdq_get_shift_pa().
|
||||
*
|
||||
* This function is a temporary wrapper that was introduced only for ease of
|
||||
* migration of the many users of the CMDQ API located in multiple kernel
|
||||
* subsystems.
|
||||
*
|
||||
* This has to be removed after all users are migrated to the newer CMDQ API.
|
||||
*/
|
||||
static inline int cmdq_pkt_jump_rel_temp(struct cmdq_pkt *pkt, s32 offset, u8 shift_pa)
|
||||
{
|
||||
return cmdq_pkt_jump_rel(pkt, offset, shift_pa);
|
||||
}
|
||||
|
||||
/**
|
||||
* cmdq_pkt_eoc() - Append EOC and ask GCE to generate an IRQ at end of execution
|
||||
* @pkt: The CMDQ packet
|
||||
|
|
@ -599,6 +617,12 @@ static inline int cmdq_pkt_jump_rel(struct cmdq_pkt *pkt, s32 offset, u8 shift_p
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
/* This wrapper has to be removed after all users migrated to jump_rel */
|
||||
static inline int cmdq_pkt_jump_rel_temp(struct cmdq_pkt *pkt, s32 offset, u8 shift_pa)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static inline int cmdq_pkt_eoc(struct cmdq_pkt *pkt)
|
||||
{
|
||||
return -EINVAL;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user