From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Zhong Subject: Re: [01/26] drm/rockchip: dw-mipi-dsi: use mode from display state Date: Tue, 17 Jan 2017 18:38:41 +0800 Message-ID: <587DF431.5040003@rock-chips.com> References: <20160919171747.28512-2-john@metanate.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20160919171747.28512-2-john@metanate.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: John Keeping , Mark Yao Cc: linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org List-Id: linux-rockchip.vger.kernel.org CgpPbiAwOS8yMC8yMDE2IDAxOjE3IEFNLCBKb2huIEtlZXBpbmcgd3JvdGU6Cj4gVGhlcmUgaXMg bm8gbmVlZCB0byBrZWVwIGEgcG9pbnRlciB0byB0aGUgbW9kZSBhcm91bmQgc2luY2Ugd2Uga25v dyBpdAo+IHdpbGwgYmUgcHJlc2VudCBpbiB0aGUgY29ubmVjdG9yIHN0YXRlLgo+Cj4gU2lnbmVk LW9mZi1ieTogSm9obiBLZWVwaW5nIDxqb2huQG1ldGFuYXRlLmNvbT4KPiAtLS0KPiAgIGRyaXZl cnMvZ3B1L2RybS9yb2NrY2hpcC9kdy1taXBpLWRzaS5jIHwgMzEgKysrKysrKysrKysrKysrKy0t LS0tLS0tLS0tLS0tLQo+ICAgMSBmaWxlIGNoYW5nZWQsIDE2IGluc2VydGlvbnMoKyksIDE1IGRl bGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9kdy1t aXBpLWRzaS5jIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL2R3LW1pcGktZHNpLmMKPiBpbmRl eCBjYTIyZTVlZTg5Y2EuLmE4NzAzNzU1NmY1YyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vcm9ja2NoaXAvZHctbWlwaS1kc2kuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hp cC9kdy1taXBpLWRzaS5jCj4gQEAgLTI4Niw3ICsyODYsNiBAQCBzdHJ1Y3QgZHdfbWlwaV9kc2kg ewo+ICAgCXUzMiBmb3JtYXQ7Cj4gICAJdTE2IGlucHV0X2RpdjsKPiAgIAl1MTYgZmVlZGJhY2tf ZGl2Owo+IC0Jc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGU7Cj4gICAKPiAgIAljb25zdCBz dHJ1Y3QgZHdfbWlwaV9kc2lfcGxhdF9kYXRhICpwZGF0YTsKPiAgIH07Cj4gQEAgLTMzMiw5ICsz MzEsMTAgQEAgc3RhdGljIGludCBtYXhfbWJwc190b190ZXN0ZGluKHVuc2lnbmVkIGludCBtYXhf bWJwcykKPiAgICAqLwo+ICAgc3RhdGljIHZvaWQgZHdfbWlwaV9kc2lfd2FpdF9mb3JfdHdvX2Zy YW1lcyhzdHJ1Y3QgZHdfbWlwaV9kc2kgKmRzaSkKPiAgIHsKPiArCXN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlICptb2RlID0gJmRzaS0+Y29ubmVjdG9yLnN0YXRlLT5jcnRjLT5zdGF0ZS0+YWRqdXN0 ZWRfbW9kZTsKPiAgIAlpbnQgcmVmcmVzaCwgdHdvX2ZyYW1lczsKPiAgIAo+IC0JcmVmcmVzaCA9 IGRybV9tb2RlX3ZyZWZyZXNoKGRzaS0+bW9kZSk7Cj4gKwlyZWZyZXNoID0gZHJtX21vZGVfdnJl ZnJlc2gobW9kZSk7Cj4gICAJdHdvX2ZyYW1lcyA9IERJVl9ST1VORF9VUChNU0VDX1BFUl9TRUMs IHJlZnJlc2gpICogMjsKPiAgIAltc2xlZXAodHdvX2ZyYW1lcyk7Cj4gICB9Cj4gQEAgLTQ2MSw2 ICs0NjEsNyBAQCBzdGF0aWMgaW50IGR3X21pcGlfZHNpX3BoeV9pbml0KHN0cnVjdCBkd19taXBp X2RzaSAqZHNpKQo+ICAgCj4gICBzdGF0aWMgaW50IGR3X21pcGlfZHNpX2dldF9sYW5lX2Jwcyhz dHJ1Y3QgZHdfbWlwaV9kc2kgKmRzaSkKPiAgIHsKPiArCXN0cnVjdCBkcm1fZGlzcGxheV9tb2Rl ICptb2RlID0gJmRzaS0+Y29ubmVjdG9yLnN0YXRlLT5jcnRjLT5zdGF0ZS0+YWRqdXN0ZWRfbW9k ZTsKPiAgIAl1bnNpZ25lZCBpbnQgaSwgcHJlOwo+ICAgCXVuc2lnbmVkIGxvbmcgbXBjbGssIHBs bHJlZiwgdG1wOwo+ICAgCXVuc2lnbmVkIGludCBtID0gMSwgbiA9IDEsIHRhcmdldF9tYnBzID0g MTAwMDsKPiBAQCAtNDc0LDcgKzQ3NSw3IEBAIHN0YXRpYyBpbnQgZHdfbWlwaV9kc2lfZ2V0X2xh bmVfYnBzKHN0cnVjdCBkd19taXBpX2RzaSAqZHNpKQo+ICAgCQlyZXR1cm4gYnBwOwo+ICAgCX0K PiAgIAo+IC0JbXBjbGsgPSBESVZfUk9VTkRfVVAoZHNpLT5tb2RlLT5jbG9jaywgTVNFQ19QRVJf U0VDKTsKPiArCW1wY2xrID0gRElWX1JPVU5EX1VQKG1vZGUtPmNsb2NrLCBNU0VDX1BFUl9TRUMp Owo+ICAgCWlmIChtcGNsaykgewo+ICAgCQkvKiB0YWtlIDEgLyAwLjksIHNpbmNlIG1icHMgbXVz dCBiaWcgdGhhbiBiYW5kd2lkdGggb2YgUkdCICovCj4gICAJCXRtcCA9IG1wY2xrICogKGJwcCAv IGRzaS0+bGFuZXMpICogMTAgLyA5Owo+IEBAIC02ODksOSArNjkwLDkgQEAgc3RhdGljIHZvaWQg ZHdfbWlwaV9kc2lfaW5pdChzdHJ1Y3QgZHdfbWlwaV9kc2kgKmRzaSkKPiAgIAlkc2lfd3JpdGUo ZHNpLCBEU0lfTFBDTEtfQ1RSTCwgUEhZX1RYUkVRVUVTVENMS0hTKTsKPiAgIH0KPiAgIAo+IC1z dGF0aWMgdm9pZCBkd19taXBpX2RzaV9kcGlfY29uZmlnKHN0cnVjdCBkd19taXBpX2RzaSAqZHNp LAo+IC0JCQkJICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUpCj4gK3N0YXRpYyB2b2lk IGR3X21pcGlfZHNpX2RwaV9jb25maWcoc3RydWN0IGR3X21pcGlfZHNpICpkc2kpCj4gICB7Cj4g KwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSA9ICZkc2ktPmNvbm5lY3Rvci5zdGF0ZS0+ Y3J0Yy0+c3RhdGUtPmFkanVzdGVkX21vZGU7Cj4gICAJdTMyIHZhbCA9IDAsIGNvbG9yID0gMDsK PiAgIAo+ICAgCXN3aXRjaCAoZHNpLT5mb3JtYXQpIHsKPiBAQCAtNzI2LDkgKzcyNywxMCBAQCBz dGF0aWMgdm9pZCBkd19taXBpX2RzaV9wYWNrZXRfaGFuZGxlcl9jb25maWcoc3RydWN0IGR3X21p cGlfZHNpICpkc2kpCj4gICAJZHNpX3dyaXRlKGRzaSwgRFNJX1BDS0hETF9DRkcsIEVOX0NSQ19S WCB8IEVOX0VDQ19SWCB8IEVOX0JUQSk7Cj4gICB9Cj4gICAKPiAtc3RhdGljIHZvaWQgZHdfbWlw aV9kc2lfdmlkZW9fcGFja2V0X2NvbmZpZyhzdHJ1Y3QgZHdfbWlwaV9kc2kgKmRzaSwKPiAtCQkJ CQkgICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUpCj4gK3N0YXRpYyB2b2lkIGR3X21p cGlfZHNpX3ZpZGVvX3BhY2tldF9jb25maWcoc3RydWN0IGR3X21pcGlfZHNpICpkc2kpCj4gICB7 Cj4gKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSA9ICZkc2ktPmNvbm5lY3Rvci5zdGF0 ZS0+Y3J0Yy0+c3RhdGUtPmFkanVzdGVkX21vZGU7Cj4gKwo+ICAgCWRzaV93cml0ZShkc2ksIERT SV9WSURfUEtUX1NJWkUsIFZJRF9QS1RfU0laRShtb2RlLT5oZGlzcGxheSkpOwo+ICAgfQo+ICAg Cj4gQEAgLTc0NCwxMiArNzQ2LDEzIEBAIHN0YXRpYyB2b2lkIGR3X21pcGlfZHNpX2NvbW1hbmRf bW9kZV9jb25maWcoc3RydWN0IGR3X21pcGlfZHNpICpkc2kpCj4gICBzdGF0aWMgdTMyIGR3X21p cGlfZHNpX2dldF9oY29tcG9uZW50X2xiY2Moc3RydWN0IGR3X21pcGlfZHNpICpkc2ksCj4gICAJ CQkJCSAgIHUzMiBoY29tcG9uZW50KQo+ICAgewo+ICsJc3RydWN0IGRybV9kaXNwbGF5X21vZGUg Km1vZGUgPSAmZHNpLT5jb25uZWN0b3Iuc3RhdGUtPmNydGMtPnN0YXRlLT5hZGp1c3RlZF9tb2Rl Owo+ICAgCXUzMiBmcmFjLCBsYmNjOwo+ICAgCj4gICAJbGJjYyA9IGhjb21wb25lbnQgKiBkc2kt PmxhbmVfbWJwcyAqIE1TRUNfUEVSX1NFQyAvIDg7Cj4gICAKPiAtCWZyYWMgPSBsYmNjICUgZHNp LT5tb2RlLT5jbG9jazsKPiAtCWxiY2MgPSBsYmNjIC8gZHNpLT5tb2RlLT5jbG9jazsKPiArCWZy YWMgPSBsYmNjICUgbW9kZS0+Y2xvY2s7Cj4gKwlsYmNjID0gbGJjYyAvIG1vZGUtPmNsb2NrOwo+ ICAgCWlmIChmcmFjKQo+ICAgCQlsYmNjKys7Cj4gICAKPiBAQCAtNzU5LDcgKzc2Miw3IEBAIHN0 YXRpYyB1MzIgZHdfbWlwaV9kc2lfZ2V0X2hjb21wb25lbnRfbGJjYyhzdHJ1Y3QgZHdfbWlwaV9k c2kgKmRzaSwKPiAgIHN0YXRpYyB2b2lkIGR3X21pcGlfZHNpX2xpbmVfdGltZXJfY29uZmlnKHN0 cnVjdCBkd19taXBpX2RzaSAqZHNpKQo+ICAgewo+ICAgCXUzMiBodG90YWwsIGhzYSwgaGJwLCBs YmNjOwo+IC0Jc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUgPSBkc2ktPm1vZGU7Cj4gKwlz dHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSA9ICZkc2ktPmNvbm5lY3Rvci5zdGF0ZS0+Y3J0 Yy0+c3RhdGUtPmFkanVzdGVkX21vZGU7Cj4gICAKPiAgIAlodG90YWwgPSBtb2RlLT5odG90YWw7 Cj4gICAJaHNhID0gbW9kZS0+aHN5bmNfZW5kIC0gbW9kZS0+aHN5bmNfc3RhcnQ7Cj4gQEAgLTc3 OCw3ICs3ODEsNyBAQCBzdGF0aWMgdm9pZCBkd19taXBpX2RzaV9saW5lX3RpbWVyX2NvbmZpZyhz dHJ1Y3QgZHdfbWlwaV9kc2kgKmRzaSkKPiAgIHN0YXRpYyB2b2lkIGR3X21pcGlfZHNpX3ZlcnRp Y2FsX3RpbWluZ19jb25maWcoc3RydWN0IGR3X21pcGlfZHNpICpkc2kpCj4gICB7Cj4gICAJdTMy IHZhY3RpdmUsIHZzYSwgdmZwLCB2YnA7Cj4gLQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9k ZSA9IGRzaS0+bW9kZTsKPiArCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlID0gJmRzaS0+ Y29ubmVjdG9yLnN0YXRlLT5jcnRjLT5zdGF0ZS0+YWRqdXN0ZWRfbW9kZTsKPiAgIAo+ICAgCXZh Y3RpdmUgPSBtb2RlLT52ZGlzcGxheTsKPiAgIAl2c2EgPSBtb2RlLT52c3luY19lbmQgLSBtb2Rl LT52c3luY19zdGFydDsKPiBAQCAtODIxLDggKzgyNCw2IEBAIHN0YXRpYyB2b2lkIGR3X21pcGlf ZHNpX2VuY29kZXJfbW9kZV9zZXQoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLAo+ICAgCXN0 cnVjdCBkd19taXBpX2RzaSAqZHNpID0gZW5jb2Rlcl90b19kc2koZW5jb2Rlcik7Cj4gICAJaW50 IHJldDsKPiAgIAo+IC0JZHNpLT5tb2RlID0gYWRqdXN0ZWRfbW9kZTsKPiAtCkkgcHJlZmVyIHRv IGtlZXAgdGhlIG9yaWdpbmFsIG1ldGhvZCwgYWx0aG91Z2ggdGhpcyJkc2ktPm1vZGUiIHBvaW50 ZXIgCmlzIHNhbWUgYXMgIiZkc2ktPmNvbm5lY3Rvci5zdGF0ZS0+Y3J0Yy0+c3RhdGUtPmFkanVz dGVkX21vZGU7ICIKSSBzdGlsbCB0aGluayBkc2ktPm1vZGUgbWFrZXMgdGhlIHByb2Nlc3MgZWFz aWVyIHRvIHJlYWQKCgo+ICAgCXJldCA9IGR3X21pcGlfZHNpX2dldF9sYW5lX2Jwcyhkc2kpOwo+ ICAgCWlmIChyZXQgPCAwKQo+ICAgCQlyZXR1cm47Cj4gQEAgLTgzMywxMCArODM0LDEwIEBAIHN0 YXRpYyB2b2lkIGR3X21pcGlfZHNpX2VuY29kZXJfbW9kZV9zZXQoc3RydWN0IGRybV9lbmNvZGVy ICplbmNvZGVyLAo+ICAgCX0KPiAgIAo+ICAgCWR3X21pcGlfZHNpX2luaXQoZHNpKTsKPiAtCWR3 X21pcGlfZHNpX2RwaV9jb25maWcoZHNpLCBtb2RlKTsKPiArCWR3X21pcGlfZHNpX2RwaV9jb25m aWcoZHNpKTsKPiAgIAlkd19taXBpX2RzaV9wYWNrZXRfaGFuZGxlcl9jb25maWcoZHNpKTsKPiAg IAlkd19taXBpX2RzaV92aWRlb19tb2RlX2NvbmZpZyhkc2kpOwo+IC0JZHdfbWlwaV9kc2lfdmlk ZW9fcGFja2V0X2NvbmZpZyhkc2ksIG1vZGUpOwo+ICsJZHdfbWlwaV9kc2lfdmlkZW9fcGFja2V0 X2NvbmZpZyhkc2kpOwo+ICAgCWR3X21pcGlfZHNpX2NvbW1hbmRfbW9kZV9jb25maWcoZHNpKTsK PiAgIAlkd19taXBpX2RzaV9saW5lX3RpbWVyX2NvbmZpZyhkc2kpOwo+ICAgCWR3X21pcGlfZHNp X3ZlcnRpY2FsX3RpbWluZ19jb25maWcoZHNpKTsKCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9kcmktZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 From: zyw@rock-chips.com (Chris Zhong) Date: Tue, 17 Jan 2017 18:38:41 +0800 Subject: [01/26] drm/rockchip: dw-mipi-dsi: use mode from display state In-Reply-To: <20160919171747.28512-2-john@metanate.com> References: <20160919171747.28512-2-john@metanate.com> Message-ID: <587DF431.5040003@rock-chips.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On 09/20/2016 01:17 AM, John Keeping wrote: > There is no need to keep a pointer to the mode around since we know it > will be present in the connector state. > > Signed-off-by: John Keeping > --- > drivers/gpu/drm/rockchip/dw-mipi-dsi.c | 31 ++++++++++++++++--------------- > 1 file changed, 16 insertions(+), 15 deletions(-) > > diff --git a/drivers/gpu/drm/rockchip/dw-mipi-dsi.c b/drivers/gpu/drm/rockchip/dw-mipi-dsi.c > index ca22e5ee89ca..a87037556f5c 100644 > --- a/drivers/gpu/drm/rockchip/dw-mipi-dsi.c > +++ b/drivers/gpu/drm/rockchip/dw-mipi-dsi.c > @@ -286,7 +286,6 @@ struct dw_mipi_dsi { > u32 format; > u16 input_div; > u16 feedback_div; > - struct drm_display_mode *mode; > > const struct dw_mipi_dsi_plat_data *pdata; > }; > @@ -332,9 +331,10 @@ static int max_mbps_to_testdin(unsigned int max_mbps) > */ > static void dw_mipi_dsi_wait_for_two_frames(struct dw_mipi_dsi *dsi) > { > + struct drm_display_mode *mode = &dsi->connector.state->crtc->state->adjusted_mode; > int refresh, two_frames; > > - refresh = drm_mode_vrefresh(dsi->mode); > + refresh = drm_mode_vrefresh(mode); > two_frames = DIV_ROUND_UP(MSEC_PER_SEC, refresh) * 2; > msleep(two_frames); > } > @@ -461,6 +461,7 @@ static int dw_mipi_dsi_phy_init(struct dw_mipi_dsi *dsi) > > static int dw_mipi_dsi_get_lane_bps(struct dw_mipi_dsi *dsi) > { > + struct drm_display_mode *mode = &dsi->connector.state->crtc->state->adjusted_mode; > unsigned int i, pre; > unsigned long mpclk, pllref, tmp; > unsigned int m = 1, n = 1, target_mbps = 1000; > @@ -474,7 +475,7 @@ static int dw_mipi_dsi_get_lane_bps(struct dw_mipi_dsi *dsi) > return bpp; > } > > - mpclk = DIV_ROUND_UP(dsi->mode->clock, MSEC_PER_SEC); > + mpclk = DIV_ROUND_UP(mode->clock, MSEC_PER_SEC); > if (mpclk) { > /* take 1 / 0.9, since mbps must big than bandwidth of RGB */ > tmp = mpclk * (bpp / dsi->lanes) * 10 / 9; > @@ -689,9 +690,9 @@ static void dw_mipi_dsi_init(struct dw_mipi_dsi *dsi) > dsi_write(dsi, DSI_LPCLK_CTRL, PHY_TXREQUESTCLKHS); > } > > -static void dw_mipi_dsi_dpi_config(struct dw_mipi_dsi *dsi, > - struct drm_display_mode *mode) > +static void dw_mipi_dsi_dpi_config(struct dw_mipi_dsi *dsi) > { > + struct drm_display_mode *mode = &dsi->connector.state->crtc->state->adjusted_mode; > u32 val = 0, color = 0; > > switch (dsi->format) { > @@ -726,9 +727,10 @@ static void dw_mipi_dsi_packet_handler_config(struct dw_mipi_dsi *dsi) > dsi_write(dsi, DSI_PCKHDL_CFG, EN_CRC_RX | EN_ECC_RX | EN_BTA); > } > > -static void dw_mipi_dsi_video_packet_config(struct dw_mipi_dsi *dsi, > - struct drm_display_mode *mode) > +static void dw_mipi_dsi_video_packet_config(struct dw_mipi_dsi *dsi) > { > + struct drm_display_mode *mode = &dsi->connector.state->crtc->state->adjusted_mode; > + > dsi_write(dsi, DSI_VID_PKT_SIZE, VID_PKT_SIZE(mode->hdisplay)); > } > > @@ -744,12 +746,13 @@ static void dw_mipi_dsi_command_mode_config(struct dw_mipi_dsi *dsi) > static u32 dw_mipi_dsi_get_hcomponent_lbcc(struct dw_mipi_dsi *dsi, > u32 hcomponent) > { > + struct drm_display_mode *mode = &dsi->connector.state->crtc->state->adjusted_mode; > u32 frac, lbcc; > > lbcc = hcomponent * dsi->lane_mbps * MSEC_PER_SEC / 8; > > - frac = lbcc % dsi->mode->clock; > - lbcc = lbcc / dsi->mode->clock; > + frac = lbcc % mode->clock; > + lbcc = lbcc / mode->clock; > if (frac) > lbcc++; > > @@ -759,7 +762,7 @@ static u32 dw_mipi_dsi_get_hcomponent_lbcc(struct dw_mipi_dsi *dsi, > static void dw_mipi_dsi_line_timer_config(struct dw_mipi_dsi *dsi) > { > u32 htotal, hsa, hbp, lbcc; > - struct drm_display_mode *mode = dsi->mode; > + struct drm_display_mode *mode = &dsi->connector.state->crtc->state->adjusted_mode; > > htotal = mode->htotal; > hsa = mode->hsync_end - mode->hsync_start; > @@ -778,7 +781,7 @@ static void dw_mipi_dsi_line_timer_config(struct dw_mipi_dsi *dsi) > static void dw_mipi_dsi_vertical_timing_config(struct dw_mipi_dsi *dsi) > { > u32 vactive, vsa, vfp, vbp; > - struct drm_display_mode *mode = dsi->mode; > + struct drm_display_mode *mode = &dsi->connector.state->crtc->state->adjusted_mode; > > vactive = mode->vdisplay; > vsa = mode->vsync_end - mode->vsync_start; > @@ -821,8 +824,6 @@ static void dw_mipi_dsi_encoder_mode_set(struct drm_encoder *encoder, > struct dw_mipi_dsi *dsi = encoder_to_dsi(encoder); > int ret; > > - dsi->mode = adjusted_mode; > - I prefer to keep the original method, although this"dsi->mode" pointer is same as "&dsi->connector.state->crtc->state->adjusted_mode; " I still think dsi->mode makes the process easier to read > ret = dw_mipi_dsi_get_lane_bps(dsi); > if (ret < 0) > return; > @@ -833,10 +834,10 @@ static void dw_mipi_dsi_encoder_mode_set(struct drm_encoder *encoder, > } > > dw_mipi_dsi_init(dsi); > - dw_mipi_dsi_dpi_config(dsi, mode); > + dw_mipi_dsi_dpi_config(dsi); > dw_mipi_dsi_packet_handler_config(dsi); > dw_mipi_dsi_video_mode_config(dsi); > - dw_mipi_dsi_video_packet_config(dsi, mode); > + dw_mipi_dsi_video_packet_config(dsi); > dw_mipi_dsi_command_mode_config(dsi); > dw_mipi_dsi_line_timer_config(dsi); > dw_mipi_dsi_vertical_timing_config(dsi); From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751054AbdAQKqP (ORCPT ); Tue, 17 Jan 2017 05:46:15 -0500 Received: from regular1.263xmail.com ([211.150.99.135]:44432 "EHLO regular1.263xmail.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750849AbdAQKqO (ORCPT ); Tue, 17 Jan 2017 05:46:14 -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: zyw@rock-chips.com X-FST-TO: linux-arm-kernel@lists.infradead.org X-SENDER-IP: 58.22.7.114 X-LOGIN-NAME: zyw@rock-chips.com X-UNIQUE-TAG: <5f53c5225ac3114bfa61cec0d96dd2bc> X-ATTACHMENT-NUM: 0 X-DNS-TYPE: 0 Subject: Re: [01/26] drm/rockchip: dw-mipi-dsi: use mode from display state To: John Keeping , Mark Yao References: <20160919171747.28512-2-john@metanate.com> Cc: linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org From: Chris Zhong Message-ID: <587DF431.5040003@rock-chips.com> Date: Tue, 17 Jan 2017 18:38:41 +0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.4.0 MIME-Version: 1.0 In-Reply-To: <20160919171747.28512-2-john@metanate.com> Content-Type: text/plain; charset=gb18030; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 09/20/2016 01:17 AM, John Keeping wrote: > There is no need to keep a pointer to the mode around since we know it > will be present in the connector state. > > Signed-off-by: John Keeping > --- > drivers/gpu/drm/rockchip/dw-mipi-dsi.c | 31 ++++++++++++++++--------------- > 1 file changed, 16 insertions(+), 15 deletions(-) > > diff --git a/drivers/gpu/drm/rockchip/dw-mipi-dsi.c b/drivers/gpu/drm/rockchip/dw-mipi-dsi.c > index ca22e5ee89ca..a87037556f5c 100644 > --- a/drivers/gpu/drm/rockchip/dw-mipi-dsi.c > +++ b/drivers/gpu/drm/rockchip/dw-mipi-dsi.c > @@ -286,7 +286,6 @@ struct dw_mipi_dsi { > u32 format; > u16 input_div; > u16 feedback_div; > - struct drm_display_mode *mode; > > const struct dw_mipi_dsi_plat_data *pdata; > }; > @@ -332,9 +331,10 @@ static int max_mbps_to_testdin(unsigned int max_mbps) > */ > static void dw_mipi_dsi_wait_for_two_frames(struct dw_mipi_dsi *dsi) > { > + struct drm_display_mode *mode = &dsi->connector.state->crtc->state->adjusted_mode; > int refresh, two_frames; > > - refresh = drm_mode_vrefresh(dsi->mode); > + refresh = drm_mode_vrefresh(mode); > two_frames = DIV_ROUND_UP(MSEC_PER_SEC, refresh) * 2; > msleep(two_frames); > } > @@ -461,6 +461,7 @@ static int dw_mipi_dsi_phy_init(struct dw_mipi_dsi *dsi) > > static int dw_mipi_dsi_get_lane_bps(struct dw_mipi_dsi *dsi) > { > + struct drm_display_mode *mode = &dsi->connector.state->crtc->state->adjusted_mode; > unsigned int i, pre; > unsigned long mpclk, pllref, tmp; > unsigned int m = 1, n = 1, target_mbps = 1000; > @@ -474,7 +475,7 @@ static int dw_mipi_dsi_get_lane_bps(struct dw_mipi_dsi *dsi) > return bpp; > } > > - mpclk = DIV_ROUND_UP(dsi->mode->clock, MSEC_PER_SEC); > + mpclk = DIV_ROUND_UP(mode->clock, MSEC_PER_SEC); > if (mpclk) { > /* take 1 / 0.9, since mbps must big than bandwidth of RGB */ > tmp = mpclk * (bpp / dsi->lanes) * 10 / 9; > @@ -689,9 +690,9 @@ static void dw_mipi_dsi_init(struct dw_mipi_dsi *dsi) > dsi_write(dsi, DSI_LPCLK_CTRL, PHY_TXREQUESTCLKHS); > } > > -static void dw_mipi_dsi_dpi_config(struct dw_mipi_dsi *dsi, > - struct drm_display_mode *mode) > +static void dw_mipi_dsi_dpi_config(struct dw_mipi_dsi *dsi) > { > + struct drm_display_mode *mode = &dsi->connector.state->crtc->state->adjusted_mode; > u32 val = 0, color = 0; > > switch (dsi->format) { > @@ -726,9 +727,10 @@ static void dw_mipi_dsi_packet_handler_config(struct dw_mipi_dsi *dsi) > dsi_write(dsi, DSI_PCKHDL_CFG, EN_CRC_RX | EN_ECC_RX | EN_BTA); > } > > -static void dw_mipi_dsi_video_packet_config(struct dw_mipi_dsi *dsi, > - struct drm_display_mode *mode) > +static void dw_mipi_dsi_video_packet_config(struct dw_mipi_dsi *dsi) > { > + struct drm_display_mode *mode = &dsi->connector.state->crtc->state->adjusted_mode; > + > dsi_write(dsi, DSI_VID_PKT_SIZE, VID_PKT_SIZE(mode->hdisplay)); > } > > @@ -744,12 +746,13 @@ static void dw_mipi_dsi_command_mode_config(struct dw_mipi_dsi *dsi) > static u32 dw_mipi_dsi_get_hcomponent_lbcc(struct dw_mipi_dsi *dsi, > u32 hcomponent) > { > + struct drm_display_mode *mode = &dsi->connector.state->crtc->state->adjusted_mode; > u32 frac, lbcc; > > lbcc = hcomponent * dsi->lane_mbps * MSEC_PER_SEC / 8; > > - frac = lbcc % dsi->mode->clock; > - lbcc = lbcc / dsi->mode->clock; > + frac = lbcc % mode->clock; > + lbcc = lbcc / mode->clock; > if (frac) > lbcc++; > > @@ -759,7 +762,7 @@ static u32 dw_mipi_dsi_get_hcomponent_lbcc(struct dw_mipi_dsi *dsi, > static void dw_mipi_dsi_line_timer_config(struct dw_mipi_dsi *dsi) > { > u32 htotal, hsa, hbp, lbcc; > - struct drm_display_mode *mode = dsi->mode; > + struct drm_display_mode *mode = &dsi->connector.state->crtc->state->adjusted_mode; > > htotal = mode->htotal; > hsa = mode->hsync_end - mode->hsync_start; > @@ -778,7 +781,7 @@ static void dw_mipi_dsi_line_timer_config(struct dw_mipi_dsi *dsi) > static void dw_mipi_dsi_vertical_timing_config(struct dw_mipi_dsi *dsi) > { > u32 vactive, vsa, vfp, vbp; > - struct drm_display_mode *mode = dsi->mode; > + struct drm_display_mode *mode = &dsi->connector.state->crtc->state->adjusted_mode; > > vactive = mode->vdisplay; > vsa = mode->vsync_end - mode->vsync_start; > @@ -821,8 +824,6 @@ static void dw_mipi_dsi_encoder_mode_set(struct drm_encoder *encoder, > struct dw_mipi_dsi *dsi = encoder_to_dsi(encoder); > int ret; > > - dsi->mode = adjusted_mode; > - I prefer to keep the original method, although this"dsi->mode" pointer is same as "&dsi->connector.state->crtc->state->adjusted_mode; " I still think dsi->mode makes the process easier to read > ret = dw_mipi_dsi_get_lane_bps(dsi); > if (ret < 0) > return; > @@ -833,10 +834,10 @@ static void dw_mipi_dsi_encoder_mode_set(struct drm_encoder *encoder, > } > > dw_mipi_dsi_init(dsi); > - dw_mipi_dsi_dpi_config(dsi, mode); > + dw_mipi_dsi_dpi_config(dsi); > dw_mipi_dsi_packet_handler_config(dsi); > dw_mipi_dsi_video_mode_config(dsi); > - dw_mipi_dsi_video_packet_config(dsi, mode); > + dw_mipi_dsi_video_packet_config(dsi); > dw_mipi_dsi_command_mode_config(dsi); > dw_mipi_dsi_line_timer_config(dsi); > dw_mipi_dsi_vertical_timing_config(dsi);