devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Heiko Stuebner <heiko@sntech.de>
Cc: mark.rutland@arm.com, Jose.Abreu@synopsys.com,
	algea.cao@rock-chips.com, devicetree@vger.kernel.org,
	airlied@linux.ie, dri-devel@lists.freedesktop.org, kishon@ti.com,
	robh+dt@kernel.org, linux-rockchip@lists.infradead.org,
	linux-arm-kernel@lists.infradead.org, zhengyang@rock-chips.com
Subject: Re: [PATCH v2 3/8] drm/bridge: dw-hdmi: allow overriding of phy-type reading
Date: Wed, 21 Feb 2018 21:15:26 +0200	[thread overview]
Message-ID: <4888467.l85TM0qZuY@avalon> (raw)
In-Reply-To: <3085916.UFWCNBIZfU@phil>

Hi Heiko,

On Wednesday, 21 February 2018 20:55:12 EET Heiko Stuebner wrote:
> Am Montag, 19. Februar 2018, 20:06:40 CET schrieb Laurent Pinchart:
> > On Monday, 19 February 2018 20:46:46 EET Heiko Stuebner wrote:
> > > Am Montag, 19. Februar 2018, 17:59:02 CET schrieb Laurent Pinchart:
> > > > On Friday, 16 February 2018 22:41:53 EET Heiko Stuebner wrote:
> > > >> In some IP implementations the reading of the phy-type may be broken.
> > > >> One example are the Rockchip rk3228 and rk3328 socs that use a
> > > >> separate
> > > >> phy from Innosilicon but still report the HDMI20_TX type.
> > > >> 
> > > >> So allow the glue driver to force a specific type, like the
> > > >> vendor-phy
> > > >> for these cases.
> > > >> 
> > > >> Signed-off-by: Heiko Stuebner <heiko@sntech.de>
> > > > 
> > > > Tested-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > > 
> > > thanks for testing :-)
> > > 
> > > >> ---
> > > >> 
> > > >>  drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 4 +++-
> > > >>  include/drm/bridge/dw_hdmi.h              | 1 +
> > > >>  2 files changed, 4 insertions(+), 1 deletion(-)
> > > >> 
> > > >> diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
> > > >> b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c index
> > > >> f9802399cc0d..50d231626c4d 100644
> > > >> --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
> > > >> +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
> > > >> @@ -2218,7 +2218,9 @@ static int dw_hdmi_detect_phy(struct dw_hdmi
> > > >> *hdmi)
> > > >> 
> > > >>  	unsigned int i;
> > > >>  	u8 phy_type;
> > > >> 
> > > >> -	phy_type = hdmi_readb(hdmi, HDMI_CONFIG2_ID);
> > > >> +	phy_type = (hdmi->plat_data->phy_force_type) ?
> > > >> +				hdmi->plat_data->phy_force_type :
> > > >> +				hdmi_readb(hdmi, HDMI_CONFIG2_ID);
> > > > 
> > > > No need for parentheses. You could even write this
> > > > 
> > > >         phy_type = hdmi->plat_data->phy_force_type ?
> > > >         
> > > >                  : hdmi_readb(hdmi, HDMI_CONFIG2_ID);
> > > > 
> > > > but that's up to you.
> > > > 
> > > > What if a driver wants to force the PHY type to
> > > > DW_HDMI_PHY_DWC_HDMI_TX_PHY ? Or do you expect only the
> > > > DW_HDMI_PHY_VENDOR_PHY type to be forced ? If so, we could also use a
> > > > force_vendor_phy boolean field instead of phy_force_type.
> > > 
> > > Initially I thought of implicitly overriding the phy-type when the
> > > external
> > > phy-ops are set, but decided against it because that might break
> > > (theoretical) cases where phy-ops may be always set but only used when
> > > the ip returns a matching phy-type and thus came to just allow
> > > overriding
> > > that type reading.
> > > 
> > > As for limiting to only allow forcing the vendor type, my personal
> > > feeling
> > > would be to allow glue drivers to just override the type as needed
> > > like done in the patch. As can be seen on the rk3328, the dw-hdmi
> > > reports one of the regular phys (forgot which one) but instead has a
> > > completely separate ip for it, so I'd guess we may very well see
> > > implementations that just report a wrong type (no vendor-type).
> > > 
> > > So I don't see an issue with drivers being allowed to set the type to
> > > DW_HDMI_PHY_DWC_HDMI_TX_PHY, because such cases may exist in the
> > > future and I'd expect driver authors to somewhat know what they're
> > > doing.
> > 
> > My point was that DW_HDMI_PHY_DWC_HDMI_TX_PHY == 0, so trying to force
> > DW_HDMI_PHY_DWC_HDMI_TX_PHY through phy_force_type won't work.
> 
> Argh, ok now I get it.
> 
> So it will need some adaption for that, because allowing everything but
> DW_HDMI_PHY_DWC_HDMI_TX_PHY would be quite counter-intuitive :-) .
> 
> Expecting phy_force_type == -1 for regular reads sounds bad as well,
> because then every glue driver would need to set that, which currently
> gets solves automatically when the field is not explicitly set.
> 
> So going with your force_vendor_phy idea sounds less intrusive for the
> time being and until there is an actual case where there is a different
> internal phy-type necessary?

