Message ID | 20230105134729.59542-8-m.tretter@pengutronix.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | media: imx-pxp: add support for i.MX7D | expand |
Hi Michael, Thank you for the patch. On Thu, Jan 05, 2023 at 02:47:28PM +0100, Michael Tretter wrote: > The i.MX7D needs a different data path configuration than the i.MX6ULL. > Configure the data path as close as possible to the data path on the > i.MX6ULL. > > Signed-off-by: Michael Tretter <m.tretter@pengutronix.de> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > --- > drivers/media/platform/nxp/imx-pxp.c | 36 ++++++++++++++++++++++++++++ > 1 file changed, 36 insertions(+) > > diff --git a/drivers/media/platform/nxp/imx-pxp.c b/drivers/media/platform/nxp/imx-pxp.c > index 4e182f80a36b..04cc8df2a498 100644 > --- a/drivers/media/platform/nxp/imx-pxp.c > +++ b/drivers/media/platform/nxp/imx-pxp.c > @@ -763,6 +763,37 @@ static u32 pxp_imx6ull_data_path_ctrl0(struct pxp_ctx *ctx) > return ctrl0; > } > > +static u32 pxp_imx7d_data_path_ctrl0(struct pxp_ctx *ctx) > +{ > + u32 ctrl0; > + > + ctrl0 = 0; > + ctrl0 |= BF_PXP_DATA_PATH_CTRL0_MUX15_SEL(3); > + /* Select Rotation 0 */ > + ctrl0 |= BF_PXP_DATA_PATH_CTRL0_MUX14_SEL(0); > + ctrl0 |= BF_PXP_DATA_PATH_CTRL0_MUX13_SEL(3); > + /* Select MUX11 for Rotation 0 */ > + ctrl0 |= BF_PXP_DATA_PATH_CTRL0_MUX12_SEL(1); > + /* Bypass LUT */ > + ctrl0 |= BF_PXP_DATA_PATH_CTRL0_MUX11_SEL(1); > + ctrl0 |= BF_PXP_DATA_PATH_CTRL0_MUX10_SEL(3); > + ctrl0 |= BF_PXP_DATA_PATH_CTRL0_MUX9_SEL(3); > + /* Select CSC 2 */ > + ctrl0 |= BF_PXP_DATA_PATH_CTRL0_MUX8_SEL(0); > + ctrl0 |= BF_PXP_DATA_PATH_CTRL0_MUX7_SEL(3); > + /* Select Composite Alpha Blending/Color Key 0 for CSC 2 */ > + ctrl0 |= BF_PXP_DATA_PATH_CTRL0_MUX6_SEL(1); > + ctrl0 |= BF_PXP_DATA_PATH_CTRL0_MUX5_SEL(3); > + ctrl0 |= BF_PXP_DATA_PATH_CTRL0_MUX4_SEL(3); > + /* Bypass Rotation 1 */ > + ctrl0 |= BF_PXP_DATA_PATH_CTRL0_MUX3_SEL(0); > + ctrl0 |= BF_PXP_DATA_PATH_CTRL0_MUX2_SEL(3); > + ctrl0 |= BF_PXP_DATA_PATH_CTRL0_MUX1_SEL(3); > + ctrl0 |= BF_PXP_DATA_PATH_CTRL0_MUX0_SEL(3); > + > + return ctrl0; > +} > + > static u32 pxp_data_path_ctrl0(struct pxp_ctx *ctx) > { > struct pxp_dev *dev = ctx->dev; > @@ -1834,8 +1865,13 @@ static const struct pxp_pdata pxp_imx6ull_pdata = { > .data_path_ctrl0 = pxp_imx6ull_data_path_ctrl0, > }; > > +static const struct pxp_pdata pxp_imx7d_pdata = { > + .data_path_ctrl0 = pxp_imx7d_data_path_ctrl0, > +}; > + > static const struct of_device_id pxp_dt_ids[] = { > { .compatible = "fsl,imx6ull-pxp", .data = &pxp_imx6ull_pdata }, > + { .compatible = "fsl,imx7d-pxp", .data = &pxp_imx7d_pdata }, > { }, > }; > MODULE_DEVICE_TABLE(of, pxp_dt_ids);
diff --git a/drivers/media/platform/nxp/imx-pxp.c b/drivers/media/platform/nxp/imx-pxp.c index 4e182f80a36b..04cc8df2a498 100644 --- a/drivers/media/platform/nxp/imx-pxp.c +++ b/drivers/media/platform/nxp/imx-pxp.c @@ -763,6 +763,37 @@ static u32 pxp_imx6ull_data_path_ctrl0(struct pxp_ctx *ctx) return ctrl0; } +static u32 pxp_imx7d_data_path_ctrl0(struct pxp_ctx *ctx) +{ + u32 ctrl0; + + ctrl0 = 0; + ctrl0 |= BF_PXP_DATA_PATH_CTRL0_MUX15_SEL(3); + /* Select Rotation 0 */ + ctrl0 |= BF_PXP_DATA_PATH_CTRL0_MUX14_SEL(0); + ctrl0 |= BF_PXP_DATA_PATH_CTRL0_MUX13_SEL(3); + /* Select MUX11 for Rotation 0 */ + ctrl0 |= BF_PXP_DATA_PATH_CTRL0_MUX12_SEL(1); + /* Bypass LUT */ + ctrl0 |= BF_PXP_DATA_PATH_CTRL0_MUX11_SEL(1); + ctrl0 |= BF_PXP_DATA_PATH_CTRL0_MUX10_SEL(3); + ctrl0 |= BF_PXP_DATA_PATH_CTRL0_MUX9_SEL(3); + /* Select CSC 2 */ + ctrl0 |= BF_PXP_DATA_PATH_CTRL0_MUX8_SEL(0); + ctrl0 |= BF_PXP_DATA_PATH_CTRL0_MUX7_SEL(3); + /* Select Composite Alpha Blending/Color Key 0 for CSC 2 */ + ctrl0 |= BF_PXP_DATA_PATH_CTRL0_MUX6_SEL(1); + ctrl0 |= BF_PXP_DATA_PATH_CTRL0_MUX5_SEL(3); + ctrl0 |= BF_PXP_DATA_PATH_CTRL0_MUX4_SEL(3); + /* Bypass Rotation 1 */ + ctrl0 |= BF_PXP_DATA_PATH_CTRL0_MUX3_SEL(0); + ctrl0 |= BF_PXP_DATA_PATH_CTRL0_MUX2_SEL(3); + ctrl0 |= BF_PXP_DATA_PATH_CTRL0_MUX1_SEL(3); + ctrl0 |= BF_PXP_DATA_PATH_CTRL0_MUX0_SEL(3); + + return ctrl0; +} + static u32 pxp_data_path_ctrl0(struct pxp_ctx *ctx) { struct pxp_dev *dev = ctx->dev; @@ -1834,8 +1865,13 @@ static const struct pxp_pdata pxp_imx6ull_pdata = { .data_path_ctrl0 = pxp_imx6ull_data_path_ctrl0, }; +static const struct pxp_pdata pxp_imx7d_pdata = { + .data_path_ctrl0 = pxp_imx7d_data_path_ctrl0, +}; + static const struct of_device_id pxp_dt_ids[] = { { .compatible = "fsl,imx6ull-pxp", .data = &pxp_imx6ull_pdata }, + { .compatible = "fsl,imx7d-pxp", .data = &pxp_imx7d_pdata }, { }, }; MODULE_DEVICE_TABLE(of, pxp_dt_ids);
The i.MX7D needs a different data path configuration than the i.MX6ULL. Configure the data path as close as possible to the data path on the i.MX6ULL. Signed-off-by: Michael Tretter <m.tretter@pengutronix.de> --- drivers/media/platform/nxp/imx-pxp.c | 36 ++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+)