Re: [PATCH v7 4/6] drm/tidss: Add support to configure OLDI mode for am625-dss
On 06-Feb-23 19:12, Tomi Valkeinen wrote: > On 05/02/2023 15:42, Aradhya Bhatia wrote: >> Hi Tomi, >> >> On 03-Feb-23 20:42, Tomi Valkeinen wrote: >>> On 25/01/2023 13:35, Aradhya Bhatia wrote: The newer version of DSS (AM625-DSS) has 2 OLDI TXes at its disposal. These can be configured to support the following modes: 1. OLDI_SINGLE_LINK_SINGLE_MODE Single Output over OLDI 0. +--+ +-+ +---+ | | | | | | | CRTC +--->+ ENCODER +->| PANEL | | | | | | | +--+ +-+ +---+ 2. OLDI_SINGLE_LINK_CLONE_MODE Duplicate Output over OLDI 0 and 1. +--+ +-+ +---+ | | | | | | | CRTC +---+--->| ENCODER +->| PANEL | | | | | | | | +--+ | +-+ +---+ | | +-+ +---+ | | | | | +--->| ENCODER +->| PANEL | | | | | +-+ +---+ 3. OLDI_DUAL_LINK_MODE Combined Output over OLDI 0 and 1. +--+ +-+ +---+ | | | +->| | | CRTC +--->+ ENCODER | | PANEL | | | | +->| | +--+ +-+ +---+ Following the above pathways for different modes, 2 encoder/panel-bridge pipes get created for clone mode, and 1 pipe in cases of single link and dual link mode. Add support for confguring the OLDI modes using OF and LVDS DRM helper functions. Signed-off-by: Aradhya Bhatia --- drivers/gpu/drm/tidss/tidss_dispc.c | 24 ++- drivers/gpu/drm/tidss/tidss_dispc.h | 12 ++ drivers/gpu/drm/tidss/tidss_drv.h | 3 + drivers/gpu/drm/tidss/tidss_encoder.c | 4 +- drivers/gpu/drm/tidss/tidss_encoder.h | 3 +- drivers/gpu/drm/tidss/tidss_kms.c | 221 -- 6 files changed, 245 insertions(+), 22 deletions(-) diff --git a/drivers/gpu/drm/tidss/tidss_dispc.c b/drivers/gpu/drm/tidss/tidss_dispc.c index b55ccbcaa67f..37a73e309330 100644 --- a/drivers/gpu/drm/tidss/tidss_dispc.c +++ b/drivers/gpu/drm/tidss/tidss_dispc.c @@ -88,6 +88,8 @@ const struct dispc_features dispc_k2g_feats = { .subrev = DISPC_K2G, + .has_oldi = false, + .common = "common", .common_regs = tidss_k2g_common_regs, @@ -166,6 +168,8 @@ const struct dispc_features dispc_am625_feats = { .subrev = DISPC_AM625, + .has_oldi = true, + .common = "common", .common_regs = tidss_am65x_common_regs, @@ -218,6 +222,8 @@ const struct dispc_features dispc_am65x_feats = { .subrev = DISPC_AM65X, + .has_oldi = true, + .common = "common", .common_regs = tidss_am65x_common_regs, @@ -309,6 +315,8 @@ const struct dispc_features dispc_j721e_feats = { .subrev = DISPC_J721E, + .has_oldi = false, + .common = "common_m", .common_regs = tidss_j721e_common_regs, @@ -361,6 +369,8 @@ struct dispc_device { struct dss_vp_data vp_data[TIDSS_MAX_VPS]; + enum dispc_oldi_modes oldi_mode; + u32 *fourccs; u32 num_fourccs; @@ -1963,6 +1973,12 @@ const u32 *dispc_plane_formats(struct dispc_device *dispc, unsigned int *len) return dispc->fourccs; } +void dispc_set_oldi_mode(struct dispc_device *dispc, + enum dispc_oldi_modes oldi_mode) +{ + dispc->oldi_mode = oldi_mode; +} + static s32 pixinc(int pixels, u8 ps) { if (pixels == 1) @@ -2647,7 +2663,7 @@ int dispc_runtime_resume(struct dispc_device *dispc) REG_GET(dispc, DSS_SYSSTATUS, 2, 2), REG_GET(dispc, DSS_SYSSTATUS, 3, 3)); - if (dispc->feat->subrev == DISPC_AM65X) + if (dispc->feat->has_oldi) dev_dbg(dispc->dev, "OLDI RESETDONE %d,%d,%d\n", REG_GET(dispc, DSS_SYSSTATUS, 5, 5), REG_GET(dispc, DSS_SYSSTATUS, 6, 6), @@ -2688,7 +2704,7 @@ static int dispc_iomap_resource(struct platform_device *pdev, const char *name, return 0; } -static int dispc_init_am65x_oldi_io_ctrl(struct device *dev, +static int dispc_init_am6xx_oldi_io_ctrl(struct device *dev, struct dispc_device *dispc) { dispc->oldi_io_ctrl = @@ -2827,8 +2843,8 @@ int dispc_init(struc
Re: [PATCH v7 4/6] drm/tidss: Add support to configure OLDI mode for am625-dss
On 05/02/2023 15:42, Aradhya Bhatia wrote: Hi Tomi, On 03-Feb-23 20:42, Tomi Valkeinen wrote: On 25/01/2023 13:35, Aradhya Bhatia wrote: The newer version of DSS (AM625-DSS) has 2 OLDI TXes at its disposal. These can be configured to support the following modes: 1. OLDI_SINGLE_LINK_SINGLE_MODE Single Output over OLDI 0. +--+ +-+ +---+ | | | | | | | CRTC +--->+ ENCODER +->| PANEL | | | | | | | +--+ +-+ +---+ 2. OLDI_SINGLE_LINK_CLONE_MODE Duplicate Output over OLDI 0 and 1. +--+ +-+ +---+ | | | | | | | CRTC +---+--->| ENCODER +->| PANEL | | | | | | | | +--+ | +-+ +---+ | | +-+ +---+ | | | | | +--->| ENCODER +->| PANEL | | | | | +-+ +---+ 3. OLDI_DUAL_LINK_MODE Combined Output over OLDI 0 and 1. +--+ +-+ +---+ | | | +->| | | CRTC +--->+ ENCODER | | PANEL | | | | +->| | +--+ +-+ +---+ Following the above pathways for different modes, 2 encoder/panel-bridge pipes get created for clone mode, and 1 pipe in cases of single link and dual link mode. Add support for confguring the OLDI modes using OF and LVDS DRM helper functions. Signed-off-by: Aradhya Bhatia --- drivers/gpu/drm/tidss/tidss_dispc.c | 24 ++- drivers/gpu/drm/tidss/tidss_dispc.h | 12 ++ drivers/gpu/drm/tidss/tidss_drv.h | 3 + drivers/gpu/drm/tidss/tidss_encoder.c | 4 +- drivers/gpu/drm/tidss/tidss_encoder.h | 3 +- drivers/gpu/drm/tidss/tidss_kms.c | 221 -- 6 files changed, 245 insertions(+), 22 deletions(-) diff --git a/drivers/gpu/drm/tidss/tidss_dispc.c b/drivers/gpu/drm/tidss/tidss_dispc.c index b55ccbcaa67f..37a73e309330 100644 --- a/drivers/gpu/drm/tidss/tidss_dispc.c +++ b/drivers/gpu/drm/tidss/tidss_dispc.c @@ -88,6 +88,8 @@ const struct dispc_features dispc_k2g_feats = { .subrev = DISPC_K2G, + .has_oldi = false, + .common = "common", .common_regs = tidss_k2g_common_regs, @@ -166,6 +168,8 @@ const struct dispc_features dispc_am625_feats = { .subrev = DISPC_AM625, + .has_oldi = true, + .common = "common", .common_regs = tidss_am65x_common_regs, @@ -218,6 +222,8 @@ const struct dispc_features dispc_am65x_feats = { .subrev = DISPC_AM65X, + .has_oldi = true, + .common = "common", .common_regs = tidss_am65x_common_regs, @@ -309,6 +315,8 @@ const struct dispc_features dispc_j721e_feats = { .subrev = DISPC_J721E, + .has_oldi = false, + .common = "common_m", .common_regs = tidss_j721e_common_regs, @@ -361,6 +369,8 @@ struct dispc_device { struct dss_vp_data vp_data[TIDSS_MAX_VPS]; + enum dispc_oldi_modes oldi_mode; + u32 *fourccs; u32 num_fourccs; @@ -1963,6 +1973,12 @@ const u32 *dispc_plane_formats(struct dispc_device *dispc, unsigned int *len) return dispc->fourccs; } +void dispc_set_oldi_mode(struct dispc_device *dispc, + enum dispc_oldi_modes oldi_mode) +{ + dispc->oldi_mode = oldi_mode; +} + static s32 pixinc(int pixels, u8 ps) { if (pixels == 1) @@ -2647,7 +2663,7 @@ int dispc_runtime_resume(struct dispc_device *dispc) REG_GET(dispc, DSS_SYSSTATUS, 2, 2), REG_GET(dispc, DSS_SYSSTATUS, 3, 3)); - if (dispc->feat->subrev == DISPC_AM65X) + if (dispc->feat->has_oldi) dev_dbg(dispc->dev, "OLDI RESETDONE %d,%d,%d\n", REG_GET(dispc, DSS_SYSSTATUS, 5, 5), REG_GET(dispc, DSS_SYSSTATUS, 6, 6), @@ -2688,7 +2704,7 @@ static int dispc_iomap_resource(struct platform_device *pdev, const char *name, return 0; } -static int dispc_init_am65x_oldi_io_ctrl(struct device *dev, +static int dispc_init_am6xx_oldi_io_ctrl(struct device *dev, struct dispc_device *dispc) { dispc->oldi_io_ctrl = @@ -2827,8 +2843,8 @@ int dispc_init(struct tidss_device *tidss) dispc->vp_data[i].gamma_table = gamma_table; } - if (feat->subrev == DISPC_AM65X) { - r = dispc_init_am65x_oldi_io_ctrl(dev, dispc); + if (feat->has_oldi) { + r = dispc_init_am6xx_oldi_io_ctrl(dev, dispc); if (r) return r; } diff --git a/drivers/gpu/drm/tidss/tidss_dispc.h b/drivers/gpu/drm/tidss/tidss_dispc.h index 971f2856f015..880bc7de68b3 100644 --- a/drivers/gpu/drm/tidss/tidss_dispc.h +++ b/drivers/gpu/drm/tidss/tidss_dispc.h @@ -64,6 +64,15 @@ enum dispc_dss_subrevision { DISPC_J721E, }; +enum dispc_oldi_
Re: [PATCH v7 4/6] drm/tidss: Add support to configure OLDI mode for am625-dss
Hi Tomi, On 03-Feb-23 20:42, Tomi Valkeinen wrote: > On 25/01/2023 13:35, Aradhya Bhatia wrote: >> The newer version of DSS (AM625-DSS) has 2 OLDI TXes at its disposal. >> These can be configured to support the following modes: >> >> 1. OLDI_SINGLE_LINK_SINGLE_MODE >> Single Output over OLDI 0. >> +--+ +-+ +---+ >> | | | | | | >> | CRTC +--->+ ENCODER +->| PANEL | >> | | | | | | >> +--+ +-+ +---+ >> >> 2. OLDI_SINGLE_LINK_CLONE_MODE >> Duplicate Output over OLDI 0 and 1. >> +--+ +-+ +---+ >> | | | | | | >> | CRTC +---+--->| ENCODER +->| PANEL | >> | | | | | | | >> +--+ | +-+ +---+ >> | >> | +-+ +---+ >> | | | | | >> +--->| ENCODER +->| PANEL | >> | | | | >> +-+ +---+ >> >> 3. OLDI_DUAL_LINK_MODE >> Combined Output over OLDI 0 and 1. >> +--+ +-+ +---+ >> | | | +->| | >> | CRTC +--->+ ENCODER | | PANEL | >> | | | +->| | >> +--+ +-+ +---+ >> >> Following the above pathways for different modes, 2 encoder/panel-bridge >> pipes get created for clone mode, and 1 pipe in cases of single link and >> dual link mode. >> >> Add support for confguring the OLDI modes using OF and LVDS DRM helper >> functions. >> >> Signed-off-by: Aradhya Bhatia >> --- >> drivers/gpu/drm/tidss/tidss_dispc.c | 24 ++- >> drivers/gpu/drm/tidss/tidss_dispc.h | 12 ++ >> drivers/gpu/drm/tidss/tidss_drv.h | 3 + >> drivers/gpu/drm/tidss/tidss_encoder.c | 4 +- >> drivers/gpu/drm/tidss/tidss_encoder.h | 3 +- >> drivers/gpu/drm/tidss/tidss_kms.c | 221 -- >> 6 files changed, 245 insertions(+), 22 deletions(-) >> >> diff --git a/drivers/gpu/drm/tidss/tidss_dispc.c >> b/drivers/gpu/drm/tidss/tidss_dispc.c >> index b55ccbcaa67f..37a73e309330 100644 >> --- a/drivers/gpu/drm/tidss/tidss_dispc.c >> +++ b/drivers/gpu/drm/tidss/tidss_dispc.c >> @@ -88,6 +88,8 @@ const struct dispc_features dispc_k2g_feats = { >> .subrev = DISPC_K2G, >> + .has_oldi = false, >> + >> .common = "common", >> .common_regs = tidss_k2g_common_regs, >> @@ -166,6 +168,8 @@ const struct dispc_features dispc_am625_feats = { >> .subrev = DISPC_AM625, >> + .has_oldi = true, >> + >> .common = "common", >> .common_regs = tidss_am65x_common_regs, >> @@ -218,6 +222,8 @@ const struct dispc_features dispc_am65x_feats = { >> .subrev = DISPC_AM65X, >> + .has_oldi = true, >> + >> .common = "common", >> .common_regs = tidss_am65x_common_regs, >> @@ -309,6 +315,8 @@ const struct dispc_features dispc_j721e_feats = { >> .subrev = DISPC_J721E, >> + .has_oldi = false, >> + >> .common = "common_m", >> .common_regs = tidss_j721e_common_regs, >> @@ -361,6 +369,8 @@ struct dispc_device { >> struct dss_vp_data vp_data[TIDSS_MAX_VPS]; >> + enum dispc_oldi_modes oldi_mode; >> + >> u32 *fourccs; >> u32 num_fourccs; >> @@ -1963,6 +1973,12 @@ const u32 *dispc_plane_formats(struct dispc_device >> *dispc, unsigned int *len) >> return dispc->fourccs; >> } >> +void dispc_set_oldi_mode(struct dispc_device *dispc, >> + enum dispc_oldi_modes oldi_mode) >> +{ >> + dispc->oldi_mode = oldi_mode; >> +} >> + >> static s32 pixinc(int pixels, u8 ps) >> { >> if (pixels == 1) >> @@ -2647,7 +2663,7 @@ int dispc_runtime_resume(struct dispc_device *dispc) >> REG_GET(dispc, DSS_SYSSTATUS, 2, 2), >> REG_GET(dispc, DSS_SYSSTATUS, 3, 3)); >> - if (dispc->feat->subrev == DISPC_AM65X) >> + if (dispc->feat->has_oldi) >> dev_dbg(dispc->dev, "OLDI RESETDONE %d,%d,%d\n", >> REG_GET(dispc, DSS_SYSSTATUS, 5, 5), >> REG_GET(dispc, DSS_SYSSTATUS, 6, 6), >> @@ -2688,7 +2704,7 @@ static int dispc_iomap_resource(struct platform_device >> *pdev, const char *name, >> return 0; >> } >> -static int dispc_init_am65x_oldi_io_ctrl(struct device *dev, >> +static int dispc_init_am6xx_oldi_io_ctrl(struct device *dev, >> struct dispc_device *dispc) >> { >> dispc->oldi_io_ctrl = >> @@ -2827,8 +2843,8 @@ int dispc_init(struct tidss_device *tidss) >> dispc->vp_data[i].gamma_table = gamma_table; >> } >> - if (feat->subrev == DISPC_AM65X) { >> - r = dispc_init_am65x_oldi_io_ctrl(dev, dispc); >> + if (feat->has_oldi) { >> + r = dispc_init_am6xx_oldi_io_ctrl(dev, dispc); >> if (r) >> return r; >> } >> diff --git a/drivers/gpu/drm/tidss/tidss_
Re: [PATCH v7 4/6] drm/tidss: Add support to configure OLDI mode for am625-dss
On 25/01/2023 13:35, Aradhya Bhatia wrote: The newer version of DSS (AM625-DSS) has 2 OLDI TXes at its disposal. These can be configured to support the following modes: 1. OLDI_SINGLE_LINK_SINGLE_MODE Single Output over OLDI 0. +--++-+ +---+ | || | | | | CRTC +--->+ ENCODER +->| PANEL | | || | | | +--++-+ +---+ 2. OLDI_SINGLE_LINK_CLONE_MODE Duplicate Output over OLDI 0 and 1. +--++-+ +---+ | || | | | | CRTC +---+--->| ENCODER +->| PANEL | | | || | | | +--+ |+-+ +---+ | |+-+ +---+ || | | | +--->| ENCODER +->| PANEL | | | | | +-+ +---+ 3. OLDI_DUAL_LINK_MODE Combined Output over OLDI 0 and 1. +--++-+ +---+ | || +->| | | CRTC +--->+ ENCODER | | PANEL | | || +->| | +--++-+ +---+ Following the above pathways for different modes, 2 encoder/panel-bridge pipes get created for clone mode, and 1 pipe in cases of single link and dual link mode. Add support for confguring the OLDI modes using OF and LVDS DRM helper functions. Signed-off-by: Aradhya Bhatia --- drivers/gpu/drm/tidss/tidss_dispc.c | 24 ++- drivers/gpu/drm/tidss/tidss_dispc.h | 12 ++ drivers/gpu/drm/tidss/tidss_drv.h | 3 + drivers/gpu/drm/tidss/tidss_encoder.c | 4 +- drivers/gpu/drm/tidss/tidss_encoder.h | 3 +- drivers/gpu/drm/tidss/tidss_kms.c | 221 -- 6 files changed, 245 insertions(+), 22 deletions(-) diff --git a/drivers/gpu/drm/tidss/tidss_dispc.c b/drivers/gpu/drm/tidss/tidss_dispc.c index b55ccbcaa67f..37a73e309330 100644 --- a/drivers/gpu/drm/tidss/tidss_dispc.c +++ b/drivers/gpu/drm/tidss/tidss_dispc.c @@ -88,6 +88,8 @@ const struct dispc_features dispc_k2g_feats = { .subrev = DISPC_K2G, + .has_oldi = false, + .common = "common", .common_regs = tidss_k2g_common_regs, @@ -166,6 +168,8 @@ const struct dispc_features dispc_am625_feats = { .subrev = DISPC_AM625, + .has_oldi = true, + .common = "common", .common_regs = tidss_am65x_common_regs, @@ -218,6 +222,8 @@ const struct dispc_features dispc_am65x_feats = { .subrev = DISPC_AM65X, + .has_oldi = true, + .common = "common", .common_regs = tidss_am65x_common_regs, @@ -309,6 +315,8 @@ const struct dispc_features dispc_j721e_feats = { .subrev = DISPC_J721E, + .has_oldi = false, + .common = "common_m", .common_regs = tidss_j721e_common_regs, @@ -361,6 +369,8 @@ struct dispc_device { struct dss_vp_data vp_data[TIDSS_MAX_VPS]; + enum dispc_oldi_modes oldi_mode; + u32 *fourccs; u32 num_fourccs; @@ -1963,6 +1973,12 @@ const u32 *dispc_plane_formats(struct dispc_device *dispc, unsigned int *len) return dispc->fourccs; } +void dispc_set_oldi_mode(struct dispc_device *dispc, +enum dispc_oldi_modes oldi_mode) +{ + dispc->oldi_mode = oldi_mode; +} + static s32 pixinc(int pixels, u8 ps) { if (pixels == 1) @@ -2647,7 +2663,7 @@ int dispc_runtime_resume(struct dispc_device *dispc) REG_GET(dispc, DSS_SYSSTATUS, 2, 2), REG_GET(dispc, DSS_SYSSTATUS, 3, 3)); - if (dispc->feat->subrev == DISPC_AM65X) + if (dispc->feat->has_oldi) dev_dbg(dispc->dev, "OLDI RESETDONE %d,%d,%d\n", REG_GET(dispc, DSS_SYSSTATUS, 5, 5), REG_GET(dispc, DSS_SYSSTATUS, 6, 6), @@ -2688,7 +2704,7 @@ static int dispc_iomap_resource(struct platform_device *pdev, const char *name, return 0; } -static int dispc_init_am65x_oldi_io_ctrl(struct device *dev, +static int dispc_init_am6xx_oldi_io_ctrl(struct device *dev, struct dispc_device *dispc) { dispc->oldi_io_ctrl = @@ -2827,8 +2843,8 @@ int dispc_init(struct tidss_device *tidss) dispc->vp_data[i].gamma_table = gamma_table; } - if (feat->subrev == DISPC_AM65X) { - r = dispc_init_am65x_oldi_io_ctrl(dev, dispc); + if (feat->has_oldi) { + r = dispc_init_am6xx_oldi_io_ctrl(dev, dispc); if (r) return r; } diff --git a/drivers/gpu/drm/tidss/tidss_dispc.h b/drivers/gpu/drm/tidss/tidss_dispc.h index 971f2856f015..880bc7de68b3 100644 --- a/drivers/gpu/drm/tidss/tidss_dispc.h +++ b/drivers/gpu/drm/tidss/tidss_dispc.h @@ -64,6 +64,15 @@ enum dispc_dss_subrevision { DISPC_J721E, }; +enum dispc_oldi_modes { + OLDI_MODE
[PATCH v7 4/6] drm/tidss: Add support to configure OLDI mode for am625-dss
The newer version of DSS (AM625-DSS) has 2 OLDI TXes at its disposal. These can be configured to support the following modes: 1. OLDI_SINGLE_LINK_SINGLE_MODE Single Output over OLDI 0. +--++-+ +---+ | || | | | | CRTC +--->+ ENCODER +->| PANEL | | || | | | +--++-+ +---+ 2. OLDI_SINGLE_LINK_CLONE_MODE Duplicate Output over OLDI 0 and 1. +--++-+ +---+ | || | | | | CRTC +---+--->| ENCODER +->| PANEL | | | || | | | +--+ |+-+ +---+ | |+-+ +---+ || | | | +--->| ENCODER +->| PANEL | | | | | +-+ +---+ 3. OLDI_DUAL_LINK_MODE Combined Output over OLDI 0 and 1. +--++-+ +---+ | || +->| | | CRTC +--->+ ENCODER | | PANEL | | || +->| | +--++-+ +---+ Following the above pathways for different modes, 2 encoder/panel-bridge pipes get created for clone mode, and 1 pipe in cases of single link and dual link mode. Add support for confguring the OLDI modes using OF and LVDS DRM helper functions. Signed-off-by: Aradhya Bhatia --- drivers/gpu/drm/tidss/tidss_dispc.c | 24 ++- drivers/gpu/drm/tidss/tidss_dispc.h | 12 ++ drivers/gpu/drm/tidss/tidss_drv.h | 3 + drivers/gpu/drm/tidss/tidss_encoder.c | 4 +- drivers/gpu/drm/tidss/tidss_encoder.h | 3 +- drivers/gpu/drm/tidss/tidss_kms.c | 221 -- 6 files changed, 245 insertions(+), 22 deletions(-) diff --git a/drivers/gpu/drm/tidss/tidss_dispc.c b/drivers/gpu/drm/tidss/tidss_dispc.c index b55ccbcaa67f..37a73e309330 100644 --- a/drivers/gpu/drm/tidss/tidss_dispc.c +++ b/drivers/gpu/drm/tidss/tidss_dispc.c @@ -88,6 +88,8 @@ const struct dispc_features dispc_k2g_feats = { .subrev = DISPC_K2G, + .has_oldi = false, + .common = "common", .common_regs = tidss_k2g_common_regs, @@ -166,6 +168,8 @@ const struct dispc_features dispc_am625_feats = { .subrev = DISPC_AM625, + .has_oldi = true, + .common = "common", .common_regs = tidss_am65x_common_regs, @@ -218,6 +222,8 @@ const struct dispc_features dispc_am65x_feats = { .subrev = DISPC_AM65X, + .has_oldi = true, + .common = "common", .common_regs = tidss_am65x_common_regs, @@ -309,6 +315,8 @@ const struct dispc_features dispc_j721e_feats = { .subrev = DISPC_J721E, + .has_oldi = false, + .common = "common_m", .common_regs = tidss_j721e_common_regs, @@ -361,6 +369,8 @@ struct dispc_device { struct dss_vp_data vp_data[TIDSS_MAX_VPS]; + enum dispc_oldi_modes oldi_mode; + u32 *fourccs; u32 num_fourccs; @@ -1963,6 +1973,12 @@ const u32 *dispc_plane_formats(struct dispc_device *dispc, unsigned int *len) return dispc->fourccs; } +void dispc_set_oldi_mode(struct dispc_device *dispc, +enum dispc_oldi_modes oldi_mode) +{ + dispc->oldi_mode = oldi_mode; +} + static s32 pixinc(int pixels, u8 ps) { if (pixels == 1) @@ -2647,7 +2663,7 @@ int dispc_runtime_resume(struct dispc_device *dispc) REG_GET(dispc, DSS_SYSSTATUS, 2, 2), REG_GET(dispc, DSS_SYSSTATUS, 3, 3)); - if (dispc->feat->subrev == DISPC_AM65X) + if (dispc->feat->has_oldi) dev_dbg(dispc->dev, "OLDI RESETDONE %d,%d,%d\n", REG_GET(dispc, DSS_SYSSTATUS, 5, 5), REG_GET(dispc, DSS_SYSSTATUS, 6, 6), @@ -2688,7 +2704,7 @@ static int dispc_iomap_resource(struct platform_device *pdev, const char *name, return 0; } -static int dispc_init_am65x_oldi_io_ctrl(struct device *dev, +static int dispc_init_am6xx_oldi_io_ctrl(struct device *dev, struct dispc_device *dispc) { dispc->oldi_io_ctrl = @@ -2827,8 +2843,8 @@ int dispc_init(struct tidss_device *tidss) dispc->vp_data[i].gamma_table = gamma_table; } - if (feat->subrev == DISPC_AM65X) { - r = dispc_init_am65x_oldi_io_ctrl(dev, dispc); + if (feat->has_oldi) { + r = dispc_init_am6xx_oldi_io_ctrl(dev, dispc); if (r) return r; } diff --git a/drivers/gpu/drm/tidss/tidss_dispc.h b/drivers/gpu/drm/tidss/tidss_dispc.h index 971f2856f015..880bc7de68b3 100644 --- a/drivers/gpu/drm/tidss/tidss_dispc.h +++ b/drivers/gpu/drm/tidss/tidss_dispc.h @@ -64,6 +64,15 @@ enum dispc_dss_subrevision { DISPC_J721E, }; +enum dispc_oldi_modes { + OLDI_MODE_SINGLE_LINK,