From: "CK Hu (胡俊光)" <ck.hu@mediatek.com>
To: "robh@kernel.org" <robh@kernel.org>,
"mchehab@kernel.org" <mchehab@kernel.org>,
"krzk+dt@kernel.org" <krzk+dt@kernel.org>,
"Bo Kong (孔波)" <Bo.Kong@mediatek.com>
Cc: "linux-media@vger.kernel.org" <linux-media@vger.kernel.org>,
Project_Global_Chrome_Upstream_Group
<Project_Global_Chrome_Upstream_Group@mediatek.com>,
"AngeloGioacchino Del Regno"
<angelogioacchino.delregno@collabora.com>,
"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
"conor+dt@kernel.org" <conor+dt@kernel.org>,
"linux-mediatek@lists.infradead.org"
<linux-mediatek@lists.infradead.org>,
"matthias.bgg@gmail.com" <matthias.bgg@gmail.com>
Subject: Re: [PATCH v3 3/4] media: mediatek: add MT8188 AIE driver
Date: Thu, 26 Dec 2024 03:53:57 +0000 [thread overview]
Message-ID: <95345df12095e976fedfcfcc6aac77f5d6a2d2b8.camel@mediatek.com> (raw)
In-Reply-To: <20241225090113.17027-4-bo.kong@mediatek.com>
On Wed, 2024-12-25 at 17:00 +0800, bo.kong wrote:
> From: Bo Kong <Bo.Kong@mediatek.com>
>
> Add a V4L2 sub-device driver for MT8188 AIE.
>
> Signed-off-by: Bo Kong <Bo.Kong@mediatek.com>
> ---
[snip]
> +#define FLD_PL_IN_BASE_ADDR_0_0 0x550
> +#define FLD_PL_IN_BASE_ADDR_0_1 0x554
> +#define FLD_PL_IN_BASE_ADDR_0_2 0x558
> +#define FLD_PL_IN_BASE_ADDR_0_3 0x55C
> +#define FLD_PL_IN_BASE_ADDR_0_4 0x560
> +#define FLD_PL_IN_BASE_ADDR_0_5 0x564
> +#define FLD_PL_IN_BASE_ADDR_0_6 0x568
> +#define FLD_PL_IN_BASE_ADDR_0_7 0x56C
> +#define FLD_PL_IN_BASE_ADDR_0_8 0x570
> +#define FLD_PL_IN_BASE_ADDR_0_9 0x574
> +#define FLD_PL_IN_BASE_ADDR_0_10 0x578
> +#define FLD_PL_IN_BASE_ADDR_0_11 0x57C
> +#define FLD_PL_IN_BASE_ADDR_0_12 0x580
> +#define FLD_PL_IN_BASE_ADDR_0_13 0x584
> +#define FLD_PL_IN_BASE_ADDR_0_14 0x588
> +#define FLD_PL_IN_BASE_ADDR_0_15 0x58C
> +#define FLD_PL_IN_BASE_ADDR_0_16 0x590
> +#define FLD_PL_IN_BASE_ADDR_0_17 0x594
> +#define FLD_PL_IN_BASE_ADDR_0_18 0x598
> +#define FLD_PL_IN_BASE_ADDR_0_19 0x59C
> +#define FLD_PL_IN_BASE_ADDR_0_20 0x5A0
> +#define FLD_PL_IN_BASE_ADDR_0_21 0x5A4
> +#define FLD_PL_IN_BASE_ADDR_0_22 0x5A8
> +#define FLD_PL_IN_BASE_ADDR_0_23 0x5AC
> +#define FLD_PL_IN_BASE_ADDR_0_24 0x5B0
> +#define FLD_PL_IN_BASE_ADDR_0_25 0x5B4
> +#define FLD_PL_IN_BASE_ADDR_0_26 0x5B8
> +#define FLD_PL_IN_BASE_ADDR_0_27 0x5BC
> +#define FLD_PL_IN_BASE_ADDR_0_28 0x5C0
> +#define FLD_PL_IN_BASE_ADDR_0_29 0x5C4
> +
[snip]
> +void aie_execute(struct mtk_aie_dev *fd, struct aie_enq_info *aie_cfg)
> +{
> + unsigned int loop_num = 0;
> + unsigned int loop_reg_val = 0;
> + unsigned int i = 0;
> +
> + if (aie_cfg->sel_mode == FDMODE) {
> + writel(0x0, fd->fd_base + AIE_START_REG);
> + writel(0x00000111, fd->fd_base + AIE_ENABLE_REG);
> + loop_num = FD_LOOP_NUM / 3 * (aie_cfg->number_of_pyramid);
> + loop_reg_val = (loop_num << 8) |
> + (aie_cfg->number_of_pyramid - 1);
> + writel(loop_reg_val, fd->fd_base + AIE_LOOP_REG);
> + writel(0x1, fd->fd_base + AIE_INT_EN_REG);
> + writel(fd->reg_cfg.rs_adr,
> + fd->fd_base + AIE_RS_CON_BASE_ADR_REG);
> + writel(fd->reg_cfg.fd_adr,
> + fd->fd_base + AIE_FD_CON_BASE_ADR_REG);
> + writel(fd->reg_cfg.yuv2rgb_adr,
> + fd->fd_base + AIE_YUV2RGB_CON_BASE_ADR_REG);
> +
> + if (fd->variant->hw_version == 31) {
> + writel(0x00000002,
> + fd->fd_base + AIE_YUV2RGB_CON_BASE_ADR_MSB);
> + writel(0x00000002,
> + fd->fd_base + AIE_RS_CON_BASE_ADR_MSB);
> + writel(0x00000002,
> + fd->fd_base + AIE_FD_CON_BASE_ADR_MSB);
> + }
> +
> + writel(0x1, fd->fd_base + AIE_START_REG);
> + } else if (aie_cfg->sel_mode == ATTRIBUTEMODE) {
> + writel(0x0, fd->fd_base + AIE_START_REG);
> + writel(0x00000101, fd->fd_base + AIE_ENABLE_REG);
> + writel(0x00001A00, fd->fd_base + AIE_LOOP_REG);
> + writel(0x1, fd->fd_base + AIE_INT_EN_REG);
> + writel(fd->reg_cfg.rs_adr,
> + fd->fd_base + AIE_RS_CON_BASE_ADR_REG);
> + writel(fd->reg_cfg.fd_adr,
> + fd->fd_base + AIE_FD_CON_BASE_ADR_REG);
> + writel(fd->reg_cfg.yuv2rgb_adr,
> + fd->fd_base + AIE_YUV2RGB_CON_BASE_ADR_REG);
> +
> + if (fd->variant->hw_version == 31) {
> + writel(0x00000002,
> + fd->fd_base + AIE_YUV2RGB_CON_BASE_ADR_MSB);
> + writel(0x00000002,
> + fd->fd_base + AIE_RS_CON_BASE_ADR_MSB);
> + writel(0x00000002,
> + fd->fd_base + AIE_FD_CON_BASE_ADR_MSB);
> + }
> +
> + writel(0x1, fd->fd_base + AIE_START_REG);
> + } else if (aie_cfg->sel_mode == FLDMODE) {
> + if (fd->variant->fld_enable) {
> + writel(0x10, fd->fd_base + AIE_START_REG);
> + writel(0x00011111, fd->fd_base + AIE_DMA_CTL_REG);
> + writel(0x01111111, fd->fd_base + FLD_EN);
> + writel(0x1, fd->fd_base + AIE_INT_EN_REG);
> + for (i = 0; i < aie_cfg->fld_face_num; i++) {
> + writel(aie_cfg->src_img_addr,
> + fd->fd_base + FLD_BASE_ADDR_FACE_0 +
> + i * 0x4);
> + writel(aie_cfg->fld_input[i].fld_in_crop_x1
> + << 16 |
> + aie_cfg->fld_input[i]
> + .fld_in_crop_y1,
> + fd->fd_base + fld_face_info_0[i]);
> + writel(aie_cfg->fld_input[i].fld_in_crop_x2
> + << 16 |
> + aie_cfg->fld_input[i]
> + .fld_in_crop_y2,
> + fd->fd_base + fld_face_info_1[i]);
> + writel(aie_cfg->fld_input[i].fld_in_rip << 4 |
> + aie_cfg->fld_input[i].fld_in_rop,
> + fd->fd_base + fld_face_info_2[i]);
> + }
> +
> + writel(aie_cfg->fld_face_num << 28 | FLD_FOREST << 16 |
> + FLD_POINT,
> + fd->fd_base + FLD_MODEL_PARA1);
> + writel(13 << 16 | 0xfe9,
> + fd->fd_base + FLD_MODEL_PARA14);
> +
> + writel(aie_cfg->src_img_width << 16 |
> + aie_cfg->src_img_height,
> + fd->fd_base + FLD_SRC_WD_HT);
> +
> + /*input settings*/
> + writel(0x007c003f, fd->fd_base + FLD_PL_IN_SIZE_0);
> + writel(0x0040000f, fd->fd_base + FLD_PL_IN_STRIDE_0);
> + writel(0x007c003f, fd->fd_base + FLD_PL_IN_SIZE_1);
> + writel(0x0040000f, fd->fd_base + FLD_PL_IN_STRIDE_1);
> + writel(0x0016003f, fd->fd_base + FLD_PL_IN_SIZE_2_0);
> + writel(0x0040000f, fd->fd_base + FLD_PL_IN_STRIDE_2_0);
> + writel(0x0013003f, fd->fd_base + FLD_PL_IN_SIZE_2_1);
> + writel(0x0040000f, fd->fd_base + FLD_PL_IN_STRIDE_2_1);
> + writel(0x0013003f, fd->fd_base + FLD_PL_IN_SIZE_2_2);
> + writel(0x0040000f, fd->fd_base + FLD_PL_IN_STRIDE_2_2);
> + writel(0x00a6001f, fd->fd_base + FLD_PL_IN_SIZE_3);
> + writel(0x0020000f, fd->fd_base + FLD_PL_IN_STRIDE_3);
> +
> + /*output setting*/
> + writel((2400 * aie_cfg->fld_face_num - 1) << 16 | 127,
> + fd->fd_base + FLD_SH_IN_SIZE_0);
> + writel(0x0010000f, fd->fd_base + FLD_SH_IN_STRIDE_0);
> + writel(fd->fld_para->fld_output_pa[0],
> + fd->fd_base + FLD_TR_OUT_BASE_ADDR_0);
> + writel((aie_cfg->fld_face_num - 1) << 16 | 0x6f,
> + fd->fd_base + FLD_TR_OUT_SIZE_0);
> + writel(0x0070000f, fd->fd_base + FLD_TR_OUT_STRIDE_0);
> + writel(fd->fld_para->fld_output_pa[0],
> + fd->fd_base + FLD_PP_OUT_BASE_ADDR_0);
> + writel((aie_cfg->fld_face_num - 1) << 16 | 0x6f,
> + fd->fd_base + FLD_PP_OUT_SIZE_0);
> + writel(0x0070000f, fd->fd_base + FLD_PP_OUT_STRIDE_0);
> +
> + /*cv score*/
> + writel(0x00000001, fd->fd_base + FLD_BS_BIAS);
> + writel(0x0000b835,
> + fd->fd_base + FLD_CV_FM_RANGE_0); // 8E8
> + writel(0xffff5cba,
> + fd->fd_base + FLD_CV_FM_RANGE_1); // 8EC
> + writel(0x00005ed5,
> + fd->fd_base + FLD_CV_PM_RANGE_0); // 8F0
> + writel(0xffff910d,
> + fd->fd_base + FLD_CV_PM_RANGE_1); // 8F4
> + writel(0x0000031e, fd->fd_base + FLD_BS_RANGE_0); // 8F8
> + writel(0xfffffcae, fd->fd_base + FLD_BS_RANGE_1); // 8FC
> +
> + /* 6 steps */
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_BLINK][14],
> + fd->fd_base + FLD_BS_IN_BASE_ADDR_14);
> +
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_CV][0],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_2_0);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_CV][1],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_2_1);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_CV][2],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_2_2);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_CV][3],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_2_3);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_CV][4],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_2_4);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_CV][5],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_2_5);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_CV][6],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_2_6);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_CV][7],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_2_7);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_CV][8],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_2_8);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_CV][9],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_2_9);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_CV][10],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_2_10);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_CV][11],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_2_11);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_CV][12],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_2_12);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_CV][13],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_2_13);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_CV][14],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_2_14);
> +
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_FP][0],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_3_0);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_FP][1],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_3_1);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_FP][2],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_3_2);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_FP][3],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_3_3);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_FP][4],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_3_4);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_FP][5],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_3_5);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_FP][6],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_3_6);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_FP][7],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_3_7);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_FP][8],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_3_8);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_FP][9],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_3_9);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_FP][10],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_3_10);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_FP][11],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_3_11);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_FP][12],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_3_12);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_FP][13],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_3_13);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_FP][14],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_3_14);
> +
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_LEAF][0],
> + fd->fd_base + FLD_SH_IN_BASE_ADDR_0);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_LEAF][1],
> + fd->fd_base + FLD_SH_IN_BASE_ADDR_1);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_LEAF][2],
> + fd->fd_base + FLD_SH_IN_BASE_ADDR_2);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_LEAF][3],
> + fd->fd_base + FLD_SH_IN_BASE_ADDR_3);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_LEAF][4],
> + fd->fd_base + FLD_SH_IN_BASE_ADDR_4);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_LEAF][5],
> + fd->fd_base + FLD_SH_IN_BASE_ADDR_5);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_LEAF][6],
> + fd->fd_base + FLD_SH_IN_BASE_ADDR_6);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_LEAF][7],
> + fd->fd_base + FLD_SH_IN_BASE_ADDR_7);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_LEAF][8],
> + fd->fd_base + FLD_SH_IN_BASE_ADDR_8);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_LEAF][9],
> + fd->fd_base + FLD_SH_IN_BASE_ADDR_9);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_LEAF][10],
> + fd->fd_base + FLD_SH_IN_BASE_ADDR_10);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_LEAF][11],
> + fd->fd_base + FLD_SH_IN_BASE_ADDR_11);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_LEAF][12],
> + fd->fd_base + FLD_SH_IN_BASE_ADDR_12);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_LEAF][13],
> + fd->fd_base + FLD_SH_IN_BASE_ADDR_13);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_LEAF][14],
> + fd->fd_base + FLD_SH_IN_BASE_ADDR_14);
> +
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_KM02][0],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_0_0);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_KM02][1],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_0_1);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_KM02][2],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_0_2);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_KM02][3],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_0_3);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_KM02][4],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_0_4);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_KM02][5],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_0_5);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_KM02][6],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_0_6);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_KM02][7],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_0_7);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_KM02][8],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_0_8);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_KM02][9],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_0_9);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_KM02][10],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_0_10);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_KM02][11],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_0_11);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_KM02][12],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_0_12);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_KM02][13],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_0_13);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_KM02][14],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_0_14);
Use a for-loop to simplify these code:
#define FLD_PL_IN_BASE_ADDR_0_(n) (0x550 + 4 * n)
for (i = 0; i < 15; i++)
writel(fd->fld_para->fld_step_pa[FLD_STEP_KM02][i],
fd->fd_base + FLD_PL_IN_BASE_ADDR_0_(i));
Regards,
CK
> +
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_KM13][0],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_1_0);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_KM13][1],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_1_1);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_KM13][2],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_1_2);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_KM13][3],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_1_3);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_KM13][4],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_1_4);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_KM13][5],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_1_5);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_KM13][6],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_1_6);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_KM13][7],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_1_7);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_KM13][8],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_1_8);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_KM13][9],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_1_9);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_KM13][10],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_1_10);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_KM13][11],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_1_11);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_KM13][12],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_1_12);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_KM13][13],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_1_13);
> + writel(fd->fld_para->fld_step_pa[FLD_STEP_KM13][14],
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_1_14);
> +
> + /* */
> + writel(0x22222222,
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_0_0_7_MSB);
> + writel(0x02222222,
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_0_8_15_MSB);
> +
> + writel(0x22222222,
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_1_0_7_MSB);
> + writel(0x02222222,
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_1_8_15_MSB);
> +
> + writel(0x22222222,
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_2_0_7_MSB);
> + writel(0x02222222,
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_2_8_15_MSB);
> +
> + writel(0x22222222,
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_3_0_7_MSB);
> + writel(0x02222222,
> + fd->fd_base + FLD_PL_IN_BASE_ADDR_3_8_15_MSB);
> +
> + writel(0x22222222,
> + fd->fd_base + FLD_SH_IN_BASE_ADDR_0_7_MSB);
> + writel(0x02222222,
> + fd->fd_base + FLD_SH_IN_BASE_ADDR_8_15_MSB);
> +
> + writel(0x02000000,
> + fd->fd_base + FLD_BS_IN_BASE_ADDR_8_15_MSB);
> +
> + writel(0x22222222,
> + fd->fd_base + FLD_BASE_ADDR_FACE_0_7_MSB);
> + writel(0x02222222,
> + fd->fd_base + FLD_BASE_ADDR_FACE_8_14_MSB);
> + writel(0x00000002,
> + fd->fd_base + FLD_TR_OUT_BASE_ADDR_0_MSB);
> + writel(0x00000002,
> + fd->fd_base + FLD_PP_OUT_BASE_ADDR_0_MSB);
> +
> + /*fld mode + trigger start*/
> + writel(0x11, fd->fd_base + AIE_START_REG);
> + }
> + }
> +}
> +
next prev parent reply other threads:[~2024-12-26 3:54 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-12-25 9:00 [PATCH v3 0/4] Add AIE Driver bo.kong
2024-12-25 9:00 ` [PATCH v3 1/4] arm64: dts: mt8188: add aie node bo.kong
2024-12-25 9:00 ` [PATCH v3 2/4] media: dt-bindings: add MT8188 AIE bo.kong
2024-12-25 10:29 ` Rob Herring (Arm)
2024-12-25 11:28 ` Krzysztof Kozlowski
2024-12-26 3:41 ` CK Hu (胡俊光)
2024-12-25 9:00 ` [PATCH v3 3/4] media: mediatek: add MT8188 AIE driver bo.kong
2024-12-25 11:35 ` Krzysztof Kozlowski
2024-12-26 3:53 ` CK Hu (胡俊光) [this message]
2024-12-26 5:20 ` CK Hu (胡俊光)
2024-12-26 5:36 ` CK Hu (胡俊光)
2024-12-26 6:09 ` CK Hu (胡俊光)
2024-12-26 6:50 ` CK Hu (胡俊光)
2024-12-26 7:38 ` CK Hu (胡俊光)
2024-12-27 3:23 ` CK Hu (胡俊光)
2024-12-27 3:54 ` CK Hu (胡俊光)
2024-12-27 5:56 ` CK Hu (胡俊光)
2024-12-27 6:05 ` CK Hu (胡俊光)
2024-12-31 7:45 ` Krzysztof Kozlowski
2024-12-31 7:57 ` CK Hu (胡俊光)
2024-12-31 8:07 ` Krzysztof Kozlowski
2024-12-31 8:13 ` CK Hu (胡俊光)
2024-12-30 7:39 ` CK Hu (胡俊光)
2025-01-07 15:32 ` AngeloGioacchino Del Regno
2024-12-25 9:00 ` [PATCH v3 4/4] uapi: linux: add MT8188 AIE bo.kong
2024-12-26 6:36 ` CK Hu (胡俊光)
2024-12-31 6:55 ` CK Hu (胡俊光)
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=95345df12095e976fedfcfcc6aac77f5d6a2d2b8.camel@mediatek.com \
--to=ck.hu@mediatek.com \
--cc=Bo.Kong@mediatek.com \
--cc=Project_Global_Chrome_Upstream_Group@mediatek.com \
--cc=angelogioacchino.delregno@collabora.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=matthias.bgg@gmail.com \
--cc=mchehab@kernel.org \
--cc=robh@kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox