All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnaud Pouliquen <arnaud.pouliquen@st.com>
To: Philipp Zabel <p.zabel@pengutronix.de>,
	"alsa-devel@alsa-project.org" <alsa-devel@alsa-project.org>
Cc: Jean-Francois Moine <moinejf@free.fr>,
	Koro Chen <koro.chen@mediatek.com>,
	Lars-Peter Clausen <lars@metafoo.de>,
	Russell King - ARM Linux <linux@arm.linux.org.uk>,
	Liam Girdwood <lgirdwood@gmail.com>, Jyri Sarha <jsarha@ti.com>,
	Cawa Cheng <cawa.cheng@mediatek.com>,
	Mark Brown <broonie@kernel.org>,
	"linux-mediatek@lists.infradead.org"
	<linux-mediatek@lists.infradead.org>,
	Daniel Kurtz <djkurtz@chromium.org>,
	"kernel@pengutronix.de" <kernel@pengutronix.de>,
	PC Liao <pc.liao@mediatek.com>,
	Matthias Brugger <matthias.bgg@gmail.com>
Subject: Re: [PATCH v7 9/9] drm/mediatek: hdmi: use helper function for N and CTS calculation
Date: Wed, 20 Apr 2016 11:34:13 +0200	[thread overview]
Message-ID: <57174D15.7060207@st.com> (raw)
In-Reply-To: <1461142804-26728-10-git-send-email-p.zabel@pengutronix.de>

Hello Philipp,

FYI, i'm currently finalizing a new version of the helper function with
minor updates ( typo and code optimization), i should send it tomorrow.

Regards
Arnaud