That's at least what I'd recommend, as I don't see any use case now for 
overriding the hardware-reported PHY type to a standard PHY type. If we ever 
end up needing that in the future we will of course support it.

-- 
Regards,

Laurent Pinchart

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

  reply	other threads:[~2018-02-21 19:15 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-02-16 20:41 [PATCH v2 0/8] drm/rockchip: hdmi support for rk3328 Heiko Stuebner
2018-02-16 20:41 ` [PATCH v2 1/8] dt-bindings: add binding for Rockchip hdmi phy using an Innosilicon IP Heiko Stuebner
2018-02-16 20:43   ` Heiko Stuebner
     [not found] ` <20180216204158.29839-1-heiko-4mtYJXux2i+zQB+pC5nmwQ@public.gmane.org>
2018-02-16 20:41   ` [PATCH v2 2/8] phy: add Rockchip Innosilicon hdmi phy Heiko Stuebner
2018-02-16 20:41   ` [PATCH v2 3/8] drm/bridge: dw-hdmi: allow overriding of phy-type reading Heiko Stuebner
2018-02-19 16:59     ` Laurent Pinchart
2018-02-19 18:46       ` Heiko Stuebner
2018-02-19 19:06         ` Laurent Pinchart
2018-02-21 18:55           ` Heiko Stuebner
2018-02-21 19:15             ` Laurent Pinchart [this message]
2018-02-16 20:41   ` [PATCH v2 4/8] drm/rockchip: dw_hdmi: Allow outputs that don't need output switching Heiko Stuebner
2018-02-19 11:43     ` Robin Murphy
2018-02-19 11:49       ` Heiko Stuebner
2018-02-16 20:41   ` [PATCH v2 5/8] dt-bindings: allow optional phys in Rockchip dw_hdmi binding Heiko Stuebner
2018-02-19 20:26     ` Rob Herring
2018-02-16 20:41   ` [PATCH v2 6/8] drm/rockchip: dw_hdmi: allow including external phys Heiko Stuebner
2018-02-16 20:41   ` [PATCH v2 7/8] drm/rockchip: dw_hdmi: store rockchip_hdmi reference in phy_data object Heiko Stuebner
2018-02-19 11:46     ` Robin Murphy
2018-02-16 20:41   ` [PATCH v2 8/8] drm/rockchip: dw_hdmi: add dw-hdmi support for the rk3328 Heiko Stuebner
2018-02-19 20:28     ` Rob Herring
2018-02-19 20:46       ` Heiko Stuebner
2018-02-20 14:32         ` Rob Herring
2018-02-21 12:07 ` [PATCH v2 0/8] drm/rockchip: hdmi support for rk3328 Robin Murphy

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=4888467.l85TM0qZuY@avalon \
    --to=laurent.pinchart@ideasonboard.com \
    --cc=Jose.Abreu@synopsys.com \
    --cc=airlied@linux.ie \
    --cc=algea.cao@rock-chips.com \
    --cc=devicetree@vger.kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=heiko@sntech.de \
    --cc=kishon@ti.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-rockchip@lists.infradead.org \
    --cc=mark.rutland@arm.com \
    --cc=robh+dt@kernel.org \
    --cc=zhengyang@rock-chips.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;
as well as URLs for NNTP newsgroup(s).