Linux ARM-MSM sub-architecture
 help / color / mirror / Atom feed
From: Sean Paul <seanpaul@chromium.org>
To: Thierry Reding <thierry.reding@gmail.com>
Cc: linux-arm-msm@vger.kernel.org,
	"open list:DRM PANEL DRIVERS" <dri-devel@lists.freedesktop.org>,
	hoegsberg@google.com, abhinavk@codeaurora.org,
	chandanu@codeaurora.org
Subject: Re: [PATCH v5 1/2] drm/panel: Add support for Truly NT35597 panel
Date: Thu, 9 Aug 2018 13:51:25 -0400	[thread overview]
Message-ID: <20180809175125.GR20303@art_vandelay> (raw)
In-Reply-To: <20180809105349.GD21639@ulmo>

On Thu, Aug 09, 2018 at 12:53:49PM +0200, Thierry Reding wrote:
> On Fri, Aug 03, 2018 at 01:03:45PM +0200, Linus Walleij wrote:
> > On Fri, Aug 3, 2018 at 4:49 AM Abhinav Kumar <abhinavk@codeaurora.org> wrote:
> > 
> > Hi Abhinav,
> > 
> > > From: "abhinavk@codeaurora.org" <abhinavk@codeaurora.org>
> > >
> > > Add support for Truly NT35597 panel used
> > > in MSM reference platforms.
> > >
> > > This panel supports both single DSI and dual DSI
> > > modes.
> > >
> > > However, this patch series adds support only for
> > > dual DSI mode.
> > >
> > > Changes in v5:
> > > - Added comments for the delays
> > > - Fix error messages and return code
> > > - Start using backlight_enable/disable helpers
> > > - Start using ARRAY_SIZE everywhere
> > > - Split the panel commands into three sets to
> > >   remove redundant structure fields and simplify
> > >   the DCS command sending method
> > > - Use of_get_drm_display_mode() and simplify
> > >   get_modes function
> > > - Remove truly_wqxga_panel_del and do necessary
> > >   cleanup
> > > - Replace dev_err with DRM_DEV_ERROR
> > >
> > > Signed-off-by: Archit Taneja <architt@codeaurora.org>
> > > Signed-off-by: Abhinav Kumar <abhinavk@codeaurora.org>
> > 
> > Overall this driver looks good to me.
> > 
> > Just a question:
> > 
> > > +struct cmd_set panel_cmds_set_1[] = {
> > > +       /* CMD2_P0 */
> > > +       { { 0xff, 0x20 } },
> > > +       { { 0xfb, 0x01 } },
> > > +       { { 0x00, 0x01 } },
> > 
> > This is what we call a jam table, I guess "magic init sequence".
> > 
> > There are some comments on what the different sections do, but in
> > cases like this where there is no public datasheet, it would be nice
> > to use some #defines rather than opaque hex codes, if you know what
> > the different commands actually mean.
> > 
> > This is in order to help others with hacking on the driver.
> > 
> > If you don't have more info than this it's fine, just asking.
> > 
> > > +       /* Resolution:1440x2560 */
> > > +       { { 0x72, 0x02 } },
> > 
> > This is for example quite hard-coded. One gets the idea that the
> > resolution is dynamic and that this is not really a panel per se but
> > a panel driver, so the Truly NT35597 is not a panel but a panel driver
> > that can be configured to be used with several physical panels.
> > 
> > Compare to other panel drivers such as Ilitek ILI9322 that is in this
> > driver dir. There I make it a bit more transparent what the panel driver
> > is actually doing on the inside, so if we find it is used with other
> > physical panels we can reuse the code more easily.
> > 
> > > +       truly_write_buf_func(ret, truly_dcs_write_buf,
> > > +               panel, SHORT_PACKET,
> > > +               ARRAY_SIZE(panel_cmds_set_1),
> > > +               panel_cmds_set_1);
> > 
> > Instead of calling these "cmd_set_1" name them after what the
> > command set actually does so we can follow the init flow.
> > If you don't know what the commands do you could as well
> > call it "magic 1", "magic 2" etc so we know it is magic.
> > 
> > > +static const struct of_device_id truly_wqxga_of_match[] = {
> > > +       { .compatible = "truly,nt35597", },
> > 
> > If this is a panel driver that not only configurable for wqxga but actually
> > also other resolutions this is misleading.
> > 
> > I suspect this is indeed a panel driver and not a panel with integrated
> > driver. I think the best is to define two compatible strings like
> > we do for ILI9322:
> > "truly,nt35597", "qcom,reference-design-name-display";
> 
> I don't understand why we need the two compatible strings for this.
> Having "truly,nt35597" isn't quite correct in that case, because in
> itself that doesn't contain enough information for any programming.
> 
> If that chip can indeed be used to drive different panels, what we
> really need is the a compatible string that describes the complete
> assembly. In the driver we could then rely on parameterized common
> code that the panel driver can call into in order to program the
> driver chip.

+1 (fwiw)

I doubt the generic string is ever going to be useful on its own, but it could
always be added later with a refactor of the code to tease out the generic bits.
Given that the TCON vendor won't give up the docs for the magic initialization
sequance, getting to a generic implementation is going to take a bit of work
anyways.

Sean

> 
> Note that a driver is assumed to know what to do with a device that
> it gets bound to based on the compatible string. If some OS implements a
> driver for "truly,nt35597" but not "qcom,reference-design-name-display",
> then what is it supposed to do if it encounters the above list of
> compatible strings? It can't really program a mode because its missing
> essential information such as resolution or timings.
> 
> Thierry



-- 
Sean Paul, Software Engineer, Google / Chromium OS
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

  reply	other threads:[~2018-08-09 17:51 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-08-03  2:49 [PATCH v5 1/2] drm/panel: Add support for Truly NT35597 panel Abhinav Kumar
2018-08-03  2:49 ` [PATCH v5 2/2] dt-bindings: Add Truly NT35597 panel bindings Abhinav Kumar
2018-08-03 11:20   ` Linus Walleij
2018-08-03 21:31     ` abhinavk
2018-08-03 11:03 ` [PATCH v5 1/2] drm/panel: Add support for Truly NT35597 panel Linus Walleij
2018-08-03 21:25   ` abhinavk
2018-08-09 10:53   ` Thierry Reding
2018-08-09 17:51     ` Sean Paul [this message]
2018-08-10  1:54       ` abhinavk
2018-08-10  8:44     ` Linus Walleij
  -- strict thread matches above, loose matches on Subject: below --
2018-08-03  3:09 Abhinav Kumar
2018-08-03 16:47 ` kbuild test robot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180809175125.GR20303@art_vandelay \
    --to=seanpaul@chromium.org \
    --cc=abhinavk@codeaurora.org \
    --cc=chandanu@codeaurora.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=hoegsberg@google.com \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=thierry.reding@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox