From nobody Mon Feb 9 18:23:20 2026 Received: from mail-pf1-f181.google.com (mail-pf1-f181.google.com [209.85.210.181]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AD5D1101E4 for ; Thu, 16 May 2024 07:21:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.181 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1715844072; cv=none; b=P3t8OaxeM88a1EPZLs8Baimvb41HsSQmq4yreznAaDdYNyXgXgKWS8gHouknR5cVTuRZzQIgLhA7PUs4DPrQe075rxrnxXSQj8RlJKDwncWialnjUc9oUSXQ4KUFYoY1sGFI5M+ZUukWyxV3REJT/szeErGH7dW/dLvWGbswdbc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1715844072; c=relaxed/simple; bh=Yf5ehIasg6XYse+GohW47xZA/duOo54zsOqYamoJOGg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=WU5kNoO7YIamgrxW+ADdKZb/HT8/KGob6ZxnManY3EgQ2xIlUBZU7+ad+B5vUpp+YcGdWPBN1YCa7LUNxyL7NaxVgxi6oDjA/WI99s5RtpFKKQOtFBkyULmTc+8e/w0neL7V1tk3VB+mSK/IFfzj4f41MEA6fDWliV1g90mKmtA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=huaqin.corp-partner.google.com; spf=pass smtp.mailfrom=huaqin.corp-partner.google.com; dkim=pass (2048-bit key) header.d=huaqin-corp-partner-google-com.20230601.gappssmtp.com header.i=@huaqin-corp-partner-google-com.20230601.gappssmtp.com header.b=xC4N9bzF; arc=none smtp.client-ip=209.85.210.181 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=huaqin.corp-partner.google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=huaqin.corp-partner.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=huaqin-corp-partner-google-com.20230601.gappssmtp.com header.i=@huaqin-corp-partner-google-com.20230601.gappssmtp.com header.b="xC4N9bzF" Received: by mail-pf1-f181.google.com with SMTP id d2e1a72fcca58-6f457853950so5723355b3a.0 for ; Thu, 16 May 2024 00:21:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=huaqin-corp-partner-google-com.20230601.gappssmtp.com; s=20230601; t=1715844070; x=1716448870; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=tNyE9kNA+CaynLqLbsiRaRBnzN1qmwEHRIdOLCz8/XE=; b=xC4N9bzFLPKRbw9nome/h0RsHArrq4KHwxuVavF5KlPNjbwH7psEJoN/w69XjqZpUy LAmRgctA9gdCXtEszDUf5a0JNrdXF7uRL9R9u0Zhkt3X/GCl1brlQSM/0zfsmM7PKyQ8 6tRS13OZnZ5yjJt4ubl9OrNgivx+upNCcYH+T93lcp3TANWbBHrUw65tKX1a2r9Xucs2 oIBiEc9Nptc0qb0yIWMxNtCNGUvwpc7Pr/T+0zUvv+5/wavEWn2KHoR2jgU49sKHz6qf obklepvCDKo8b4f3KNSLSXBZipVtig/vdzs3wnPGDVvGiMmf1rFtdwml30OklLgnfWml jaIw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1715844070; x=1716448870; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=tNyE9kNA+CaynLqLbsiRaRBnzN1qmwEHRIdOLCz8/XE=; b=ZMK/8RPuDCGgKSFH7+nZOSyDoOSEdnhFVivscEu3B+Cql1/SUlFPS1PWQMd2JwMs81 XR3FysxbUwp29a/PUx8csm3cwLg26/g9qrH/guzTpINzvmi6lrWO5+YngsTsDLv47ZAR k13FKEFKJLzVOrWKk8t0GVqmyiksbT3MBChhn5b2aaYy4+Vg2ECMK+hQZUT7DImqIWeT 54UASs7s7RmTPVYCu5MGo2IbcSRG5Hm850O5iTJ2PWdAWY+itMtUpaX0XLSz4IeSuJah ORScGoCjbv5xV9eDsSOIO/0+Xf8MmwESn03OfJJ1I/DZ969Nju+G2go8wux9ltJ6Epcb 8Elw== X-Forwarded-Encrypted: i=1; AJvYcCXRPfgbdYwTZF70jCvW6uFqmEBV02UaajqFzbBAVjC6DQfrwkohl7PDKOIotQHTLycoPIACvTPrv27hSEG1W3hpOU/mq8Np2UBQm7ma X-Gm-Message-State: AOJu0YydLAnp1CKUZ6/HUQo1ijPaby0OI16jJQDkFld4UMhQo/nE/zlV cKz7fZWwKgi2mDaNwMvGxu32dWz0JWX3rZvBesPE4sJf+AUd2xc/AHbmIdAwxvM= X-Google-Smtp-Source: AGHT+IHAzBCUmS5bizg3nwnKwHX1CPXzsO67GYvnP3tdQPmQK608yrKRlUXImApJPrpCYmPIT46UYQ== X-Received: by 2002:a05:6a20:6a26:b0:1b0:111f:2b6d with SMTP id adf61e73a8af0-1b0111f2cb7mr9961023637.28.1715844070039; Thu, 16 May 2024 00:21:10 -0700 (PDT) Received: from yc.huaqin.com ([116.66.212.162]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-6f4d2a663a3sm12318724b3a.41.2024.05.16.00.21.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 May 2024 00:21:09 -0700 (PDT) From: Cong Yang To: sam@ravnborg.org, neil.armstrong@linaro.org, daniel@ffwll.ch, dianders@chromium.org, linus.walleij@linaro.org, krzysztof.kozlowski+dt@linaro.org, robh+dt@kernel.org, conor+dt@kernel.org, airlied@gmail.com Cc: dmitry.baryshkov@linaro.org, dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, xuxinxiong@huaqin.corp-partner.google.com, Cong Yang , Conor Dooley Subject: [PATCH v8 1/6] dt-bindings: display: panel: Add himax hx83102 panel bindings Date: Thu, 16 May 2024 15:20:34 +0800 Message-Id: <20240516072039.1287065-2-yangcong5@huaqin.corp-partner.google.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240516072039.1287065-1-yangcong5@huaqin.corp-partner.google.com> References: <20240516072039.1287065-1-yangcong5@huaqin.corp-partner.google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" In V1, discussed with Doug and Linus [1], we need break out as separate driver for the himax83102-j02 controller. Beacuse "starry,himax83102-j02" and in this series "BOE nv110wum-l60" "IVO t109nw41" panels use same controller, they have some common CMDS. So add new documentation for this panels. For himax83102-j02 controller, no need 3v3 supply, so remove it. [1]: https://lore.kernel.org/all/CACRpkdbzYZAS0=3DzBQJUC4CB2wj4s1h6n6aSAZQv= dMV95r3zRUw@mail.gmail.com Signed-off-by: Cong Yang Reviewed-by: Conor Dooley --- Chage since V8: - No change. V7: https://lore.kernel.org/all/20240515014643.2715010-2-yangcong5@huaqin.c= orp-partner.google.com Chage since V7: - No change. V6: https://lore.kernel.org/all/20240511021326.288728-2-yangcong5@huaqin.co= rp-partner.google.com Chage since V6: - No change. V5: https://lore.kernel.org/all/20240509015207.3271370-2-yangcong5@huaqin.c= orp-partner.google.com Chage since V5: - Modify compatible format. V4: https://lore.kernel.org/all/20240507135234.1356855-2-yangcong5@huaqin.c= orp-partner.google.com Chage since V4: - Update commit message and add fallback compatible. V3: https://lore.kernel.org/all/20240424023010.2099949-2-yangcong5@huaqin.c= orp-partner.google.com Chage since V3: - Update commit message. V2: https://lore.kernel.org/all/20240422090310.3311429-2-yangcong5@huaqin.c= orp-partner.google.com --- .../display/panel/boe,tv101wum-nl6.yaml | 2 - .../bindings/display/panel/himax,hx83102.yaml | 73 +++++++++++++++++++ 2 files changed, 73 insertions(+), 2 deletions(-) create mode 100644 Documentation/devicetree/bindings/display/panel/himax,h= x83102.yaml diff --git a/Documentation/devicetree/bindings/display/panel/boe,tv101wum-n= l6.yaml b/Documentation/devicetree/bindings/display/panel/boe,tv101wum-nl6.= yaml index 906ef62709b8..53fb35f5c9de 100644 --- a/Documentation/devicetree/bindings/display/panel/boe,tv101wum-nl6.yaml +++ b/Documentation/devicetree/bindings/display/panel/boe,tv101wum-nl6.yaml @@ -32,8 +32,6 @@ properties: - innolux,hj110iz-01a # STARRY 2081101QFH032011-53G 10.1" WUXGA TFT LCD panel - starry,2081101qfh032011-53g - # STARRY himax83102-j02 10.51" WUXGA TFT LCD panel - - starry,himax83102-j02 # STARRY ili9882t 10.51" WUXGA TFT LCD panel - starry,ili9882t =20 diff --git a/Documentation/devicetree/bindings/display/panel/himax,hx83102.= yaml b/Documentation/devicetree/bindings/display/panel/himax,hx83102.yaml new file mode 100644 index 000000000000..fc584b5088ff --- /dev/null +++ b/Documentation/devicetree/bindings/display/panel/himax,hx83102.yaml @@ -0,0 +1,73 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/display/panel/himax,hx83102.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Himax HX83102 MIPI-DSI LCD panel controller + +maintainers: + - Cong Yang + +allOf: + - $ref: panel-common.yaml# + +properties: + compatible: + items: + - enum: + # STARRY himax83102-j02 10.51" WUXGA TFT LCD panel + - starry,himax83102-j02 + - const: himax,hx83102 + + reg: + description: the virtual channel number of a DSI peripheral + + enable-gpios: + description: a GPIO spec for the enable pin + + pp1800-supply: + description: core voltage supply + + avdd-supply: + description: phandle of the regulator that provides positive voltage + + avee-supply: + description: phandle of the regulator that provides negative voltage + + backlight: true + port: true + rotation: true + +required: + - compatible + - reg + - enable-gpios + - pp1800-supply + - avdd-supply + - avee-supply + +additionalProperties: false + +examples: + - | + dsi { + #address-cells =3D <1>; + #size-cells =3D <0>; + panel@0 { + compatible =3D "starry,himax83102-j02", "himax,hx83102"; + reg =3D <0>; + enable-gpios =3D <&pio 45 0>; + avdd-supply =3D <&ppvarn_lcd>; + avee-supply =3D <&ppvarp_lcd>; + pp1800-supply =3D <&pp1800_lcd>; + backlight =3D <&backlight_lcd0>; + port { + panel_in: endpoint { + remote-endpoint =3D <&dsi_out>; + }; + }; + }; + }; + +... --=20 2.25.1 From nobody Mon Feb 9 18:23:20 2026 Received: from mail-pf1-f178.google.com (mail-pf1-f178.google.com [209.85.210.178]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 329794EB56 for ; Thu, 16 May 2024 07:21:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1715844076; cv=none; b=UG80Z1Cp0YbSuBLhKR4pDgu9E8n5WJqeJZ8G14IWG9AmBi1WwWwKxDt87gJ+9cSkYO19up6rF9uiIcj5RUTZPYe4L2DjvpjkkUHcmStAC/9E0cBg3hckwknUd2uXGmsfQUpnD5sYhoC0arce9OVaEfRq6GwoMUYKZY3Lua3Hv2Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1715844076; c=relaxed/simple; bh=Vrrr1IRB71z6OxnG0e/St1IpBk+FhEUuwIE8cYmp5Vs=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=SWsqQt9UChiT4SaIUitoC92KcCanb4z/GJE2tHAYCEC20gy09Y42x4S/CqZq54sN+40pq3HRyVpgXWcs1NSMArc/2u1ekCgbCdcpO49qPouhlJazCWMP0ztDB7McuWNmO6XYO2py3mZjrD4EJHMe7DJnweCQ87JS5HGnA+UF+R0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=huaqin.corp-partner.google.com; spf=pass smtp.mailfrom=huaqin.corp-partner.google.com; dkim=pass (2048-bit key) header.d=huaqin-corp-partner-google-com.20230601.gappssmtp.com header.i=@huaqin-corp-partner-google-com.20230601.gappssmtp.com header.b=JrwJOnpl; arc=none smtp.client-ip=209.85.210.178 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=huaqin.corp-partner.google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=huaqin.corp-partner.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=huaqin-corp-partner-google-com.20230601.gappssmtp.com header.i=@huaqin-corp-partner-google-com.20230601.gappssmtp.com header.b="JrwJOnpl" Received: by mail-pf1-f178.google.com with SMTP id d2e1a72fcca58-6f5053dc057so4262229b3a.2 for ; Thu, 16 May 2024 00:21:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=huaqin-corp-partner-google-com.20230601.gappssmtp.com; s=20230601; t=1715844073; x=1716448873; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=hLM7nhzqXdraZrpLN/i0dPo97mFzNqudwI4EH7Bz7NA=; b=JrwJOnplwWE7XxaT0T4YUQYr8Dqy5ljUb4eat/g6SmvM1IGtcPXG1MJm8RQXkbnuv5 S4VrU5sCeWA/NDVM9kKMXoRaCO2aQWabLJleJJBjeIpaX9lliEaN2ynt/GxxMA6IwsNZ +D1OEuimU2mfD50d7CKSbuksceKLN1RgEOFPXaLjEweQeXlblrDhuj41RMhbO4tqZotU Rch4iolg8pbUtnTply1UlzTvNxQjKgaG49V/N0ZgN+8MqCVlF34Y0yAuXzo2+ZoZzq3s rArnqoi0T0tfLsgnDpuSrVmLYCr1k0clJcwUVt2d6Liha1CakOfg4YSyK84cfLDAfJvb q7kg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1715844073; x=1716448873; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hLM7nhzqXdraZrpLN/i0dPo97mFzNqudwI4EH7Bz7NA=; b=wL7IhgS7stYEgmzNgofOiD/4gb42L0SzuHu+HA3evjfNSeXQ4pa7LE1H9m3xHbO72r l4wDSNS5iKhZtnM6gs4TyUvJ4JIwx2r+zQ44i+iyC5Wi81oTAs8R3kQCbopX23gSELOB 19JjKlbGS8V5LygyLTA+vMq6iLjS/k3ZGCBbbmBRtqCGvnMXIc/TRX1IMmWlwY0UvHRH tRDQApzqYx/qGhjUnpmuHUBa6C0PSNdT7AYfuUETwDP6tXsbQPybEbYjZaXbkhc8sqZa WE3fddTePBZvqJpavIPNgVD1pJLY8GkNdV1cJ1QjDRiI9nXzsbQx8sCon0OPFTMOw3HG 0iOA== X-Forwarded-Encrypted: i=1; AJvYcCXTqc8EZv+1ekIbgqGDCO9CUSpWcbcwNYVptMfRcCklFptU9yxAgxcxfQg6mPq7bsNzcTMwYbhGfr2KSonKQNvOJZyVrQPx9NmDWUa7 X-Gm-Message-State: AOJu0Yz+3fbHz8qndWzh+jC5ddviIyo5ae1h+bCCwHaf4Oh9ebCfTKWZ aqnmU2fUNHbzG+lO87+2QwNr6HCCm+n+pyVUU/O0Y3ls5uIlMG40kIQOPVDx4Mo= X-Google-Smtp-Source: AGHT+IEJuk0eg1G6IKELTEr2Oz9zA8TfoTZGsVdcM/OyMhe11W1C4oW+lQ0z/QnKPuJCkCuTnL19ig== X-Received: by 2002:a05:6a00:39a8:b0:6f4:1695:beae with SMTP id d2e1a72fcca58-6f4e037e993mr20569007b3a.29.1715844073273; Thu, 16 May 2024 00:21:13 -0700 (PDT) Received: from yc.huaqin.com ([116.66.212.162]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-6f4d2a663a3sm12318724b3a.41.2024.05.16.00.21.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 May 2024 00:21:12 -0700 (PDT) From: Cong Yang To: sam@ravnborg.org, neil.armstrong@linaro.org, daniel@ffwll.ch, dianders@chromium.org, linus.walleij@linaro.org, krzysztof.kozlowski+dt@linaro.org, robh+dt@kernel.org, conor+dt@kernel.org, airlied@gmail.com Cc: dmitry.baryshkov@linaro.org, dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, xuxinxiong@huaqin.corp-partner.google.com, Cong Yang Subject: [PATCH v8 2/6] drm/panel: himax-hx83102: Break out as separate driver Date: Thu, 16 May 2024 15:20:35 +0800 Message-Id: <20240516072039.1287065-3-yangcong5@huaqin.corp-partner.google.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240516072039.1287065-1-yangcong5@huaqin.corp-partner.google.com> References: <20240516072039.1287065-1-yangcong5@huaqin.corp-partner.google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The Starry HX83102 based mipi panel should never have been part of the boe tv101wum-n16 driver. Discussion with Doug and Linus in V1 [1], we need a separate driver to enable the hx83102 controller. In hx83102 driver, add DSI commands as macros. So it can add some panels with same control model in the future. In the old boe-tv101wum-nl6 driver inital cmds was invoked at the end of prepare() function , and call 0x11 and 0x29 at end of inital. For himax-hx83102 driver, we move 0x11 and 0x29 cmds invoked at prepare() function. Note:0x11 is mipi_dsi_dcs_exit_sleep_mode 0x29 is mipi_dsi_dcs_set_display_on [1]: https://lore.kernel.org/all/CACRpkdbzYZAS0=3DzBQJUC4CB2wj4s1h6n6aSAZQv= dMV95r3zRUw@mail.gmail.com Signed-off-by: Cong Yang Reviewed-by: Douglas Anderson Reviewed-by: Linus Walleij --- Chage since V8: - Fix Doug comment "return ret" change to "goto poweroff". V7: https://lore.kernel.org/all/20240515014643.2715010-3-yangcong5@huaqin.c= orp-partner.google.com Chage since V7: - Fix Doug comment "return ret" change to "goto poweroff". V6: https://lore.kernel.org/all/20240511021326.288728-3-yangcong5@huaqin.co= rp-partner.google.com Chage since V6: - Modify Move mipi_dsi_dcs_exit_sleep_mode and mipi_dsi_dcs_set_display_o= n from enable() to prepare(). V5: https://lore.kernel.org/all/20240509015207.3271370-3-yangcong5@huaqin.c= orp-partner.google.com Chage since V5: - Modify hx83102_enable_extended_cmds function and adjust inital cmds inde= ntation.update commit message. - Move the ->init() call to be made at the end of prepare() instead of the= beginning of enable(). V4: https://lore.kernel.org/all/20240507135234.1356855-3-yangcong5@huaqin.c= orp-partner.google.com Chage since V4: - Add hx83102_enable_extended_cmds function, rename UNKNOWN CMDS and depen= d Dous'series [1]. [1]: https://lore.kernel.org/all/20240501154251.3302887-1-dianders@chromium= .org V3: https://lore.kernel.org/all/20240424023010.2099949-3-yangcong5@huaqin.c= orp-partner.google.com Chage since V3: - Drop excess flags and function, inital cmds use lowercasehex. V2: https://lore.kernel.org/all/20240422090310.3311429-3-yangcong5@huaqin.c= orp-partner.google.com --- drivers/gpu/drm/panel/Kconfig | 9 + drivers/gpu/drm/panel/Makefile | 1 + .../gpu/drm/panel/panel-boe-tv101wum-nl6.c | 133 ----- drivers/gpu/drm/panel/panel-himax-hx83102.c | 473 ++++++++++++++++++ 4 files changed, 483 insertions(+), 133 deletions(-) create mode 100644 drivers/gpu/drm/panel/panel-himax-hx83102.c diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig index d037b3b8b999..acd3d09b5a05 100644 --- a/drivers/gpu/drm/panel/Kconfig +++ b/drivers/gpu/drm/panel/Kconfig @@ -145,6 +145,15 @@ config DRM_PANEL_LVDS handling of power supplies or control signals. It implements automatic backlight handling if the panel is attached to a backlight controller. =20 +config DRM_PANEL_HIMAX_HX83102 + tristate "Himax HX83102-based panels" + depends on OF + depends on DRM_MIPI_DSI + depends on BACKLIGHT_CLASS_DEVICE + help + Say Y if you want to enable support for panels based on the + Himax HX83102 controller. + config DRM_PANEL_HIMAX_HX83112A tristate "Himax HX83112A-based DSI panel" depends on OF diff --git a/drivers/gpu/drm/panel/Makefile b/drivers/gpu/drm/panel/Makefile index f156d7fa0bcc..8fa9e38382f6 100644 --- a/drivers/gpu/drm/panel/Makefile +++ b/drivers/gpu/drm/panel/Makefile @@ -15,6 +15,7 @@ obj-$(CONFIG_DRM_PANEL_EBBG_FT8719) +=3D panel-ebbg-ft871= 9.o obj-$(CONFIG_DRM_PANEL_ELIDA_KD35T133) +=3D panel-elida-kd35t133.o obj-$(CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02) +=3D panel-feixin-k101-im2ba02= .o obj-$(CONFIG_DRM_PANEL_FEIYANG_FY07024DI26A30D) +=3D panel-feiyang-fy07024= di26a30d.o +obj-$(CONFIG_DRM_PANEL_HIMAX_HX83102) +=3D panel-himax-hx83102.o obj-$(CONFIG_DRM_PANEL_HIMAX_HX83112A) +=3D panel-himax-hx83112a.o obj-$(CONFIG_DRM_PANEL_HIMAX_HX8394) +=3D panel-himax-hx8394.o obj-$(CONFIG_DRM_PANEL_ILITEK_IL9322) +=3D panel-ilitek-ili9322.o diff --git a/drivers/gpu/drm/panel/panel-boe-tv101wum-nl6.c b/drivers/gpu/d= rm/panel/panel-boe-tv101wum-nl6.c index aab60cec0603..4b4b125a6c6b 100644 --- a/drivers/gpu/drm/panel/panel-boe-tv101wum-nl6.c +++ b/drivers/gpu/drm/panel/panel-boe-tv101wum-nl6.c @@ -1399,108 +1399,6 @@ static int starry_qfh032011_53g_init(struct boe_pan= el *boe) return 0; }; =20 -static int starry_himax83102_j02_init(struct boe_panel *boe) -{ - struct mipi_dsi_multi_context ctx =3D { .dsi =3D boe->dsi }; - - mipi_dsi_dcs_write_seq_multi(&ctx, 0xb9, 0x83, 0x10, 0x21, 0x55, 0x00); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xb1, 0x2c, 0xb5, 0xb5, 0x31, 0xf1, 0x= 31, 0xd7, 0x2f, - 0x36, 0x36, 0x36, 0x36, 0x1a, 0x8b, 0x11, 0x65, 0x00, 0x88, - 0xfa, 0xff, 0xff, 0x8f, 0xff, 0x08, 0x74, 0x33); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xb2, 0x00, 0x47, 0xb0, 0x80, 0x00, 0x= 12, 0x72, 0x3c, - 0xa3, 0x03, 0x03, 0x00, 0x00, 0x88, 0xf5); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xb4, 0x76, 0x76, 0x76, 0x76, 0x76, 0x= 76, 0x63, 0x5c, - 0x63, 0x5c, 0x01, 0x9e); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xe9, 0xcd); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xba, 0x84); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xe9, 0x3f); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xbc, 0x1b, 0x04); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xbe, 0x20); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xbf, 0xfc, 0xc4); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xc0, 0x36, 0x36, 0x22, 0x11, 0x22, 0x= a0, 0x61, 0x08, - 0xf5, 0x03); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xe9, 0xcc); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xc7, 0x80); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xe9, 0x3f); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xe9, 0xc6); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xc8, 0x97); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xe9, 0x3f); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xc9, 0x00, 0x1e, 0x13, 0x88, 0x01); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xcb, 0x08, 0x13, 0x07, 0x00, 0x0f, 0x= 33); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xcc, 0x02); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xe9, 0xc4); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xd0, 0x03); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xe9, 0x3f); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xd1, 0x37, 0x06, 0x00, 0x02, 0x04, 0x= 0c, 0xff); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xd2, 0x1f, 0x11, 0x1f); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xd3, 0x06, 0x00, 0x00, 0x00, 0x00, 0x= 00, 0x08, 0x00, - 0x08, 0x37, 0x47, 0x34, 0x3b, 0x12, 0x12, 0x03, 0x03, 0x32, - 0x10, 0x10, 0x00, 0x10, 0x32, 0x10, 0x08, 0x00, 0x08, 0x32, - 0x17, 0x94, 0x07, 0x94, 0x00, 0x00); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xd5, 0x18, 0x18, 0x18, 0x18, 0x18, 0x= 18, 0x18, 0x18, - 0x18, 0x18, 0x19, 0x19, 0x40, 0x40, 0x1a, 0x1a, 0x1b, 0x1b, - 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x20, 0x21, - 0x28, 0x29, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18, 0x18, 0x18, 0x18, 0x18, 0x18); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xd6, 0x18, 0x18, 0x18, 0x18, 0x18, 0x= 18, 0x18, 0x18, - 0x18, 0x18, 0x40, 0x40, 0x19, 0x19, 0x1a, 0x1a, 0x1b, 0x1b, - 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x29, 0x28, - 0x21, 0x20, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18, 0x18, 0x18, 0x18, 0x18, 0x18); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xd8, 0xaa, 0xba, 0xea, 0xaa, 0xaa, 0x= a0, 0xaa, 0xba, - 0xea, 0xaa, 0xaa, 0xa0, 0xaa, 0xba, 0xea, 0xaa, 0xaa, 0xa0, - 0xaa, 0xba, 0xea, 0xaa, 0xaa, 0xa0, 0xaa, 0xba, 0xea, 0xaa, - 0xaa, 0xa0, 0xaa, 0xba, 0xea, 0xaa, 0xaa, 0xa0); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xe0, 0x00, 0x09, 0x14, 0x1e, 0x26, 0x= 48, 0x61, 0x67, - 0x6c, 0x67, 0x7d, 0x7f, 0x80, 0x8b, 0x87, 0x8f, 0x98, 0xab, - 0xab, 0x55, 0x5c, 0x68, 0x73, 0x00, 0x09, 0x14, 0x1e, 0x26, - 0x48, 0x61, 0x67, 0x6c, 0x67, 0x7d, 0x7f, 0x80, 0x8b, 0x87, - 0x8f, 0x98, 0xab, 0xab, 0x55, 0x5c, 0x68, 0x73); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xe7, 0x0e, 0x10, 0x10, 0x21, 0x2b, 0x= 9a, 0x02, 0x54, - 0x9a, 0x14, 0x14, 0x00, 0x00, 0x00, 0x00, 0x12, 0x05, 0x02, - 0x02, 0x10); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xbd, 0x01); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xb1, 0x01, 0xbf, 0x11); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xcb, 0x86); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xd2, 0x3c, 0xfa); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xd3, 0x00, 0x00, 0x44, 0x00, 0x00, 0x= 00, 0x00, 0x00, - 0x80, 0x0c, 0x01); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xe7, 0x02, 0x00, 0x28, 0x01, 0x7e, 0x= 0f, 0x7e, 0x10, - 0xa0, 0x00, 0x00, 0x20, 0x40, 0x50, 0x40); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xbd, 0x02); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xd8, 0xff, 0xff, 0xbf, 0xfe, 0xaa, 0x= a0, 0xff, 0xff, - 0xbf, 0xfe, 0xaa, 0xa0); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xe7, 0xfe, 0x04, 0xfe, 0x04, 0xfe, 0x= 04, 0x03, 0x03, - 0x03, 0x26, 0x00, 0x26, 0x81, 0x02, 0x40, 0x00, 0x20, 0x9e, - 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xbd, 0x03); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xe9, 0xc6); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xb4, 0x03, 0xff, 0xf8); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xe9, 0x3f); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xd8, 0x00, 0x2a, 0xaa, 0xa8, 0x00, 0x= 00, 0x00, 0x2a, - 0xaa, 0xa8, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xfc, 0x00, 0x00, - 0x00, 0x3f, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x2a, 0xaa, 0xa8, - 0x00, 0x00, 0x00, 0x2a, 0xaa, 0xa8, 0x00, 0x00); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xbd, 0x00); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xe9, 0xc4); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xba, 0x96); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xe9, 0x3f); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xbd, 0x01); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xe9, 0xc5); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xba, 0x4f); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xe9, 0x3f); - mipi_dsi_dcs_write_seq_multi(&ctx, 0xbd, 0x00); - mipi_dsi_dcs_write_seq_multi(&ctx, 0x11); - if (ctx.accum_err) - return ctx.accum_err; - - msleep(120); - - mipi_dsi_dcs_write_seq_multi(&ctx, 0x29); - - return ctx.accum_err; -}; - static inline struct boe_panel *to_boe_panel(struct drm_panel *panel) { return container_of(panel, struct boe_panel, base); @@ -1859,34 +1757,6 @@ static const struct panel_desc starry_qfh032011_53g_= desc =3D { .lp11_before_reset =3D true, }; =20 -static const struct drm_display_mode starry_himax83102_j02_default_mode = =3D { - .clock =3D 162680, - .hdisplay =3D 1200, - .hsync_start =3D 1200 + 60, - .hsync_end =3D 1200 + 60 + 20, - .htotal =3D 1200 + 60 + 20 + 40, - .vdisplay =3D 1920, - .vsync_start =3D 1920 + 116, - .vsync_end =3D 1920 + 116 + 8, - .vtotal =3D 1920 + 116 + 8 + 12, - .type =3D DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED, -}; - -static const struct panel_desc starry_himax83102_j02_desc =3D { - .modes =3D &starry_himax83102_j02_default_mode, - .bpc =3D 8, - .size =3D { - .width_mm =3D 141, - .height_mm =3D 226, - }, - .lanes =3D 4, - .format =3D MIPI_DSI_FMT_RGB888, - .mode_flags =3D MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_SYNC_PULSE | - MIPI_DSI_MODE_LPM, - .init =3D starry_himax83102_j02_init, - .lp11_before_reset =3D true, -}; - static int boe_panel_get_modes(struct drm_panel *panel, struct drm_connector *connector) { @@ -2062,9 +1932,6 @@ static const struct of_device_id boe_of_match[] =3D { { .compatible =3D "starry,2081101qfh032011-53g", .data =3D &starry_qfh032011_53g_desc }, - { .compatible =3D "starry,himax83102-j02", - .data =3D &starry_himax83102_j02_desc - }, { /* sentinel */ } }; MODULE_DEVICE_TABLE(of, boe_of_match); diff --git a/drivers/gpu/drm/panel/panel-himax-hx83102.c b/drivers/gpu/drm/= panel/panel-himax-hx83102.c new file mode 100644 index 000000000000..2f67e34c75fa --- /dev/null +++ b/drivers/gpu/drm/panel/panel-himax-hx83102.c @@ -0,0 +1,473 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Driver for panels based on Himax HX83102 controller, such as: + * + * - Starry 10.51" WUXGA MIPI-DSI panel + * + * Based on drivers/gpu/drm/panel/panel-himax-hx8394.c + */ + +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include