On 04/20/2016 11:00 AM, Philipp Zabel wrote:
> Use the hdmi helper function [1] to calculate N and CTS.
> 
> [1] https://patchwork.kernel.org/patch/8091531/ ("video: hdmi: add helper
>     function for N and CTS")
> 
> Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
> ---
>  drivers/gpu/drm/mediatek/mtk_hdmi.c | 85 +++++++++----------------------------
>  1 file changed, 21 insertions(+), 64 deletions(-)
> 
> diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi.c b/drivers/gpu/drm/mediatek/mtk_hdmi.c
> index 06e3811..da6edef 100644
> --- a/drivers/gpu/drm/mediatek/mtk_hdmi.c
> +++ b/drivers/gpu/drm/mediatek/mtk_hdmi.c
> @@ -656,65 +656,6 @@ static const struct hdmi_acr_n hdmi_rec_n_table[] = {
>  	{      0, {  4096,  6272,  6144 } }, /* all other TMDS clocks */
>  };
>  
> -/**
> - * hdmi_recommended_n() - Return N value recommended by HDMI specification
> - * @freq: audio sample rate in Hz
> - * @clock: rounded TMDS clock in kHz
> - */
> -static unsigned int hdmi_recommended_n(unsigned int freq, unsigned int clock)
> -{
> -	const struct hdmi_acr_n *recommended;
> -	unsigned int i;
> -
> -	for (i = 0; i < ARRAY_SIZE(hdmi_rec_n_table) - 1; i++) {
> -		if (clock == hdmi_rec_n_table[i].clock)
> -			break;
> -	}
> -	recommended = hdmi_rec_n_table + i;
> -
> -	switch (freq) {
> -	case 32000:
> -		return recommended->n[0];
> -	case 44100:
> -		return recommended->n[1];
> -	case 48000:
> -		return recommended->n[2];
> -	case 88200:
> -		return recommended->n[1] * 2;
> -	case 96000:
> -		return recommended->n[2] * 2;
> -	case 176400:
> -		return recommended->n[1] * 4;
> -	case 192000:
> -		return recommended->n[2] * 4;
> -	default:
> -		return (128 * freq) / 1000;
> -	}
> -}
> -
> -static unsigned int hdmi_mode_clock_to_hz(unsigned int clock)
> -{
> -	switch (clock) {
> -	case 25175:
> -		return 25174825;	/* 25.2/1.001 MHz */
> -	case 74176:
> -		return 74175824;	/* 74.25/1.001 MHz */
> -	case 148352:
> -		return 148351648;	/* 148.5/1.001 MHz */
> -	case 296703:
> -		return 296703297;	/* 297/1.001 MHz */
> -	default:
> -		return clock * 1000;
> -	}
> -}
> -
> -static unsigned int hdmi_expected_cts(unsigned int audio_sample_rate,
> -				      unsigned int tmds_clock, unsigned int n)
> -{
> -	return DIV_ROUND_CLOSEST_ULL((u64)hdmi_mode_clock_to_hz(tmds_clock) * n,
> -				     128 * audio_sample_rate);
> -}
> -
>  static void do_hdmi_hw_aud_set_ncts(struct mtk_hdmi *hdmi, unsigned int n,
>  				    unsigned int cts)
>  {
> @@ -739,21 +680,37 @@ static void do_hdmi_hw_aud_set_ncts(struct mtk_hdmi *hdmi, unsigned int n,
>  		mtk_hdmi_write(hdmi, GRL_NCTS, val[i]);
>  }
>  
> +static unsigned int hdmi_mode_clock_to_hz(unsigned int clock)
> +{
> +	switch (clock) {
> +	case 25175:
> +		return 25174825;	/* 25.2/1.001 MHz */
> +	case 74176:
> +		return 74175824;	/* 74.25/1.001 MHz */
> +	case 148352:
> +		return 148351648;	/* 148.5/1.001 MHz */
> +	case 296703:
> +		return 296703296;	/* 297/1.001 MHz */
> +	default:
> +		return clock * 1000;
> +	}
> +}
> +
>  static void mtk_hdmi_hw_aud_set_ncts(struct mtk_hdmi *hdmi,
>  				     unsigned int sample_rate,
>  				     unsigned int clock)
>  {
> -	unsigned int n, cts;
> +	struct hdmi_audio_n_cts n_cts;
>  
> -	n = hdmi_recommended_n(sample_rate, clock);
> -	cts = hdmi_expected_cts(sample_rate, clock, n);
> +	hdmi_audio_get_coherent_n_cts(sample_rate, hdmi_mode_clock_to_hz(clock),
> +				      &n_cts);
>  
>  	dev_dbg(hdmi->dev, "%s: sample_rate=%u, clock=%d, cts=%u, n=%u\n",
> -		__func__, sample_rate, clock, n, cts);
> +		__func__, sample_rate, clock, n_cts.cts, n_cts.n);
>  
>  	mtk_hdmi_mask(hdmi, DUMMY_304, AUDIO_I2S_NCTS_SEL_64,
>  		      AUDIO_I2S_NCTS_SEL);
> -	do_hdmi_hw_aud_set_ncts(hdmi, n, cts);
> +	do_hdmi_hw_aud_set_ncts(hdmi, n_cts.n, n_cts.cts);
>  }
>  
>  static u8 mtk_hdmi_aud_get_chnl_count(enum hdmi_aud_channel_type channel_type)
> 

      reply	other threads:[~2016-04-20  9:34 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-20  8:59 [PATCH v7 0/9] ASoC: MT8173 HDMI codec support Philipp Zabel
2016-04-20  8:59 ` [PATCH v7 1/9] ASoC: mediatek: Add HDMI dai-links in the mt8173-rt5650-rt5676 machine driver Philipp Zabel
     [not found] ` <1461142804-26728-1-git-send-email-p.zabel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2016-04-20  8:59   ` [PATCH v7 2/9] ASoC: mediatek: Add HDMI dai-links to the mt8173-rt5650 " Philipp Zabel
     [not found]     ` <1461142804-26728-3-git-send-email-p.zabel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2016-04-21 16:15       ` Mark Brown
2016-04-20  8:59   ` [PATCH v7 3/9] ASoC: hdmi-codec: Add ELD control Philipp Zabel
2016-04-21 16:18     ` Applied "ASoC: hdmi-codec: Add ELD control" to the asoc tree Mark Brown
2016-04-27  9:42       ` Russell King - ARM Linux
2016-04-27 10:14         ` Mark Brown
2016-04-20  8:59   ` [PATCH v7 4/9] video: rmk's HDMI notification prototype Philipp Zabel
2016-04-20  9:00   ` [PATCH v7 5/9] ASoC: hdmi-codec: Use HDMI notifications to add jack support Philipp Zabel
2016-04-20  9:00   ` [PATCH v7 6/9] ASoC: mediatek: Add jack detection support to mt8173-rt5650-rt5676 machine driver Philipp Zabel
2016-04-20  9:00   ` [PATCH v7 7/9] ASoC: mediatek: Add jack detection support to the mt8173-rt5650 " Philipp Zabel
2016-04-20  9:00   ` [PATCH v7 8/9] drm/mediatek: hdmi: issue notifications Philipp Zabel
2016-04-20  9:00   ` [PATCH v7 9/9] drm/mediatek: hdmi: use helper function for N and CTS calculation Philipp Zabel
2016-04-20  9:34     ` Arnaud Pouliquen [this message]

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=57174D15.7060207@st.com \
    --to=arnaud.pouliquen@st.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=broonie@kernel.org \
    --cc=cawa.cheng@mediatek.com \
    --cc=djkurtz@chromium.org \
    --cc=jsarha@ti.com \
    --cc=kernel@pengutronix.de \
    --cc=koro.chen@mediatek.com \
    --cc=lars@metafoo.de \
    --cc=lgirdwood@gmail.com \
    --cc=linux-mediatek@lists.infradead.org \
    --cc=linux@arm.linux.org.uk \
    --cc=matthias.bgg@gmail.com \
    --cc=moinejf@free.fr \
    --cc=p.zabel@pengutronix.de \
    --cc=pc.liao@mediatek.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.