From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Keeping Subject: Re: [PATCH v3 22/24] drm/rockchip: dw-mipi-dsi: support non-burst modes Date: Thu, 16 Feb 2017 14:22:22 +0000 Message-ID: <20170216142222.2831e474.john@metanate.com> References: <20170129132444.25251-1-john@metanate.com> <20170129132444.25251-23-john@metanate.com> <20170131192255.GF20076@art_vandelay> <58A5161A.3070205@rock-chips.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <58A5161A.3070205@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 Cc: linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org List-Id: linux-rockchip.vger.kernel.org T24gVGh1LCAxNiBGZWIgMjAxNyAxMTowMTo0NiArMDgwMCwgQ2hyaXMgWmhvbmcgd3JvdGU6Cgo+ IE9uIDAyLzAxLzIwMTcgMDM6MjIgQU0sIFNlYW4gUGF1bCB3cm90ZToKPiA+IE9uIFN1biwgSmFu IDI5LCAyMDE3IGF0IDAxOjI0OjQyUE0gKzAwMDAsIEpvaG4gS2VlcGluZyB3cm90ZToKPiA+Cj4g PiBSZXZpZXdlZC1ieTogU2VhbiBQYXVsIDxzZWFucGF1bEBjaHJvbWl1bS5vcmc+Cj4gPiAgCj4g Pj4gU2lnbmVkLW9mZi1ieTogSm9obiBLZWVwaW5nIDxqb2huQG1ldGFuYXRlLmNvbT4KPiA+PiBS ZXZpZXdlZC1ieTogQ2hyaXMgWmhvbmcgPHp5d0Byb2NrLWNoaXBzLmNvbT4KPiA+PiAtLS0KPiA+ PiB2MzoKPiA+PiAtIEFkZCBDaHJpcycgUmV2aWV3ZWQtYnkKPiA+PiBVbmNoYW5nZWQgaW4gdjIK PiA+Pgo+ID4+ICAgZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL2R3LW1pcGktZHNpLmMgfCAxNiAr KysrKysrKystLS0tLS0tCj4gPj4gICAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCA3 IGRlbGV0aW9ucygtKQo+ID4+Cj4gPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yb2Nr Y2hpcC9kdy1taXBpLWRzaS5jIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL2R3LW1pcGktZHNp LmMKPiA+PiBpbmRleCA1YmFkOTJlMjM3MGUuLjU4Y2I4YWNlMmZlOCAxMDA2NDQKPiA+PiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvZHctbWlwaS1kc2kuYwo+ID4+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9yb2NrY2hpcC9kdy1taXBpLWRzaS5jCj4gPj4gQEAgLTgyLDYgKzgyLDcgQEAK PiA+PiAgICNkZWZpbmUgRlJBTUVfQlRBX0FDSwkJCUJJVCgxNCkKPiA+PiAgICNkZWZpbmUgRU5B QkxFX0xPV19QT1dFUgkJKDB4M2YgPDwgOCkKPiA+PiAgICNkZWZpbmUgRU5BQkxFX0xPV19QT1dF Ul9NQVNLCQkoMHgzZiA8PCA4KQo+ID4+ICsjZGVmaW5lIFZJRF9NT0RFX1RZUEVfTk9OX0JVUlNU X1NZTkNfRVZFTlRTCTB4MQo+ID4+ICAgI2RlZmluZSBWSURfTU9ERV9UWVBFX0JVUlNUX1NZTkNf UFVMU0VTCQkweDIgIAo+IFRoaXMgZmllbGQgaW5kaWNhdGVzIHRoZSB2aWRlbyBtb2RlIHRyYW5z bWlzc2lvbiB0eXBlIGFzIGZvbGxvd3M6Cj4gMDA6IE5vbi1idXJzdCB3aXRoIHN5bmMgcHVsc2Vz Cj4gMDE6IE5vbi1idXJzdCB3aXRoIHN5bmMgZXZlbnRzCj4gMTAgYW5kIDExOiBCdXJzdCBtb2Rl Cj4gCj4gU28sIEkgdGhpbmsgZGVmaW5lIHRoZSBtYWNybyBsaWtlIHRoaXMgaXMgYmV0dGVyOgo+ IAo+ICNkZWZpbmUgVklEX01PREVfVFlQRV9OT05fQlVSU1RfU1lOQ19QVUxTRVMgICAgMHgwCj4g I2RlZmluZSBWSURfTU9ERV9UWVBFX05PTl9CVVJTVF9TWU5DX0VWRU5UUyAgICAweDEKPiAjZGVm aW5lIFZJRF9NT0RFX1RZUEVfQlVSU1QgICAgICAgICAgICAweDIKPiAKPiAKPiA+PiAgICNkZWZp bmUgVklEX01PREVfVFlQRV9NQVNLCQkJMHgzCj4gPj4gICAKPiA+PiBAQCAtMjg2LDYgKzI4Nyw3 IEBAIHN0cnVjdCBkd19taXBpX2RzaSB7Cj4gPj4gICAJdTMyIGZvcm1hdDsKPiA+PiAgIAl1MTYg aW5wdXRfZGl2Owo+ID4+ICAgCXUxNiBmZWVkYmFja19kaXY7Cj4gPj4gKwl1bnNpZ25lZCBsb25n IG1vZGVfZmxhZ3M7Cj4gPj4gICAKPiA+PiAgIAljb25zdCBzdHJ1Y3QgZHdfbWlwaV9kc2lfcGxh dF9kYXRhICpwZGF0YTsKPiA+PiAgIH07Cj4gPj4gQEAgLTU1MSwxNSArNTUzLDEwIEBAIHN0YXRp YyBpbnQgZHdfbWlwaV9kc2lfaG9zdF9hdHRhY2goc3RydWN0IG1pcGlfZHNpX2hvc3QgKmhvc3Qs Cj4gPj4gICAJCXJldHVybiAtRUlOVkFMOwo+ID4+ICAgCX0KPiA+PiAgIAo+ID4+IC0JaWYgKCEo ZGV2aWNlLT5tb2RlX2ZsYWdzICYgTUlQSV9EU0lfTU9ERV9WSURFT19CVVJTVCkgfHwKPiA+PiAt CSAgICAhKGRldmljZS0+bW9kZV9mbGFncyAmIE1JUElfRFNJX01PREVfVklERU9fU1lOQ19QVUxT RSkpIHsKPiA+PiAtCQlkZXZfZXJyKGRzaS0+ZGV2LCAiZGV2aWNlIG1vZGUgaXMgdW5zdXBwb3J0 ZWRcbiIpOwo+ID4+IC0JCXJldHVybiAtRUlOVkFMOwo+ID4+IC0JfQo+ID4+IC0KPiA+PiAgIAlk c2ktPmxhbmVzID0gZGV2aWNlLT5sYW5lczsKPiA+PiAgIAlkc2ktPmNoYW5uZWwgPSBkZXZpY2Ut PmNoYW5uZWw7Cj4gPj4gICAJZHNpLT5mb3JtYXQgPSBkZXZpY2UtPmZvcm1hdDsKPiA+PiArCWRz aS0+bW9kZV9mbGFncyA9IGRldmljZS0+bW9kZV9mbGFnczsKPiA+PiAgIAlkc2ktPnBhbmVsID0g b2ZfZHJtX2ZpbmRfcGFuZWwoZGV2aWNlLT5kZXYub2Zfbm9kZSk7Cj4gPj4gICAJaWYgKGRzaS0+ cGFuZWwpCj4gPj4gICAJCXJldHVybiBkcm1fcGFuZWxfYXR0YWNoKGRzaS0+cGFuZWwsICZkc2kt PmNvbm5lY3Rvcik7Cj4gPj4gQEAgLTcxNiw3ICs3MTMsMTIgQEAgc3RhdGljIHZvaWQgZHdfbWlw aV9kc2lfdmlkZW9fbW9kZV9jb25maWcoc3RydWN0IGR3X21pcGlfZHNpICpkc2kpCj4gPj4gICB7 Cj4gPj4gICAJdTMyIHZhbDsKPiA+PiAgIAo+ID4+IC0JdmFsID0gVklEX01PREVfVFlQRV9CVVJT VF9TWU5DX1BVTFNFUyB8IEVOQUJMRV9MT1dfUE9XRVI7Cj4gPj4gKwl2YWwgPSBFTkFCTEVfTE9X X1BPV0VSOwo+ID4+ICsKPiA+PiArCWlmIChkc2ktPm1vZGVfZmxhZ3MgJiBNSVBJX0RTSV9NT0RF X1ZJREVPX0JVUlNUKQo+ID4+ICsJCXZhbCB8PSBWSURfTU9ERV9UWVBFX0JVUlNUX1NZTkNfUFVM U0VTOwo+ID4+ICsJZWxzZSBpZiAoIShkc2ktPm1vZGVfZmxhZ3MgJiBNSVBJX0RTSV9NT0RFX1ZJ REVPX1NZTkNfUFVMU0UpKQo+ID4+ICsJCXZhbCB8PSBWSURfTU9ERV9UWVBFX05PTl9CVVJTVF9T WU5DX0VWRU5UUzsgIAo+IAo+IGlmIChkc2ktPm1vZGVfZmxhZ3MgJiBNSVBJX0RTSV9NT0RFX1ZJ REVPX0JVUlNUKQo+IAl2YWwgfD0gVklEX01PREVfVFlQRV9CVVJTVDsKPiBlbHNlIGlmIChkc2kt Pm1vZGVfZmxhZ3MgJiBNSVBJX0RTSV9NT0RFX1ZJREVPX1NZTkNfUFVMU0UpCj4gCXZhbCB8PSBW SURfTU9ERV9UWVBFX05PTl9CVVJTVF9TWU5DX1BVTFNFUzsKPiBlbHNlCj4gCXZhbCB8PSBWSURf TU9ERV9UWVBFX05PTl9CVVJTVF9TWU5DX0VWRU5UUzsKCk9LLCB0aGlzIGlzIGRlZmluaXRlbHkg Y2xlYXJlciBub3cgdGhhdCBJJ3ZlIGZvcmdvdHRlbiBtb3N0IG9mIHRoZQpkYXRhc2hlZXQ7IHdp dGhvdXQgeW91ciBkZWZpbml0aW9ucyBhdCB0aGUgdG9wIGl0J3Mgbm90IGNsZWFyIHRoYXQKVklE X01PREVfVFlQRV9CVVJTVF9TWU5DX1BVTFNFUyBpcyB6ZXJvLgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1k ZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 From: john@metanate.com (John Keeping) Date: Thu, 16 Feb 2017 14:22:22 +0000 Subject: [PATCH v3 22/24] drm/rockchip: dw-mipi-dsi: support non-burst modes In-Reply-To: <58A5161A.3070205@rock-chips.com> References: <20170129132444.25251-1-john@metanate.com> <20170129132444.25251-23-john@metanate.com> <20170131192255.GF20076@art_vandelay> <58A5161A.3070205@rock-chips.com> Message-ID: <20170216142222.2831e474.john@metanate.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Thu, 16 Feb 2017 11:01:46 +0800, Chris Zhong wrote: > On 02/01/2017 03:22 AM, Sean Paul wrote: > > On Sun, Jan 29, 2017 at 01:24:42PM +0000, John Keeping wrote: > > > > Reviewed-by: Sean Paul > > > >> Signed-off-by: John Keeping > >> Reviewed-by: Chris Zhong > >> --- > >> v3: > >> - Add Chris' Reviewed-by > >> Unchanged in v2 > >> > >> drivers/gpu/drm/rockchip/dw-mipi-dsi.c | 16 +++++++++------- > >> 1 file changed, 9 insertions(+), 7 deletions(-) > >> > >> diff --git a/drivers/gpu/drm/rockchip/dw-mipi-dsi.c b/drivers/gpu/drm/rockchip/dw-mipi-dsi.c > >> index 5bad92e2370e..58cb8ace2fe8 100644 > >> --- a/drivers/gpu/drm/rockchip/dw-mipi-dsi.c > >> +++ b/drivers/gpu/drm/rockchip/dw-mipi-dsi.c > >> @@ -82,6 +82,7 @@ > >> #define FRAME_BTA_ACK BIT(14) > >> #define ENABLE_LOW_POWER (0x3f << 8) > >> #define ENABLE_LOW_POWER_MASK (0x3f << 8) > >> +#define VID_MODE_TYPE_NON_BURST_SYNC_EVENTS 0x1 > >> #define VID_MODE_TYPE_BURST_SYNC_PULSES 0x2 > This field indicates the video mode transmission type as follows: > 00: Non-burst with sync pulses > 01: Non-burst with sync events > 10 and 11: Burst mode > > So, I think define the macro like this is better: > > #define VID_MODE_TYPE_NON_BURST_SYNC_PULSES 0x0 > #define VID_MODE_TYPE_NON_BURST_SYNC_EVENTS 0x1 > #define VID_MODE_TYPE_BURST 0x2 > > > >> #define VID_MODE_TYPE_MASK 0x3 > >> > >> @@ -286,6 +287,7 @@ struct dw_mipi_dsi { > >> u32 format; > >> u16 input_div; > >> u16 feedback_div; > >> + unsigned long mode_flags; > >> > >> const struct dw_mipi_dsi_plat_data *pdata; > >> }; > >> @@ -551,15 +553,10 @@ static int dw_mipi_dsi_host_attach(struct mipi_dsi_host *host, > >> return -EINVAL; > >> } > >> > >> - if (!(device->mode_flags & MIPI_DSI_MODE_VIDEO_BURST) || > >> - !(device->mode_flags & MIPI_DSI_MODE_VIDEO_SYNC_PULSE)) { > >> - dev_err(dsi->dev, "device mode is unsupported\n"); > >> - return -EINVAL; > >> - } > >> - > >> dsi->lanes = device->lanes; > >> dsi->channel = device->channel; > >> dsi->format = device->format; > >> + dsi->mode_flags = device->mode_flags; > >> dsi->panel = of_drm_find_panel(device->dev.of_node); > >> if (dsi->panel) > >> return drm_panel_attach(dsi->panel, &dsi->connector); > >> @@ -716,7 +713,12 @@ static void dw_mipi_dsi_video_mode_config(struct dw_mipi_dsi *dsi) > >> { > >> u32 val; > >> > >> - val = VID_MODE_TYPE_BURST_SYNC_PULSES | ENABLE_LOW_POWER; > >> + val = ENABLE_LOW_POWER; > >> + > >> + if (dsi->mode_flags & MIPI_DSI_MODE_VIDEO_BURST) > >> + val |= VID_MODE_TYPE_BURST_SYNC_PULSES; > >> + else if (!(dsi->mode_flags & MIPI_DSI_MODE_VIDEO_SYNC_PULSE)) > >> + val |= VID_MODE_TYPE_NON_BURST_SYNC_EVENTS; > > if (dsi->mode_flags & MIPI_DSI_MODE_VIDEO_BURST) > val |= VID_MODE_TYPE_BURST; > else if (dsi->mode_flags & MIPI_DSI_MODE_VIDEO_SYNC_PULSE) > val |= VID_MODE_TYPE_NON_BURST_SYNC_PULSES; > else > val |= VID_MODE_TYPE_NON_BURST_SYNC_EVENTS; OK, this is definitely clearer now that I've forgotten most of the datasheet; without your definitions at the top it's not clear that VID_MODE_TYPE_BURST_SYNC_PULSES is zero. From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932142AbdBPOWj (ORCPT ); Thu, 16 Feb 2017 09:22:39 -0500 Received: from dougal.metanate.com ([90.155.101.14]:4669 "EHLO metanate.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754410AbdBPOWh (ORCPT ); Thu, 16 Feb 2017 09:22:37 -0500 Date: Thu, 16 Feb 2017 14:22:22 +0000 From: John Keeping To: Chris Zhong Cc: Sean Paul , Mark Yao , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org Subject: Re: [PATCH v3 22/24] drm/rockchip: dw-mipi-dsi: support non-burst modes Message-ID: <20170216142222.2831e474.john@metanate.com> In-Reply-To: <58A5161A.3070205@rock-chips.com> References: <20170129132444.25251-1-john@metanate.com> <20170129132444.25251-23-john@metanate.com> <20170131192255.GF20076@art_vandelay> <58A5161A.3070205@rock-chips.com> Organization: Metanate Ltd X-Mailer: Claws Mail 3.14.1 (GTK+ 2.24.31; x86_64-unknown-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, 16 Feb 2017 11:01:46 +0800, Chris Zhong wrote: > On 02/01/2017 03:22 AM, Sean Paul wrote: > > On Sun, Jan 29, 2017 at 01:24:42PM +0000, John Keeping wrote: > > > > Reviewed-by: Sean Paul > > > >> Signed-off-by: John Keeping > >> Reviewed-by: Chris Zhong > >> --- > >> v3: > >> - Add Chris' Reviewed-by > >> Unchanged in v2 > >> > >> drivers/gpu/drm/rockchip/dw-mipi-dsi.c | 16 +++++++++------- > >> 1 file changed, 9 insertions(+), 7 deletions(-) > >> > >> diff --git a/drivers/gpu/drm/rockchip/dw-mipi-dsi.c b/drivers/gpu/drm/rockchip/dw-mipi-dsi.c > >> index 5bad92e2370e..58cb8ace2fe8 100644 > >> --- a/drivers/gpu/drm/rockchip/dw-mipi-dsi.c > >> +++ b/drivers/gpu/drm/rockchip/dw-mipi-dsi.c > >> @@ -82,6 +82,7 @@ > >> #define FRAME_BTA_ACK BIT(14) > >> #define ENABLE_LOW_POWER (0x3f << 8) > >> #define ENABLE_LOW_POWER_MASK (0x3f << 8) > >> +#define VID_MODE_TYPE_NON_BURST_SYNC_EVENTS 0x1 > >> #define VID_MODE_TYPE_BURST_SYNC_PULSES 0x2 > This field indicates the video mode transmission type as follows: > 00: Non-burst with sync pulses > 01: Non-burst with sync events > 10 and 11: Burst mode > > So, I think define the macro like this is better: > > #define VID_MODE_TYPE_NON_BURST_SYNC_PULSES 0x0 > #define VID_MODE_TYPE_NON_BURST_SYNC_EVENTS 0x1 > #define VID_MODE_TYPE_BURST 0x2 > > > >> #define VID_MODE_TYPE_MASK 0x3 > >> > >> @@ -286,6 +287,7 @@ struct dw_mipi_dsi { > >> u32 format; > >> u16 input_div; > >> u16 feedback_div; > >> + unsigned long mode_flags; > >> > >> const struct dw_mipi_dsi_plat_data *pdata; > >> }; > >> @@ -551,15 +553,10 @@ static int dw_mipi_dsi_host_attach(struct mipi_dsi_host *host, > >> return -EINVAL; > >> } > >> > >> - if (!(device->mode_flags & MIPI_DSI_MODE_VIDEO_BURST) || > >> - !(device->mode_flags & MIPI_DSI_MODE_VIDEO_SYNC_PULSE)) { > >> - dev_err(dsi->dev, "device mode is unsupported\n"); > >> - return -EINVAL; > >> - } > >> - > >> dsi->lanes = device->lanes; > >> dsi->channel = device->channel; > >> dsi->format = device->format; > >> + dsi->mode_flags = device->mode_flags; > >> dsi->panel = of_drm_find_panel(device->dev.of_node); > >> if (dsi->panel) > >> return drm_panel_attach(dsi->panel, &dsi->connector); > >> @@ -716,7 +713,12 @@ static void dw_mipi_dsi_video_mode_config(struct dw_mipi_dsi *dsi) > >> { > >> u32 val; > >> > >> - val = VID_MODE_TYPE_BURST_SYNC_PULSES | ENABLE_LOW_POWER; > >> + val = ENABLE_LOW_POWER; > >> + > >> + if (dsi->mode_flags & MIPI_DSI_MODE_VIDEO_BURST) > >> + val |= VID_MODE_TYPE_BURST_SYNC_PULSES; > >> + else if (!(dsi->mode_flags & MIPI_DSI_MODE_VIDEO_SYNC_PULSE)) > >> + val |= VID_MODE_TYPE_NON_BURST_SYNC_EVENTS; > > if (dsi->mode_flags & MIPI_DSI_MODE_VIDEO_BURST) > val |= VID_MODE_TYPE_BURST; > else if (dsi->mode_flags & MIPI_DSI_MODE_VIDEO_SYNC_PULSE) > val |= VID_MODE_TYPE_NON_BURST_SYNC_PULSES; > else > val |= VID_MODE_TYPE_NON_BURST_SYNC_EVENTS; OK, this is definitely clearer now that I've forgotten most of the datasheet; without your definitions at the top it's not clear that VID_MODE_TYPE_BURST_SYNC_PULSES is zero.