drm/ingenic: Fix support for JZ4780 HDMI output
We have to make sure that - JZ_LCD_OSDC_ALPHAEN is set - plane f0 is disabled as it's not working yet Tested on MIPS Creator CI20 board. Signed-off-by: Paul Boddie <paul@boddie.org.uk> Signed-off-by: Ezequiel Garcia <ezequiel@collabora.com> Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com> Fixes: ef2f5d0aa121 ("drm/ingenic: prepare ingenic drm for later addition of JZ4780") Signed-off-by: Paul Cercueil <paul@crapouillou.net> [pcercuei: add proper fixes commit, slightly reword commit description] Link: https://patchwork.freedesktop.org/patch/msgid/9d3a2000d2bb014f1afb0613537bdc523202135d.1644681054.git.hns@goldelico.com
This commit is contained in:
parent
c6fc836488
commit
5357402398
@ -65,8 +65,10 @@ struct ingenic_dma_hwdescs {
|
||||
struct jz_soc_info {
|
||||
bool needs_dev_clk;
|
||||
bool has_osd;
|
||||
bool has_alpha;
|
||||
bool map_noncoherent;
|
||||
bool use_extended_hwdesc;
|
||||
bool plane_f0_not_working;
|
||||
unsigned int max_width, max_height;
|
||||
const u32 *formats_f0, *formats_f1;
|
||||
unsigned int num_formats_f0, num_formats_f1;
|
||||
@ -453,7 +455,7 @@ static int ingenic_drm_plane_atomic_check(struct drm_plane *plane,
|
||||
if (!crtc)
|
||||
return 0;
|
||||
|
||||
if (plane == &priv->f0)
|
||||
if (priv->soc_info->plane_f0_not_working && plane == &priv->f0)
|
||||
return -EINVAL;
|
||||
|
||||
crtc_state = drm_atomic_get_existing_crtc_state(state,
|
||||
@ -1055,6 +1057,7 @@ static int ingenic_drm_bind(struct device *dev, bool has_components)
|
||||
long parent_rate;
|
||||
unsigned int i, clone_mask = 0;
|
||||
int ret, irq;
|
||||
u32 osdc = 0;
|
||||
|
||||
soc_info = of_device_get_match_data(dev);
|
||||
if (!soc_info) {
|
||||
@ -1312,7 +1315,10 @@ static int ingenic_drm_bind(struct device *dev, bool has_components)
|
||||
|
||||
/* Enable OSD if available */
|
||||
if (soc_info->has_osd)
|
||||
regmap_write(priv->map, JZ_REG_LCD_OSDC, JZ_LCD_OSDC_OSDEN);
|
||||
osdc |= JZ_LCD_OSDC_OSDEN;
|
||||
if (soc_info->has_alpha)
|
||||
osdc |= JZ_LCD_OSDC_ALPHAEN;
|
||||
regmap_write(priv->map, JZ_REG_LCD_OSDC, osdc);
|
||||
|
||||
mutex_init(&priv->clk_mutex);
|
||||
priv->clock_nb.notifier_call = ingenic_drm_update_pixclk;
|
||||
@ -1511,7 +1517,9 @@ static const struct jz_soc_info jz4770_soc_info = {
|
||||
static const struct jz_soc_info jz4780_soc_info = {
|
||||
.needs_dev_clk = true,
|
||||
.has_osd = true,
|
||||
.has_alpha = true,
|
||||
.use_extended_hwdesc = true,
|
||||
.plane_f0_not_working = true, /* REVISIT */
|
||||
.max_width = 4096,
|
||||
.max_height = 2048,
|
||||
.formats_f1 = jz4770_formats_f1,
|
||||
|
Loading…
x
Reference in New Issue
Block a user