[PATCH RFC 0/5] drm/panel: simple: Add panel picker support.

Srinivas Kandagatla srinivas.kandagatla at linaro.org
Fri Aug 14 08:48:00 PDT 2015

Hi All,

This patchset adds support to Panel Picker. The idea of panel picker
is to pick a panel and its timing based on "Manufacturer ID" and
"Manufacturer product code" which is available in the EDID.

For now I added only one panel picker entry as a proof of concept,
as we move on we could add more entires to the list.

Reason why I started to look in to this side is
- to have a DT for panel which could work with multiple panels.
- to detect the panel presence.

Simple panel driver supports more than 25 panels, having compatible string
for each to get the panel descriptor. The problem with such approch is that
if we connect a panel to a board whose compatible string is different to
the one mentioned in DT, it would not work, eventhough the simple panel
driver supports it. Maybe we are saying that if we replace a panel
on your phone with different manufacturer it would need a software upgrade? :-)

For example when I submitted a DT patch to add LVDS panel support to IFC6410,
people started asking about two things, 
- How can it work with other panels, as they have different panels then mine.
- Why is the hdmi display resolution changed with a LVDS panel DT entry?
  (this is due to drm driver does not know the panel presence)

>From DT point of view the panel picker uses generic compatible string
"panel-simple", keeping the panel specific compatible strings still

This patch also adds panel presence detection based, if there is no
panel detected or panel picker could not find the panel then the driver
would mark the panel DT node as disabled so that the drm driver would
be able to take right decision based on that panel node status.

There might be other solutions to this issue, but given the fact that most
of boards we use we do not have access to bootloader code to modify the dt
at runtime, so with that considered we came up with this solution which
works on IFC6410 and would work on other boards too.

I have also included the mdp4 fixes in this series too so that people can
test it on IFC6410.

These are WIP patches to get more inputs and comments.


Srinivas Kandagatla (5):
  drm/edid: Add support to get edid early
  drm/edid: export edid_vendor()
  drm/panel: simple-panel: Add panel picker support.
  drm/msm: mdp4 lvds: continue if the panel is not connected
  drm/msm: mdp4 lvds: Check the panel node in detect_panel()

 drivers/gpu/drm/drm_edid.c              | 12 ++++-
 drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.c | 77 ++++++++++++++++++------------
 drivers/gpu/drm/panel/panel-simple.c    | 83 ++++++++++++++++++++++++++++++++-
 include/drm/drm_crtc.h                  |  2 +
 4 files changed, 139 insertions(+), 35 deletions(-)


More information about the dri-devel mailing list