From mboxrd@z Thu Jan 1 00:00:00 1970 From: Heiko Stuebner Subject: Re: [PATCH v4 03/38] drm/bridge: analogix_dp: detect Sink PSR state after configuring the PSR Date: Thu, 08 Mar 2018 23:53:08 +0100 Message-ID: <2008042.2u3JRVEU5A@phil> References: <20180305222324.5872-1-enric.balletbo@collabora.com> <20180305222324.5872-4-enric.balletbo@collabora.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180305222324.5872-4-enric.balletbo@collabora.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Enric Balletbo i Serra Cc: dianders@chromium.org, wzz@rock-chips.com, hl@rock-chips.com, airlied@linux.ie, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, tfiga@chromium.org, linux-rockchip@lists.infradead.org, thierry.reding@gmail.com, Yakir Yang , =?ISO-8859-1?Q?St=E9phane?= Marchesin , orjan.eide@arm.com, m.szyprowski@samsung.com, hshi@chromium.org List-Id: linux-rockchip.vger.kernel.org SGkgRW5yaWMsCgpBbSBNb250YWcsIDUuIE3DpHJ6IDIwMTgsIDIzOjIyOjU1IENFVCBzY2hyaWVi IEVucmljIEJhbGxldGJvIGkgU2VycmE6Cj4gRnJvbTogWWFraXIgWWFuZyA8eWtrQHJvY2stY2hp cHMuY29tPgo+IAo+IE1ha2Ugc3VyZSB0aGUgcmVxdWVzdCBQU1Igc3RhdGUgdGFrZXMgZWZmZWN0 IGluIGFuYWxvZ2l4X2RwX3NlbmRfcHNyX3NwZCgpCj4gZnVuY3Rpb24sIG9yIHByaW50IHRoZSBz aW5rIFBTUiBlcnJvciBzdGF0ZSBpZiB3ZSBmYWlsZWQgdG8gYXBwbHkgdGhlCj4gcmVxdWVzdGVk IFBTUiBzZXR0aW5nLgo+IAo+IENjOiDlvoHlop4g546LIDx3enpAcm9jay1jaGlwcy5jb20+Cj4g Q2M6IFN0w6lwaGFuZSBNYXJjaGVzaW4gPG1hcmNoZXVAY2hyb21pdW0ub3JnPgo+IFNpZ25lZC1v ZmYtYnk6IFlha2lyIFlhbmcgPHlra0Byb2NrLWNoaXBzLmNvbT4KPiBbc2VhbnBhdWwgY2hhbmdl ZCB0aW1lb3V0IGxvb3AgdG8gYSByZWFkeCBwb2xsXQo+IFNpZ25lZC1vZmYtYnk6IFNlYW4gUGF1 bCA8c2VhbnBhdWxAY2hyb21pdW0ub3JnPgo+IFNpZ25lZC1vZmYtYnk6IFRoaWVycnkgRXNjYW5k ZSA8dGhpZXJyeS5lc2NhbmRlQGNvbGxhYm9yYS5jb20+Cj4gU2lnbmVkLW9mZi1ieTogRW5yaWMg QmFsbGV0Ym8gaSBTZXJyYSA8ZW5yaWMuYmFsbGV0Ym9AY29sbGFib3JhLmNvbT4KCmFzIHRoaXMg bW9kaWZpZXMgdGhlIGdlbmVyaWMgcGFydCBvZiB0aGUgYW5hbG9naXhfZHAsIEkgdGhpbmsgd2Un bGwKbmVlZCBzb21lIGZvcm0gb2YgQWNrIGZyb20gdGhlIGRybS1icmlkZ2UgbWFpbnRhaW5lcnMu CltPciBicmlkZ2UgbWFpbnRhaW5lcnMgYXBwbHlpbmcgaXRdLgpDaGFuZ2UgaXRzZWxmIGxvb2tz IGdvb2QsIGF0IGxlYXN0IHRvIG1lIDotKSAuCgpJdCBzZWVtcyB5b3VyIHJlY2lwaWVudCBsaXN0 IGlzIG1pc3Npbmcgc29tZSBicmlkZ2UgbWFpbnRhaW5lcnMgdGhvdWdoLgpNQUlOVEFJTkVSUywg dGVsbHMgdXMgdGhhdAoJQXJjaGl0IFRhbmVqYSA8YXJjaGl0dEBjb2RlYXVyb3JhLm9yZz4KCUFu ZHJ6ZWogSGFqZGEgPGEuaGFqZGFAc2Ftc3VuZy5jb20+CglMYXVyZW50IFBpbmNoYXJ0IDxMYXVy ZW50LnBpbmNoYXJ0QGlkZWFzb25ib2FyZC5jb20+CnNob3VsZCBiZSBDQ2VkLCBidXQgcmlnaHQg bm93IEkgb25seSBzZWUgQXJjaGl0LgoKQXMgdGhlcmUgYXJlIHF1aXRlIGEgbG90IG9mIGdlbmVy YWwgcGF0Y2hlcyBpbiBoZXJlLCBJJ2QgdGhpbmsgdGhpcyBjYWxscwpmb3IgYSB2NSwgaW5jbHVk aW5nIE1hcmVrcyB0ZXN0ZWQtdGFnIGFuZCBpbmNsdWRpbmcgdGhlIG1pc3NpbmcgcGVvcGxlLgoK CkhlaWtvCgo+IAo+ICBkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2FuYWxvZ2l4L2FuYWxvZ2l4X2Rw X2NvcmUuYyB8ICA2ICsrLS0KPiAgZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9hbmFsb2dpeC9hbmFs b2dpeF9kcF9jb3JlLmggfCAgNiArKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvYW5hbG9n aXgvYW5hbG9naXhfZHBfcmVnLmMgIHwgMzUgKysrKysrKysrKysrKysrKysrKy0tLQo+ICAzIGZp bGVzIGNoYW5nZWQsIDM3IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2FuYWxvZ2l4L2FuYWxvZ2l4X2RwX2NvcmUu YyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvYW5hbG9naXgvYW5hbG9naXhfZHBfY29yZS5jCj4g aW5kZXggYTY5M2FiMzA3OGYwLi5lNzM4YWE2ZGUxYWYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2JyaWRnZS9hbmFsb2dpeC9hbmFsb2dpeF9kcF9jb3JlLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vYnJpZGdlL2FuYWxvZ2l4L2FuYWxvZ2l4X2RwX2NvcmUuYwo+IEBAIC0xMjIsOCAr MTIyLDcgQEAgaW50IGFuYWxvZ2l4X2RwX2VuYWJsZV9wc3Ioc3RydWN0IGFuYWxvZ2l4X2RwX2Rl dmljZSAqZHApCj4gIAlwc3JfdnNjLkRCMCA9IDA7Cj4gIAlwc3JfdnNjLkRCMSA9IEVEUF9WU0Nf UFNSX1NUQVRFX0FDVElWRSB8IEVEUF9WU0NfUFNSX0NSQ19WQUxVRVNfVkFMSUQ7Cj4gIAo+IC0J YW5hbG9naXhfZHBfc2VuZF9wc3Jfc3BkKGRwLCAmcHNyX3ZzYyk7Cj4gLQlyZXR1cm4gMDsKPiAr CXJldHVybiBhbmFsb2dpeF9kcF9zZW5kX3Bzcl9zcGQoZHAsICZwc3JfdnNjKTsKPiAgfQo+ICBF WFBPUlRfU1lNQk9MX0dQTChhbmFsb2dpeF9kcF9lbmFibGVfcHNyKTsKPiAgCj4gQEAgLTE0OSw4 ICsxNDgsNyBAQCBpbnQgYW5hbG9naXhfZHBfZGlzYWJsZV9wc3Ioc3RydWN0IGFuYWxvZ2l4X2Rw X2RldmljZSAqZHApCj4gIAlpZiAocmV0ICE9IDEpCj4gIAkJZGV2X2VycihkcC0+ZGV2LCAiRmFp bGVkIHRvIHNldCBEUCBQb3dlcjAgJWRcbiIsIHJldCk7Cj4gIAo+IC0JYW5hbG9naXhfZHBfc2Vu ZF9wc3Jfc3BkKGRwLCAmcHNyX3ZzYyk7Cj4gLQlyZXR1cm4gMDsKPiArCXJldHVybiBhbmFsb2dp eF9kcF9zZW5kX3Bzcl9zcGQoZHAsICZwc3JfdnNjKTsKPiAgfQo+ICBFWFBPUlRfU1lNQk9MX0dQ TChhbmFsb2dpeF9kcF9kaXNhYmxlX3Bzcik7Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vYnJpZGdlL2FuYWxvZ2l4L2FuYWxvZ2l4X2RwX2NvcmUuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9icmlkZ2UvYW5hbG9naXgvYW5hbG9naXhfZHBfY29yZS5oCj4gaW5kZXggNWM2YTI4ODA2MTI5 Li5iMDM5YjI4ZDhmY2MgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9hbmFs b2dpeC9hbmFsb2dpeF9kcF9jb3JlLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2Fu YWxvZ2l4L2FuYWxvZ2l4X2RwX2NvcmUuaAo+IEBAIC0yMCw2ICsyMCw4IEBACj4gICNkZWZpbmUg TUFYX0NSX0xPT1AgNQo+ICAjZGVmaW5lIE1BWF9FUV9MT09QIDUKPiAgCj4gKyNkZWZpbmUgRFBf VElNRU9VVF9QU1JfTE9PUF9NUwkJCTMwMAo+ICsKPiAgLyogRFBfTUFYX0xBTkVfQ09VTlQgKi8K PiAgI2RlZmluZSBEUENEX0VOSEFOQ0VEX0ZSQU1FX0NBUCh4KQkJKCgoeCkgPj4gNykgJiAweDEp Cj4gICNkZWZpbmUgRFBDRF9NQVhfTEFORV9DT1VOVCh4KQkJCSgoeCkgJiAweDFmKQo+IEBAIC0y NDcsOCArMjQ5LDggQEAgdm9pZCBhbmFsb2dpeF9kcF9jb25maWdfdmlkZW9fc2xhdmVfbW9kZShz dHJ1Y3QgYW5hbG9naXhfZHBfZGV2aWNlICpkcCk7Cj4gIHZvaWQgYW5hbG9naXhfZHBfZW5hYmxl X3NjcmFtYmxpbmcoc3RydWN0IGFuYWxvZ2l4X2RwX2RldmljZSAqZHApOwo+ICB2b2lkIGFuYWxv Z2l4X2RwX2Rpc2FibGVfc2NyYW1ibGluZyhzdHJ1Y3QgYW5hbG9naXhfZHBfZGV2aWNlICpkcCk7 Cj4gIHZvaWQgYW5hbG9naXhfZHBfZW5hYmxlX3Bzcl9jcmMoc3RydWN0IGFuYWxvZ2l4X2RwX2Rl dmljZSAqZHApOwo+IC12b2lkIGFuYWxvZ2l4X2RwX3NlbmRfcHNyX3NwZChzdHJ1Y3QgYW5hbG9n aXhfZHBfZGV2aWNlICpkcCwKPiAtCQkJICAgICAgc3RydWN0IGVkcF92c2NfcHNyICp2c2MpOwo+ ICtpbnQgYW5hbG9naXhfZHBfc2VuZF9wc3Jfc3BkKHN0cnVjdCBhbmFsb2dpeF9kcF9kZXZpY2Ug KmRwLAo+ICsJCQkgICAgIHN0cnVjdCBlZHBfdnNjX3BzciAqdnNjKTsKPiAgc3NpemVfdCBhbmFs b2dpeF9kcF90cmFuc2ZlcihzdHJ1Y3QgYW5hbG9naXhfZHBfZGV2aWNlICpkcCwKPiAgCQkJICAg ICBzdHJ1Y3QgZHJtX2RwX2F1eF9tc2cgKm1zZyk7Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vYnJpZGdlL2FuYWxvZ2l4L2FuYWxvZ2l4X2RwX3JlZy5jIGIvZHJpdmVycy9ncHUv ZHJtL2JyaWRnZS9hbmFsb2dpeC9hbmFsb2dpeF9kcF9yZWcuYwo+IGluZGV4IDMwMzA4M2FkMjhl My4uMDA1YTNmNzAwNWQyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvYW5h bG9naXgvYW5hbG9naXhfZHBfcmVnLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2Fu YWxvZ2l4L2FuYWxvZ2l4X2RwX3JlZy5jCj4gQEAgLTEwLDEwICsxMCwxMSBAQAo+ICAgKiBvcHRp b24pIGFueSBsYXRlciB2ZXJzaW9uLgo+ICAgKi8KPiAgCj4gLSNpbmNsdWRlIDxsaW51eC9kZXZp Y2UuaD4KPiAtI2luY2x1ZGUgPGxpbnV4L2lvLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9kZWxheS5o Pgo+ICsjaW5jbHVkZSA8bGludXgvZGV2aWNlLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9ncGlvLmg+ Cj4gKyNpbmNsdWRlIDxsaW51eC9pby5oPgo+ICsjaW5jbHVkZSA8bGludXgvaW9wb2xsLmg+Cj4g IAo+ICAjaW5jbHVkZSA8ZHJtL2JyaWRnZS9hbmFsb2dpeF9kcC5oPgo+ICAKPiBAQCAtOTkyLDEw ICs5OTMsMjUgQEAgdm9pZCBhbmFsb2dpeF9kcF9lbmFibGVfcHNyX2NyYyhzdHJ1Y3QgYW5hbG9n aXhfZHBfZGV2aWNlICpkcCkKPiAgCXdyaXRlbChQU1JfVklEX0NSQ19FTkFCTEUsIGRwLT5yZWdf YmFzZSArIEFOQUxPR0lYX0RQX0NSQ19DT04pOwo+ICB9Cj4gIAo+IC12b2lkIGFuYWxvZ2l4X2Rw X3NlbmRfcHNyX3NwZChzdHJ1Y3QgYW5hbG9naXhfZHBfZGV2aWNlICpkcCwKPiAtCQkJICAgICAg c3RydWN0IGVkcF92c2NfcHNyICp2c2MpCj4gK3N0YXRpYyBzc2l6ZV90IGFuYWxvZ2l4X2RwX2dl dF9wc3Jfc3RhdHVzKHN0cnVjdCBhbmFsb2dpeF9kcF9kZXZpY2UgKmRwKQo+ICt7Cj4gKwlzc2l6 ZV90IHZhbDsKPiArCXU4IHN0YXR1czsKPiArCj4gKwl2YWwgPSBkcm1fZHBfZHBjZF9yZWFkYigm ZHAtPmF1eCwgRFBfUFNSX1NUQVRVUywgJnN0YXR1cyk7Cj4gKwlpZiAodmFsIDwgMCkgewo+ICsJ CWRldl9lcnIoZHAtPmRldiwgIlBTUl9TVEFUVVMgcmVhZCBmYWlsZWQgcmV0PSV6ZCIsIHZhbCk7 Cj4gKwkJcmV0dXJuIHZhbDsKPiArCX0KPiArCXJldHVybiBzdGF0dXM7Cj4gK30KPiArCj4gK2lu dCBhbmFsb2dpeF9kcF9zZW5kX3Bzcl9zcGQoc3RydWN0IGFuYWxvZ2l4X2RwX2RldmljZSAqZHAs Cj4gKwkJCSAgICAgc3RydWN0IGVkcF92c2NfcHNyICp2c2MpCj4gIHsKPiAgCXVuc2lnbmVkIGlu dCB2YWw7Cj4gKwlpbnQgcmV0Owo+ICsJc3NpemVfdCBwc3Jfc3RhdHVzOwo+ICAKPiAgCS8qIGRv bid0IHNlbmQgaW5mbyBmcmFtZSAqLwo+ICAJdmFsID0gcmVhZGwoZHAtPnJlZ19iYXNlICsgQU5B TE9HSVhfRFBfUEtUX1NFTkRfQ1RMKTsKPiBAQCAtMTAzNiw2ICsxMDUyLDE3IEBAIHZvaWQgYW5h bG9naXhfZHBfc2VuZF9wc3Jfc3BkKHN0cnVjdCBhbmFsb2dpeF9kcF9kZXZpY2UgKmRwLAo+ICAJ dmFsID0gcmVhZGwoZHAtPnJlZ19iYXNlICsgQU5BTE9HSVhfRFBfUEtUX1NFTkRfQ1RMKTsKPiAg CXZhbCB8PSBJRl9FTjsKPiAgCXdyaXRlbCh2YWwsIGRwLT5yZWdfYmFzZSArIEFOQUxPR0lYX0RQ X1BLVF9TRU5EX0NUTCk7Cj4gKwo+ICsJcmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KGFuYWxvZ2l4 X2RwX2dldF9wc3Jfc3RhdHVzLCBkcCwgcHNyX3N0YXR1cywKPiArCQlwc3Jfc3RhdHVzID49IDAg JiYKPiArCQkoKHZzYy0+REIxICYmIHBzcl9zdGF0dXMgPT0gRFBfUFNSX1NJTktfQUNUSVZFX1JG QikgfHwKPiArCQkoIXZzYy0+REIxICYmIHBzcl9zdGF0dXMgPT0gRFBfUFNSX1NJTktfSU5BQ1RJ VkUpKSwgMTUwMCwKPiArCQlEUF9USU1FT1VUX1BTUl9MT09QX01TICogMTAwMCk7Cj4gKwlpZiAo cmV0KSB7Cj4gKwkJZGV2X3dhcm4oZHAtPmRldiwgIkZhaWxlZCB0byBhcHBseSBQU1IgJWRcbiIs IHJldCk7Cj4gKwkJcmV0dXJuIHJldDsKPiArCX0KPiArCXJldHVybiAwOwo+ICB9Cj4gIAo+ICBz c2l6ZV90IGFuYWxvZ2l4X2RwX3RyYW5zZmVyKHN0cnVjdCBhbmFsb2dpeF9kcF9kZXZpY2UgKmRw LAo+IAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRy aS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1750966AbeCHWxP convert rfc822-to-8bit (ORCPT ); Thu, 8 Mar 2018 17:53:15 -0500 Received: from gloria.sntech.de ([95.129.55.99]:34380 "EHLO gloria.sntech.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750792AbeCHWxN (ORCPT ); Thu, 8 Mar 2018 17:53:13 -0500 From: Heiko Stuebner To: Enric Balletbo i Serra Cc: architt@codeaurora.org, inki.dae@samsung.com, thierry.reding@gmail.com, hjc@rock-chips.com, seanpaul@chromium.org, airlied@linux.ie, tfiga@chromium.org, hshi@chromium.org, wzz@rock-chips.com, hl@rock-chips.com, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, dianders@chromium.org, linux-rockchip@lists.infradead.org, orjan.eide@arm.com, m.szyprowski@samsung.com, Yakir Yang , =?ISO-8859-1?Q?St=E9phane?= Marchesin Subject: Re: [PATCH v4 03/38] drm/bridge: analogix_dp: detect Sink PSR state after configuring the PSR Date: Thu, 08 Mar 2018 23:53:08 +0100 Message-ID: <2008042.2u3JRVEU5A@phil> In-Reply-To: <20180305222324.5872-4-enric.balletbo@collabora.com> References: <20180305222324.5872-1-enric.balletbo@collabora.com> <20180305222324.5872-4-enric.balletbo@collabora.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8BIT Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Enric, Am Montag, 5. März 2018, 23:22:55 CET schrieb Enric Balletbo i Serra: > From: Yakir Yang > > Make sure the request PSR state takes effect in analogix_dp_send_psr_spd() > function, or print the sink PSR error state if we failed to apply the > requested PSR setting. > > Cc: 征增 王 > Cc: Stéphane Marchesin > Signed-off-by: Yakir Yang > [seanpaul changed timeout loop to a readx poll] > Signed-off-by: Sean Paul > Signed-off-by: Thierry Escande > Signed-off-by: Enric Balletbo i Serra as this modifies the generic part of the analogix_dp, I think we'll need some form of Ack from the drm-bridge maintainers. [Or bridge maintainers applying it]. Change itself looks good, at least to me :-) . It seems your recipient list is missing some bridge maintainers though. MAINTAINERS, tells us that Archit Taneja Andrzej Hajda Laurent Pinchart should be CCed, but right now I only see Archit. As there are quite a lot of general patches in here, I'd think this calls for a v5, including Mareks tested-tag and including the missing people. Heiko > > drivers/gpu/drm/bridge/analogix/analogix_dp_core.c | 6 ++-- > drivers/gpu/drm/bridge/analogix/analogix_dp_core.h | 6 ++-- > drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c | 35 +++++++++++++++++++--- > 3 files changed, 37 insertions(+), 10 deletions(-) > > diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c > index a693ab3078f0..e738aa6de1af 100644 > --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c > +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c > @@ -122,8 +122,7 @@ int analogix_dp_enable_psr(struct analogix_dp_device *dp) > psr_vsc.DB0 = 0; > psr_vsc.DB1 = EDP_VSC_PSR_STATE_ACTIVE | EDP_VSC_PSR_CRC_VALUES_VALID; > > - analogix_dp_send_psr_spd(dp, &psr_vsc); > - return 0; > + return analogix_dp_send_psr_spd(dp, &psr_vsc); > } > EXPORT_SYMBOL_GPL(analogix_dp_enable_psr); > > @@ -149,8 +148,7 @@ int analogix_dp_disable_psr(struct analogix_dp_device *dp) > if (ret != 1) > dev_err(dp->dev, "Failed to set DP Power0 %d\n", ret); > > - analogix_dp_send_psr_spd(dp, &psr_vsc); > - return 0; > + return analogix_dp_send_psr_spd(dp, &psr_vsc); > } > EXPORT_SYMBOL_GPL(analogix_dp_disable_psr); > > diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.h b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.h > index 5c6a28806129..b039b28d8fcc 100644 > --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.h > +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.h > @@ -20,6 +20,8 @@ > #define MAX_CR_LOOP 5 > #define MAX_EQ_LOOP 5 > > +#define DP_TIMEOUT_PSR_LOOP_MS 300 > + > /* DP_MAX_LANE_COUNT */ > #define DPCD_ENHANCED_FRAME_CAP(x) (((x) >> 7) & 0x1) > #define DPCD_MAX_LANE_COUNT(x) ((x) & 0x1f) > @@ -247,8 +249,8 @@ void analogix_dp_config_video_slave_mode(struct analogix_dp_device *dp); > void analogix_dp_enable_scrambling(struct analogix_dp_device *dp); > void analogix_dp_disable_scrambling(struct analogix_dp_device *dp); > void analogix_dp_enable_psr_crc(struct analogix_dp_device *dp); > -void analogix_dp_send_psr_spd(struct analogix_dp_device *dp, > - struct edp_vsc_psr *vsc); > +int analogix_dp_send_psr_spd(struct analogix_dp_device *dp, > + struct edp_vsc_psr *vsc); > ssize_t analogix_dp_transfer(struct analogix_dp_device *dp, > struct drm_dp_aux_msg *msg); > > diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c b/drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c > index 303083ad28e3..005a3f7005d2 100644 > --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c > +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c > @@ -10,10 +10,11 @@ > * option) any later version. > */ > > -#include > -#include > #include > +#include > #include > +#include > +#include > > #include > > @@ -992,10 +993,25 @@ void analogix_dp_enable_psr_crc(struct analogix_dp_device *dp) > writel(PSR_VID_CRC_ENABLE, dp->reg_base + ANALOGIX_DP_CRC_CON); > } > > -void analogix_dp_send_psr_spd(struct analogix_dp_device *dp, > - struct edp_vsc_psr *vsc) > +static ssize_t analogix_dp_get_psr_status(struct analogix_dp_device *dp) > +{ > + ssize_t val; > + u8 status; > + > + val = drm_dp_dpcd_readb(&dp->aux, DP_PSR_STATUS, &status); > + if (val < 0) { > + dev_err(dp->dev, "PSR_STATUS read failed ret=%zd", val); > + return val; > + } > + return status; > +} > + > +int analogix_dp_send_psr_spd(struct analogix_dp_device *dp, > + struct edp_vsc_psr *vsc) > { > unsigned int val; > + int ret; > + ssize_t psr_status; > > /* don't send info frame */ > val = readl(dp->reg_base + ANALOGIX_DP_PKT_SEND_CTL); > @@ -1036,6 +1052,17 @@ void analogix_dp_send_psr_spd(struct analogix_dp_device *dp, > val = readl(dp->reg_base + ANALOGIX_DP_PKT_SEND_CTL); > val |= IF_EN; > writel(val, dp->reg_base + ANALOGIX_DP_PKT_SEND_CTL); > + > + ret = readx_poll_timeout(analogix_dp_get_psr_status, dp, psr_status, > + psr_status >= 0 && > + ((vsc->DB1 && psr_status == DP_PSR_SINK_ACTIVE_RFB) || > + (!vsc->DB1 && psr_status == DP_PSR_SINK_INACTIVE)), 1500, > + DP_TIMEOUT_PSR_LOOP_MS * 1000); > + if (ret) { > + dev_warn(dp->dev, "Failed to apply PSR %d\n", ret); > + return ret; > + } > + return 0; > } > > ssize_t analogix_dp_transfer(struct analogix_dp_device *dp, >