From nobody Sun Dec 14 12:14:38 2025 Received: from mail-pl1-f176.google.com (mail-pl1-f176.google.com [209.85.214.176]) (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 C79D915920B for ; Fri, 28 Jun 2024 12:45:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.176 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1719578705; cv=none; b=fy0bQGSUIAE0VOAlvZc3C4I6NpIVssaZ9ilDaFEj1JsF338xSgbuYxeqk97FecaI0dNqCH5pLXwJQuwQXV19fJsZ8ELXrjBukgNEWLkgS0LDpRpe7CzjvngVnCZ2hqs5aQ7Hw33iDo2jHKIpE/xcRM63lZA1pZjhXU07i/AOWR4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1719578705; c=relaxed/simple; bh=3Wr3HwAp7vIf3GIE6N56s2VaPqa+C6jocnxeOEJv6eI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=U7LQqIHhLupa45gly+wu1utmGE8JCgy1jxE2QfYE3aXp+hVnshsqR+1IYsPEjofYPsM1+u5TgPJRYGputRNinavr5tU6T1T4JJiy0ufN+evr+WzS5dFZjV001+HhDFNJ2VP+8vpWiaslg8KmTWb+Ib5RCnMahwFS06TOSeV3c9A= 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=DlnXkk9K; arc=none smtp.client-ip=209.85.214.176 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="DlnXkk9K" Received: by mail-pl1-f176.google.com with SMTP id d9443c01a7336-1f480624d0fso3431295ad.1 for ; Fri, 28 Jun 2024 05:45:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=huaqin-corp-partner-google-com.20230601.gappssmtp.com; s=20230601; t=1719578703; x=1720183503; 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=OeseQiv7/DSaLni1dvL6OOnrfuUA5o+HEQL8eICjloc=; b=DlnXkk9K2hhMBdZmCFcFWn2RieutYAquKdfanhGfH1eWaZokadF+MB1AbncxNCCmMK cbZtbjcFxxtj9IRrIqiHa+ok6y0RHQi4KUbeFYwXiXk8KcsSn++6//S+qAx6Jjb6iKaQ OBJVIBSgLtX+o7Lr9Aiu2VSFdxK3MACydM6+BLojfAUR9ttDOhfXltB/00I+7LYCeGFy Ik9xEI1nSl7ZFVU/Zd3vx8m5NW7jU04ZVjrCfgS+33ENkKoWN7InE9Yxbq2YfxQLBmZn 6MXP+gMAXJUXCooK/ay8R+8mCb3v6kTmpuVCFuOHHutEuwwRdBuAvfDEuudaAGqS8yOS t9Zg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1719578703; x=1720183503; 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=OeseQiv7/DSaLni1dvL6OOnrfuUA5o+HEQL8eICjloc=; b=TJISPLkz5KQYJzxlzzEFiMslaaoLRHZStKAsKy2ccKCvWsF1DCqW5Ge0AIeApYwhC6 Uh1N/vaRajbK5mBjIwNXSgjBCOisoua7EiYXTXytpCpe4bNR3WOzIxYZp96b+3YxOSsg WQ+lE7mo+kgo2sV/0Nb531rTLmjlKpoxQmh+xSi2wbvIdQtxCCbxLNvLDCkJ9N1SaiUg ysIs1bVO6W6MbEcNRSE4kbnneC10d1NHhquKS1tAcxJcmfLJ5kviCs+LSC50cqGJy/1A M3Jo3RBZ6WYeBlnkjeZ3QKw74ASFd3hrJpcykhTmKAfPDj7FtF1/w6fWmgAbwpbfiCd3 FJ0w== X-Forwarded-Encrypted: i=1; AJvYcCXicqNZTABpEuQoe+FC0ua3o1xNp5tS1DfP/Wu8WLmubBi3OPWgLFiSPNg+mG5ak+MlDhjXO87f13DwDtMhfdBaJPk4OS2H+jyrr/5M X-Gm-Message-State: AOJu0Yx2ZwJGL2b+cINbbUOtqPMuVlODxRNn2VvMb72OBTRLhmGcjKZJ b+vZMy+HYpep3LYX9EPCr79HRMNTafDGCcor2c1H/SD5uDooQiksCA43mctzT3k= X-Google-Smtp-Source: AGHT+IGWadE2l1MOGIvcH+qhTXfxLERu8D+lorl26DB268SY32VCtG8S/9RsP0BCd2bpECNPNyPGVw== X-Received: by 2002:a17:902:dac6:b0:1f9:d279:a870 with SMTP id d9443c01a7336-1fa23fb2949mr156225565ad.25.1719578702961; Fri, 28 Jun 2024 05:45:02 -0700 (PDT) Received: from lvzhaoxiong-KLVC-WXX9.huaqin.com ([116.66.212.162]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-1fac15695b4sm14346255ad.225.2024.06.28.05.44.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Jun 2024 05:45:02 -0700 (PDT) From: Zhaoxiong Lv To: dmitry.torokhov@gmail.com, robh@kernel.org, krzysztof.kozlowski+dt@linaro.org, conor+dt@kernel.org, jikos@kernel.org, benjamin.tissoires@redhat.co, dianders@google.com, hsinyi@google.com, jagan@edgeble.ai, neil.armstrong@linaro.org, quic_jesszhan@quicinc.com, dmitry.baryshkov@linaro.org Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Zhaoxiong Lv Subject: [PATCH v6 1/5] drm/panel: jd9365da: Modify the method of sending commands Date: Fri, 28 Jun 2024 20:44:40 +0800 Message-Id: <20240628124444.28152-2-lvzhaoxiong@huaqin.corp-partner.google.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20240628124444.28152-1-lvzhaoxiong@huaqin.corp-partner.google.com> References: <20240628124444.28152-1-lvzhaoxiong@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-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Currently, the init_code of the jd9365da driver is placed in the enable() function and sent, but this seems to take a long time. It takes 17ms to send each instruction (an init code consists of about 200 instructions), so it takes about 3.5s to send the init_code. So we moved the sending of the inti_code to the prepare() function, and each instruction seemed to take only 25=CE=BCs. We checked the DSI host and found that the difference in command sending time is caused by the different modes of the DSI host in prepare() and enable() functions. Our DSI Host only supports sending cmd in LP mode, The prepare() function can directly send init_code (LP->cmd) in LP mode, but the enable() function is in HS mode and needs to switch to LP mode before sending init code (HS->LP->cmd->HS). Therefore, it takes longer to send the command. Signed-off-by: Zhaoxiong Lv Reviewed-by: Douglas Anderson --- Changes between V6 and V5: - 1. No changes. V5:https://lore.kernel.org/all/20240624141926.5250-2-lvzhaoxiong@huaqin.cor= p-partner.google.com/ Changes between V5 and V4: - 1. No changes. V4:https://lore.kernel.org/all/20240620080509.18504-2-lvzhaoxiong@huaqin.co= rp-partner.google.com/ Changes between V4 and V3: - 1. Only move mipi_dsi_dcs_write_buffer from enable() function to prepare(= ) function, - and no longer use mipi_dsi_dcs_write_seq_multi. V3:https://lore.kernel.org/all/20240614145510.22965-2-lvzhaoxiong@huaqin.co= rp-partner.google.com/ --- .../gpu/drm/panel/panel-jadard-jd9365da-h3.c | 24 +++++++++---------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/drivers/gpu/drm/panel/panel-jadard-jd9365da-h3.c b/drivers/gpu= /drm/panel/panel-jadard-jd9365da-h3.c index 4879835fe101..a9c483a7b3fa 100644 --- a/drivers/gpu/drm/panel/panel-jadard-jd9365da-h3.c +++ b/drivers/gpu/drm/panel/panel-jadard-jd9365da-h3.c @@ -52,21 +52,9 @@ static int jadard_enable(struct drm_panel *panel) { struct device *dev =3D panel->dev; struct jadard *jadard =3D panel_to_jadard(panel); - const struct jadard_panel_desc *desc =3D jadard->desc; struct mipi_dsi_device *dsi =3D jadard->dsi; - unsigned int i; int err; =20 - msleep(10); - - for (i =3D 0; i < desc->num_init_cmds; i++) { - const struct jadard_init_cmd *cmd =3D &desc->init_cmds[i]; - - err =3D mipi_dsi_dcs_write_buffer(dsi, cmd->data, JD9365DA_INIT_CMD_LEN); - if (err < 0) - return err; - } - msleep(120); =20 err =3D mipi_dsi_dcs_exit_sleep_mode(dsi); @@ -100,6 +88,8 @@ static int jadard_disable(struct drm_panel *panel) static int jadard_prepare(struct drm_panel *panel) { struct jadard *jadard =3D panel_to_jadard(panel); + const struct jadard_panel_desc *desc =3D jadard->desc; + unsigned int i; int ret; =20 ret =3D regulator_enable(jadard->vccio); @@ -117,7 +107,15 @@ static int jadard_prepare(struct drm_panel *panel) msleep(10); =20 gpiod_set_value(jadard->reset, 1); - msleep(120); + msleep(130); + + for (i =3D 0; i < desc->num_init_cmds; i++) { + const struct jadard_init_cmd *cmd =3D &desc->init_cmds[i]; + + ret =3D mipi_dsi_dcs_write_buffer(dsi, cmd->data, JD9365DA_INIT_CMD_LEN); + if (ret < 0) + return ret; + } =20 return 0; } --=20 2.17.1 From nobody Sun Dec 14 12:14:38 2025 Received: from mail-pg1-f182.google.com (mail-pg1-f182.google.com [209.85.215.182]) (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 B0164757EB for ; Fri, 28 Jun 2024 12:45:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1719578713; cv=none; b=Z8lBUEsdkitawOTY1b/WS4LQniPi+xvhTvQsEe2XGmUrS2h47HvDfbQkPiHFTQoTM5As1Hactu900aEp592t1jtVrxjdJPeM9o5D+GX+v56lus3ytfZAkhVVsRf8ZxiYc5uZjlgox3jJOqqzKdNtP9yFLH+3FSrc6piYKkQO+0U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1719578713; c=relaxed/simple; bh=LUhQ8DOjFI0nAVmPoRbYAZ6OVRmmrigAYi6Li9gLvYg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References; b=o9z1Sl4oscnME+1z/aBw3Rc5jOjgO4jleuSVfmLnwMuUtsOlZGM37sn4/+iTCQjhPINWDweyEc4/KdDR62uXPsppl51sUEI0ZyVJBo4WI0Vf/7wC5+wXdN4Hp6R+CWfF0blJW0MFML8HFO9f1WfkpYgknZNON7dHDx8OjhTNxcs= 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=twqjjH84; arc=none smtp.client-ip=209.85.215.182 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="twqjjH84" Received: by mail-pg1-f182.google.com with SMTP id 41be03b00d2f7-6e3741519d7so360476a12.2 for ; Fri, 28 Jun 2024 05:45: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=1719578709; x=1720183509; darn=vger.kernel.org; h=references:in-reply-to:message-id:date:subject:cc:to:from:from:to :cc:subject:date:message-id:reply-to; bh=rg3tdU7ppY8HgCadeya2IfmEx35gEyixCgdQukzslp8=; b=twqjjH84MR7/uErEEBpp8BvlE3/2BlAfgOd29awkoX+vXAMo8uzAtrtfOOM5qwzFzV TkCxYbUPIUmD4+zIqfnsH19yBDXAY4PzcgMkbpxQ0JI0i23us0vRaHIvvkbjB1j1ZpFg ikLHPlhLkC8aaOmZrtmiV9JtpMSfxF0JNXSZQLlVtYmMxLVetKInjxrGzWFg9qtD9V6g 9UM+FqrgasWbafWtLsPYWYxz4wqHYZtTx6pPcfQpRga1vLWsVEmSqPXgup9sJPoG8Gt7 1iqYUfoi5BB+Rmur1fs7d1INTao04Gjy7nQvu1FWci/VDAx9NpZ+7l+/7/u5w+9o5G9k z+BA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1719578709; x=1720183509; h=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=rg3tdU7ppY8HgCadeya2IfmEx35gEyixCgdQukzslp8=; b=cy7amW4Y/uptJPa+5b8HPlsy0A6VY0YYgOrDPZ1dpqht4w5gTkh3Iz2lxXR2UbhPsK 2Ix95kHAv0+fx9KOK/UUwLu9cTBCLtTkBw4aNtuw7b7WOGygVdPCkbKgMDIoNevtrCLh uZ1eTz3fPh7pVEvoUh+yrZcODvdhDdqEAi4tiKzOjI2FzYO05AEhM3YGKA/kaXMo87F8 jXiz1oHUCmv03XnQHGNwJYn2Sn+NMjvsYZN7U/whofOUJ76Pe1kMg6Ebh2wTKNcJljUP tFOZD5kpJofAjkcLxpyH/Crvd3X19WjahkpBdQwWtyfFCvdsjw6B0jl4JFF6heaLviB7 jYjQ== X-Forwarded-Encrypted: i=1; AJvYcCUCufArZEdaFg0yN6o0g+v2DNNozUFT5pCMbfHi52eGrctMsvxiRX8SPtXsdJBHZppqP2wkhkALl9aLaR2GiGqWEKCshoHXsU2Wpk5F X-Gm-Message-State: AOJu0YzH1SUgM3F6S7Avgw2gIjGdMsENNyokhuYk1NaNlg41a3mZqhMd k+4zmlolUZBwB8lYPR2Udvm1F5meMQu513GmJwqVFrH5ErayX/nPwPgkKNzTcfw= X-Google-Smtp-Source: AGHT+IGi1fGSVYxtAxmFf/MTdTm122/UI6yNXUDQyXrOEFT3f8SKiRbbUQL8tC6sqxHVlH4xLvD96Q== X-Received: by 2002:a05:6a20:72a0:b0:1be:eae8:9975 with SMTP id adf61e73a8af0-1beeae89b72mr627357637.15.1719578709482; Fri, 28 Jun 2024 05:45:09 -0700 (PDT) Received: from lvzhaoxiong-KLVC-WXX9.huaqin.com ([116.66.212.162]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-1fac15695b4sm14346255ad.225.2024.06.28.05.45.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Jun 2024 05:45:09 -0700 (PDT) From: Zhaoxiong Lv To: dmitry.torokhov@gmail.com, robh@kernel.org, krzysztof.kozlowski+dt@linaro.org, conor+dt@kernel.org, jikos@kernel.org, benjamin.tissoires@redhat.co, dianders@google.com, hsinyi@google.com, jagan@edgeble.ai, neil.armstrong@linaro.org, quic_jesszhan@quicinc.com, dmitry.baryshkov@linaro.org Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Zhaoxiong Lv Subject: [PATCH v6 2/5] dt-bindings: display: panel: Add compatible for kingdisplay-kd101ne3 Date: Fri, 28 Jun 2024 20:44:41 +0800 Message-Id: <20240628124444.28152-3-lvzhaoxiong@huaqin.corp-partner.google.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20240628124444.28152-1-lvzhaoxiong@huaqin.corp-partner.google.com> References: <20240628124444.28152-1-lvzhaoxiong@huaqin.corp-partner.google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" The kingdisplay-kd101ne3 is a 10.1" WXGA TFT-LCD panel with jadard-jd9365da controller. Hence, we add a new compatible with panel specific config. Signed-off-by: Zhaoxiong Lv Acked-by: Conor Dooley --- Changes between V6 and V5: - 1. No changes. V5:https://lore.kernel.org/all/20240624141926.5250-3-lvzhaoxiong@huaqin.cor= p-partner.google.com/ Changes between V5 and V4: - 1. No changes. V4:https://lore.kernel.org/all/20240620080509.18504-3-lvzhaoxiong@huaqin.co= rp-partner.google.com/ Changes between V4 and V3: - 1. Move positions to keep the list sorted. V3:https://lore.kernel.org/all/20240614145510.22965-3-lvzhaoxiong@huaqin.co= rp-partner.google.com/ Changes between V3 and V2: - 1. Abandon the V2 patch and add kingdisplay kd101ne3-40ti binding to=20 - jadard,jd9365da-h3.yaml again. V2:https://lore.kernel.org/all/20240601084528.22502-2-lvzhaoxiong@huaqin.co= rp-partner.google.com/ Changes between V2 and V1: - Drop some properties that have already been defined in panel-common. - The header file 'dt-bindings/gpio/gpio.h' is not used, delete it V1: https://lore.kernel.org/all/20240418081548.12160-2-lvzhaoxiong@huaqin.c= orp-partner.google.com/ --- .../devicetree/bindings/display/panel/jadard,jd9365da-h3.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/display/panel/jadard,jd9365d= a-h3.yaml b/Documentation/devicetree/bindings/display/panel/jadard,jd9365da= -h3.yaml index 41eb7fbf7715..2b977292dc48 100644 --- a/Documentation/devicetree/bindings/display/panel/jadard,jd9365da-h3.ya= ml +++ b/Documentation/devicetree/bindings/display/panel/jadard,jd9365da-h3.ya= ml @@ -17,6 +17,7 @@ properties: items: - enum: - chongzhou,cz101b4001 + - kingdisplay,kd101ne3-40ti - radxa,display-10hd-ad001 - radxa,display-8hd-ad002 - const: jadard,jd9365da-h3 --=20 2.17.1 From nobody Sun Dec 14 12:14:38 2025 Received: from mail-pg1-f179.google.com (mail-pg1-f179.google.com [209.85.215.179]) (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 33E25181B80 for ; Fri, 28 Jun 2024 12:45:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.179 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1719578726; cv=none; b=YqsA4Iy846kPZ3QID57sVFSeViWVOAMt18r07aId1Mm2koS6X6Oi86wTzTslN5RvDOJ5zYBcriqILG97w6MnMd/S3pdLKtmR2rcgeVIme8ZtGB1xh9gPnBQyWrLHhzcN2oVY4BeG7P2OT0sJI+x/6oaGTTnvaqa5HMr0qLTSuM8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1719578726; c=relaxed/simple; bh=VqJ5khpUIxU++2oChJJZ0T61k1gPIgHgSoVO6poh39g=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References; b=KYyPRHTYt9GotjJ/cI+bcWxckP0EWT9n6ai6D6zXeLoizjIlwF2ONeidxCK2d/DCmD+qP55XVmTpYetPnH2jeNEHyb+QdU4ZEqpU3uW+COeWJKxvT+NKCEmgLvjveBjUrWjXv3XpG7p3KrT9PGVADHeOh23De4u6HBZCsjX2rmA= 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=iXueBjrU; arc=none smtp.client-ip=209.85.215.179 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="iXueBjrU" Received: by mail-pg1-f179.google.com with SMTP id 41be03b00d2f7-72b070c377aso423191a12.1 for ; Fri, 28 Jun 2024 05:45:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=huaqin-corp-partner-google-com.20230601.gappssmtp.com; s=20230601; t=1719578719; x=1720183519; darn=vger.kernel.org; h=references:in-reply-to:message-id:date:subject:cc:to:from:from:to :cc:subject:date:message-id:reply-to; bh=tuDunQvtG/SUyhwA7yNBiZ77ORIPkpr9AJ7uT4xV9p4=; b=iXueBjrUJW0GN7WzXko43RGQUNlFf3opLDGrayG8gR+m+YkEggdwtESDlhyNB/+c7t m+h0s5gRb1p6KySILsT5yE3ntw3mvTQlXhozTfnTFZVrdDJZTleN49XVzZaHtzU7tQWQ vW+Cc3RHVKkQ8YyM9eT6RWtkjkQjuU5sRkmzak/UZinNC9dc3ByrNA2Zku2w/szsnMio geVn1SSXRwRz9Z0rs0WH1lOYC+BG8ragiez0HzOVqPCpyo7e+Lk/noKVpfpG0TEzISY/ YBbUO3MBiNJPG/ofahTpsxHHLNR5CTwo70VkrhHYhdEFFAelUX7ufZ60iwwRmZ9JFESf GC/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1719578719; x=1720183519; h=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=tuDunQvtG/SUyhwA7yNBiZ77ORIPkpr9AJ7uT4xV9p4=; b=Xz81k/yAwczq4rvYl+9leAY8mQG65P4+T1hdHuJj2Wzor4ZskpMyiineZS5du2ed/g CS84fwqdbuNX4IRYhHVVhoMzPIgtyeT6376YTyJ+P7V/cztbaSur9ZNF6hGIrcOYtdPw r8Qis/xRmU5o/W/y/m3QZRsuOM3dGaA4febpxgZgc+YJybQ8dP0BWiaqCyUIcpyntm7f 0DbVCxxlztBd1+8Jz5Oi321lV36zNY3XNRSylHvecjC5+F3or7surC3ybahiLe9CQYRN PALOyClde2+4e32fDp/YWWl/we0j3sF5YDQcWmMYJhaOOjv9wvl2Cq7nPKet0Rm7En71 4mMw== X-Forwarded-Encrypted: i=1; AJvYcCXk6X9ol6Fi1NmMyRfHpnS6esPyVmgBjPVozTQRP+gd5A1HHuG2KXqK9nW5SQ0ku6W7z+nuKpao9XQ6mdBVUFKEhuuHU6Is8/QIklVs X-Gm-Message-State: AOJu0Yzn28YZEbccHNz33yQ+Kjwa0H0jbqVaYkg35URJScrgtcqK9ZBl PIas3oBgFHY6x5Z2Z3KQ8i/v5SL5xoWz7T/3I/2ZAyuQcrBRCc0foqR8DQXmyak= X-Google-Smtp-Source: AGHT+IHAdbigbrlcf+3AeJjYGHIdE2GN0atj1xD07/ssCJ2VGi6ClkGSR2VDV6RmNNk7IOU7i93r1Q== X-Received: by 2002:a17:903:40d0:b0:1fa:38f4:b5d0 with SMTP id d9443c01a7336-1fac7e4c28emr22845805ad.13.1719578718814; Fri, 28 Jun 2024 05:45:18 -0700 (PDT) Received: from lvzhaoxiong-KLVC-WXX9.huaqin.com ([116.66.212.162]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-1fac15695b4sm14346255ad.225.2024.06.28.05.45.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Jun 2024 05:45:18 -0700 (PDT) From: Zhaoxiong Lv To: dmitry.torokhov@gmail.com, robh@kernel.org, krzysztof.kozlowski+dt@linaro.org, conor+dt@kernel.org, jikos@kernel.org, benjamin.tissoires@redhat.co, dianders@google.com, hsinyi@google.com, jagan@edgeble.ai, neil.armstrong@linaro.org, quic_jesszhan@quicinc.com, dmitry.baryshkov@linaro.org Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Zhaoxiong Lv Subject: [PATCH v6 3/5] drm/panel: panel-jadard-jd9365da-h3: use wrapped MIPI DCS functions Date: Fri, 28 Jun 2024 20:44:42 +0800 Message-Id: <20240628124444.28152-4-lvzhaoxiong@huaqin.corp-partner.google.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20240628124444.28152-1-lvzhaoxiong@huaqin.corp-partner.google.com> References: <20240628124444.28152-1-lvzhaoxiong@huaqin.corp-partner.google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Remove conditional code and always use mipi_dsi_dcs_*multi() wrappers to simplify driver's init/enable/exit code. Signed-off-by: Zhaoxiong Lv Reviewed-by: Dmitry Baryshkov Reviewed-by: Douglas Anderson Reviewed-by: Jessica Zhang --- Changes between V6 and V5: - 1. Convert the hex in init_code from UPPERCASE to lowercase. V4:https://lore.kernel.org/all/20240624141926.5250-4-lvzhaoxiong@huaqin.cor= p-partner.google.com/ --- .../gpu/drm/panel/panel-jadard-jd9365da-h3.c | 793 +++++++++--------- 1 file changed, 390 insertions(+), 403 deletions(-) diff --git a/drivers/gpu/drm/panel/panel-jadard-jd9365da-h3.c b/drivers/gpu= /drm/panel/panel-jadard-jd9365da-h3.c index a9c483a7b3fa..ff232a83297f 100644 --- a/drivers/gpu/drm/panel/panel-jadard-jd9365da-h3.c +++ b/drivers/gpu/drm/panel/panel-jadard-jd9365da-h3.c @@ -19,17 +19,13 @@ #include #include =20 -#define JD9365DA_INIT_CMD_LEN 2 - -struct jadard_init_cmd { - u8 data[JD9365DA_INIT_CMD_LEN]; -}; +struct jadard; =20 struct jadard_panel_desc { const struct drm_display_mode mode; unsigned int lanes; enum mipi_dsi_pixel_format format; - const struct jadard_init_cmd *init_cmds; + int (*init)(struct jadard *jadard); u32 num_init_cmds; }; =20 @@ -50,46 +46,33 @@ static inline struct jadard *panel_to_jadard(struct drm= _panel *panel) =20 static int jadard_enable(struct drm_panel *panel) { - struct device *dev =3D panel->dev; struct jadard *jadard =3D panel_to_jadard(panel); - struct mipi_dsi_device *dsi =3D jadard->dsi; - int err; + struct mipi_dsi_multi_context dsi_ctx =3D { .dsi =3D jadard->dsi }; =20 msleep(120); =20 - err =3D mipi_dsi_dcs_exit_sleep_mode(dsi); - if (err < 0) - DRM_DEV_ERROR(dev, "failed to exit sleep mode ret =3D %d\n", err); + mipi_dsi_dcs_exit_sleep_mode_multi(&dsi_ctx); =20 - err =3D mipi_dsi_dcs_set_display_on(dsi); - if (err < 0) - DRM_DEV_ERROR(dev, "failed to set display on ret =3D %d\n", err); + mipi_dsi_dcs_set_display_on_multi(&dsi_ctx); =20 - return 0; + return dsi_ctx.accum_err; } =20 static int jadard_disable(struct drm_panel *panel) { - struct device *dev =3D panel->dev; struct jadard *jadard =3D panel_to_jadard(panel); - int ret; + struct mipi_dsi_multi_context dsi_ctx =3D { .dsi =3D jadard->dsi }; =20 - ret =3D mipi_dsi_dcs_set_display_off(jadard->dsi); - if (ret < 0) - DRM_DEV_ERROR(dev, "failed to set display off: %d\n", ret); + mipi_dsi_dcs_set_display_off_multi(&dsi_ctx); =20 - ret =3D mipi_dsi_dcs_enter_sleep_mode(jadard->dsi); - if (ret < 0) - DRM_DEV_ERROR(dev, "failed to enter sleep mode: %d\n", ret); + mipi_dsi_dcs_enter_sleep_mode_multi(&dsi_ctx); =20 - return 0; + return dsi_ctx.accum_err; } =20 static int jadard_prepare(struct drm_panel *panel) { struct jadard *jadard =3D panel_to_jadard(panel); - const struct jadard_panel_desc *desc =3D jadard->desc; - unsigned int i; int ret; =20 ret =3D regulator_enable(jadard->vccio); @@ -109,13 +92,9 @@ static int jadard_prepare(struct drm_panel *panel) gpiod_set_value(jadard->reset, 1); msleep(130); =20 - for (i =3D 0; i < desc->num_init_cmds; i++) { - const struct jadard_init_cmd *cmd =3D &desc->init_cmds[i]; - - ret =3D mipi_dsi_dcs_write_buffer(dsi, cmd->data, JD9365DA_INIT_CMD_LEN); - if (ret < 0) - return ret; - } + ret =3D jadard->desc->init(jadard); + if (ret) + return ret; =20 return 0; } @@ -165,176 +144,181 @@ static const struct drm_panel_funcs jadard_funcs = =3D { .get_modes =3D jadard_get_modes, }; =20 -static const struct jadard_init_cmd radxa_display_8hd_ad002_init_cmds[] = =3D { - { .data =3D { 0xE0, 0x00 } }, - { .data =3D { 0xE1, 0x93 } }, - { .data =3D { 0xE2, 0x65 } }, - { .data =3D { 0xE3, 0xF8 } }, - { .data =3D { 0x80, 0x03 } }, - { .data =3D { 0xE0, 0x01 } }, - { .data =3D { 0x00, 0x00 } }, - { .data =3D { 0x01, 0x7E } }, - { .data =3D { 0x03, 0x00 } }, - { .data =3D { 0x04, 0x65 } }, - { .data =3D { 0x0C, 0x74 } }, - { .data =3D { 0x17, 0x00 } }, - { .data =3D { 0x18, 0xB7 } }, - { .data =3D { 0x19, 0x00 } }, - { .data =3D { 0x1A, 0x00 } }, - { .data =3D { 0x1B, 0xB7 } }, - { .data =3D { 0x1C, 0x00 } }, - { .data =3D { 0x24, 0xFE } }, - { .data =3D { 0x37, 0x19 } }, - { .data =3D { 0x38, 0x05 } }, - { .data =3D { 0x39, 0x00 } }, - { .data =3D { 0x3A, 0x01 } }, - { .data =3D { 0x3B, 0x01 } }, - { .data =3D { 0x3C, 0x70 } }, - { .data =3D { 0x3D, 0xFF } }, - { .data =3D { 0x3E, 0xFF } }, - { .data =3D { 0x3F, 0xFF } }, - { .data =3D { 0x40, 0x06 } }, - { .data =3D { 0x41, 0xA0 } }, - { .data =3D { 0x43, 0x1E } }, - { .data =3D { 0x44, 0x0F } }, - { .data =3D { 0x45, 0x28 } }, - { .data =3D { 0x4B, 0x04 } }, - { .data =3D { 0x55, 0x02 } }, - { .data =3D { 0x56, 0x01 } }, - { .data =3D { 0x57, 0xA9 } }, - { .data =3D { 0x58, 0x0A } }, - { .data =3D { 0x59, 0x0A } }, - { .data =3D { 0x5A, 0x37 } }, - { .data =3D { 0x5B, 0x19 } }, - { .data =3D { 0x5D, 0x78 } }, - { .data =3D { 0x5E, 0x63 } }, - { .data =3D { 0x5F, 0x54 } }, - { .data =3D { 0x60, 0x49 } }, - { .data =3D { 0x61, 0x45 } }, - { .data =3D { 0x62, 0x38 } }, - { .data =3D { 0x63, 0x3D } }, - { .data =3D { 0x64, 0x28 } }, - { .data =3D { 0x65, 0x43 } }, - { .data =3D { 0x66, 0x41 } }, - { .data =3D { 0x67, 0x43 } }, - { .data =3D { 0x68, 0x62 } }, - { .data =3D { 0x69, 0x50 } }, - { .data =3D { 0x6A, 0x57 } }, - { .data =3D { 0x6B, 0x49 } }, - { .data =3D { 0x6C, 0x44 } }, - { .data =3D { 0x6D, 0x37 } }, - { .data =3D { 0x6E, 0x23 } }, - { .data =3D { 0x6F, 0x10 } }, - { .data =3D { 0x70, 0x78 } }, - { .data =3D { 0x71, 0x63 } }, - { .data =3D { 0x72, 0x54 } }, - { .data =3D { 0x73, 0x49 } }, - { .data =3D { 0x74, 0x45 } }, - { .data =3D { 0x75, 0x38 } }, - { .data =3D { 0x76, 0x3D } }, - { .data =3D { 0x77, 0x28 } }, - { .data =3D { 0x78, 0x43 } }, - { .data =3D { 0x79, 0x41 } }, - { .data =3D { 0x7A, 0x43 } }, - { .data =3D { 0x7B, 0x62 } }, - { .data =3D { 0x7C, 0x50 } }, - { .data =3D { 0x7D, 0x57 } }, - { .data =3D { 0x7E, 0x49 } }, - { .data =3D { 0x7F, 0x44 } }, - { .data =3D { 0x80, 0x37 } }, - { .data =3D { 0x81, 0x23 } }, - { .data =3D { 0x82, 0x10 } }, - { .data =3D { 0xE0, 0x02 } }, - { .data =3D { 0x00, 0x47 } }, - { .data =3D { 0x01, 0x47 } }, - { .data =3D { 0x02, 0x45 } }, - { .data =3D { 0x03, 0x45 } }, - { .data =3D { 0x04, 0x4B } }, - { .data =3D { 0x05, 0x4B } }, - { .data =3D { 0x06, 0x49 } }, - { .data =3D { 0x07, 0x49 } }, - { .data =3D { 0x08, 0x41 } }, - { .data =3D { 0x09, 0x1F } }, - { .data =3D { 0x0A, 0x1F } }, - { .data =3D { 0x0B, 0x1F } }, - { .data =3D { 0x0C, 0x1F } }, - { .data =3D { 0x0D, 0x1F } }, - { .data =3D { 0x0E, 0x1F } }, - { .data =3D { 0x0F, 0x5F } }, - { .data =3D { 0x10, 0x5F } }, - { .data =3D { 0x11, 0x57 } }, - { .data =3D { 0x12, 0x77 } }, - { .data =3D { 0x13, 0x35 } }, - { .data =3D { 0x14, 0x1F } }, - { .data =3D { 0x15, 0x1F } }, - { .data =3D { 0x16, 0x46 } }, - { .data =3D { 0x17, 0x46 } }, - { .data =3D { 0x18, 0x44 } }, - { .data =3D { 0x19, 0x44 } }, - { .data =3D { 0x1A, 0x4A } }, - { .data =3D { 0x1B, 0x4A } }, - { .data =3D { 0x1C, 0x48 } }, - { .data =3D { 0x1D, 0x48 } }, - { .data =3D { 0x1E, 0x40 } }, - { .data =3D { 0x1F, 0x1F } }, - { .data =3D { 0x20, 0x1F } }, - { .data =3D { 0x21, 0x1F } }, - { .data =3D { 0x22, 0x1F } }, - { .data =3D { 0x23, 0x1F } }, - { .data =3D { 0x24, 0x1F } }, - { .data =3D { 0x25, 0x5F } }, - { .data =3D { 0x26, 0x5F } }, - { .data =3D { 0x27, 0x57 } }, - { .data =3D { 0x28, 0x77 } }, - { .data =3D { 0x29, 0x35 } }, - { .data =3D { 0x2A, 0x1F } }, - { .data =3D { 0x2B, 0x1F } }, - { .data =3D { 0x58, 0x40 } }, - { .data =3D { 0x59, 0x00 } }, - { .data =3D { 0x5A, 0x00 } }, - { .data =3D { 0x5B, 0x10 } }, - { .data =3D { 0x5C, 0x06 } }, - { .data =3D { 0x5D, 0x40 } }, - { .data =3D { 0x5E, 0x01 } }, - { .data =3D { 0x5F, 0x02 } }, - { .data =3D { 0x60, 0x30 } }, - { .data =3D { 0x61, 0x01 } }, - { .data =3D { 0x62, 0x02 } }, - { .data =3D { 0x63, 0x03 } }, - { .data =3D { 0x64, 0x6B } }, - { .data =3D { 0x65, 0x05 } }, - { .data =3D { 0x66, 0x0C } }, - { .data =3D { 0x67, 0x73 } }, - { .data =3D { 0x68, 0x09 } }, - { .data =3D { 0x69, 0x03 } }, - { .data =3D { 0x6A, 0x56 } }, - { .data =3D { 0x6B, 0x08 } }, - { .data =3D { 0x6C, 0x00 } }, - { .data =3D { 0x6D, 0x04 } }, - { .data =3D { 0x6E, 0x04 } }, - { .data =3D { 0x6F, 0x88 } }, - { .data =3D { 0x70, 0x00 } }, - { .data =3D { 0x71, 0x00 } }, - { .data =3D { 0x72, 0x06 } }, - { .data =3D { 0x73, 0x7B } }, - { .data =3D { 0x74, 0x00 } }, - { .data =3D { 0x75, 0xF8 } }, - { .data =3D { 0x76, 0x00 } }, - { .data =3D { 0x77, 0xD5 } }, - { .data =3D { 0x78, 0x2E } }, - { .data =3D { 0x79, 0x12 } }, - { .data =3D { 0x7A, 0x03 } }, - { .data =3D { 0x7B, 0x00 } }, - { .data =3D { 0x7C, 0x00 } }, - { .data =3D { 0x7D, 0x03 } }, - { .data =3D { 0x7E, 0x7B } }, - { .data =3D { 0xE0, 0x04 } }, - { .data =3D { 0x00, 0x0E } }, - { .data =3D { 0x02, 0xB3 } }, - { .data =3D { 0x09, 0x60 } }, - { .data =3D { 0x0E, 0x2A } }, - { .data =3D { 0x36, 0x59 } }, - { .data =3D { 0xE0, 0x00 } }, +static int radxa_display_8hd_ad002_init_cmds(struct jadard *jadard) +{ + struct mipi_dsi_multi_context dsi_ctx =3D { .dsi =3D jadard->dsi }; + + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xe0, 0x00); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xe1, 0x93); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xe2, 0x65); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xe3, 0xf8); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x80, 0x03); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xe0, 0x01); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x00, 0x00); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x01, 0x7e); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x03, 0x00); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x04, 0x65); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x0c, 0x74); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x17, 0x00); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x18, 0xb7); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x19, 0x00); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x1a, 0x00); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x1b, 0xb7); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x1c, 0x00); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x24, 0xfe); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x37, 0x19); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x38, 0x05); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x39, 0x00); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x3a, 0x01); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x3b, 0x01); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x3c, 0x70); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x3d, 0xff); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x3e, 0xff); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x3f, 0xff); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x40, 0x06); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x41, 0xa0); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x43, 0x1e); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x44, 0x0f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x45, 0x28); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x4b, 0x04); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x55, 0x02); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x56, 0x01); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x57, 0xa9); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x58, 0x0a); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x59, 0x0a); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x5a, 0x37); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x5b, 0x19); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x5d, 0x78); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x5e, 0x63); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x5f, 0x54); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x60, 0x49); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x61, 0x45); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x62, 0x38); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x63, 0x3d); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x64, 0x28); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x65, 0x43); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x66, 0x41); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x67, 0x43); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x68, 0x62); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x69, 0x50); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x6a, 0x57); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x6b, 0x49); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x6c, 0x44); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x6d, 0x37); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x6e, 0x23); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x6f, 0x10); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x70, 0x78); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x71, 0x63); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x72, 0x54); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x73, 0x49); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x74, 0x45); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x75, 0x38); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x76, 0x3d); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x77, 0x28); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x78, 0x43); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x79, 0x41); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x7a, 0x43); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x7b, 0x62); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x7c, 0x50); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x7d, 0x57); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x7e, 0x49); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x7f, 0x44); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x80, 0x37); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x81, 0x23); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x82, 0x10); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xe0, 0x02); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x00, 0x47); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x01, 0x47); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x02, 0x45); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x03, 0x45); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x04, 0x4b); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x05, 0x4b); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x06, 0x49); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x07, 0x49); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x08, 0x41); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x09, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x0a, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x0b, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x0c, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x0d, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x0e, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x0f, 0x5f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x10, 0x5f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x11, 0x57); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x12, 0x77); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x13, 0x35); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x14, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x15, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x16, 0x46); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x17, 0x46); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x18, 0x44); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x19, 0x44); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x1a, 0x4a); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x1b, 0x4a); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x1c, 0x48); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x1d, 0x48); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x1e, 0x40); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x1f, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x20, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x21, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x22, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x23, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x24, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x25, 0x5f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x26, 0x5f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x27, 0x57); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x28, 0x77); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x29, 0x35); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x2a, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x2b, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x58, 0x40); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x59, 0x00); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x5a, 0x00); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x5b, 0x10); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x5c, 0x06); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x5d, 0x40); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x5e, 0x01); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x5f, 0x02); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x60, 0x30); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x61, 0x01); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x62, 0x02); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x63, 0x03); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x64, 0x6b); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x65, 0x05); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x66, 0x0c); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x67, 0x73); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x68, 0x09); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x69, 0x03); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x6a, 0x56); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x6b, 0x08); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x6c, 0x00); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x6d, 0x04); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x6e, 0x04); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x6f, 0x88); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x70, 0x00); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x71, 0x00); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x72, 0x06); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x73, 0x7b); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x74, 0x00); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x75, 0xf8); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x76, 0x00); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x77, 0xd5); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x78, 0x2e); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x79, 0x12); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x7a, 0x03); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x7b, 0x00); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x7c, 0x00); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x7d, 0x03); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x7e, 0x7b); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xe0, 0x04); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x00, 0x0e); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x02, 0xb3); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x09, 0x60); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x0e, 0x2a); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x36, 0x59); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xe0, 0x00); + + return dsi_ctx.accum_err; }; =20 static const struct jadard_panel_desc radxa_display_8hd_ad002_desc =3D { @@ -357,205 +341,209 @@ static const struct jadard_panel_desc radxa_display= _8hd_ad002_desc =3D { }, .lanes =3D 4, .format =3D MIPI_DSI_FMT_RGB888, - .init_cmds =3D radxa_display_8hd_ad002_init_cmds, - .num_init_cmds =3D ARRAY_SIZE(radxa_display_8hd_ad002_init_cmds), + .init =3D radxa_display_8hd_ad002_init_cmds, }; =20 -static const struct jadard_init_cmd cz101b4001_init_cmds[] =3D { - { .data =3D { 0xE0, 0x00 } }, - { .data =3D { 0xE1, 0x93 } }, - { .data =3D { 0xE2, 0x65 } }, - { .data =3D { 0xE3, 0xF8 } }, - { .data =3D { 0x80, 0x03 } }, - { .data =3D { 0xE0, 0x01 } }, - { .data =3D { 0x00, 0x00 } }, - { .data =3D { 0x01, 0x3B } }, - { .data =3D { 0x0C, 0x74 } }, - { .data =3D { 0x17, 0x00 } }, - { .data =3D { 0x18, 0xAF } }, - { .data =3D { 0x19, 0x00 } }, - { .data =3D { 0x1A, 0x00 } }, - { .data =3D { 0x1B, 0xAF } }, - { .data =3D { 0x1C, 0x00 } }, - { .data =3D { 0x35, 0x26 } }, - { .data =3D { 0x37, 0x09 } }, - { .data =3D { 0x38, 0x04 } }, - { .data =3D { 0x39, 0x00 } }, - { .data =3D { 0x3A, 0x01 } }, - { .data =3D { 0x3C, 0x78 } }, - { .data =3D { 0x3D, 0xFF } }, - { .data =3D { 0x3E, 0xFF } }, - { .data =3D { 0x3F, 0x7F } }, - { .data =3D { 0x40, 0x06 } }, - { .data =3D { 0x41, 0xA0 } }, - { .data =3D { 0x42, 0x81 } }, - { .data =3D { 0x43, 0x14 } }, - { .data =3D { 0x44, 0x23 } }, - { .data =3D { 0x45, 0x28 } }, - { .data =3D { 0x55, 0x02 } }, - { .data =3D { 0x57, 0x69 } }, - { .data =3D { 0x59, 0x0A } }, - { .data =3D { 0x5A, 0x2A } }, - { .data =3D { 0x5B, 0x17 } }, - { .data =3D { 0x5D, 0x7F } }, - { .data =3D { 0x5E, 0x6B } }, - { .data =3D { 0x5F, 0x5C } }, - { .data =3D { 0x60, 0x4F } }, - { .data =3D { 0x61, 0x4D } }, - { .data =3D { 0x62, 0x3F } }, - { .data =3D { 0x63, 0x42 } }, - { .data =3D { 0x64, 0x2B } }, - { .data =3D { 0x65, 0x44 } }, - { .data =3D { 0x66, 0x43 } }, - { .data =3D { 0x67, 0x43 } }, - { .data =3D { 0x68, 0x63 } }, - { .data =3D { 0x69, 0x52 } }, - { .data =3D { 0x6A, 0x5A } }, - { .data =3D { 0x6B, 0x4F } }, - { .data =3D { 0x6C, 0x4E } }, - { .data =3D { 0x6D, 0x20 } }, - { .data =3D { 0x6E, 0x0F } }, - { .data =3D { 0x6F, 0x00 } }, - { .data =3D { 0x70, 0x7F } }, - { .data =3D { 0x71, 0x6B } }, - { .data =3D { 0x72, 0x5C } }, - { .data =3D { 0x73, 0x4F } }, - { .data =3D { 0x74, 0x4D } }, - { .data =3D { 0x75, 0x3F } }, - { .data =3D { 0x76, 0x42 } }, - { .data =3D { 0x77, 0x2B } }, - { .data =3D { 0x78, 0x44 } }, - { .data =3D { 0x79, 0x43 } }, - { .data =3D { 0x7A, 0x43 } }, - { .data =3D { 0x7B, 0x63 } }, - { .data =3D { 0x7C, 0x52 } }, - { .data =3D { 0x7D, 0x5A } }, - { .data =3D { 0x7E, 0x4F } }, - { .data =3D { 0x7F, 0x4E } }, - { .data =3D { 0x80, 0x20 } }, - { .data =3D { 0x81, 0x0F } }, - { .data =3D { 0x82, 0x00 } }, - { .data =3D { 0xE0, 0x02 } }, - { .data =3D { 0x00, 0x02 } }, - { .data =3D { 0x01, 0x02 } }, - { .data =3D { 0x02, 0x00 } }, - { .data =3D { 0x03, 0x00 } }, - { .data =3D { 0x04, 0x1E } }, - { .data =3D { 0x05, 0x1E } }, - { .data =3D { 0x06, 0x1F } }, - { .data =3D { 0x07, 0x1F } }, - { .data =3D { 0x08, 0x1F } }, - { .data =3D { 0x09, 0x17 } }, - { .data =3D { 0x0A, 0x17 } }, - { .data =3D { 0x0B, 0x37 } }, - { .data =3D { 0x0C, 0x37 } }, - { .data =3D { 0x0D, 0x47 } }, - { .data =3D { 0x0E, 0x47 } }, - { .data =3D { 0x0F, 0x45 } }, - { .data =3D { 0x10, 0x45 } }, - { .data =3D { 0x11, 0x4B } }, - { .data =3D { 0x12, 0x4B } }, - { .data =3D { 0x13, 0x49 } }, - { .data =3D { 0x14, 0x49 } }, - { .data =3D { 0x15, 0x1F } }, - { .data =3D { 0x16, 0x01 } }, - { .data =3D { 0x17, 0x01 } }, - { .data =3D { 0x18, 0x00 } }, - { .data =3D { 0x19, 0x00 } }, - { .data =3D { 0x1A, 0x1E } }, - { .data =3D { 0x1B, 0x1E } }, - { .data =3D { 0x1C, 0x1F } }, - { .data =3D { 0x1D, 0x1F } }, - { .data =3D { 0x1E, 0x1F } }, - { .data =3D { 0x1F, 0x17 } }, - { .data =3D { 0x20, 0x17 } }, - { .data =3D { 0x21, 0x37 } }, - { .data =3D { 0x22, 0x37 } }, - { .data =3D { 0x23, 0x46 } }, - { .data =3D { 0x24, 0x46 } }, - { .data =3D { 0x25, 0x44 } }, - { .data =3D { 0x26, 0x44 } }, - { .data =3D { 0x27, 0x4A } }, - { .data =3D { 0x28, 0x4A } }, - { .data =3D { 0x29, 0x48 } }, - { .data =3D { 0x2A, 0x48 } }, - { .data =3D { 0x2B, 0x1F } }, - { .data =3D { 0x2C, 0x01 } }, - { .data =3D { 0x2D, 0x01 } }, - { .data =3D { 0x2E, 0x00 } }, - { .data =3D { 0x2F, 0x00 } }, - { .data =3D { 0x30, 0x1F } }, - { .data =3D { 0x31, 0x1F } }, - { .data =3D { 0x32, 0x1E } }, - { .data =3D { 0x33, 0x1E } }, - { .data =3D { 0x34, 0x1F } }, - { .data =3D { 0x35, 0x17 } }, - { .data =3D { 0x36, 0x17 } }, - { .data =3D { 0x37, 0x37 } }, - { .data =3D { 0x38, 0x37 } }, - { .data =3D { 0x39, 0x08 } }, - { .data =3D { 0x3A, 0x08 } }, - { .data =3D { 0x3B, 0x0A } }, - { .data =3D { 0x3C, 0x0A } }, - { .data =3D { 0x3D, 0x04 } }, - { .data =3D { 0x3E, 0x04 } }, - { .data =3D { 0x3F, 0x06 } }, - { .data =3D { 0x40, 0x06 } }, - { .data =3D { 0x41, 0x1F } }, - { .data =3D { 0x42, 0x02 } }, - { .data =3D { 0x43, 0x02 } }, - { .data =3D { 0x44, 0x00 } }, - { .data =3D { 0x45, 0x00 } }, - { .data =3D { 0x46, 0x1F } }, - { .data =3D { 0x47, 0x1F } }, - { .data =3D { 0x48, 0x1E } }, - { .data =3D { 0x49, 0x1E } }, - { .data =3D { 0x4A, 0x1F } }, - { .data =3D { 0x4B, 0x17 } }, - { .data =3D { 0x4C, 0x17 } }, - { .data =3D { 0x4D, 0x37 } }, - { .data =3D { 0x4E, 0x37 } }, - { .data =3D { 0x4F, 0x09 } }, - { .data =3D { 0x50, 0x09 } }, - { .data =3D { 0x51, 0x0B } }, - { .data =3D { 0x52, 0x0B } }, - { .data =3D { 0x53, 0x05 } }, - { .data =3D { 0x54, 0x05 } }, - { .data =3D { 0x55, 0x07 } }, - { .data =3D { 0x56, 0x07 } }, - { .data =3D { 0x57, 0x1F } }, - { .data =3D { 0x58, 0x40 } }, - { .data =3D { 0x5B, 0x30 } }, - { .data =3D { 0x5C, 0x16 } }, - { .data =3D { 0x5D, 0x34 } }, - { .data =3D { 0x5E, 0x05 } }, - { .data =3D { 0x5F, 0x02 } }, - { .data =3D { 0x63, 0x00 } }, - { .data =3D { 0x64, 0x6A } }, - { .data =3D { 0x67, 0x73 } }, - { .data =3D { 0x68, 0x1D } }, - { .data =3D { 0x69, 0x08 } }, - { .data =3D { 0x6A, 0x6A } }, - { .data =3D { 0x6B, 0x08 } }, - { .data =3D { 0x6C, 0x00 } }, - { .data =3D { 0x6D, 0x00 } }, - { .data =3D { 0x6E, 0x00 } }, - { .data =3D { 0x6F, 0x88 } }, - { .data =3D { 0x75, 0xFF } }, - { .data =3D { 0x77, 0xDD } }, - { .data =3D { 0x78, 0x3F } }, - { .data =3D { 0x79, 0x15 } }, - { .data =3D { 0x7A, 0x17 } }, - { .data =3D { 0x7D, 0x14 } }, - { .data =3D { 0x7E, 0x82 } }, - { .data =3D { 0xE0, 0x04 } }, - { .data =3D { 0x00, 0x0E } }, - { .data =3D { 0x02, 0xB3 } }, - { .data =3D { 0x09, 0x61 } }, - { .data =3D { 0x0E, 0x48 } }, - { .data =3D { 0xE0, 0x00 } }, - { .data =3D { 0xE6, 0x02 } }, - { .data =3D { 0xE7, 0x0C } }, +static int cz101b4001_init_cmds(struct jadard *jadard) +{ + struct mipi_dsi_multi_context dsi_ctx =3D { .dsi =3D jadard->dsi }; + + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xe0, 0x00); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xe1, 0x93); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xe2, 0x65); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xe3, 0xf8); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x80, 0x03); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xe0, 0x01); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x00, 0x00); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x01, 0x3b); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x0c, 0x74); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x17, 0x00); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x18, 0xaf); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x19, 0x00); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x1a, 0x00); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x1b, 0xaf); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x1c, 0x00); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x35, 0x26); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x37, 0x09); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x38, 0x04); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x39, 0x00); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x3a, 0x01); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x3c, 0x78); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x3d, 0xff); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x3e, 0xff); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x3f, 0x7f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x40, 0x06); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x41, 0xa0); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x42, 0x81); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x43, 0x14); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x44, 0x23); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x45, 0x28); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x55, 0x02); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x57, 0x69); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x59, 0x0a); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x5a, 0x2a); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x5b, 0x17); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x5d, 0x7f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x5e, 0x6b); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x5f, 0x5c); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x60, 0x4f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x61, 0x4d); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x62, 0x3f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x63, 0x42); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x64, 0x2b); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x65, 0x44); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x66, 0x43); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x67, 0x43); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x68, 0x63); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x69, 0x52); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x6a, 0x5a); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x6b, 0x4f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x6c, 0x4e); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x6d, 0x20); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x6e, 0x0f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x6f, 0x00); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x70, 0x7f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x71, 0x6b); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x72, 0x5c); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x73, 0x4f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x74, 0x4d); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x75, 0x3f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x76, 0x42); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x77, 0x2b); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x78, 0x44); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x79, 0x43); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x7a, 0x43); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x7b, 0x63); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x7c, 0x52); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x7d, 0x5a); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x7e, 0x4f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x7f, 0x4e); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x80, 0x20); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x81, 0x0f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x82, 0x00); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xe0, 0x02); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x00, 0x02); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x01, 0x02); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x02, 0x00); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x03, 0x00); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x04, 0x1e); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x05, 0x1e); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x06, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x07, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x08, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x09, 0x17); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x0a, 0x17); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x0b, 0x37); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x0c, 0x37); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x0d, 0x47); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x0e, 0x47); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x0f, 0x45); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x10, 0x45); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x11, 0x4b); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x12, 0x4b); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x13, 0x49); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x14, 0x49); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x15, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x16, 0x01); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x17, 0x01); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x18, 0x00); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x19, 0x00); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x1a, 0x1e); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x1b, 0x1e); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x1c, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x1d, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x1e, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x1f, 0x17); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x20, 0x17); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x21, 0x37); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x22, 0x37); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x23, 0x46); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x24, 0x46); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x25, 0x44); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x26, 0x44); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x27, 0x4a); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x28, 0x4a); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x29, 0x48); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x2a, 0x48); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x2b, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x2c, 0x01); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x2d, 0x01); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x2e, 0x00); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x2f, 0x00); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x30, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x31, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x32, 0x1e); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x33, 0x1e); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x34, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x35, 0x17); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x36, 0x17); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x37, 0x37); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x38, 0x37); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x39, 0x08); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x3a, 0x08); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x3b, 0x0a); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x3c, 0x0a); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x3d, 0x04); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x3e, 0x04); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x3f, 0x06); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x40, 0x06); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x41, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x42, 0x02); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x43, 0x02); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x44, 0x00); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x45, 0x00); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x46, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x47, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x48, 0x1e); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x49, 0x1e); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x4a, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x4b, 0x17); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x4c, 0x17); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x4d, 0x37); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x4e, 0x37); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x4f, 0x09); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x50, 0x09); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x51, 0x0b); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x52, 0x0b); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x53, 0x05); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x54, 0x05); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x55, 0x07); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x56, 0x07); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x57, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x58, 0x40); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x5b, 0x30); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x5c, 0x16); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x5d, 0x34); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x5e, 0x05); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x5f, 0x02); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x63, 0x00); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x64, 0x6a); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x67, 0x73); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x68, 0x1d); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x69, 0x08); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x6a, 0x6a); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x6b, 0x08); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x6c, 0x00); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x6d, 0x00); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x6e, 0x00); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x6f, 0x88); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x75, 0xff); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x77, 0xdd); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x78, 0x3f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x79, 0x15); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x7a, 0x17); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x7d, 0x14); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x7e, 0x82); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xe0, 0x04); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x00, 0x0e); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x02, 0xb3); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x09, 0x61); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x0e, 0x48); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xe0, 0x00); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xe6, 0x02); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xe7, 0x0c); + + return dsi_ctx.accum_err; }; =20 static const struct jadard_panel_desc cz101b4001_desc =3D { @@ -578,8 +566,7 @@ static const struct jadard_panel_desc cz101b4001_desc = =3D { }, .lanes =3D 4, .format =3D MIPI_DSI_FMT_RGB888, - .init_cmds =3D cz101b4001_init_cmds, - .num_init_cmds =3D ARRAY_SIZE(cz101b4001_init_cmds), + .init =3D cz101b4001_init_cmds, }; =20 static int jadard_dsi_probe(struct mipi_dsi_device *dsi) --=20 2.17.1 From nobody Sun Dec 14 12:14:38 2025 Received: from mail-pl1-f173.google.com (mail-pl1-f173.google.com [209.85.214.173]) (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 06EE518FDAF for ; Fri, 28 Jun 2024 12:45:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.173 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1719578763; cv=none; b=U0njkcWleczoru1JXDUXr6aq1s/UEivXEc6PQJ95aFSnuueLGAJazKYDFP+oFEbU8lx8mYzB3S6c/jLugd7zfICAtJWfRNZ2U66Mip0bO3yZPE+8oh9RAh3edvMy0BKSZajD8zbAvlAFd3+aCZ2j0RgywvQ9Lr6d6UCEoZMU2Lc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1719578763; c=relaxed/simple; bh=CzXVvOauzDNcRz6STL3su5ihxKRun56SedoEO4ujG4A=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References; b=nDiTUKXB+sQnkuS4z7WC6BxUc+V4EnyaDPJpbTdvCvZP41Tk6uYZcHRHlo//UdY0UXppGyXf9d597tJaIqH/944gLtifh+o1bU/TYNhEfSF51gIuGDdYDFia73vaHbPYAbMzuknaa4u7ctNRF429z/RXuH+4LHytJTFslvAZsw4= 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=BKl2lzrc; arc=none smtp.client-ip=209.85.214.173 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="BKl2lzrc" Received: by mail-pl1-f173.google.com with SMTP id d9443c01a7336-1f9de13d6baso3366855ad.2 for ; Fri, 28 Jun 2024 05:45:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=huaqin-corp-partner-google-com.20230601.gappssmtp.com; s=20230601; t=1719578751; x=1720183551; darn=vger.kernel.org; h=references:in-reply-to:message-id:date:subject:cc:to:from:from:to :cc:subject:date:message-id:reply-to; bh=klRQXqJY3KktJ6k1yD9MBmpg/ejmcwgU6PkV3TJWnho=; b=BKl2lzrcAJdH61yMW3Y0+0A+hHRlWF+D1oZvX/MigBZUxPh/N2nqdbGmbxvlvuRghd e0ii5/aiOm1A0fBqVZYOzdQfWyG64aOdybpHse6jX8xG+31I6BXFryhgT55WSk1Vcwyu aNJIKpPeB7KNGGT6MobpkPJH091//YqoRRVqiHyHknm6H0i7cI5X1kr2UAuhsUCgIhpT 7iTGaKnEUBhhBI/fgOBHBTukz9Mfx70DbTMXeipcnQ6sG/7v35e8ZrD3FO0fiO1WUfF6 EwBfARNT6l5oCTE5kei+nZjEZjMYNqTQn+JEYvKkyJSbJxCDlUbpT/czqgs0usmETekC WKTg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1719578751; x=1720183551; h=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=klRQXqJY3KktJ6k1yD9MBmpg/ejmcwgU6PkV3TJWnho=; b=mMvsm/NTo9y31CS8pxQWQBJCFM5oeKhiqWETSMwBN2OJ6+d1JFguNWjrm7suyR8VUK WFmMvTxpjFrVLngVg4GgwMoQW9pPoO3fmGuWTVP4EhIYHpWXtYMBohBqAASCsQ896ka5 +2qna+D7v4P6903/Y9eDCqG2ZwNbIZbwYVGZdHW0KCkjcFb6ljZS9fuchBJqJl6J1uPy uMDtCDzz6FVRcnrqNt/JwNuGsZ6fqOjKYWacDDrQVdiMVJkv/+zdaO2RYs3X7BqN0n4z XpE4ThecKyZcO4U9ZDKWOT8N99ckzu9eZEvg8UsIgzNy5SUsV7Sf7IM5wQRq2ttArBqG BYig== X-Forwarded-Encrypted: i=1; AJvYcCWszcil1SvnSPY7FZknnM5SJ6CDnm+XnI5jcmmccPJXMAkZbyl1lRro9Ud4HaYOz3rR4rraxT/jxfqQsp+/g3hFeUGOrdNptq2obGFV X-Gm-Message-State: AOJu0YxRbJNMmr+yCv6k5CtpCFz6T4rI85EIChNR/mzomEn3shNlgbi3 6LX+KMcAXZHKESJMLOrQ9Nnf7zVsF74sphNO3sYHUVLXynp3qEQGAKEif7BgC9g= X-Google-Smtp-Source: AGHT+IGTFb3gmYVkw9lDpDQPZWekyB3UUTtUCdQWgHzRB8+Xj13hkgumOG35cnHzPBToFoa/wt2FMg== X-Received: by 2002:a17:902:d4cf:b0:1fa:acf0:72c8 with SMTP id d9443c01a7336-1faacf07699mr34789995ad.18.1719578750982; Fri, 28 Jun 2024 05:45:50 -0700 (PDT) Received: from lvzhaoxiong-KLVC-WXX9.huaqin.com ([116.66.212.162]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-1fac15695b4sm14346255ad.225.2024.06.28.05.45.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Jun 2024 05:45:50 -0700 (PDT) From: Zhaoxiong Lv To: dmitry.torokhov@gmail.com, robh@kernel.org, krzysztof.kozlowski+dt@linaro.org, conor+dt@kernel.org, jikos@kernel.org, benjamin.tissoires@redhat.co, dianders@google.com, hsinyi@google.com, jagan@edgeble.ai, neil.armstrong@linaro.org, quic_jesszhan@quicinc.com, dmitry.baryshkov@linaro.org Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Zhaoxiong Lv Subject: [PATCH v6 4/5] drm/panel: jd9365da: Support for kd101ne3-40ti MIPI-DSI panel Date: Fri, 28 Jun 2024 20:44:43 +0800 Message-Id: <20240628124444.28152-5-lvzhaoxiong@huaqin.corp-partner.google.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20240628124444.28152-1-lvzhaoxiong@huaqin.corp-partner.google.com> References: <20240628124444.28152-1-lvzhaoxiong@huaqin.corp-partner.google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" The K&d kd101ne3-40ti is a 10.1" WXGA TFT-LCD panel, use jd9365da controller,which fits in nicely with the existing panel-jadard-jd9365da-h3 driver.Hence,we add a new compatible with panel specific config. Although they have the same control IC, the two panels are different, and the timing will be slightly different, so we added some variables in struct jadard_panel_desc to control the timing. Signed-off-by: Zhaoxiong Lv Reviewed-by: Douglas Anderson Acked-by: Jessica Zhang --- Changes between V6 and V5: - 1. No changes. V5:https://lore.kernel.org/all/20240624141926.5250-5-lvzhaoxiong@huaqin.cor= p-partner.google.com/ Changes between V5 and V4: - 1. Add a "_ms" suffix to the variables. - 2. Use more "_multi" in the enable/disable function - 3. Use mipi_dsi_dcs_write_seq_multi() in the init() function. V4:https://lore.kernel.org/all/20240620080509.18504-4-lvzhaoxiong@huaqin.co= rp-partner.google.com/ Changes between V4 and V3: - 1. Use mipi_dsi_msleep. - 2. Adjust the ".clock" assignment format. - 3. Adjust "compatible" positions to keep the list sorted. V3:https://lore.kernel.org/all/20240614145510.22965-4-lvzhaoxiong@huaqin.co= rp-partner.google.com/ Changes between V3 and V2: - 1. Give up creating a new driver and re-add K&d kd101ne3-40ti=20 - configuration to the panel-jadard-jd9365da-h3.c driver. V2:https://lore.kernel.org/all/20240601084528.22502-3-lvzhaoxiong@huaqin.co= rp-partner.google.com/ Changes between V2 and V1: - 1. Use the new mipi_dsi_dcs_write_seq_multi() function. - 2. Modify Move mipi_dsi_dcs_set_display_off() and mipi_dsi_dcs_enter_sle= ep_mode() to disable(), - and drop kingdisplay_panel_enter_sleep_mode(). - 3. If prepare fails, disable GPIO before regulators. - 4. This function drm_connector_set_panel_orientation() is no longer used= . Delete it. - 5. Drop ".shutdown =3D kingdisplay_panel_shutdown". --- .../gpu/drm/panel/panel-jadard-jd9365da-h3.c | 277 ++++++++++++++++++ 1 file changed, 277 insertions(+) diff --git a/drivers/gpu/drm/panel/panel-jadard-jd9365da-h3.c b/drivers/gpu= /drm/panel/panel-jadard-jd9365da-h3.c index ff232a83297f..b5265d95be4e 100644 --- a/drivers/gpu/drm/panel/panel-jadard-jd9365da-h3.c +++ b/drivers/gpu/drm/panel/panel-jadard-jd9365da-h3.c @@ -27,6 +27,15 @@ struct jadard_panel_desc { enum mipi_dsi_pixel_format format; int (*init)(struct jadard *jadard); u32 num_init_cmds; + bool lp11_before_reset; + bool reset_before_power_off_vcioo; + unsigned int vcioo_to_lp11_delay_ms; + unsigned int lp11_to_reset_delay_ms; + unsigned int exit_sleep_to_display_on_delay_ms; + unsigned int display_on_delay_ms; + unsigned int backlight_off_to_display_off_delay_ms; + unsigned int display_off_to_enter_sleep_delay_ms; + unsigned int enter_sleep_to_reset_down_delay_ms; }; =20 struct jadard { @@ -53,8 +62,14 @@ static int jadard_enable(struct drm_panel *panel) =20 mipi_dsi_dcs_exit_sleep_mode_multi(&dsi_ctx); =20 + if (jadard->desc->exit_sleep_to_display_on_delay_ms) + mipi_dsi_msleep(&dsi_ctx, jadard->desc->exit_sleep_to_display_on_delay_m= s); + mipi_dsi_dcs_set_display_on_multi(&dsi_ctx); =20 + if (jadard->desc->display_on_delay_ms) + mipi_dsi_msleep(&dsi_ctx, jadard->desc->display_on_delay_ms); + return dsi_ctx.accum_err; } =20 @@ -63,10 +78,19 @@ static int jadard_disable(struct drm_panel *panel) struct jadard *jadard =3D panel_to_jadard(panel); struct mipi_dsi_multi_context dsi_ctx =3D { .dsi =3D jadard->dsi }; =20 + if (jadard->desc->backlight_off_to_display_off_delay_ms) + mipi_dsi_msleep(&dsi_ctx, jadard->desc->backlight_off_to_display_off_del= ay_ms); + mipi_dsi_dcs_set_display_off_multi(&dsi_ctx); =20 + if (jadard->desc->display_off_to_enter_sleep_delay_ms) + mipi_dsi_msleep(&dsi_ctx, jadard->desc->display_off_to_enter_sleep_delay= _ms); + mipi_dsi_dcs_enter_sleep_mode_multi(&dsi_ctx); =20 + if (jadard->desc->enter_sleep_to_reset_down_delay_ms) + mipi_dsi_msleep(&dsi_ctx, jadard->desc->enter_sleep_to_reset_down_delay_= ms); + return dsi_ctx.accum_err; } =20 @@ -83,6 +107,18 @@ static int jadard_prepare(struct drm_panel *panel) if (ret) return ret; =20 + if (jadard->desc->vcioo_to_lp11_delay_ms) + msleep(jadard->desc->vcioo_to_lp11_delay_ms); + + if (jadard->desc->lp11_before_reset) { + ret =3D mipi_dsi_dcs_nop(jadard->dsi); + if (ret) + return ret; + } + + if (jadard->desc->lp11_to_reset_delay_ms) + msleep(jadard->desc->lp11_to_reset_delay_ms); + gpiod_set_value(jadard->reset, 1); msleep(5); =20 @@ -106,6 +142,12 @@ static int jadard_unprepare(struct drm_panel *panel) gpiod_set_value(jadard->reset, 1); msleep(120); =20 + if (jadard->desc->reset_before_power_off_vcioo) { + gpiod_set_value(jadard->reset, 0); + + usleep_range(1000, 2000); + } + regulator_disable(jadard->vdd); regulator_disable(jadard->vccio); =20 @@ -569,6 +611,237 @@ static const struct jadard_panel_desc cz101b4001_desc= =3D { .init =3D cz101b4001_init_cmds, }; =20 +static int kingdisplay_kd101ne3_init_cmds(struct jadard *jadard) +{ + struct mipi_dsi_multi_context dsi_ctx =3D { .dsi =3D jadard->dsi }; + + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xe0, 0x00); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xe1, 0x93); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xe2, 0x65); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xe3, 0xf8); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x80, 0x03); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xe0, 0x01); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x0c, 0x74); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x17, 0x00); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x18, 0xc7); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x19, 0x01); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x1a, 0x00); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x1b, 0xc7); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x1c, 0x01); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x24, 0xfe); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x37, 0x19); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x35, 0x28); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x38, 0x05); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x39, 0x08); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x3a, 0x12); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x3c, 0x7e); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x3d, 0xff); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x3e, 0xff); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x3f, 0x7f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x40, 0x06); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x41, 0xa0); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x43, 0x1e); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x44, 0x0b); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x55, 0x02); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x57, 0x6a); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x59, 0x0a); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x5a, 0x2e); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x5b, 0x1a); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x5c, 0x15); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x5d, 0x7f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x5e, 0x61); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x5f, 0x50); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x60, 0x43); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x61, 0x3f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x62, 0x32); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x63, 0x35); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x64, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x65, 0x38); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x66, 0x36); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x67, 0x36); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x68, 0x54); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x69, 0x42); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x6a, 0x48); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x6b, 0x39); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x6c, 0x34); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x6d, 0x26); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x6e, 0x14); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x6f, 0x02); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x70, 0x7f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x71, 0x61); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x72, 0x50); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x73, 0x43); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x74, 0x3f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x75, 0x32); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x76, 0x35); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x77, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x78, 0x38); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x79, 0x36); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x7a, 0x36); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x7b, 0x54); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x7c, 0x42); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x7d, 0x48); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x7e, 0x39); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x7f, 0x34); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x80, 0x26); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x81, 0x14); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x82, 0x02); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xe0, 0x02); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x00, 0x52); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x01, 0x5f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x02, 0x5f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x03, 0x50); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x04, 0x77); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x05, 0x57); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x06, 0x5f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x07, 0x4e); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x08, 0x4c); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x09, 0x5f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x0a, 0x4a); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x0b, 0x48); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x0c, 0x5f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x0d, 0x46); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x0e, 0x44); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x0f, 0x40); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x10, 0x5f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x11, 0x5f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x12, 0x5f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x13, 0x5f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x14, 0x5f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x15, 0x5f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x16, 0x53); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x17, 0x5f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x18, 0x5f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x19, 0x51); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x1a, 0x77); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x1b, 0x57); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x1c, 0x5f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x1d, 0x4f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x1e, 0x4d); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x1f, 0x5f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x20, 0x4b); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x21, 0x49); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x22, 0x5f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x23, 0x47); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x24, 0x45); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x25, 0x41); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x26, 0x5f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x27, 0x5f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x28, 0x5f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x29, 0x5f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x2a, 0x5f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x2b, 0x5f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x2c, 0x13); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x2d, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x2e, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x2f, 0x01); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x30, 0x17); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x31, 0x17); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x32, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x33, 0x0d); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x34, 0x0f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x35, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x36, 0x05); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x37, 0x07); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x38, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x39, 0x09); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x3a, 0x0b); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x3b, 0x11); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x3c, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x3d, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x3e, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x3f, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x40, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x41, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x42, 0x12); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x43, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x44, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x45, 0x00); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x46, 0x17); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x47, 0x17); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x48, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x49, 0x0c); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x4a, 0x0e); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x4b, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x4c, 0x04); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x4d, 0x06); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x4e, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x4f, 0x08); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x50, 0x0a); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x51, 0x10); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x52, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x53, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x54, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x55, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x56, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x57, 0x1f); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x58, 0x40); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x5b, 0x10); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x5c, 0x06); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x5d, 0x40); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x5e, 0x00); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x5f, 0x00); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x60, 0x40); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x61, 0x03); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x62, 0x04); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x63, 0x6c); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x64, 0x6c); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x65, 0x75); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x66, 0x08); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x67, 0xb4); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x68, 0x08); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x69, 0x6c); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x6a, 0x6c); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x6b, 0x0c); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x6d, 0x00); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x6e, 0x00); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x6f, 0x88); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x75, 0xbb); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x76, 0x00); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x77, 0x05); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x78, 0x2a); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xe0, 0x04); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x00, 0x0e); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x02, 0xb3); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x09, 0x61); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x0e, 0x48); + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xe0, 0x00); + + return dsi_ctx.accum_err; +}; + +static const struct jadard_panel_desc kingdisplay_kd101ne3_40ti_desc =3D { + .mode =3D { + .clock =3D (800 + 24 + 24 + 24) * (1280 + 30 + 4 + 8) * 60 / 1000, + + .hdisplay =3D 800, + .hsync_start =3D 800 + 24, + .hsync_end =3D 800 + 24 + 24, + .htotal =3D 800 + 24 + 24 + 24, + + .vdisplay =3D 1280, + .vsync_start =3D 1280 + 30, + .vsync_end =3D 1280 + 30 + 4, + .vtotal =3D 1280 + 30 + 4 + 8, + + .width_mm =3D 135, + .height_mm =3D 216, + .type =3D DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED, + }, + .lanes =3D 4, + .format =3D MIPI_DSI_FMT_RGB888, + .init =3D kingdisplay_kd101ne3_init_cmds, + .lp11_before_reset =3D true, + .reset_before_power_off_vcioo =3D true, + .vcioo_to_lp11_delay_ms =3D 5, + .lp11_to_reset_delay_ms =3D 10, + .exit_sleep_to_display_on_delay_ms =3D 120, + .display_on_delay_ms =3D 20, + .backlight_off_to_display_off_delay_ms =3D 100, + .display_off_to_enter_sleep_delay_ms =3D 50, + .enter_sleep_to_reset_down_delay_ms =3D 100, +}; + static int jadard_dsi_probe(struct mipi_dsi_device *dsi) { struct device *dev =3D &dsi->dev; @@ -637,6 +910,10 @@ static const struct of_device_id jadard_of_match[] =3D= { .compatible =3D "chongzhou,cz101b4001", .data =3D &cz101b4001_desc }, + { + .compatible =3D "kingdisplay,kd101ne3-40ti", + .data =3D &kingdisplay_kd101ne3_40ti_desc + }, { .compatible =3D "radxa,display-10hd-ad001", .data =3D &cz101b4001_desc --=20 2.17.1 From nobody Sun Dec 14 12:14:38 2025 Received: from mail-pl1-f178.google.com (mail-pl1-f178.google.com [209.85.214.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 AAE6A19AD93 for ; Fri, 28 Jun 2024 12:45:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1719578769; cv=none; b=lrMOYg4M4Bb22MtZ7MRXYnMRLII42RN6EEYNqyzQQ+1cjV3zHM2IreoT2hmdkv+Nsq+aHpiCN3v8j3PtaW7c7tFwsGURvY8+65dvSt/14VBd3gXVtON2r/12lDN88Dz4rNBRMuzda2qrvB31VBFEsLcOxzjn72rflnTx2T6Y03s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1719578769; c=relaxed/simple; bh=pNZs9jyP/A7Pf2JchDUxylJEiYsyQSUgSvF66qCzCUI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References; b=iXOmcgR+FoJPz1HLn1DUYJYts4OQCYMsDX5UU1LN3Vu2JFEq6hL8AH0rwtmrrw5B8QvByLdUSGduRiExXK8xLuyEpThH3yMIA0uGfsCNHjsUfO4xL+7ahVe4J329xqOKJGZldWI1A/cXK+rB2NI0BQrdSqLCApaUmMVhrUERbG4= 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=gA6C0CYu; arc=none smtp.client-ip=209.85.214.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="gA6C0CYu" Received: by mail-pl1-f178.google.com with SMTP id d9443c01a7336-1f9cd92b146so2977695ad.3 for ; Fri, 28 Jun 2024 05:45:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=huaqin-corp-partner-google-com.20230601.gappssmtp.com; s=20230601; t=1719578757; x=1720183557; darn=vger.kernel.org; h=references:in-reply-to:message-id:date:subject:cc:to:from:from:to :cc:subject:date:message-id:reply-to; bh=NYdcAWuXYTWQAAXUNDXbS02yL9oAgEK+cNVTslAtCcU=; b=gA6C0CYuJWUh8DgW+ovhN3aBcQoVIMhLd9CAJdRdHqyM+Vji6NpOzn0CSSgyRpLLrV qSmcjU4gJIH9DyvjFam7q3xxjTwTGuV70dmWtjGh21zFb+7+ZH5+HA7PCQpL/iwDNA5o pFQXzRNxQefzO4AblacKT3QRXcJmDT95501pfgJ9bi07oa5uNkREr2p8P9mzIunUnHhx me6/MsS4j7t9lH2XFVCyTJwazQbK+VroEO7/KN0UJITQJllMymylImwYHCqe3zqeZTYo UhLB3cBgfDIOQCHxZ6Xw8FqrpyvO6Ghe31w734roshKfRiFb5Srgvpz/80GghW/AA+WM ZJ1w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1719578757; x=1720183557; h=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=NYdcAWuXYTWQAAXUNDXbS02yL9oAgEK+cNVTslAtCcU=; b=W5jRX1+SN+HLguotVUlDVZKUuXdiMIpgF3xsjU3PCp5uCy0XTPw+zeQuJqkpUZ8kFH tRDRJQatAsxVml/6QYJDo0sVwQbP3pYftB8dvuti50eL3QmBa0nCJyQ14MFH01/4zeli EARd+RlJ1Zkpltwq0vNTbDDqrLCl6BArxksJt9ZSnDmHHy8BzuMy5yufw8cY4L1W8Q5x hgcq/aJ7P2+q1OBl4gRdTf4bG9M0n7z3nVTTxJtMC/H4395PByuEPxrcugWx6JEP/GA8 xll1IOVPIHGuiXyBRVi4gBSZ39qqz8oaed/p5DCxxd2TXkjmga/qPulKjTL24PqB2Xsu /rNA== X-Forwarded-Encrypted: i=1; AJvYcCVlwBMYTJgU+vxo0W16BSeq08Npm0ANsGkea1FeyjB0olDWHXxTsFFuDlh1UTaUclG9wEjwLJt/Q+ahpie2Qcn8nFl2QfEKPZxLrtzb X-Gm-Message-State: AOJu0YxpyzbtJL0MrTnGVsmjH4ulfeoGpXKLZo/aQDquoCIG7s9OpfWl WJVEopY3SJteQNFBJg15gjceP5RArxkhcfYVsKg56tyM+f8LZMtDZog9Fbj4RiQ= X-Google-Smtp-Source: AGHT+IG+25MIgZJbSQk/taFj6VG+AknyVI+V2GARb6Z9W0SrNi26/KVVGwlFQTZ6sulU8JHp9mZozQ== X-Received: by 2002:a17:902:ea11:b0:1f9:b697:b246 with SMTP id d9443c01a7336-1fa1d3de553mr202286995ad.5.1719578757393; Fri, 28 Jun 2024 05:45:57 -0700 (PDT) Received: from lvzhaoxiong-KLVC-WXX9.huaqin.com ([116.66.212.162]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-1fac15695b4sm14346255ad.225.2024.06.28.05.45.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Jun 2024 05:45:56 -0700 (PDT) From: Zhaoxiong Lv To: dmitry.torokhov@gmail.com, robh@kernel.org, krzysztof.kozlowski+dt@linaro.org, conor+dt@kernel.org, jikos@kernel.org, benjamin.tissoires@redhat.co, dianders@google.com, hsinyi@google.com, jagan@edgeble.ai, neil.armstrong@linaro.org, quic_jesszhan@quicinc.com, dmitry.baryshkov@linaro.org Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Zhaoxiong Lv Subject: [PATCH v6 5/5] drm/panel: jd9365da: Add the function of adjusting orientation Date: Fri, 28 Jun 2024 20:44:44 +0800 Message-Id: <20240628124444.28152-6-lvzhaoxiong@huaqin.corp-partner.google.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20240628124444.28152-1-lvzhaoxiong@huaqin.corp-partner.google.com> References: <20240628124444.28152-1-lvzhaoxiong@huaqin.corp-partner.google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" This driver does not have the function to adjust the orientation, so this function is added. Signed-off-by: Zhaoxiong Lv Reviewed-by: Douglas Anderson Reviewed-by: Jessica Zhang --- Changes between V6 and V5: - 1. No changes. V5: https://lore.kernel.org/all/20240624141926.5250-6-lvzhaoxiong@huaqin.co= rp-partner.google.com/ Changes between V5 and V4: - 1. Change dev_err() to dev_err_probe(). V4: https://lore.kernel.org/all/20240620080509.18504-5-lvzhaoxiong@huaqin.c= orp-partner.google.com/ Changes between V4 and V3: - No changes. --- drivers/gpu/drm/panel/panel-jadard-jd9365da-h3.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/panel/panel-jadard-jd9365da-h3.c b/drivers/gpu= /drm/panel/panel-jadard-jd9365da-h3.c index b5265d95be4e..f002a80527b1 100644 --- a/drivers/gpu/drm/panel/panel-jadard-jd9365da-h3.c +++ b/drivers/gpu/drm/panel/panel-jadard-jd9365da-h3.c @@ -42,7 +42,7 @@ struct jadard { struct drm_panel panel; struct mipi_dsi_device *dsi; const struct jadard_panel_desc *desc; - + enum drm_panel_orientation orientation; struct regulator *vdd; struct regulator *vccio; struct gpio_desc *reset; @@ -178,12 +178,20 @@ static int jadard_get_modes(struct drm_panel *panel, return 1; } =20 +static enum drm_panel_orientation jadard_panel_get_orientation(struct drm_= panel *panel) +{ + struct jadard *jadard =3D panel_to_jadard(panel); + + return jadard->orientation; +} + static const struct drm_panel_funcs jadard_funcs =3D { .disable =3D jadard_disable, .unprepare =3D jadard_unprepare, .prepare =3D jadard_prepare, .enable =3D jadard_enable, .get_modes =3D jadard_get_modes, + .get_orientation =3D jadard_panel_get_orientation, }; =20 static int radxa_display_8hd_ad002_init_cmds(struct jadard *jadard) @@ -880,6 +888,10 @@ static int jadard_dsi_probe(struct mipi_dsi_device *ds= i) drm_panel_init(&jadard->panel, dev, &jadard_funcs, DRM_MODE_CONNECTOR_DSI); =20 + ret =3D of_drm_get_panel_orientation(dev->of_node, &jadard->orientation); + if (ret < 0) + return dev_err_probe(dev, ret, "failed to get orientation\n"); + ret =3D drm_panel_of_backlight(&jadard->panel); if (ret) return ret; --=20 2.17.1