From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mark yao Subject: Re: [PATCH v3 3/5] drm/rockchip/dsi: remove mode_valid function Date: Sun, 5 Feb 2017 15:42:22 +0800 Message-ID: <5896D75E.5020501@rock-chips.com> References: <1484907051-7159-1-git-send-email-zyw@rock-chips.com> <1484907051-7159-4-git-send-email-zyw@rock-chips.com> <20170123174841.GB25789@trickycodes.roam.corp.google.com> <5886BB8F.6040707@rock-chips.com> <20170201181218.GA8595@art_vandelay> <58969F32.9010003@rock-chips.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <58969F32.9010003@rock-chips.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Chris Zhong , Sean Paul Cc: mark.rutland@arm.com, devicetree@vger.kernel.org, pawel.moll@arm.com, yzq@rock-chips.com, dianders@chromium.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, robh+dt@kernel.org, galak@codeaurora.org, tfiga@chromium.org, linux-arm-kernel@lists.infradead.org List-Id: linux-rockchip.vger.kernel.org T24gMjAxN+W5tDAy5pyIMDXml6UgMTE6NDIsIENocmlzIFpob25nIHdyb3RlOgo+Cj4KPiBPbiAw Mi8wMi8yMDE3IDAyOjEyIEFNLCBTZWFuIFBhdWwgd3JvdGU6Cj4+IE9uIFR1ZSwgSmFuIDI0LCAy MDE3IGF0IDEwOjI3OjI3QU0gKzA4MDAsIENocmlzIFpob25nIHdyb3RlOgo+Pj4gSGkgU2Vhbgo+ Pj4KPj4+IE9uIDAxLzI0LzIwMTcgMDE6NDggQU0sIFNlYW4gUGF1bCB3cm90ZToKPj4+PiBPbiBG cmksIEphbiAyMCwgMjAxNyBhdCAwNjoxMDo0OVBNICswODAwLCBDaHJpcyBaaG9uZyB3cm90ZToK Pj4+Pj4gVGhlIE1JUEkgRFNJIGRvIG5vdCBuZWVkIGNoZWNrIHRoZSB2YWxpZGl0eSBvZiByZXNv bHV0aW9uLCB0aGUgbWF4Cj4+Pj4+IHJlc29sdXRpb24gc2hvdWxkIGRlcGVuZCBWT1AuIEhlbmNl LCByZW1vdmUgCj4+Pj4+IHJrMzI4OF9taXBpX2RzaV9tb2RlX3ZhbGlkCj4+Pj4+IGhlcmUuCj4+ Pj4gRG9lcyB2b3AgYWN0dWFsbHkgZW5mb3JjZSB0aGlzLCB0aG91Z2g/IEkgc2VlIHRoYXQgCj4+ Pj4gbW9kZV9jb25maWcubWF4X3dpZHRoIGlzCj4+Pj4gNDA5NiwgYnV0IHRoZXJlIGlzIG5vIGJv dW5kcyBjaGVja2luZyBpbiBtb2RlX2ZpeHVwKCkuCj4+Pj4KPj4+PiBUaGUgY29ubmVjdG9yIGlz IGN1cnJlbnRseSByZWplY3RpbmcgZXZlcnl0aGluZyBncmVhdGVyIHRoYW4gMjA0Ny4gCj4+Pj4g U28gSSB0aGluawo+Pj4+IHlvdSdyZSBnb2luZyB0byByZWdyZXNzIGJlaGF2aW9yIGhlcmUuCj4+ Pj4KPj4+PiBTZWFuCj4+PiBUaGUgbWlwaSBjb250cm9sbGVyIGhhcyBub3QgdGhpcyB3aWR0aCBs aW1pdCwgaXQgZGVwZW5kIHRoZSBWT1AsCj4+PiBzdWNoIGFzIFJLMzM5OSwgVk9QX0xJVCBvbmx5 IHN1cHBvcnQgMjU2MCwKPj4+IGJ1dCBWT1BfQklHIHN1cHBvcnQgNEsuIFNvIHRoaXMgZHJpdmVy IHNob3VsZCBjaGVjayB0aGUgd2lkdGggaGVyZS4KPj4gSSBkb24ndCBzZWUgYW55dGhpbmcgaW4g dGhlIHZvcCBkcml2ZXIgdGhhdCByZWplY3RzIGxhcmdlIG1vZGVzIGZvciAKPj4gbGl0dGxlIHZv cC4KPj4gU28sIHdoaWxlIEkgYWdyZWUgdGhlIGNoZWNrIHNob3VsZG4ndCBiZSBoZXJlLCB5b3Ug c2hvdWxkIG1vdmUgaXQgdG8gCj4+IHdoZXJlIGl0Cj4+IHNob3VsZCBiZSBpbnN0ZWFkIG9mIHJl bW92aW5nIGl0IGVudGlyZWx5Lgo+Pgo+PiBTZWFuCj4KPiBkcm1fbW9kZV92YWxpZGF0ZV9zaXpl IHdpbGwgY2hlY2sgdGhlIGRldi0+bW9kZV9jb25maWcubWF4X3dpZHRoIGFuZAo+IGRldi0+bW9k ZV9jb25maWcubWF4X2hlaWdodCwgdGhlc2UgMiB2YWx1ZSBjb21lIGZyb20gCj4gcm9ja2NoaXBf ZHJtX21vZGVfY29uZmlnX2luaXQsCj4gY3VycmVudGx5LCB0aGV5IGFyZSBib3RoIDQwOTYuIFNv IHlvdSBhcmUgcmlnaHQsIGRybSBkcml2ZXIgZG9lcyBub3QgCj4gZGlzdGluZ3Vpc2gKPiBiZXR3 ZWVuIHZvcCBsaXQgYW5kIGJpZy4KPgo+IEkgdGhpbmsgTWFyayBZYW8gYWxyZWFkeSBoYXZlIGEg bG9jYWwgc29sdXRpb24sIGFuZCBoZSB3aWxsIHBvc3QgaXQgc29vbi4KSGkKClNlZSBmb2xsb3cg cGF0Y2hlcywgc3VwcG9ydCBtb2RlIHZhbGlkIHdpdGggdm9wIGNhbGxiYWNrLgoKWzBdIGh0dHBz Oi8vcGF0Y2h3b3JrLmtlcm5lbC5vcmcvcGF0Y2gvOTU1NTk0My8KWzFdIGh0dHBzOi8vcGF0Y2h3 b3JrLmtlcm5lbC5vcmcvcGF0Y2gvOTU1NTk0NS8KCj4KPj4KPj4+Pgo+Pj4+PiBTaWduZWQtb2Zm LWJ5OiBDaHJpcyBaaG9uZyA8enl3QHJvY2stY2hpcHMuY29tPgo+Pj4+PiAtLS0KPj4+Pj4KPj4+ Pj4gQ2hhbmdlcyBpbiB2MzogTm9uZQo+Pj4+Pgo+Pj4+PiAgIGRyaXZlcnMvZ3B1L2RybS9yb2Nr Y2hpcC9kdy1taXBpLWRzaS5jIHwgMzkgCj4+Pj4+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KPj4+Pj4gICAxIGZpbGUgY2hhbmdlZCwgMzkgZGVsZXRpb25zKC0pCj4+Pj4+Cj4+ Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvZHctbWlwaS1kc2kuYyAK Pj4+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvZHctbWlwaS1kc2kuYwo+Pj4+PiBpbmRl eCBhOTNjZTk3Li42ZjBlMjUyIDEwMDY0NAo+Pj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vcm9j a2NoaXAvZHctbWlwaS1kc2kuYwo+Pj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAv ZHctbWlwaS1kc2kuYwo+Pj4+PiBAQCAtMjc4LDggKzI3OCw2IEBAIHN0cnVjdCBkd19taXBpX2Rz aV9wbGF0X2RhdGEgewo+Pj4+PiAgICAgICB1MzIgZ3JmX2RzaTBfbW9kZTsKPj4+Pj4gICAgICAg dTMyIGdyZl9kc2kwX21vZGVfcmVnOwo+Pj4+PiAgICAgICB1bnNpZ25lZCBpbnQgbWF4X2RhdGFf bGFuZXM7Cj4+Pj4+IC0gICAgZW51bSBkcm1fbW9kZV9zdGF0dXMgKCptb2RlX3ZhbGlkKShzdHJ1 Y3QgZHJtX2Nvbm5lY3RvciAKPj4+Pj4gKmNvbm5lY3RvciwKPj4+Pj4gLSAgICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUpOwo+Pj4+PiAgIH07Cj4+Pj4+ ICAgc3RydWN0IGR3X21pcGlfZHNpIHsKPj4+Pj4gQEAgLTEwODEsMjMgKzEwNzksOCBAQCBzdGF0 aWMgaW50IAo+Pj4+PiBkd19taXBpX2RzaV9jb25uZWN0b3JfZ2V0X21vZGVzKHN0cnVjdCBkcm1f Y29ubmVjdG9yICpjb25uZWN0b3IpCj4+Pj4+ICAgICAgIHJldHVybiBkcm1fcGFuZWxfZ2V0X21v ZGVzKGRzaS0+cGFuZWwpOwo+Pj4+PiAgIH0KPj4+Pj4gLXN0YXRpYyBlbnVtIGRybV9tb2RlX3N0 YXR1cyBkd19taXBpX2RzaV9tb2RlX3ZhbGlkKAo+Pj4+PiAtICAgICAgICAgICAgICAgICAgICBz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+Pj4+PiAtICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkKPj4+Pj4gLXsKPj4+Pj4gLSAgICBzdHJ1 Y3QgZHdfbWlwaV9kc2kgKmRzaSA9IGNvbl90b19kc2koY29ubmVjdG9yKTsKPj4+Pj4gLQo+Pj4+ PiAtICAgIGVudW0gZHJtX21vZGVfc3RhdHVzIG1vZGVfc3RhdHVzID0gTU9ERV9PSzsKPj4+Pj4g LQo+Pj4+PiAtICAgIGlmIChkc2ktPnBkYXRhLT5tb2RlX3ZhbGlkKQo+Pj4+PiAtICAgICAgICBt b2RlX3N0YXR1cyA9IGRzaS0+cGRhdGEtPm1vZGVfdmFsaWQoY29ubmVjdG9yLCBtb2RlKTsKPj4+ Pj4gLQo+Pj4+PiAtICAgIHJldHVybiBtb2RlX3N0YXR1czsKPj4+Pj4gLX0KPj4+Pj4gLQo+Pj4+ PiAgIHN0YXRpYyBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MgCj4+Pj4+IGR3X21p cGlfZHNpX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MgPSB7Cj4+Pj4+ICAgICAgIC5nZXRfbW9kZXMg PSBkd19taXBpX2RzaV9jb25uZWN0b3JfZ2V0X21vZGVzLAo+Pj4+PiAtICAgIC5tb2RlX3ZhbGlk ID0gZHdfbWlwaV9kc2lfbW9kZV92YWxpZCwKPj4+Pj4gICB9Owo+Pj4+PiAgIHN0YXRpYyB2b2lk IGR3X21pcGlfZHNpX2RybV9jb25uZWN0b3JfZGVzdHJveShzdHJ1Y3QgCj4+Pj4+IGRybV9jb25u ZWN0b3IgKmNvbm5lY3RvcikKPj4+Pj4gQEAgLTExNjgsMzMgKzExNTEsMTEgQEAgc3RhdGljIGlu dCByb2NrY2hpcF9taXBpX3BhcnNlX2R0KHN0cnVjdCAKPj4+Pj4gZHdfbWlwaV9kc2kgKmRzaSkK Pj4+Pj4gICAgICAgcmV0dXJuIDA7Cj4+Pj4+ICAgfQo+Pj4+PiAtc3RhdGljIGVudW0gZHJtX21v ZGVfc3RhdHVzIHJrMzI4OF9taXBpX2RzaV9tb2RlX3ZhbGlkKAo+Pj4+PiAtICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+Pj4+PiAtICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkKPj4+Pj4gLXsKPj4+Pj4g LSAgICAvKgo+Pj4+PiAtICAgICAqIFRoZSBWSURfUEtUX1NJWkUgZmllbGQgaW4gdGhlIERTSV9W SURfUEtUX0NGRwo+Pj4+PiAtICAgICAqIHJlZ2lzdGVyIGlzIDExLWJpdC4KPj4+Pj4gLSAgICAg Ki8KPj4+Pj4gLSAgICBpZiAobW9kZS0+aGRpc3BsYXkgPiAweDdmZikKPj4+Pj4gLSAgICAgICAg cmV0dXJuIE1PREVfQkFEX0hWQUxVRTsKPj4+Pj4gLQo+Pj4+PiAtICAgIC8qCj4+Pj4+IC0gICAg ICogVGhlIFZfQUNUSVZFX0xJTkVTIGZpZWxkIGluIHRoZSBEU0lfVlRJTUlOR19DRkcKPj4+Pj4g LSAgICAgKiByZWdpc3RlciBpcyAxMS1iaXQuCj4+Pj4+IC0gICAgICovCj4+Pj4+IC0gICAgaWYg KG1vZGUtPnZkaXNwbGF5ID4gMHg3ZmYpCj4+Pj4+IC0gICAgICAgIHJldHVybiBNT0RFX0JBRF9W VkFMVUU7Cj4+Pj4+IC0KPj4+Pj4gLSAgICByZXR1cm4gTU9ERV9PSzsKPj4+Pj4gLX0KPj4+Pj4g LQo+Pj4+PiAgIHN0YXRpYyBzdHJ1Y3QgZHdfbWlwaV9kc2lfcGxhdF9kYXRhIHJrMzI4OF9taXBp X2RzaV9kcnZfZGF0YSA9IHsKPj4+Pj4gICAgICAgLmRzaTBfZW5fYml0ID0gUkszMjg4X0RTSTBf U0VMX1ZPUF9MSVQsCj4+Pj4+ICAgICAgIC5kc2kxX2VuX2JpdCA9IFJLMzI4OF9EU0kxX1NFTF9W T1BfTElULAo+Pj4+PiAgICAgICAuZ3JmX3N3aXRjaF9yZWcgPSBSSzMyODhfR1JGX1NPQ19DT042 LAo+Pj4+PiAgICAgICAubWF4X2RhdGFfbGFuZXMgPSA0LAo+Pj4+PiAtICAgIC5tb2RlX3ZhbGlk ID0gcmszMjg4X21pcGlfZHNpX21vZGVfdmFsaWQsCj4+Pj4+ICAgfTsKPj4+Pj4gICBzdGF0aWMg c3RydWN0IGR3X21pcGlfZHNpX3BsYXRfZGF0YSByazMzOTlfbWlwaV9kc2lfZHJ2X2RhdGEgPSB7 Cj4+Pj4+IC0tIAo+Pj4+PiAyLjYuMwo+Pj4+Pgo+Pj4+PiBfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwo+Pj4+PiBkcmktZGV2ZWwgbWFpbGluZyBsaXN0Cj4+ Pj4+IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPj4+Pj4gaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwKPj4+Cj4+PiBfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+Pj4gZHJpLWRldmVsIG1h aWxpbmcgbGlzdAo+Pj4gZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+Pj4gaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwKPgo+Cj4K PgoKCi0tIArvvK1hcmsgWWFvCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v ZHJpLWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 From: mark.yao@rock-chips.com (Mark yao) Date: Sun, 5 Feb 2017 15:42:22 +0800 Subject: [PATCH v3 3/5] drm/rockchip/dsi: remove mode_valid function In-Reply-To: <58969F32.9010003@rock-chips.com> References: <1484907051-7159-1-git-send-email-zyw@rock-chips.com> <1484907051-7159-4-git-send-email-zyw@rock-chips.com> <20170123174841.GB25789@trickycodes.roam.corp.google.com> <5886BB8F.6040707@rock-chips.com> <20170201181218.GA8595@art_vandelay> <58969F32.9010003@rock-chips.com> Message-ID: <5896D75E.5020501@rock-chips.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On 2017?02?05? 11:42, Chris Zhong wrote: > > > On 02/02/2017 02:12 AM, Sean Paul wrote: >> On Tue, Jan 24, 2017 at 10:27:27AM +0800, Chris Zhong wrote: >>> Hi Sean >>> >>> On 01/24/2017 01:48 AM, Sean Paul wrote: >>>> On Fri, Jan 20, 2017 at 06:10:49PM +0800, Chris Zhong wrote: >>>>> The MIPI DSI do not need check the validity of resolution, the max >>>>> resolution should depend VOP. Hence, remove >>>>> rk3288_mipi_dsi_mode_valid >>>>> here. >>>> Does vop actually enforce this, though? I see that >>>> mode_config.max_width is >>>> 4096, but there is no bounds checking in mode_fixup(). >>>> >>>> The connector is currently rejecting everything greater than 2047. >>>> So I think >>>> you're going to regress behavior here. >>>> >>>> Sean >>> The mipi controller has not this width limit, it depend the VOP, >>> such as RK3399, VOP_LIT only support 2560, >>> but VOP_BIG support 4K. So this driver should check the width here. >> I don't see anything in the vop driver that rejects large modes for >> little vop. >> So, while I agree the check shouldn't be here, you should move it to >> where it >> should be instead of removing it entirely. >> >> Sean > > drm_mode_validate_size will check the dev->mode_config.max_width and > dev->mode_config.max_height, these 2 value come from > rockchip_drm_mode_config_init, > currently, they are both 4096. So you are right, drm driver does not > distinguish > between vop lit and big. > > I think Mark Yao already have a local solution, and he will post it soon. Hi See follow patches, support mode valid with vop callback. [0] https://patchwork.kernel.org/patch/9555943/ [1] https://patchwork.kernel.org/patch/9555945/ > >> >>>> >>>>> Signed-off-by: Chris Zhong >>>>> --- >>>>> >>>>> Changes in v3: None >>>>> >>>>> drivers/gpu/drm/rockchip/dw-mipi-dsi.c | 39 >>>>> ---------------------------------- >>>>> 1 file changed, 39 deletions(-) >>>>> >>>>> diff --git a/drivers/gpu/drm/rockchip/dw-mipi-dsi.c >>>>> b/drivers/gpu/drm/rockchip/dw-mipi-dsi.c >>>>> index a93ce97..6f0e252 100644 >>>>> --- a/drivers/gpu/drm/rockchip/dw-mipi-dsi.c >>>>> +++ b/drivers/gpu/drm/rockchip/dw-mipi-dsi.c >>>>> @@ -278,8 +278,6 @@ struct dw_mipi_dsi_plat_data { >>>>> u32 grf_dsi0_mode; >>>>> u32 grf_dsi0_mode_reg; >>>>> unsigned int max_data_lanes; >>>>> - enum drm_mode_status (*mode_valid)(struct drm_connector >>>>> *connector, >>>>> - struct drm_display_mode *mode); >>>>> }; >>>>> struct dw_mipi_dsi { >>>>> @@ -1081,23 +1079,8 @@ static int >>>>> dw_mipi_dsi_connector_get_modes(struct drm_connector *connector) >>>>> return drm_panel_get_modes(dsi->panel); >>>>> } >>>>> -static enum drm_mode_status dw_mipi_dsi_mode_valid( >>>>> - struct drm_connector *connector, >>>>> - struct drm_display_mode *mode) >>>>> -{ >>>>> - struct dw_mipi_dsi *dsi = con_to_dsi(connector); >>>>> - >>>>> - enum drm_mode_status mode_status = MODE_OK; >>>>> - >>>>> - if (dsi->pdata->mode_valid) >>>>> - mode_status = dsi->pdata->mode_valid(connector, mode); >>>>> - >>>>> - return mode_status; >>>>> -} >>>>> - >>>>> static struct drm_connector_helper_funcs >>>>> dw_mipi_dsi_connector_helper_funcs = { >>>>> .get_modes = dw_mipi_dsi_connector_get_modes, >>>>> - .mode_valid = dw_mipi_dsi_mode_valid, >>>>> }; >>>>> static void dw_mipi_dsi_drm_connector_destroy(struct >>>>> drm_connector *connector) >>>>> @@ -1168,33 +1151,11 @@ static int rockchip_mipi_parse_dt(struct >>>>> dw_mipi_dsi *dsi) >>>>> return 0; >>>>> } >>>>> -static enum drm_mode_status rk3288_mipi_dsi_mode_valid( >>>>> - struct drm_connector *connector, >>>>> - struct drm_display_mode *mode) >>>>> -{ >>>>> - /* >>>>> - * The VID_PKT_SIZE field in the DSI_VID_PKT_CFG >>>>> - * register is 11-bit. >>>>> - */ >>>>> - if (mode->hdisplay > 0x7ff) >>>>> - return MODE_BAD_HVALUE; >>>>> - >>>>> - /* >>>>> - * The V_ACTIVE_LINES field in the DSI_VTIMING_CFG >>>>> - * register is 11-bit. >>>>> - */ >>>>> - if (mode->vdisplay > 0x7ff) >>>>> - return MODE_BAD_VVALUE; >>>>> - >>>>> - return MODE_OK; >>>>> -} >>>>> - >>>>> static struct dw_mipi_dsi_plat_data rk3288_mipi_dsi_drv_data = { >>>>> .dsi0_en_bit = RK3288_DSI0_SEL_VOP_LIT, >>>>> .dsi1_en_bit = RK3288_DSI1_SEL_VOP_LIT, >>>>> .grf_switch_reg = RK3288_GRF_SOC_CON6, >>>>> .max_data_lanes = 4, >>>>> - .mode_valid = rk3288_mipi_dsi_mode_valid, >>>>> }; >>>>> static struct dw_mipi_dsi_plat_data rk3399_mipi_dsi_drv_data = { >>>>> -- >>>>> 2.6.3 >>>>> >>>>> _______________________________________________ >>>>> dri-devel mailing list >>>>> dri-devel at lists.freedesktop.org >>>>> https://lists.freedesktop.org/mailman/listinfo/dri-devel >>> >>> _______________________________________________ >>> dri-devel mailing list >>> dri-devel at lists.freedesktop.org >>> https://lists.freedesktop.org/mailman/listinfo/dri-devel > > > > -- ?ark Yao From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752039AbdBEHmo (ORCPT ); Sun, 5 Feb 2017 02:42:44 -0500 Received: from regular1.263xmail.com ([211.150.99.139]:57511 "EHLO regular1.263xmail.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751386AbdBEHmm (ORCPT ); Sun, 5 Feb 2017 02:42:42 -0500 X-263anti-spam: KSV:0; X-MAIL-GRAY: 0 X-MAIL-DELIVERY: 1 X-KSVirus-check: 0 X-ABS-CHECKED: 4 X-RL-SENDER: mark.yao@rock-chips.com X-FST-TO: linux-arm-kernel@lists.infradead.org X-SENDER-IP: 58.22.7.114 X-LOGIN-NAME: mark.yao@rock-chips.com X-UNIQUE-TAG: <3ea7fee008da4d79ac315a6cb6f3afc9> X-ATTACHMENT-NUM: 0 X-DNS-TYPE: 0 Subject: Re: [PATCH v3 3/5] drm/rockchip/dsi: remove mode_valid function To: Chris Zhong , Sean Paul References: <1484907051-7159-1-git-send-email-zyw@rock-chips.com> <1484907051-7159-4-git-send-email-zyw@rock-chips.com> <20170123174841.GB25789@trickycodes.roam.corp.google.com> <5886BB8F.6040707@rock-chips.com> <20170201181218.GA8595@art_vandelay> <58969F32.9010003@rock-chips.com> Cc: mark.rutland@arm.com, devicetree@vger.kernel.org, pawel.moll@arm.com, yzq@rock-chips.com, linux-kernel@vger.kernel.org, dianders@chromium.org, dri-devel@lists.freedesktop.org, tfiga@chromium.org, linux-rockchip@lists.infradead.org, robh+dt@kernel.org, galak@codeaurora.org, linux-arm-kernel@lists.infradead.org From: Mark yao Message-ID: <5896D75E.5020501@rock-chips.com> Date: Sun, 5 Feb 2017 15:42:22 +0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 MIME-Version: 1.0 In-Reply-To: <58969F32.9010003@rock-chips.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2017年02月05日 11:42, Chris Zhong wrote: > > > On 02/02/2017 02:12 AM, Sean Paul wrote: >> On Tue, Jan 24, 2017 at 10:27:27AM +0800, Chris Zhong wrote: >>> Hi Sean >>> >>> On 01/24/2017 01:48 AM, Sean Paul wrote: >>>> On Fri, Jan 20, 2017 at 06:10:49PM +0800, Chris Zhong wrote: >>>>> The MIPI DSI do not need check the validity of resolution, the max >>>>> resolution should depend VOP. Hence, remove >>>>> rk3288_mipi_dsi_mode_valid >>>>> here. >>>> Does vop actually enforce this, though? I see that >>>> mode_config.max_width is >>>> 4096, but there is no bounds checking in mode_fixup(). >>>> >>>> The connector is currently rejecting everything greater than 2047. >>>> So I think >>>> you're going to regress behavior here. >>>> >>>> Sean >>> The mipi controller has not this width limit, it depend the VOP, >>> such as RK3399, VOP_LIT only support 2560, >>> but VOP_BIG support 4K. So this driver should check the width here. >> I don't see anything in the vop driver that rejects large modes for >> little vop. >> So, while I agree the check shouldn't be here, you should move it to >> where it >> should be instead of removing it entirely. >> >> Sean > > drm_mode_validate_size will check the dev->mode_config.max_width and > dev->mode_config.max_height, these 2 value come from > rockchip_drm_mode_config_init, > currently, they are both 4096. So you are right, drm driver does not > distinguish > between vop lit and big. > > I think Mark Yao already have a local solution, and he will post it soon. Hi See follow patches, support mode valid with vop callback. [0] https://patchwork.kernel.org/patch/9555943/ [1] https://patchwork.kernel.org/patch/9555945/ > >> >>>> >>>>> Signed-off-by: Chris Zhong >>>>> --- >>>>> >>>>> Changes in v3: None >>>>> >>>>> drivers/gpu/drm/rockchip/dw-mipi-dsi.c | 39 >>>>> ---------------------------------- >>>>> 1 file changed, 39 deletions(-) >>>>> >>>>> diff --git a/drivers/gpu/drm/rockchip/dw-mipi-dsi.c >>>>> b/drivers/gpu/drm/rockchip/dw-mipi-dsi.c >>>>> index a93ce97..6f0e252 100644 >>>>> --- a/drivers/gpu/drm/rockchip/dw-mipi-dsi.c >>>>> +++ b/drivers/gpu/drm/rockchip/dw-mipi-dsi.c >>>>> @@ -278,8 +278,6 @@ struct dw_mipi_dsi_plat_data { >>>>> u32 grf_dsi0_mode; >>>>> u32 grf_dsi0_mode_reg; >>>>> unsigned int max_data_lanes; >>>>> - enum drm_mode_status (*mode_valid)(struct drm_connector >>>>> *connector, >>>>> - struct drm_display_mode *mode); >>>>> }; >>>>> struct dw_mipi_dsi { >>>>> @@ -1081,23 +1079,8 @@ static int >>>>> dw_mipi_dsi_connector_get_modes(struct drm_connector *connector) >>>>> return drm_panel_get_modes(dsi->panel); >>>>> } >>>>> -static enum drm_mode_status dw_mipi_dsi_mode_valid( >>>>> - struct drm_connector *connector, >>>>> - struct drm_display_mode *mode) >>>>> -{ >>>>> - struct dw_mipi_dsi *dsi = con_to_dsi(connector); >>>>> - >>>>> - enum drm_mode_status mode_status = MODE_OK; >>>>> - >>>>> - if (dsi->pdata->mode_valid) >>>>> - mode_status = dsi->pdata->mode_valid(connector, mode); >>>>> - >>>>> - return mode_status; >>>>> -} >>>>> - >>>>> static struct drm_connector_helper_funcs >>>>> dw_mipi_dsi_connector_helper_funcs = { >>>>> .get_modes = dw_mipi_dsi_connector_get_modes, >>>>> - .mode_valid = dw_mipi_dsi_mode_valid, >>>>> }; >>>>> static void dw_mipi_dsi_drm_connector_destroy(struct >>>>> drm_connector *connector) >>>>> @@ -1168,33 +1151,11 @@ static int rockchip_mipi_parse_dt(struct >>>>> dw_mipi_dsi *dsi) >>>>> return 0; >>>>> } >>>>> -static enum drm_mode_status rk3288_mipi_dsi_mode_valid( >>>>> - struct drm_connector *connector, >>>>> - struct drm_display_mode *mode) >>>>> -{ >>>>> - /* >>>>> - * The VID_PKT_SIZE field in the DSI_VID_PKT_CFG >>>>> - * register is 11-bit. >>>>> - */ >>>>> - if (mode->hdisplay > 0x7ff) >>>>> - return MODE_BAD_HVALUE; >>>>> - >>>>> - /* >>>>> - * The V_ACTIVE_LINES field in the DSI_VTIMING_CFG >>>>> - * register is 11-bit. >>>>> - */ >>>>> - if (mode->vdisplay > 0x7ff) >>>>> - return MODE_BAD_VVALUE; >>>>> - >>>>> - return MODE_OK; >>>>> -} >>>>> - >>>>> static struct dw_mipi_dsi_plat_data rk3288_mipi_dsi_drv_data = { >>>>> .dsi0_en_bit = RK3288_DSI0_SEL_VOP_LIT, >>>>> .dsi1_en_bit = RK3288_DSI1_SEL_VOP_LIT, >>>>> .grf_switch_reg = RK3288_GRF_SOC_CON6, >>>>> .max_data_lanes = 4, >>>>> - .mode_valid = rk3288_mipi_dsi_mode_valid, >>>>> }; >>>>> static struct dw_mipi_dsi_plat_data rk3399_mipi_dsi_drv_data = { >>>>> -- >>>>> 2.6.3 >>>>> >>>>> _______________________________________________ >>>>> dri-devel mailing list >>>>> dri-devel@lists.freedesktop.org >>>>> https://lists.freedesktop.org/mailman/listinfo/dri-devel >>> >>> _______________________________________________ >>> dri-devel mailing list >>> dri-devel@lists.freedesktop.org >>> https://lists.freedesktop.org/mailman/listinfo/dri-devel > > > > -- Mark Yao