From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yakir Subject: Re: [PATCH 03/13] drm: bridge/dw_hdmi: clean up hdmi_set_clk_regenerator() Date: Fri, 22 May 2015 23:22:47 +0800 Message-ID: <555F49C7.9060904@rock-chips.com> References: <20150509102501.GO2067@n2100.arm.linux.org.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from regular1.263xmail.com (regular1.263xmail.com [211.150.99.135]) by alsa0.perex.cz (Postfix) with ESMTP id 41244265D93 for ; Fri, 22 May 2015 17:22:50 +0200 (CEST) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: alsa-devel-bounces@alsa-project.org To: Russell King , alsa-devel@alsa-project.org, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org Cc: Fabio Estevam , David Airlie , Takashi Iwai , Mark Brown , Philipp Zabel List-Id: alsa-devel@alsa-project.org SGkgUnVzc2VsbCwKCuWcqCAyMDE1LzUvOSAxODoyNiwgUnVzc2VsbCBLaW5nIOWGmemBkzoKPiBD bGVhbiB1cCBoZG1pX3NldF9jbGtfcmVnZW5lcmF0b3IoKSBieSBhbGxvd2luZyBpdCB0byB0YWtl IHRoZSBhdWRpbwo+IHNhbXBsZSByYXRlIGFuZCByYXRpbyBkaXJlY3RseSwgcmF0aGVyIHRoYW4g aGlkaW5nIGl0IGluc2lkZSB0aGUKPiBmdW5jdGlvbi4gIFJhaXNlIHRoZSB1bnN1cHBvcnRlZCBw aXhlbCBjbG9jay9zYW1wbGUgcmF0ZSBtZXNzYWdlIGZyb20KPiBkZWJ1ZyB0byBlcnJvciBsZXZl bCBhcyB0aGlzIHJlc3VsdHMgaW4gYXVkaW8gbm90IHdvcmtpbmcgY29ycmVjdGx5Lgo+Cj4gU2ln bmVkLW9mZi1ieTogUnVzc2VsbCBLaW5nIDxybWsra2VybmVsQGFybS5saW51eC5vcmcudWs+CgpU ZXN0IG9uIFJLMzI4OCBwbGF0Zm9ybSwgaXQgd29ya3Mgd2VsbHMgd2hpbGUgZG8gbm90IG5lZWQg Y2xlYXIKdGhlIG5jdHNfYXRvbWljX3dyaXRlIGJpdCBpbiBhdWRfbjMsIHNvIG5vIG5lZWQgbW9y ZSBjb2RlIGl0J3MgZmluZC4KClRlc3QtYnk6IDx5a2tAcm9jay1jaGlwcy5jb20+CgpCZXN0IHJl Z2FyZHMsCllha2lyIFlhbmcKPiAtLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvZHdfaGRt aS5jIHwgMzIgKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KPiAgIDEgZmlsZSBjaGFu Z2VkLCAxNSBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vYnJpZGdlL2R3X2hkbWkuYyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2Uv ZHdfaGRtaS5jCj4gaW5kZXggMjNlYThjNWM4NWI2Li43NTA5OWI4MGNhN2UgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9kd19oZG1pLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vYnJpZGdlL2R3X2hkbWkuYwo+IEBAIC0zMzUsMzkgKzMzNSwzNyBAQCBzdGF0aWMgdW5zaWdu ZWQgaW50IGhkbWlfY29tcHV0ZV9jdHModW5zaWduZWQgaW50IGZyZXEsIHVuc2lnbmVkIGxvbmcg cGl4ZWxfY2xrLAo+ICAgfQo+ICAgCj4gICBzdGF0aWMgdm9pZCBoZG1pX3NldF9jbGtfcmVnZW5l cmF0b3Ioc3RydWN0IGR3X2hkbWkgKmhkbWksCj4gLQkJCQkgICAgIHVuc2lnbmVkIGxvbmcgcGl4 ZWxfY2xrKQo+ICsJdW5zaWduZWQgbG9uZyBwaXhlbF9jbGssIHVuc2lnbmVkIGludCBzYW1wbGVf cmF0ZSwgdW5zaWduZWQgaW50IHJhdGlvKQo+ICAgewo+IC0JdW5zaWduZWQgaW50IGNsa19uLCBj bGtfY3RzOwo+ICsJdW5zaWduZWQgaW50IG4sIGN0czsKPiAgIAo+IC0JY2xrX24gPSBoZG1pX2Nv bXB1dGVfbihoZG1pLT5zYW1wbGVfcmF0ZSwgcGl4ZWxfY2xrLAo+IC0JCQkgICAgICAgaGRtaS0+ cmF0aW8pOwo+IC0JY2xrX2N0cyA9IGhkbWlfY29tcHV0ZV9jdHMoaGRtaS0+c2FtcGxlX3JhdGUs IHBpeGVsX2NsaywKPiAtCQkJCSAgIGhkbWktPnJhdGlvKTsKPiAtCj4gLQlpZiAoIWNsa19jdHMp IHsKPiAtCQlkZXZfZGJnKGhkbWktPmRldiwgIiVzOiBwaXhlbCBjbG9jayBub3Qgc3VwcG9ydGVk OiAlbHVcbiIsCj4gLQkJCV9fZnVuY19fLCBwaXhlbF9jbGspOwo+IC0JCXJldHVybjsKPiArCW4g PSBoZG1pX2NvbXB1dGVfbihzYW1wbGVfcmF0ZSwgcGl4ZWxfY2xrLCByYXRpbyk7Cj4gKwljdHMg PSBoZG1pX2NvbXB1dGVfY3RzKHNhbXBsZV9yYXRlLCBwaXhlbF9jbGssIHJhdGlvKTsKPiArCWlm ICghY3RzKSB7Cj4gKwkJZGV2X2VycihoZG1pLT5kZXYsCj4gKwkJCSIlczogcGl4ZWwgY2xvY2sv c2FtcGxlIHJhdGUgbm90IHN1cHBvcnRlZDogJWx1TUh6IC8gJXVrSHpcbiIsCj4gKwkJCV9fZnVu Y19fLCBwaXhlbF9jbGssIHNhbXBsZV9yYXRlKTsKPiAgIAl9Cj4gICAKPiAtCWRldl9kYmcoaGRt aS0+ZGV2LCAiJXM6IHNhbXBsZXJhdGU9JWQgIHJhdGlvPSVkICBwaXhlbGNsaz0lbHUgIE49JWQg Y3RzPSVkXG4iLAo+IC0JCV9fZnVuY19fLCBoZG1pLT5zYW1wbGVfcmF0ZSwgaGRtaS0+cmF0aW8s Cj4gLQkJcGl4ZWxfY2xrLCBjbGtfbiwgY2xrX2N0cyk7Cj4gKwlkZXZfZGJnKGhkbWktPmRldiwg IiVzOiBzYW1wbGVyYXRlPSV1a0h6IHJhdGlvPSVkIHBpeGVsY2xrPSVsdU1IeiBOPSVkIGN0cz0l ZFxuIiwKPiArCQlfX2Z1bmNfXywgc2FtcGxlX3JhdGUsIHJhdGlvLCBwaXhlbF9jbGssIG4sIGN0 cyk7Cj4gICAKPiAtCWhkbWlfc2V0X2N0c19uKGhkbWksIGNsa19jdHMsIGNsa19uKTsKPiArCWhk bWlfc2V0X2N0c19uKGhkbWksIGN0cywgbik7Cj4gICB9Cj4gICAKPiAgIHN0YXRpYyB2b2lkIGhk bWlfaW5pdF9jbGtfcmVnZW5lcmF0b3Ioc3RydWN0IGR3X2hkbWkgKmhkbWkpCj4gICB7Cj4gICAJ bXV0ZXhfbG9jaygmaGRtaS0+YXVkaW9fbXV0ZXgpOwo+IC0JaGRtaV9zZXRfY2xrX3JlZ2VuZXJh dG9yKGhkbWksIDc0MjUwMDAwKTsKPiArCWhkbWlfc2V0X2Nsa19yZWdlbmVyYXRvcihoZG1pLCA3 NDI1MDAwMCwgaGRtaS0+c2FtcGxlX3JhdGUsCj4gKwkJCQkgaGRtaS0+cmF0aW8pOwo+ICAgCW11 dGV4X3VubG9jaygmaGRtaS0+YXVkaW9fbXV0ZXgpOwo+ICAgfQo+ICAgCj4gICBzdGF0aWMgdm9p ZCBoZG1pX2Nsa19yZWdlbmVyYXRvcl91cGRhdGVfcGl4ZWxfY2xvY2soc3RydWN0IGR3X2hkbWkg KmhkbWkpCj4gICB7Cj4gICAJbXV0ZXhfbG9jaygmaGRtaS0+YXVkaW9fbXV0ZXgpOwo+IC0JaGRt aV9zZXRfY2xrX3JlZ2VuZXJhdG9yKGhkbWksIGhkbWktPmhkbWlfZGF0YS52aWRlb19tb2RlLm1w aXhlbGNsb2NrKTsKPiArCWhkbWlfc2V0X2Nsa19yZWdlbmVyYXRvcihoZG1pLCBoZG1pLT5oZG1p X2RhdGEudmlkZW9fbW9kZS5tcGl4ZWxjbG9jaywKPiArCQkJCSBoZG1pLT5zYW1wbGVfcmF0ZSwg aGRtaS0+cmF0aW8pOwo+ICAgCW11dGV4X3VubG9jaygmaGRtaS0+YXVkaW9fbXV0ZXgpOwo+ICAg fQo+ICAgCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K QWxzYS1kZXZlbCBtYWlsaW5nIGxpc3QKQWxzYS1kZXZlbEBhbHNhLXByb2plY3Qub3JnCmh0dHA6 Ly9tYWlsbWFuLmFsc2EtcHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbHNhLWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 From: ykk@rock-chips.com (Yakir) Date: Fri, 22 May 2015 23:22:47 +0800 Subject: [PATCH 03/13] drm: bridge/dw_hdmi: clean up hdmi_set_clk_regenerator() In-Reply-To: References: <20150509102501.GO2067@n2100.arm.linux.org.uk> Message-ID: <555F49C7.9060904@rock-chips.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Hi Russell, ? 2015/5/9 18:26, Russell King ??: > Clean up hdmi_set_clk_regenerator() by allowing it to take the audio > sample rate and ratio directly, rather than hiding it inside the > function. Raise the unsupported pixel clock/sample rate message from > debug to error level as this results in audio not working correctly. > > Signed-off-by: Russell King Test on RK3288 platform, it works wells while do not need clear the ncts_atomic_write bit in aud_n3, so no need more code it's find. Test-by: Best regards, Yakir Yang > --- > drivers/gpu/drm/bridge/dw_hdmi.c | 32 +++++++++++++++----------------- > 1 file changed, 15 insertions(+), 17 deletions(-) > > diff --git a/drivers/gpu/drm/bridge/dw_hdmi.c b/drivers/gpu/drm/bridge/dw_hdmi.c > index 23ea8c5c85b6..75099b80ca7e 100644 > --- a/drivers/gpu/drm/bridge/dw_hdmi.c > +++ b/drivers/gpu/drm/bridge/dw_hdmi.c > @@ -335,39 +335,37 @@ static unsigned int hdmi_compute_cts(unsigned int freq, unsigned long pixel_clk, > } > > static void hdmi_set_clk_regenerator(struct dw_hdmi *hdmi, > - unsigned long pixel_clk) > + unsigned long pixel_clk, unsigned int sample_rate, unsigned int ratio) > { > - unsigned int clk_n, clk_cts; > + unsigned int n, cts; > > - clk_n = hdmi_compute_n(hdmi->sample_rate, pixel_clk, > - hdmi->ratio); > - clk_cts = hdmi_compute_cts(hdmi->sample_rate, pixel_clk, > - hdmi->ratio); > - > - if (!clk_cts) { > - dev_dbg(hdmi->dev, "%s: pixel clock not supported: %lu\n", > - __func__, pixel_clk); > - return; > + n = hdmi_compute_n(sample_rate, pixel_clk, ratio); > + cts = hdmi_compute_cts(sample_rate, pixel_clk, ratio); > + if (!cts) { > + dev_err(hdmi->dev, > + "%s: pixel clock/sample rate not supported: %luMHz / %ukHz\n", > + __func__, pixel_clk, sample_rate); > } > > - dev_dbg(hdmi->dev, "%s: samplerate=%d ratio=%d pixelclk=%lu N=%d cts=%d\n", > - __func__, hdmi->sample_rate, hdmi->ratio, > - pixel_clk, clk_n, clk_cts); > + dev_dbg(hdmi->dev, "%s: samplerate=%ukHz ratio=%d pixelclk=%luMHz N=%d cts=%d\n", > + __func__, sample_rate, ratio, pixel_clk, n, cts); > > - hdmi_set_cts_n(hdmi, clk_cts, clk_n); > + hdmi_set_cts_n(hdmi, cts, n); > } > > static void hdmi_init_clk_regenerator(struct dw_hdmi *hdmi) > { > mutex_lock(&hdmi->audio_mutex); > - hdmi_set_clk_regenerator(hdmi, 74250000); > + hdmi_set_clk_regenerator(hdmi, 74250000, hdmi->sample_rate, > + hdmi->ratio); > mutex_unlock(&hdmi->audio_mutex); > } > > static void hdmi_clk_regenerator_update_pixel_clock(struct dw_hdmi *hdmi) > { > mutex_lock(&hdmi->audio_mutex); > - hdmi_set_clk_regenerator(hdmi, hdmi->hdmi_data.video_mode.mpixelclock); > + hdmi_set_clk_regenerator(hdmi, hdmi->hdmi_data.video_mode.mpixelclock, > + hdmi->sample_rate, hdmi->ratio); > mutex_unlock(&hdmi->audio_mutex); > } >