From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefan Agner Subject: [PATCH] drm/fsl-dcu: fix endian issue when using clk_register_divider Date: Fri, 2 Sep 2016 12:07:53 -0700 Message-ID: <20160902190753.27736-1-stefan@agner.ch> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail.kmu-office.ch (mail.kmu-office.ch [178.209.48.109]) by gabe.freedesktop.org (Postfix) with ESMTPS id CFB3B6EAD4 for ; Fri, 2 Sep 2016 19:08:14 +0000 (UTC) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: jianwei.wang.chn@gmail.com, meng.yi@nxp.com, alison.wang@freescale.com, linux-kernel@vger.kernel.org, stable@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org U2luY2UgdXNpbmcgY2xrX3JlZ2lzdGVyX2RpdmlkZXIgdG8gc2V0dXAgdGhlIHBpeGVsIGNsb2Nr LCByZWdtYXAKaXMgbm8gbG9uZ2VyIHVzZWQuIFJlZ21hcCBkaWQgdGFrZSBjYXJlIG9mIERDVSB1 c2luZyBkaWZmZXJlbnQKZW5kaWFubmVzcy4gQ2hlY2sgZW5kaWFubmVzcyB1c2luZyB0aGUgZGV2 aWNlLXRyZWUgcHJvcGVydHkKImJpZy1lbmRpYW4iIHRvIGRldGVybWluZSB0aGUgbG9jYXRpb24g b2YgRElWX1JBVElPLgoKQ2M6IHN0YWJsZUB2Z2VyLmtlcm5lbC5vcmcKRml4ZXM6IDJkNzAxNDQ5 YmNlMSAoImRybS9mc2wtZGN1OiB1c2UgY29tbW9uIGNsb2NrIGZyYW1ld29yayBmb3IgcGl4ZWwg Y2xvY2sgZGl2aWRlciIpClJlcG9ydGVkLWJ5OiBNZW5nIFlpIDxtZW5nLnlpQG54cC5jb20+ClNp Z25lZC1vZmYtYnk6IFN0ZWZhbiBBZ25lciA8c3RlZmFuQGFnbmVyLmNoPgotLS0KIGRyaXZlcnMv Z3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2Rydi5jIHwgNyArKysrKystCiAxIGZpbGUgY2hh bmdlZCwgNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vZnNs LWRjdS9mc2xfZGN1X2RybV9kcnYuYwppbmRleCA3ODgyMzg3Li44ZGQwNDJlIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9kcnYuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9kcnYuYwpAQCAtMzMwLDYgKzMzMCw3IEBAIHN0 YXRpYyBpbnQgZnNsX2RjdV9kcm1fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikK IAljb25zdCBjaGFyICpwaXhfY2xrX2luX25hbWU7CiAJY29uc3Qgc3RydWN0IG9mX2RldmljZV9p ZCAqaWQ7CiAJaW50IHJldDsKKwl1OCBkaXZfcmF0aW9fc2hpZnQgPSAwOwogCiAJZnNsX2RldiA9 IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqZnNsX2RldiksIEdGUF9LRVJORUwpOwogCWlmICgh ZnNsX2RldikKQEAgLTM4MiwxMSArMzgzLDE1IEBAIHN0YXRpYyBpbnQgZnNsX2RjdV9kcm1fcHJv YmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAkJcGl4X2Nsa19pbiA9IGZzbF9kZXYt PmNsazsKIAl9CiAKKwlpZiAob2ZfcHJvcGVydHlfcmVhZF9ib29sKGRldi0+b2Zfbm9kZSwgImJp Zy1lbmRpYW4iKSkKKwkJZGl2X3JhdGlvX3NoaWZ0ID0gMjQ7CisKKwogCXBpeF9jbGtfaW5fbmFt ZSA9IF9fY2xrX2dldF9uYW1lKHBpeF9jbGtfaW4pOwogCXNucHJpbnRmKHBpeF9jbGtfbmFtZSwg c2l6ZW9mKHBpeF9jbGtfbmFtZSksICIlc19waXgiLCBwaXhfY2xrX2luX25hbWUpOwogCWZzbF9k ZXYtPnBpeF9jbGsgPSBjbGtfcmVnaXN0ZXJfZGl2aWRlcihkZXYsIHBpeF9jbGtfbmFtZSwKIAkJ CXBpeF9jbGtfaW5fbmFtZSwgMCwgYmFzZSArIERDVV9ESVZfUkFUSU8sCi0JCQkwLCA4LCBDTEtf RElWSURFUl9ST1VORF9DTE9TRVNULCBOVUxMKTsKKwkJCWRpdl9yYXRpb19zaGlmdCwgOCwgQ0xL X0RJVklERVJfUk9VTkRfQ0xPU0VTVCwgTlVMTCk7CiAJaWYgKElTX0VSUihmc2xfZGV2LT5waXhf Y2xrKSkgewogCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byByZWdpc3RlciBwaXggY2xrXG4iKTsK IAkJcmV0ID0gUFRSX0VSUihmc2xfZGV2LT5waXhfY2xrKTsKLS0gCjIuOS4wCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBs aXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755209AbcIBTJZ (ORCPT ); Fri, 2 Sep 2016 15:09:25 -0400 Received: from mail.kmu-office.ch ([178.209.48.109]:41648 "EHLO mail.kmu-office.ch" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755172AbcIBTIQ (ORCPT ); Fri, 2 Sep 2016 15:08:16 -0400 From: Stefan Agner To: dri-devel@lists.freedesktop.org Cc: meng.yi@nxp.com, alison.wang@freescale.com, jianwei.wang.chn@gmail.com, linux-kernel@vger.kernel.org, Stefan Agner , stable@vger.kernel.org Subject: [PATCH] drm/fsl-dcu: fix endian issue when using clk_register_divider Date: Fri, 2 Sep 2016 12:07:53 -0700 Message-Id: <20160902190753.27736-1-stefan@agner.ch> X-Mailer: git-send-email 2.9.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Since using clk_register_divider to setup the pixel clock, regmap is no longer used. Regmap did take care of DCU using different endianness. Check endianness using the device-tree property "big-endian" to determine the location of DIV_RATIO. Cc: stable@vger.kernel.org Fixes: 2d701449bce1 ("drm/fsl-dcu: use common clock framework for pixel clock divider") Reported-by: Meng Yi Signed-off-by: Stefan Agner --- drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c index 7882387..8dd042e 100644 --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c @@ -330,6 +330,7 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev) const char *pix_clk_in_name; const struct of_device_id *id; int ret; + u8 div_ratio_shift = 0; fsl_dev = devm_kzalloc(dev, sizeof(*fsl_dev), GFP_KERNEL); if (!fsl_dev) @@ -382,11 +383,15 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev) pix_clk_in = fsl_dev->clk; } + if (of_property_read_bool(dev->of_node, "big-endian")) + div_ratio_shift = 24; + + pix_clk_in_name = __clk_get_name(pix_clk_in); snprintf(pix_clk_name, sizeof(pix_clk_name), "%s_pix", pix_clk_in_name); fsl_dev->pix_clk = clk_register_divider(dev, pix_clk_name, pix_clk_in_name, 0, base + DCU_DIV_RATIO, - 0, 8, CLK_DIVIDER_ROUND_CLOSEST, NULL); + div_ratio_shift, 8, CLK_DIVIDER_ROUND_CLOSEST, NULL); if (IS_ERR(fsl_dev->pix_clk)) { dev_err(dev, "failed to register pix clk\n"); ret = PTR_ERR(fsl_dev->pix_clk); -- 2.9.0