devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Philipp Zabel <p.zabel@pengutronix.de>
To: list-09@tqsc.de
Cc: devel@driverdev.osuosl.org,
	Fabio Estevam <fabio.estevam@freescale.com>,
	Sascha Hauer <s.hauer@pengutronix.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	devicetree-discuss@lists.ozlabs.org, kernel@pengutronix.de,
	Martin Fuzzey <mfuzzey@parkeon.com>, Sean Cross <xobs@kosagi.com>,
	Shawn Guo <shawn.guo@linaro.org>,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v3 06/11] staging: drm/imx: Add LDB support
Date: Fri, 07 Jun 2013 09:54:18 +0200	[thread overview]
Message-ID: <1370591658.4470.9.camel@pizza.hi.pengutronix.de> (raw)
In-Reply-To: <51B18E54.5030501@tqsc.de>

Am Freitag, den 07.06.2013, 09:40 +0200 schrieb Markus Niebel:
> Am 28.03.2013 16:23, wrote Philipp Zabel:
> > From: Sascha Hauer <s.hauer@pengutronix.de>
> > 
> > This adds support for the LVDS Display Bridge contained
> > in i.MX5 and i.MX6 SoCs.
> > 
> > Bit mapping, data width, and video timings are configurable
> > via device tree. Dual-channel mode is supported for a single
> > high-resolution source.
> > 
> > Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
> > Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
> > ---
> > Changes since v2:
> >  - Removed commented out code
> >  - Replaced magic constants
> >  - Select OF_VIDEOMODE
> > ---
> >  .../devicetree/bindings/staging/imx-drm/ldb.txt    |  99 ++++
> >  drivers/staging/imx-drm/Kconfig                    |   8 +
> >  drivers/staging/imx-drm/Makefile                   |   1 +
> >  drivers/staging/imx-drm/imx-ldb.c                  | 609 +++++++++++++++++++++
> >  4 files changed, 717 insertions(+)
> >  create mode 100644 Documentation/devicetree/bindings/staging/imx-drm/ldb.txt
> >  create mode 100644 drivers/staging/imx-drm/imx-ldb.c
> > 
[...]
> > diff --git a/drivers/staging/imx-drm/imx-ldb.c b/drivers/staging/imx-drm/imx-ldb.c
> > new file mode 100644
> > index 0000000..75607b3
> > --- /dev/null
> > +++ b/drivers/staging/imx-drm/imx-ldb.c
> > @@ -0,0 +1,609 @@
[...]
> > +static void imx_ldb_set_clock(struct imx_ldb *ldb, int mux, int chno,
> > +		unsigned long serial_clk, unsigned long di_clk)
> > +{
> > +	int ret;
> > +
> > +	dev_dbg(ldb->dev, "%s: now: %ld want: %ld\n", __func__,
> > +			clk_get_rate(ldb->clk_pll[chno]), serial_clk);
> > +	clk_set_rate(ldb->clk_pll[chno], serial_clk);
> > +
> > +	dev_dbg(ldb->dev, "%s after: %ld\n", __func__,
> > +			clk_get_rate(ldb->clk_pll[chno]));
> > +
> > +	dev_dbg(ldb->dev, "%s: now: %ld want: %ld\n", __func__,
> > +			clk_get_rate(ldb->clk[chno]),
> > +			(long int)di_clk);
> > +	clk_set_rate(ldb->clk[chno], di_clk);
> > +
> > +	dev_dbg(ldb->dev, "%s after: %ld\n", __func__,
> > +			clk_get_rate(ldb->clk[chno]));
> > +
> > +	/* set display clock mux to LDB input clock */
> 
> I think this will fail on i.MX53 with split mode enable in case of
> mux != chno, since ipu_di<n> can only be muxed to ldb_di<n>_gate.
>
>> +     ret = clk_set_parent(ldb->clk_sel[mux], ldb->clk[chno]);

That is true. We should use both ldb_di<n>_gates in split mode on
i.MX53, with both ldb_di<n>_sel derived from the same parent.

>> +     if (ret) {
>> +             dev_err(ldb->dev, "unable to set di%d parent clock to ldb_di%d\n", mux, chno);
>> +     }
>> +}
>> +
>> +static void imx_ldb_encoder_prepare(struct drm_encoder *encoder)
>> +{
>> +     struct imx_ldb_channel *imx_ldb_ch = enc_to_imx_ldb_ch(encoder);
>> +     struct imx_ldb *ldb = imx_ldb_ch->ldb;
>> +     struct drm_display_mode *mode = &encoder->crtc->mode;
>> +     unsigned long serial_clk;
>> +     unsigned long di_clk = mode->clock * 1000;
>> +     int mux = imx_drm_encoder_get_mux_id(imx_ldb_ch->imx_drm_encoder,
>> +                                          encoder->crtc);
>> +
>> +     if (ldb->ldb_ctrl & LDB_SPLIT_MODE_EN) {
>> +             /* dual channel LVDS mode */
>> +             serial_clk = 3500UL * mode->clock;
> 
> See comment in imx_ldb_set_clock
>
>> +             imx_ldb_set_clock(ldb, mux, 0, serial_clk, di_clk);
>> +             imx_ldb_set_clock(ldb, mux, 1, serial_clk, di_clk);
[...]

regards
Philipp

  reply	other threads:[~2013-06-07  7:54 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-28 15:23 [PATCH v3 0/11] LVDS Display Bridge support for i.MX Philipp Zabel
2013-03-28 15:23 ` [PATCH v3 02/11] ARM i.MX6q: export imx6q_revision Philipp Zabel
2013-03-28 15:23 ` [PATCH v3 03/11] ARM i.MX: Add imx_clk_divider_flags and imx_clk_mux_flags Philipp Zabel
2013-03-28 15:23 ` [PATCH v3 04/11] ARM i.MX53: fix ldb di divider and selector clocks Philipp Zabel
2013-03-28 15:23 ` [PATCH v3 05/11] ARM i.MX6q: " Philipp Zabel
2013-03-28 15:23 ` [PATCH v3 06/11] staging: drm/imx: Add LDB support Philipp Zabel
     [not found]   ` <1364484215-13935-7-git-send-email-p.zabel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2013-06-06 15:16     ` Shawn Guo
2013-06-06 15:54       ` Philipp Zabel
     [not found]         ` <1370534082.3931.7.camel-/rZezPiN1rtR6QfukMTsflXZhhPuCNm+@public.gmane.org>
2013-06-07  0:26           ` Shawn Guo
2013-06-07  7:40   ` Markus Niebel
2013-06-07  7:54     ` Philipp Zabel [this message]
2013-03-28 15:23 ` [PATCH v3 07/11] ARM i.MX6q: Add audio/video PLL post dividers for i.MX6q rev 1.1 Philipp Zabel
2013-03-28 15:23 ` [PATCH v3 08/11] ARM i.MX6q: set the LDB serial clock parent to the video PLL Philipp Zabel
2013-03-28 15:23 ` [PATCH v3 09/11] ARM i.MX53: Add IOMUXC GPR to device tree Philipp Zabel
2013-03-28 15:23 ` [PATCH v3 10/11] ARM i.MX53: Add LDB device " Philipp Zabel
2013-03-28 15:23 ` [PATCH v3 11/11] ARM i.MX6q: " Philipp Zabel
     [not found] ` <1364484215-13935-1-git-send-email-p.zabel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2013-03-28 15:23   ` [PATCH v3 01/11] ARM i.MX5: Move IPU clock lookups into " Philipp Zabel
2013-03-29 11:19   ` [PATCH v3 0/11] LVDS Display Bridge support for i.MX Shawn Guo
2013-03-30 11:24     ` Philipp Zabel
2013-03-29 11:44   ` Shawn Guo

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=1370591658.4470.9.camel@pizza.hi.pengutronix.de \
    --to=p.zabel@pengutronix.de \
    --cc=devel@driverdev.osuosl.org \
    --cc=devicetree-discuss@lists.ozlabs.org \
    --cc=fabio.estevam@freescale.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=kernel@pengutronix.de \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=list-09@tqsc.de \
    --cc=mfuzzey@parkeon.com \
    --cc=s.hauer@pengutronix.de \
    --cc=shawn.guo@linaro.org \
    --cc=xobs@kosagi.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).