lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <ED77DCA8-FF50-4E9E-A4B8-688262774723@goldelico.com>
Date:   Sat, 11 Apr 2020 16:14:29 +0200
From:   "H. Nikolaus Schaller" <hns@...delico.com>
To:     Paul Cercueil <paul@...pouillou.net>,
        Dave Airlie <airlied@...ux.ie>,
        Sascha Hauer <s.hauer@...gutronix.de>,
        Andy Yan <andy.yan@...k-chips.com>,
        Yakir Yang <ykk@...k-chips.com>,
        Vladimir Zapolskiy <vladimir_zapolskiy@...tor.com>
Cc:     Paul Boddie <paul@...die.org.uk>, linux-mips@...r.kernel.org,
        Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
        MIPS Creator CI20 Development 
        <mips-creator-ci20-dev@...glegroups.com>
Subject: DRM interaction problems on Ingenic CI20 / jz4780 with dw-hdmi and ingenic-drm

Hi,
we (Paul Boddie and me) are working to get HDMI functional on the
Ingenic CI20 board with jz4780 SoC which uses a specialization of
the dw-hdmi driver.


So far we have identified two issues.

The first is that HPD interrupts are not properly processed.

drm_helper_hpd_irq_event() is called by HPD events but
dev->mode_config.poll_enabled is false.

Therefore the interrupt is ignored and nothing happens.

Now I wonder about the logic behind checking for poll_enabled.
I understand that a driver can do either polling or irq or both.

Therefore handling the irq_event shouldn't be disabled by poll_enabled
being false. Otherwise we can only do: nothing, polling, polling+irq
but not irq alone.

The jz4780 hdmi subsystem (drm/bridge/dw-hdmi.c) uses

	connector->polled = DRM_CONNECTOR_POLL_HPD;

but shouldn't this enable polling? Note that there seems to be
no (direct) call to drm_kms_helper_poll_init().

If we set dev->mode_config.poll_enabled = true in
drm_helper_hpd_irq_event() things start to work.

Please can you clarify what would be best practise here to
get HPD event handling working.


The other issue is in dw-hdmi.c:

We found out that ingenic_drm_encoder_atomic_check() fails because

info->num_bus_formats == 0

and not 1. This blocks further initialization.

The reason seems to be that dw_hdmi_bridge_attach() does not call
drm_display_info_set_bus_formats() with a proper format like
other drivers (e.g. drm/bridge/ti-tfp410.c) are doing.

We have patched to set a single bus format MEDIA_BUS_FMT_RGB888_1X24
and then DRM setup seems to work (although we still have no valid
HDMI signal but that is likely something else).

Please can you explain how setting the bus format should be fixed
in dw-hdmi.c.

If these questions should be forwarded to other specialists, please
do so.


BR and thanks,
Nikolaus Schaller

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