From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751454AbaLXFYj (ORCPT ); Wed, 24 Dec 2014 00:24:39 -0500 Received: from mail-bn1on0111.outbound.protection.outlook.com ([157.56.110.111]:56544 "EHLO na01-bn1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751060AbaLXFYi (ORCPT ); Wed, 24 Dec 2014 00:24:38 -0500 Message-ID: <549A4F19.30201@freescale.com> Date: Wed, 24 Dec 2014 13:28:57 +0800 From: Liu Ying User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.2.0 MIME-Version: 1.0 To: Andrzej Hajda , CC: , , , , , , Subject: Re: [PATCH RFC v3 13/18] drm: panel: Add support for Himax HX8369A MIPI DSI panel References: <1419306399-9387-1-git-send-email-Ying.Liu@freescale.com> <1419306399-9387-14-git-send-email-Ying.Liu@freescale.com> <54994633.9070007@samsung.com> In-Reply-To: <54994633.9070007@samsung.com> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit X-EOPAttributedMessage: 0 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=Ying.Liu@freescale.com; X-Forefront-Antispam-Report: CIP:192.88.168.50;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10019020)(6009001)(339900001)(51704005)(24454002)(377454003)(189002)(479174004)(199003)(99396003)(50986999)(76176999)(65806001)(65956001)(87936001)(64706001)(83506001)(31966008)(20776003)(84676001)(64126003)(6806004)(23676002)(85426001)(47776003)(105606002)(120916001)(77156002)(50466002)(54356999)(36756003)(65816999)(19580395003)(19580405001)(62966003)(4396001)(97736003)(107046002)(106466001)(46102003)(104016003)(2950100001)(77096005)(33656002)(86362001)(575784001)(92566001)(21056001)(68736005)(2004002)(217873001);DIR:OUT;SFP:1102;SCL:1;SRVR:CY1PR0301MB0634;H:tx30smr01.am.freescale.net;FPR:;SPF:Fail;MLV:sfv;PTR:InfoDomainNonexistent;MX:1;A:1;LANG:en; X-Microsoft-Antispam: UriScan:; X-Microsoft-Antispam: BCL:0;PCL:0;RULEID:;SRVR:CY1PR0301MB0634; X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004);SRVR:CY1PR0301MB0634; X-Forefront-PRVS: 04359FAD81 X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:;SRVR:CY1PR0301MB0634; X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Dec 2014 05:24:34.0667 (UTC) X-MS-Exchange-CrossTenant-Id: 710a03f5-10f6-4d38-9ff4-a80b81da590d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=710a03f5-10f6-4d38-9ff4-a80b81da590d;Ip=[192.88.168.50] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR0301MB0634 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Andrzej, On 12/23/2014 06:38 PM, Andrzej Hajda wrote: > Hi Liu Ying, > > On 12/23/2014 04:46 AM, Liu Ying wrote: >> This patch adds support for Himax HX8369A MIPI DSI panel. >> >> Signed-off-by: Liu Ying >> --- >> v2->v3: >> * Sort the included header files alphabetically. >> >> v1->v2: >> * Address almost all comments from Thierry Reding. >> * Remove several DT properties as they can be implied by the compatible string. >> * Add the HIMAX/himax prefixes to the driver's Kconfig name and driver name. >> * Move the driver's Makefile entry place to sort the entries alphabetically. >> * Reuse several standard DCS functions instead of inventing wheels. >> * Move the panel resetting and power logics to the driver probe/remove stages. >> This may simplify panel prepare/unprepare hooks. The power consumption should >> not change a lot at DPMS since the panel enters sleep mode at that time. > > What kind of issues did you have with reset/power logic in > prepare/unprepare? As I see it should be just a matter of moving > power on/off functions to prepare/unprepare, am I right? The issue is that the panel does not work any more if I have the reset/power logic in prepare/unprepare. I don't see any valuable information in dmesg when the system boots up or I unblank/blank the framebuffer manually via sysfs. The panel backlight does not light up. I think it should be a matter of moving (power-on and reset)/ power-off to prepare/unprepare. In my system, the power for the panel is always enabled. So, this issue is probably caused by the reset operation. > >> * Add the module author. >> * Other minor changes, such as coding style issues. >> >> .../devicetree/bindings/panel/himax,hx8369a.txt | 41 ++ >> drivers/gpu/drm/panel/Kconfig | 5 + >> drivers/gpu/drm/panel/Makefile | 1 + >> drivers/gpu/drm/panel/panel-himax-hx8369a.c | 573 +++++++++++++++++++++ >> 4 files changed, 620 insertions(+) >> create mode 100644 Documentation/devicetree/bindings/panel/himax,hx8369a.txt >> create mode 100644 drivers/gpu/drm/panel/panel-himax-hx8369a.c >> >> diff --git a/Documentation/devicetree/bindings/panel/himax,hx8369a.txt b/Documentation/devicetree/bindings/panel/himax,hx8369a.txt >> new file mode 100644 >> index 0000000..36a2f11 >> --- /dev/null >> +++ b/Documentation/devicetree/bindings/panel/himax,hx8369a.txt >> @@ -0,0 +1,41 @@ >> +Himax HX8369A WVGA 16.7M color TFT single chip driver with internal GRAM >> + >> +Himax HX8369A is a WVGA resolution driving controller. >> +It is designed to provide a single chip solution that combines a source >> +driver and power supply circuits to drive a TFT dot matrix LCD with >> +480RGBx864 dots at the maximum. >> + >> +The HX8369A supports several interface modes, including MPU MIPI DBI Type >> +A/B mode, MIPI DPI/DBI Type C mode, MIPI DSI video mode, MIPI DSI command >> +mode and MDDI mode. The interface mode is selected by the external hardware >> +pins BS[3:0]. >> + >> +Currently, only the MIPI DSI video mode is supported. >> + >> +Required properties: >> + - compatible: should be a panel's compatible string >> + - reg: the virtual channel number of a DSI peripheral as described in [1] >> + - reset-gpios: a GPIO spec for the reset pin >> + >> +Optional properties: >> + - vdd1-supply: I/O and interface power supply >> + - vdd2-supply: analog power supply >> + - vdd3-supply: logic power supply >> + - dsi-vcc-supply: DSI and MDDI power supply >> + - vpp-supply: OTP programming voltage >> + - bs0-gpios: a GPIO spec for the pin BS0 >> + - bs1-gpios: a GPIO spec for the pin BS1 >> + - bs2-gpios: a GPIO spec for the pin BS2 >> + - bs3-gpios: a GPIO spec for the pin BS3 > > I wonder if it wouldn't be better to replace it by gpio list, sth like: > - bs-gpios: list of four GPIO specs for BS0-BS3 pins > > At least documentation suggests it [1], it also allows to omit some pins > if necessary, but it is just suggestion. > > [1]: Documentation/devicetree/bindings/gpio/gpio.txt The suggestion looks good. I may try to use the gpio list. Thanks. > >> + >> +[1] Documentation/devicetree/bindings/mipi/dsi/mipi-dsi-bus.txt >> + >> +Example: >> + panel { >> + compatible = "truly,tft480800-16-e-dsi"; >> + reg = <0>; >> + pinctrl-names = "default"; >> + pinctrl-0 = <&pinctrl_mipi_panel>; >> + reset-gpios = <&gpio6 11 GPIO_ACTIVE_LOW>; >> + bs2-gpios = <&gpio6 14 GPIO_ACTIVE_HIGH>; >> + }; >> diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig >> index 024e98e..81b0bf0 100644 >> --- a/drivers/gpu/drm/panel/Kconfig >> +++ b/drivers/gpu/drm/panel/Kconfig >> @@ -16,6 +16,11 @@ config DRM_PANEL_SIMPLE >> that it can be automatically turned off when the panel goes into a >> low power state. >> >> +config DRM_PANEL_HIMAX_HX8369A >> + tristate "Himax HX8369A panel" >> + depends on OF >> + select DRM_MIPI_DSI >> + >> config DRM_PANEL_LD9040 >> tristate "LD9040 RGB/SPI panel" >> depends on OF && SPI >> diff --git a/drivers/gpu/drm/panel/Makefile b/drivers/gpu/drm/panel/Makefile >> index 4b2a043..d5dbe06 100644 >> --- a/drivers/gpu/drm/panel/Makefile >> +++ b/drivers/gpu/drm/panel/Makefile >> @@ -1,4 +1,5 @@ >> obj-$(CONFIG_DRM_PANEL_SIMPLE) += panel-simple.o >> +obj-$(CONFIG_DRM_PANEL_HIMAX_HX8369A) += panel-himax-hx8369a.o >> obj-$(CONFIG_DRM_PANEL_LD9040) += panel-ld9040.o >> obj-$(CONFIG_DRM_PANEL_S6E8AA0) += panel-s6e8aa0.o >> obj-$(CONFIG_DRM_PANEL_SHARP_LQ101R1SX01) += panel-sharp-lq101r1sx01.o >> diff --git a/drivers/gpu/drm/panel/panel-himax-hx8369a.c b/drivers/gpu/drm/panel/panel-himax-hx8369a.c >> new file mode 100644 >> index 0000000..6efce8e >> --- /dev/null >> +++ b/drivers/gpu/drm/panel/panel-himax-hx8369a.c >> @@ -0,0 +1,573 @@ >> +/* >> + * Himax HX8369A panel driver. >> + * >> + * Copyright (C) 2011-2014 Freescale Semiconductor, Inc. >> + * >> + * This program is free software; you can redistribute it and/or modify >> + * it under the terms of the GNU General Public License version 2 as >> + * published by the Free Software Foundation. >> + * >> + * This driver is based on Samsung s6e8aa0 panel driver. >> + */ >> + >> +#include >> +#include >> +#include >> + >> +#include >> +#include >> +#include >> + >> +#include