* [PATCH 0/6] Enable new features for flipkart-rimob
@ 2026-03-08 15:52 Cristian Cozzolino via B4 Relay
2026-03-08 15:52 ` [PATCH 1/6] dt-bindings: display: panel: Add Novatek NT35532 LCD DSI Cristian Cozzolino via B4 Relay
` (5 more replies)
0 siblings, 6 replies; 35+ messages in thread
From: Cristian Cozzolino via B4 Relay @ 2026-03-08 15:52 UTC (permalink / raw)
To: Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio
Cc: dri-devel, devicetree, linux-kernel, linux-arm-msm,
~postmarketos/upstreaming, phone-devel, Cristian Cozzolino
This series enables a set of miscellaneous features for Billion Capture+
(a handset using the MSM8953 SoC released in 2017):
- Panel and GPU
- Touchscreen
- WiFi + Bluetooth
- Hall sensor
Patches 1 and 2 provide a driver for Novatek NT35532 and its corresponding
devicetree bindings, required for enabling panel in DTS. The remaining
patches are all DTS changes, aimed to enable the features listed above.
To: Neil Armstrong <neil.armstrong@linaro.org>
To: Jessica Zhang <jesszhan0024@gmail.com>
To: David Airlie <airlied@gmail.com>
To: Simona Vetter <simona@ffwll.ch>
To: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
To: Maxime Ripard <mripard@kernel.org>
To: Thomas Zimmermann <tzimmermann@suse.de>
To: Rob Herring <robh@kernel.org>
To: Krzysztof Kozlowski <krzk+dt@kernel.org>
To: Conor Dooley <conor+dt@kernel.org>
To: Bjorn Andersson <andersson@kernel.org>
To: Konrad Dybcio <konradybcio@kernel.org>
Cc: dri-devel@lists.freedesktop.org
Cc: devicetree@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Cc: linux-arm-msm@vger.kernel.org
Cc: ~postmarketos/upstreaming@lists.sr.ht
Cc: phone-devel@vger.kernel.org
Signed-off-by: Cristian Cozzolino <cristian_ci@protonmail.com>
---
Cristian Cozzolino (6):
dt-bindings: display: panel: Add Novatek NT35532 LCD DSI
drm/panel: Add driver for Novatek NT35532
arm64: dts: qcom: msm8953-flipkart-rimob: Enable display and GPU
arm64: dts: qcom: msm8953-flipkart-rimob: Enable WiFi/Bluetooth
arm64: dts: qcom: msm8953-flipkart-rimob: Enable touchscreen
arm64: dts: qcom: msm8953-flipkart-rimob: Enable Hall sensor
.../bindings/display/panel/novatek,nt35532.yaml | 66 ++
MAINTAINERS | 6 +
.../arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts | 152 ++++
drivers/gpu/drm/panel/Kconfig | 11 +
drivers/gpu/drm/panel/Makefile | 1 +
drivers/gpu/drm/panel/panel-novatek-nt35532.c | 767 +++++++++++++++++++++
6 files changed, 1003 insertions(+)
---
base-commit: 11439c4635edd669ae435eec308f4ab8a0804808
change-id: 20260303-rimob-new-features-037944b3a620
Best regards,
--
Cristian Cozzolino <cristian_ci@protonmail.com>
^ permalink raw reply [flat|nested] 35+ messages in thread* [PATCH 1/6] dt-bindings: display: panel: Add Novatek NT35532 LCD DSI 2026-03-08 15:52 [PATCH 0/6] Enable new features for flipkart-rimob Cristian Cozzolino via B4 Relay @ 2026-03-08 15:52 ` Cristian Cozzolino via B4 Relay 2026-03-08 16:13 ` Krzysztof Kozlowski 2026-03-08 15:52 ` [PATCH 2/6] drm/panel: Add driver for Novatek NT35532 Cristian Cozzolino via B4 Relay ` (4 subsequent siblings) 5 siblings, 1 reply; 35+ messages in thread From: Cristian Cozzolino via B4 Relay @ 2026-03-08 15:52 UTC (permalink / raw) To: Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio Cc: dri-devel, devicetree, linux-kernel, linux-arm-msm, ~postmarketos/upstreaming, phone-devel, Cristian Cozzolino From: Cristian Cozzolino <cristian_ci@protonmail.com> Document Novatek NT35532-based DSI display panel. Signed-off-by: Cristian Cozzolino <cristian_ci@protonmail.com> --- .../bindings/display/panel/novatek,nt35532.yaml | 66 ++++++++++++++++++++++ MAINTAINERS | 5 ++ 2 files changed, 71 insertions(+) diff --git a/Documentation/devicetree/bindings/display/panel/novatek,nt35532.yaml b/Documentation/devicetree/bindings/display/panel/novatek,nt35532.yaml new file mode 100644 index 000000000000..de11cce83b40 --- /dev/null +++ b/Documentation/devicetree/bindings/display/panel/novatek,nt35532.yaml @@ -0,0 +1,66 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/display/panel/novatek,nt35532.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Novatek NT35532-based DSI display panels + +maintainers: + - Cristian Cozzolino <cristian_ci@protonmail.com> + +allOf: + - $ref: panel-common.yaml# + +properties: + compatible: + const: novatek,nt35532 + + reg: + maxItems: 1 + + backlight: true + reset-gpios: true + + vsn-supply: + description: negative voltage supply for analog circuits + vsp-supply: + description: positive voltage supply for analog circuits + + port: true + +required: + - compatible + - reg + - reset-gpios + - vsn-supply + - vsp-supply + - port + +additionalProperties: false + +examples: + - | + #include <dt-bindings/gpio/gpio.h> + + dsi { + #address-cells = <1>; + #size-cells = <0>; + + panel@0 { + compatible = "novatek,nt35532"; + reg = <0>; + + backlight = <&pmi8950_wled>; + reset-gpios = <&tlmm 61 GPIO_ACTIVE_LOW>; + vsn-supply = <&ibb>; + vsp-supply = <&lab>; + + port { + panel_in: endpoint { + remote-endpoint = <&dsi0_out>; + }; + }; + }; + }; +... diff --git a/MAINTAINERS b/MAINTAINERS index 61bf550fd37c..12243feb0b27 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -8139,6 +8139,11 @@ T: git https://gitlab.freedesktop.org/drm/misc/kernel.git F: Documentation/devicetree/bindings/display/panel/novatek,nt35510.yaml F: drivers/gpu/drm/panel/panel-novatek-nt35510.c +DRM DRIVER FOR NOVATEK NT35532 PANELS +M: Cristian Cozzolino <cristian_ci@protonmail.com> +S: Maintained +F: Documentation/devicetree/bindings/display/panel/novatek,nt35532.yaml + DRM DRIVER FOR NOVATEK NT35560 PANELS M: Linus Walleij <linusw@kernel.org> S: Maintained -- 2.52.0 ^ permalink raw reply related [flat|nested] 35+ messages in thread
* Re: [PATCH 1/6] dt-bindings: display: panel: Add Novatek NT35532 LCD DSI 2026-03-08 15:52 ` [PATCH 1/6] dt-bindings: display: panel: Add Novatek NT35532 LCD DSI Cristian Cozzolino via B4 Relay @ 2026-03-08 16:13 ` Krzysztof Kozlowski 2026-03-09 14:52 ` cristian_ci 0 siblings, 1 reply; 35+ messages in thread From: Krzysztof Kozlowski @ 2026-03-08 16:13 UTC (permalink / raw) To: cristian_ci, Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio Cc: dri-devel, devicetree, linux-kernel, linux-arm-msm, ~postmarketos/upstreaming, phone-devel On 08/03/2026 16:52, Cristian Cozzolino via B4 Relay wrote: > + > + backlight: true > + reset-gpios: true > + > + vsn-supply: > + description: negative voltage supply for analog circuits Blank line > + vsp-supply: > + description: positive voltage supply for analog circuits Both are odd. Datasheet says vci, vddi, vddam and optional avdd, avee. There is no VSN and VSP. Otherwise please point the page in datasheet or some schematics. Best regards, Krzysztof ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [PATCH 1/6] dt-bindings: display: panel: Add Novatek NT35532 LCD DSI 2026-03-08 16:13 ` Krzysztof Kozlowski @ 2026-03-09 14:52 ` cristian_ci 2026-03-09 15:08 ` Krzysztof Kozlowski 0 siblings, 1 reply; 35+ messages in thread From: cristian_ci @ 2026-03-09 14:52 UTC (permalink / raw) To: Krzysztof Kozlowski Cc: Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio, dri-devel, devicetree, linux-kernel, linux-arm-msm, ~postmarketos/upstreaming, phone-devel On Sunday, March 8th, 2026 at 17:13, Krzysztof Kozlowski <krzk@kernel.org> wrote: > > + vsp-supply: > > + description: positive voltage supply for analog circuits > > Both are odd. Datasheet says vci, vddi, vddam and optional avdd, avee. > > There is no VSN and VSP. Otherwise please point the page in datasheet or > some schematics. > > Best regards, > Krzysztof > I'm not sure about that. Writing panel dt-bindings has been based pretty mostly on vendor devicetree - which also describes somehow the panel and makes that working with the final product released to the market - so I've to necessarily consider that. Then, I could agree that vendor devicetree might be not compliant with upstream rules and could possibly make mistakes with describing the hardware, so I'd like to find a way to describe that in a more proper way, according to upstream rules. That said, vendor devicetree describes lists four power supplies for DSI: 'vdd', 'vddio', 'lab' and 'ibb' (which have the following property names, respectively, in qcom,mdss_dsi_ctrl node: 'vdd-supply', 'vddio-supply', 'lab-supply' and 'ibb-supply'. Two of these are related to ds/controller (apparently, 'vddio' should match VDDI power supply in NT35532 datasheet. The remaining two supplies are related to panel ('lab' and 'ibb'). These ones are two 'external ' regulators ('external' from NT35532 perspective), which provide power supply to display, located in the qcom PMIC (in this case, that should be PMI8950). WRT to power supply names described in the bindings ('vsp-supply' and 'vsn-supply') are the same as 'lab-supply' and 'ibb-supply', just named differently in the vendor devicetrees. Usage of 'vsp'/'vsn' naming for power supply properties is grounded on they commonly being used at upstream (different panel bindings make use of these properties), on one side, and also described on schematics of devices with the same hardware configuration (LCD_VSN and LCD_VSP), on the other. In the meantime, I've found out schematics for 'xiaomi-mido' (another MSM8953 device) - a variant of this device is shipped with a panel also using NT35532 IC (just like my device) - and LCD_VSN/LCD_VSP are clearly shown there too. I couldn't find much more information about the display on my device and the only resources available about that are those listed above, as of today. In light of my reply, I ask if it is still necessary to describe, in the bindings, power supply properties properties not used currently in the board DTS file. Regards, Cristian. ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [PATCH 1/6] dt-bindings: display: panel: Add Novatek NT35532 LCD DSI 2026-03-09 14:52 ` cristian_ci @ 2026-03-09 15:08 ` Krzysztof Kozlowski 2026-03-10 17:48 ` cristian_ci 0 siblings, 1 reply; 35+ messages in thread From: Krzysztof Kozlowski @ 2026-03-09 15:08 UTC (permalink / raw) To: cristian_ci Cc: Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio, dri-devel, devicetree, linux-kernel, linux-arm-msm, ~postmarketos/upstreaming, phone-devel On 09/03/2026 15:52, cristian_ci wrote: > On Sunday, March 8th, 2026 at 17:13, Krzysztof Kozlowski <krzk@kernel.org> wrote: > >>> + vsp-supply: >>> + description: positive voltage supply for analog circuits >> >> Both are odd. Datasheet says vci, vddi, vddam and optional avdd, avee. >> >> There is no VSN and VSP. Otherwise please point the page in datasheet or >> some schematics. >> >> Best regards, >> Krzysztof >> > > I'm not sure about that. Writing panel dt-bindings has been based pretty mostly on vendor devicetree - which also describes somehow the panel and makes that working with the final product released to the market - so I've to necessarily consider that. > Then, I could agree that vendor devicetree might be not compliant with upstream rules and could possibly make mistakes with describing the hardware, so I'd like to find a way to describe that in a more proper way, according to upstream rules. > > That said, vendor devicetree describes lists four power supplies for DSI: 'vdd', 'vddio', 'lab' and 'ibb' (which have the following property names, respectively, in qcom,mdss_dsi_ctrl node: 'vdd-supply', 'vddio-supply', 'lab-supply' and 'ibb-supply'. > Two of these are related to ds/controller (apparently, 'vddio' should match VDDI power supply in NT35532 datasheet. > > The remaining two supplies are related to panel ('lab' and 'ibb'). These ones are two 'external ' regulators ('external' from NT35532 perspective), which provide power supply to display, located in the qcom PMIC (in this case, that should be PMI8950). WRT to power supply names described in the bindings ('vsp-supply' and 'vsn-supply') are the same as 'lab-supply' and 'ibb-supply', just named differently in the vendor devicetrees. > > Usage of 'vsp'/'vsn' naming for power supply properties is grounded on they commonly being used at upstream (different panel bindings make use of these properties), on one side, and also described on schematics of devices with the same hardware configuration (LCD_VSN and LCD_VSP), on the other. > > In the meantime, I've found out schematics for 'xiaomi-mido' (another MSM8953 device) - a variant of this device is shipped with a panel also using NT35532 IC (just like my device) - and LCD_VSN/LCD_VSP are clearly shown there too. > > I couldn't find much more information about the display on my device and the only resources available about that are those listed above, as of today. In light of my reply, I ask if it is still necessary to describe, in the bindings, power supply properties properties not used currently in the board DTS file. Please wrap your answers so this will be possible to parse. You write bindings matching the hardware and for the hardware, not for the downstream code. You cannot add supplies which do not exist regardless what some vendor wrote somewhere and yes, you must describe all known supplies for this device, especially that datasheet is available publicly. Best regards, Krzysztof ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [PATCH 1/6] dt-bindings: display: panel: Add Novatek NT35532 LCD DSI 2026-03-09 15:08 ` Krzysztof Kozlowski @ 2026-03-10 17:48 ` cristian_ci 2026-03-10 20:06 ` Krzysztof Kozlowski 0 siblings, 1 reply; 35+ messages in thread From: cristian_ci @ 2026-03-10 17:48 UTC (permalink / raw) To: Krzysztof Kozlowski Cc: Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio, dri-devel, devicetree, linux-kernel, linux-arm-msm, ~postmarketos/upstreaming, phone-devel Cristian Sent with Proton Mail secure email. On Monday, March 9th, 2026 at 16:08, Krzysztof Kozlowski <krzk@kernel.org> wrote: > On 09/03/2026 15:52, cristian_ci wrote: > > On Sunday, March 8th, 2026 at 17:13, Krzysztof Kozlowski <krzk@kernel.org> wrote: > > > >>> + vsp-supply: > >>> + description: positive voltage supply for analog circuits > >> > >> Both are odd. Datasheet says vci, vddi, vddam and optional avdd, avee. > >> > >> There is no VSN and VSP. Otherwise please point the page in datasheet or > >> some schematics. > >> > >> Best regards, > >> Krzysztof > >> > > > > I'm not sure about that. Writing panel dt-bindings has been based pretty mostly on vendor devicetree - which also describes somehow the panel and makes that working with the final product released to the market - so I've to necessarily consider that. > > Then, I could agree that vendor devicetree might be not compliant with upstream rules and could possibly make mistakes with describing the hardware, so I'd like to find a way to describe that in a more proper way, according to upstream rules. > > > > That said, vendor devicetree describes lists four power supplies for DSI: 'vdd', 'vddio', 'lab' and 'ibb' (which have the following property names, respectively, in qcom,mdss_dsi_ctrl node: 'vdd-supply', 'vddio-supply', 'lab-supply' and 'ibb-supply'. > > Two of these are related to ds/controller (apparently, 'vddio' should match VDDI power supply in NT35532 datasheet. > > > > The remaining two supplies are related to panel ('lab' and 'ibb'). These ones are two 'external ' regulators ('external' from NT35532 perspective), which provide power supply to display, located in the qcom PMIC (in this case, that should be PMI8950). WRT to power supply names described in the bindings ('vsp-supply' and 'vsn-supply') are the same as 'lab-supply' and 'ibb-supply', just named differently in the vendor devicetrees. > > > > Usage of 'vsp'/'vsn' naming for power supply properties is grounded on they commonly being used at upstream (different panel bindings make use of these properties), on one side, and also described on schematics of devices with the same hardware configuration (LCD_VSN and LCD_VSP), on the other. > > > > In the meantime, I've found out schematics for 'xiaomi-mido' (another MSM8953 device) - a variant of this device is shipped with a panel also using NT35532 IC (just like my device) - and LCD_VSN/LCD_VSP are clearly shown there too. > > > > I couldn't find much more information about the display on my device and the only resources available about that are those listed above, as of today. In light of my reply, I ask if it is still necessary to describe, in the bindings, power supply properties properties not used currently in the board DTS file. > > Please wrap your answers so this will be possible to parse. > > You write bindings matching the hardware and for the hardware, not for > the downstream code. You cannot add supplies which do not exist > regardless what some vendor wrote somewhere Vendor has also described the hardware by storing information (by including info about panel too) directly inside the device itself (/sys/firmware/fdt). Though vendor devicetree could possibly contain mistakes, I guess I've to trust vendor devicetree (also for the reasons explained in my last reply). > and yes, you must describe > all known supplies for this device, especially that datasheet is > available publicly. Based on what you said, the following questions have raised: - have properties (mentioned by you) be defined (apart 'vddi', which most likely is actually 'vddio-supply', already defined within mdss_dsi0 node) outside of 'panel' node? (and related to dsi/controller rather than panel, instead) - have those properties (mentioned by you) set as 'optional' in the bindings, rather than set as 'required'? (since panel works without most of them defined in the board DTS file) > Best regards, > Krzysztof > ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [PATCH 1/6] dt-bindings: display: panel: Add Novatek NT35532 LCD DSI 2026-03-10 17:48 ` cristian_ci @ 2026-03-10 20:06 ` Krzysztof Kozlowski 2026-03-13 8:26 ` cristian_ci 0 siblings, 1 reply; 35+ messages in thread From: Krzysztof Kozlowski @ 2026-03-10 20:06 UTC (permalink / raw) To: cristian_ci Cc: Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio, dri-devel, devicetree, linux-kernel, linux-arm-msm, ~postmarketos/upstreaming, phone-devel On 10/03/2026 18:48, cristian_ci wrote: > > > > > Cristian > > Sent with Proton Mail secure email. > > On Monday, March 9th, 2026 at 16:08, Krzysztof Kozlowski <krzk@kernel.org> wrote: > >> On 09/03/2026 15:52, cristian_ci wrote: >>> On Sunday, March 8th, 2026 at 17:13, Krzysztof Kozlowski <krzk@kernel.org> wrote: >>> >>>>> + vsp-supply: >>>>> + description: positive voltage supply for analog circuits >>>> >>>> Both are odd. Datasheet says vci, vddi, vddam and optional avdd, avee. >>>> >>>> There is no VSN and VSP. Otherwise please point the page in datasheet or >>>> some schematics. >>>> >>>> Best regards, >>>> Krzysztof >>>> >>> >>> I'm not sure about that. Writing panel dt-bindings has been based pretty mostly on vendor devicetree - which also describes somehow the panel and makes that working with the final product released to the market - so I've to necessarily consider that. >>> Then, I could agree that vendor devicetree might be not compliant with upstream rules and could possibly make mistakes with describing the hardware, so I'd like to find a way to describe that in a more proper way, according to upstream rules. >>> >>> That said, vendor devicetree describes lists four power supplies for DSI: 'vdd', 'vddio', 'lab' and 'ibb' (which have the following property names, respectively, in qcom,mdss_dsi_ctrl node: 'vdd-supply', 'vddio-supply', 'lab-supply' and 'ibb-supply'. >>> Two of these are related to ds/controller (apparently, 'vddio' should match VDDI power supply in NT35532 datasheet. >>> >>> The remaining two supplies are related to panel ('lab' and 'ibb'). These ones are two 'external ' regulators ('external' from NT35532 perspective), which provide power supply to display, located in the qcom PMIC (in this case, that should be PMI8950). WRT to power supply names described in the bindings ('vsp-supply' and 'vsn-supply') are the same as 'lab-supply' and 'ibb-supply', just named differently in the vendor devicetrees. >>> >>> Usage of 'vsp'/'vsn' naming for power supply properties is grounded on they commonly being used at upstream (different panel bindings make use of these properties), on one side, and also described on schematics of devices with the same hardware configuration (LCD_VSN and LCD_VSP), on the other. >>> >>> In the meantime, I've found out schematics for 'xiaomi-mido' (another MSM8953 device) - a variant of this device is shipped with a panel also using NT35532 IC (just like my device) - and LCD_VSN/LCD_VSP are clearly shown there too. >>> >>> I couldn't find much more information about the display on my device and the only resources available about that are those listed above, as of today. In light of my reply, I ask if it is still necessary to describe, in the bindings, power supply properties properties not used currently in the board DTS file. >> >> Please wrap your answers so this will be possible to parse. >> >> You write bindings matching the hardware and for the hardware, not for >> the downstream code. You cannot add supplies which do not exist >> regardless what some vendor wrote somewhere > > Vendor has also described the hardware by storing information (by including info > about panel too) directly inside the device itself (/sys/firmware/fdt). Vendor does not care about rules of DT thus puts there completely fake information just to make their drivers working . > Though vendor devicetree could possibly contain mistakes, I guess I've to trust vendor > devicetree (also for the reasons explained in my last reply). These are not vendor's mistakes. This is deliberate WRONG information. Sorry, I am not going to keep discussing each property based what vendor wrote. Open datasheet which I said is public. > >> and yes, you must describe >> all known supplies for this device, especially that datasheet is >> available publicly. > > Based on what you said, the following questions have raised: > > - have properties (mentioned by you) be defined > (apart 'vddi', which most likely is actually 'vddio-supply', > already defined within mdss_dsi0 node) outside of 'panel' node? You are mixing devices. We do not talk about vddio supply in dsi node. We talk about THIS device, so open this device datasheet and read it. > (and related to dsi/controller rather than panel, instead) > > - have those properties (mentioned by you) set as 'optional' > in the bindings, rather than set as 'required'? Why? How device can work without power? Datasheet mentioned which supplies can be optional, e.g. grounded or wired to the same source of supply. > (since panel works without most of them defined in the > board DTS file) Best regards, Krzysztof ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [PATCH 1/6] dt-bindings: display: panel: Add Novatek NT35532 LCD DSI 2026-03-10 20:06 ` Krzysztof Kozlowski @ 2026-03-13 8:26 ` cristian_ci 2026-03-13 8:32 ` Krzysztof Kozlowski 0 siblings, 1 reply; 35+ messages in thread From: cristian_ci @ 2026-03-13 8:26 UTC (permalink / raw) To: Krzysztof Kozlowski Cc: Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio, dri-devel, devicetree, linux-kernel, linux-arm-msm, ~postmarketos/upstreaming, phone-devel On Tuesday, March 10th, 2026 at 21:06, Krzysztof Kozlowski <krzk@kernel.org> wrote: > On 10/03/2026 18:48, cristian_ci wrote: > > On Monday, March 9th, 2026 at 16:08, Krzysztof Kozlowski <krzk@kernel.org> wrote: > > > >> On 09/03/2026 15:52, cristian_ci wrote: > >>> On Sunday, March 8th, 2026 at 17:13, Krzysztof Kozlowski <krzk@kernel.org> wrote: > >>> > >>>>> + vsp-supply: > >>>>> + description: positive voltage supply for analog circuits > >>>> > >>>> Both are odd. Datasheet says vci, vddi, vddam and optional avdd, avee. > >>>> > >>>> There is no VSN and VSP. Otherwise please point the page in datasheet or > >>>> some schematics. > >>>> > >>>> Best regards, > >>>> Krzysztof > >>>> > >>> > >>> I'm not sure about that. Writing panel dt-bindings has been based pretty mostly on vendor devicetree - which also describes somehow the panel and makes that working with the final product released to the market - so I've to necessarily consider that. > >>> Then, I could agree that vendor devicetree might be not compliant with upstream rules and could possibly make mistakes with describing the hardware, so I'd like to find a way to describe that in a more proper way, according to upstream rules. > >>> > >>> That said, vendor devicetree describes lists four power supplies for DSI: 'vdd', 'vddio', 'lab' and 'ibb' (which have the following property names, respectively, in qcom,mdss_dsi_ctrl node: 'vdd-supply', 'vddio-supply', 'lab-supply' and 'ibb-supply'. > >>> Two of these are related to ds/controller (apparently, 'vddio' should match VDDI power supply in NT35532 datasheet. > >>> > >>> The remaining two supplies are related to panel ('lab' and 'ibb'). These ones are two 'external ' regulators ('external' from NT35532 perspective), which provide power supply to display, located in the qcom PMIC (in this case, that should be PMI8950). WRT to power supply names described in the bindings ('vsp-supply' and 'vsn-supply') are the same as 'lab-supply' and 'ibb-supply', just named differently in the vendor devicetrees. > >>> > >>> Usage of 'vsp'/'vsn' naming for power supply properties is grounded on they commonly being used at upstream (different panel bindings make use of these properties), on one side, and also described on schematics of devices with the same hardware configuration (LCD_VSN and LCD_VSP), on the other. > >>> > >>> In the meantime, I've found out schematics for 'xiaomi-mido' (another MSM8953 device) - a variant of this device is shipped with a panel also using NT35532 IC (just like my device) - and LCD_VSN/LCD_VSP are clearly shown there too. > >>> > >>> I couldn't find much more information about the display on my device and the only resources available about that are those listed above, as of today. In light of my reply, I ask if it is still necessary to describe, in the bindings, power supply properties properties not used currently in the board DTS file. > >> > >> Please wrap your answers so this will be possible to parse. > >> > >> You write bindings matching the hardware and for the hardware, not for > >> the downstream code. You cannot add supplies which do not exist > >> regardless what some vendor wrote somewhere > > > > Vendor has also described the hardware by storing information (by including info > > about panel too) directly inside the device itself (/sys/firmware/fdt). > > Vendor does not care about rules of DT thus puts there completely fake > information just to make their drivers working > . I'm not sure what that statement is based on in the specific case of the panel I'm actually testing. A set of clues (some of which were also mentioned in my first reply some days ago) point out that rimob's panel is really supplied by two regulators part of PMIC [1]. Not only for this reason, I do not have enough solid reasons, after all, to consider vendor data about the panel mounted in this device (rimob) as not decently reliable, so I cannot ignore them, at least. [1] https://github.com/torvalds/linux/blob/master/Documentation/devicetree/bindings/regulator/qcom-labibb-regulator.yaml > > Though vendor devicetree could possibly contain mistakes, I guess I've to trust vendor > > devicetree (also for the reasons explained in my last reply). > > These are not vendor's mistakes. This is deliberate WRONG information. > > Sorry, I am not going to keep discussing each property based what vendor > wrote. > > Open datasheet which I said is public. (Note: datasheet is indeed easily available but not publicly, since it has been released under NDA agreement) > > > >> and yes, you must describe > >> all known supplies for this device, especially that datasheet is > >> available publicly. > > > > Based on what you said, the following questions have raised: > > > > - have properties (mentioned by you) be defined > > (apart 'vddi', which most likely is actually 'vddio-supply', > > already defined within mdss_dsi0 node) outside of 'panel' node? > > You are mixing devices. We do not talk about vddio supply in dsi node. > We talk about THIS device, so open this device datasheet and read it. I've further inspected the datasheet again (but I've also looked at other novatek based panels dt-bindings and datasheets, in order to better figure out what is the actual relationship between the first and the second ones, more in detail). BTW, I've started doing tests, by making changes to nt35532 dt-bindings: I've replaced vsp/vsn supplies with avdd/avee (which are not optional, they are required to make my display unit to work, actually) mentioned in the datasheet (but both they rely actually on labibb regulators - indeed, vendor dt names them 'lab-supply' and 'ibb-supply') and added vci, vddi and vddam too (but I've not included 'vddam' supply into 'required' properties, since my panel unit doesn't make use of that, in order to work and I can't omit that in panel node (just like 'backlight' property). Though I've added vddi-supply to panel dt-bindings and DTS board file, at the same time I've also left vddio-supply in dsi node (even if they rely on same l6 regulator). With such dt-bindings and DTS board configuration, the panel still initializes and just works like before, and I've not noticed a different behaviour, compared to when I was using the previous board DTS (the one with vsn/vsp supplies). > > (and related to dsi/controller rather than panel, instead) > > > > - have those properties (mentioned by you) set as 'optional' > > in the bindings, rather than set as 'required'? > > Why? How device can work without power? Datasheet mentioned which > supplies can be optional, e.g. grounded or wired to the same source of > supply. Actually, the device was not working without power: required power supplies had been defined in the previous dt-bindings (vsn/vsp supplies). My idea, about the fact that panel was working, is that my unit needs positive and analog input analog power, which labibb regulators satisfy. That said, I'm not still convinced that the new power supplies properties (wich I've also tested on actual hardware), based on nt35532 datasheet, are enough to satisfy upstream rules about dt-bindings. Should I show my current changes to dt-bindings? > > (since panel works without most of them defined in the > > board DTS file) > > > Best regards, > Krzysztof > ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [PATCH 1/6] dt-bindings: display: panel: Add Novatek NT35532 LCD DSI 2026-03-13 8:26 ` cristian_ci @ 2026-03-13 8:32 ` Krzysztof Kozlowski 2026-03-16 6:47 ` cristian_ci 0 siblings, 1 reply; 35+ messages in thread From: Krzysztof Kozlowski @ 2026-03-13 8:32 UTC (permalink / raw) To: cristian_ci Cc: Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio, dri-devel, devicetree, linux-kernel, linux-arm-msm, ~postmarketos/upstreaming, phone-devel On 13/03/2026 09:26, cristian_ci wrote: > > On Tuesday, March 10th, 2026 at 21:06, Krzysztof Kozlowski <krzk@kernel.org> wrote: > >> On 10/03/2026 18:48, cristian_ci wrote: >>> On Monday, March 9th, 2026 at 16:08, Krzysztof Kozlowski <krzk@kernel.org> wrote: >>> >>>> On 09/03/2026 15:52, cristian_ci wrote: >>>>> On Sunday, March 8th, 2026 at 17:13, Krzysztof Kozlowski <krzk@kernel.org> wrote: >>>>> >>>>>>> + vsp-supply: >>>>>>> + description: positive voltage supply for analog circuits >>>>>> >>>>>> Both are odd. Datasheet says vci, vddi, vddam and optional avdd, avee. >>>>>> >>>>>> There is no VSN and VSP. Otherwise please point the page in datasheet or >>>>>> some schematics. >>>>>> >>>>>> Best regards, >>>>>> Krzysztof >>>>>> >>>>> >>>>> I'm not sure about that. Writing panel dt-bindings has been based pretty mostly on vendor devicetree - which also describes somehow the panel and makes that working with the final product released to the market - so I've to necessarily consider that. >>>>> Then, I could agree that vendor devicetree might be not compliant with upstream rules and could possibly make mistakes with describing the hardware, so I'd like to find a way to describe that in a more proper way, according to upstream rules. >>>>> >>>>> That said, vendor devicetree describes lists four power supplies for DSI: 'vdd', 'vddio', 'lab' and 'ibb' (which have the following property names, respectively, in qcom,mdss_dsi_ctrl node: 'vdd-supply', 'vddio-supply', 'lab-supply' and 'ibb-supply'. >>>>> Two of these are related to ds/controller (apparently, 'vddio' should match VDDI power supply in NT35532 datasheet. >>>>> >>>>> The remaining two supplies are related to panel ('lab' and 'ibb'). These ones are two 'external ' regulators ('external' from NT35532 perspective), which provide power supply to display, located in the qcom PMIC (in this case, that should be PMI8950). WRT to power supply names described in the bindings ('vsp-supply' and 'vsn-supply') are the same as 'lab-supply' and 'ibb-supply', just named differently in the vendor devicetrees. >>>>> >>>>> Usage of 'vsp'/'vsn' naming for power supply properties is grounded on they commonly being used at upstream (different panel bindings make use of these properties), on one side, and also described on schematics of devices with the same hardware configuration (LCD_VSN and LCD_VSP), on the other. >>>>> >>>>> In the meantime, I've found out schematics for 'xiaomi-mido' (another MSM8953 device) - a variant of this device is shipped with a panel also using NT35532 IC (just like my device) - and LCD_VSN/LCD_VSP are clearly shown there too. >>>>> >>>>> I couldn't find much more information about the display on my device and the only resources available about that are those listed above, as of today. In light of my reply, I ask if it is still necessary to describe, in the bindings, power supply properties properties not used currently in the board DTS file. >>>> >>>> Please wrap your answers so this will be possible to parse. >>>> >>>> You write bindings matching the hardware and for the hardware, not for >>>> the downstream code. You cannot add supplies which do not exist >>>> regardless what some vendor wrote somewhere >>> >>> Vendor has also described the hardware by storing information (by including info >>> about panel too) directly inside the device itself (/sys/firmware/fdt). >> >> Vendor does not care about rules of DT thus puts there completely fake >> information just to make their drivers working >> . > > I'm not sure what that statement is based on in the specific case of It's based on years of looking at vendor code. > the panel I'm actually testing. A set of clues (some of which were also mentioned > in my first reply some days ago) point out that rimob's panel is really supplied by > two regulators part of PMIC [1]. Not only for this reason, I do not have > enough solid reasons, after all, to consider vendor data about the panel mounted in > this device (rimob) as not decently reliable, so I cannot ignore them, at least. And I did not disagree that you need regulators and that vendor correctly wired two of them. The comments are about naming! I discussed of using argument of incomplete or not fully correct vendor code when the true hardware description is available. If the vendor calls them in vendor DTS "yellow-pony-supply" you are going to use that argument to write bindings? And then argue that "not sure what that statement is based on"? It's obvious - vendor code is crap. There are no VSN and VSP inputs. We already confirmed that. You claim that vendor called like that thus you can use them as well is simply not correct approach. Best regards, Krzysztof ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [PATCH 1/6] dt-bindings: display: panel: Add Novatek NT35532 LCD DSI 2026-03-13 8:32 ` Krzysztof Kozlowski @ 2026-03-16 6:47 ` cristian_ci 0 siblings, 0 replies; 35+ messages in thread From: cristian_ci @ 2026-03-16 6:47 UTC (permalink / raw) To: Krzysztof Kozlowski Cc: Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio, dri-devel, devicetree, linux-kernel, linux-arm-msm, ~postmarketos/upstreaming, phone-devel On Friday, March 13th, 2026 at 09:32, Krzysztof Kozlowski <krzk@kernel.org> wrote: > On 13/03/2026 09:26, cristian_ci wrote: > > > > On Tuesday, March 10th, 2026 at 21:06, Krzysztof Kozlowski <krzk@kernel.org> wrote: > > > >> On 10/03/2026 18:48, cristian_ci wrote: > >>> On Monday, March 9th, 2026 at 16:08, Krzysztof Kozlowski <krzk@kernel.org> wrote: > >>> > >>>> On 09/03/2026 15:52, cristian_ci wrote: > >>>>> On Sunday, March 8th, 2026 at 17:13, Krzysztof Kozlowski <krzk@kernel.org> wrote: > >>>>> > >>>>>>> + vsp-supply: > >>>>>>> + description: positive voltage supply for analog circuits > >>>>>> > >>>>>> Both are odd. Datasheet says vci, vddi, vddam and optional avdd, avee. > >>>>>> > >>>>>> There is no VSN and VSP. Otherwise please point the page in datasheet or > >>>>>> some schematics. > >>>>>> > >>>>>> Best regards, > >>>>>> Krzysztof > >>>>>> > >>>>> > >>>>> I'm not sure about that. Writing panel dt-bindings has been based pretty mostly on vendor devicetree - which also describes somehow the panel and makes that working with the final product released to the market - so I've to necessarily consider that. > >>>>> Then, I could agree that vendor devicetree might be not compliant with upstream rules and could possibly make mistakes with describing the hardware, so I'd like to find a way to describe that in a more proper way, according to upstream rules. > >>>>> > >>>>> That said, vendor devicetree describes lists four power supplies for DSI: 'vdd', 'vddio', 'lab' and 'ibb' (which have the following property names, respectively, in qcom,mdss_dsi_ctrl node: 'vdd-supply', 'vddio-supply', 'lab-supply' and 'ibb-supply'. > >>>>> Two of these are related to ds/controller (apparently, 'vddio' should match VDDI power supply in NT35532 datasheet. > >>>>> > >>>>> The remaining two supplies are related to panel ('lab' and 'ibb'). These ones are two 'external ' regulators ('external' from NT35532 perspective), which provide power supply to display, located in the qcom PMIC (in this case, that should be PMI8950). WRT to power supply names described in the bindings ('vsp-supply' and 'vsn-supply') are the same as 'lab-supply' and 'ibb-supply', just named differently in the vendor devicetrees. > >>>>> > >>>>> Usage of 'vsp'/'vsn' naming for power supply properties is grounded on they commonly being used at upstream (different panel bindings make use of these properties), on one side, and also described on schematics of devices with the same hardware configuration (LCD_VSN and LCD_VSP), on the other. > >>>>> > >>>>> In the meantime, I've found out schematics for 'xiaomi-mido' (another MSM8953 device) - a variant of this device is shipped with a panel also using NT35532 IC (just like my device) - and LCD_VSN/LCD_VSP are clearly shown there too. > >>>>> > >>>>> I couldn't find much more information about the display on my device and the only resources available about that are those listed above, as of today. In light of my reply, I ask if it is still necessary to describe, in the bindings, power supply properties properties not used currently in the board DTS file. > >>>> > >>>> Please wrap your answers so this will be possible to parse. > >>>> > >>>> You write bindings matching the hardware and for the hardware, not for > >>>> the downstream code. You cannot add supplies which do not exist > >>>> regardless what some vendor wrote somewhere > >>> > >>> Vendor has also described the hardware by storing information (by including info > >>> about panel too) directly inside the device itself (/sys/firmware/fdt). > >> > >> Vendor does not care about rules of DT thus puts there completely fake > >> information just to make their drivers working > >> . > > > > I'm not sure what that statement is based on in the specific case of > > It's based on years of looking at vendor code. > > > the panel I'm actually testing. A set of clues (some of which were also mentioned > > in my first reply some days ago) point out that rimob's panel is really supplied by > > two regulators part of PMIC [1]. Not only for this reason, I do not have > > enough solid reasons, after all, to consider vendor data about the panel mounted in > > this device (rimob) as not decently reliable, so I cannot ignore them, at least. > > And I did not disagree that you need regulators and that vendor > correctly wired two of them. > > The comments are about naming! > > I discussed of using argument of incomplete or not fully correct vendor > code when the true hardware description is available. If the vendor > calls them in vendor DTS "yellow-pony-supply" you are going to use that > argument to write bindings? And then argue that "not sure what that > statement is based on"? > > It's obvious - vendor code is crap. There are no VSN and VSP inputs. We > already confirmed that. > > You claim that vendor called like that thus you can use them as well is > simply not correct approach. Ok but I don't know if I can submit a v2 series including my new bindings changes (along with changes for other patches too) or I've to stick with v1 here, by showing my proposed fix for power supply properties, in order to address review concerns about bindings, first. > Best regards, > Krzysztof > ^ permalink raw reply [flat|nested] 35+ messages in thread
* [PATCH 2/6] drm/panel: Add driver for Novatek NT35532 2026-03-08 15:52 [PATCH 0/6] Enable new features for flipkart-rimob Cristian Cozzolino via B4 Relay 2026-03-08 15:52 ` [PATCH 1/6] dt-bindings: display: panel: Add Novatek NT35532 LCD DSI Cristian Cozzolino via B4 Relay @ 2026-03-08 15:52 ` Cristian Cozzolino via B4 Relay 2026-03-08 19:27 ` Dmitry Baryshkov 2026-03-08 15:52 ` [PATCH 3/6] arm64: dts: qcom: msm8953-flipkart-rimob: Enable display and GPU Cristian Cozzolino via B4 Relay ` (3 subsequent siblings) 5 siblings, 1 reply; 35+ messages in thread From: Cristian Cozzolino via B4 Relay @ 2026-03-08 15:52 UTC (permalink / raw) To: Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio Cc: dri-devel, devicetree, linux-kernel, linux-arm-msm, ~postmarketos/upstreaming, phone-devel, Cristian Cozzolino From: Cristian Cozzolino <cristian_ci@protonmail.com> Add support for Novatek NT35532-based 1080p video mode DSI panel. Signed-off-by: Cristian Cozzolino <cristian_ci@protonmail.com> --- MAINTAINERS | 1 + drivers/gpu/drm/panel/Kconfig | 11 + drivers/gpu/drm/panel/Makefile | 1 + drivers/gpu/drm/panel/panel-novatek-nt35532.c | 767 ++++++++++++++++++++++++++ 4 files changed, 780 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index 12243feb0b27..d854804dc8cc 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -8143,6 +8143,7 @@ DRM DRIVER FOR NOVATEK NT35532 PANELS M: Cristian Cozzolino <cristian_ci@protonmail.com> S: Maintained F: Documentation/devicetree/bindings/display/panel/novatek,nt35532.yaml +F: drivers/gpu/drm/panel/panel-novatek-nt35532.c DRM DRIVER FOR NOVATEK NT35560 PANELS M: Linus Walleij <linusw@kernel.org> diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig index 307152ad7759..4eb9691ab552 100644 --- a/drivers/gpu/drm/panel/Kconfig +++ b/drivers/gpu/drm/panel/Kconfig @@ -500,6 +500,17 @@ config DRM_PANEL_NOVATEK_NT35510 around the Novatek NT35510 display controller, such as some Hydis panels. +config DRM_PANEL_NOVATEK_NT35532 + tristate "Novatek NT35532-based DSI video mode panel" + depends on OF + depends on DRM_MIPI_DSI + depends on BACKLIGHT_CLASS_DEVICE + select VIDEOMODE_HELPERS + select DRM_KMS_HELPER + help + Say Y or M here if you want to enable support for Novatek + NT35532-based 1080p video mode DSI panels. + config DRM_PANEL_NOVATEK_NT35560 tristate "Novatek NT35560 DSI command mode panel" depends on OF diff --git a/drivers/gpu/drm/panel/Makefile b/drivers/gpu/drm/panel/Makefile index aeffaa95666d..f2b3d9b7abee 100644 --- a/drivers/gpu/drm/panel/Makefile +++ b/drivers/gpu/drm/panel/Makefile @@ -49,6 +49,7 @@ obj-$(CONFIG_DRM_PANEL_NEC_NL8048HL11) += panel-nec-nl8048hl11.o obj-$(CONFIG_DRM_PANEL_NEWVISION_NV3051D) += panel-newvision-nv3051d.o obj-$(CONFIG_DRM_PANEL_NEWVISION_NV3052C) += panel-newvision-nv3052c.o obj-$(CONFIG_DRM_PANEL_NOVATEK_NT35510) += panel-novatek-nt35510.o +obj-$(CONFIG_DRM_PANEL_NOVATEK_NT35532) += panel-novatek-nt35532.o obj-$(CONFIG_DRM_PANEL_NOVATEK_NT35560) += panel-novatek-nt35560.o obj-$(CONFIG_DRM_PANEL_NOVATEK_NT35950) += panel-novatek-nt35950.o obj-$(CONFIG_DRM_PANEL_NOVATEK_NT36523) += panel-novatek-nt36523.o diff --git a/drivers/gpu/drm/panel/panel-novatek-nt35532.c b/drivers/gpu/drm/panel/panel-novatek-nt35532.c new file mode 100644 index 000000000000..51ba548d0a8b --- /dev/null +++ b/drivers/gpu/drm/panel/panel-novatek-nt35532.c @@ -0,0 +1,767 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree. + * Copyright (c) 2026 Cristian Cozzolino <cristian_ci@protonmail.com> + */ + +#include <linux/delay.h> +#include <linux/gpio/consumer.h> +#include <linux/mod_devicetable.h> +#include <linux/module.h> +#include <linux/regulator/consumer.h> + +#include <drm/drm_mipi_dsi.h> +#include <drm/drm_modes.h> +#include <drm/drm_panel.h> +#include <drm/drm_probe_helper.h> + +struct novatek_nt35532 { + struct drm_panel panel; + struct mipi_dsi_device *dsi; + struct regulator_bulk_data *supplies; + struct gpio_desc *reset_gpio; +}; + +static const struct regulator_bulk_data nt35532_supplies[] = { + { .supply = "vsn" }, + { .supply = "vsp" }, +}; + +static inline struct novatek_nt35532 *to_novatek_nt35532(struct drm_panel *panel) +{ + return container_of(panel, struct novatek_nt35532, panel); +} + +static void nt35532_reset(struct novatek_nt35532 *ctx) +{ + gpiod_set_value_cansleep(ctx->reset_gpio, 0); + usleep_range(10000, 11000); + gpiod_set_value_cansleep(ctx->reset_gpio, 1); + usleep_range(5000, 6000); + gpiod_set_value_cansleep(ctx->reset_gpio, 0); + usleep_range(10000, 11000); +} + +static int nt35532_on(struct novatek_nt35532 *ctx) +{ + struct mipi_dsi_multi_context dsi_ctx = { .dsi = ctx->dsi }; + + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xff, 0x01); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x6e, 0x80); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x68, 0x13); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xfb, 0x01); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xff, 0x02); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xfb, 0x01); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xff, 0x05); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xfb, 0x01); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xd7, 0x31); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xd8, 0x7e); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xff, 0x01); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xfb, 0x01); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x01, 0x55); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x04, 0x0c); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x05, 0x3a); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x06, 0x50); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x07, 0xd0); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x0a, 0x0f); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x0c, 0x06); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x0d, 0x6b); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x0e, 0x6b); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x0f, 0x70); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x10, 0x63); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x11, 0x3c); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x12, 0x5c); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x15, 0x60); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x16, 0x15); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x17, 0x15); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x5b, 0xca); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x5c, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x5d, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x5f, 0x1b); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x60, 0xd5); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x61, 0xf0); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x6c, 0xab); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x6d, 0x44); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x6e, 0x80); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xff, 0x05); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xfb, 0x01); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x00, 0x3f); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x01, 0x3f); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x02, 0x3f); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x03, 0x3f); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x04, 0x38); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x05, 0x3f); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x06, 0x3f); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x07, 0x19); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x08, 0x1b); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x09, 0x3f); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x0a, 0x1d); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x0b, 0x17); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x0c, 0x3f); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x0d, 0x02); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x0e, 0x08); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x0f, 0x0c); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x10, 0x3f); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x11, 0x10); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x12, 0x3f); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x13, 0x3f); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x14, 0x3f); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x15, 0x3f); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x16, 0x3f); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x17, 0x3f); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x18, 0x38); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x19, 0x18); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x1a, 0x1a); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x1b, 0x3f); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x1c, 0x3f); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x1d, 0x1c); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x1e, 0x16); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x1f, 0x3f); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x20, 0x3f); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x21, 0x02); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x22, 0x06); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x23, 0x0a); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x24, 0x3f); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x25, 0x0e); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x26, 0x3f); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x27, 0x3f); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x54, 0x08); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x55, 0x07); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x56, 0x1a); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x58, 0x19); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x59, 0x36); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x5a, 0x1b); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x5b, 0x01); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x5c, 0x32); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x5e, 0x27); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x5f, 0x28); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x60, 0x2b); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x61, 0x2c); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x62, 0x18); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x63, 0x01); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x64, 0x32); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x65, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x66, 0x44); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x67, 0x11); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x68, 0x01); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x69, 0x01); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x6a, 0x06); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x6b, 0x22); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x6c, 0x08); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x6d, 0x08); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x78, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x79, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x7e, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x7f, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x80, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x81, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x8d, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x8e, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x8f, 0xc0); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x90, 0x73); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x91, 0x10); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x92, 0x09); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x96, 0x11); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x97, 0x14); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x98, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x99, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x9a, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x9b, 0x61); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x9c, 0x15); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x9d, 0x30); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x9f, 0x0f); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xa2, 0xb0); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xa7, 0x0a); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xa9, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xaa, 0x70); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xab, 0xda); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xac, 0xff); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xae, 0xf4); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xaf, 0x40); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xb0, 0x7f); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xb1, 0x16); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xb2, 0x53); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xb3, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xb4, 0x2a); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xb5, 0x3a); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xb6, 0xf0); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xbc, 0x85); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xbd, 0xf8); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xbe, 0x3b); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xbf, 0x13); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xc0, 0x77); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xc1, 0x77); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xc2, 0x77); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xc3, 0x77); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xc4, 0x77); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xc5, 0x77); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xc6, 0x77); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xc7, 0x77); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xc8, 0xaa); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xc9, 0x2a); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xca, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xcb, 0xaa); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xcc, 0x92); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xcd, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xce, 0x18); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xcf, 0x88); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xd0, 0xaa); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xd1, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xd2, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xd3, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xd6, 0x02); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xed, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xee, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xef, 0x70); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xfa, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xff, 0x01); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xfb, 0x01); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x75, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x76, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x77, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x78, 0x20); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x79, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x7a, 0x49); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x7b, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x7c, 0x66); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x7d, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x7e, 0x7d); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x7f, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x80, 0x91); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x81, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x82, 0xa3); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x83, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x84, 0xb3); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x85, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x86, 0xc1); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x87, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x88, 0xf1); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x89, 0x01); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x8a, 0x18); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x8b, 0x01); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x8c, 0x54); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x8d, 0x01); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x8e, 0x85); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x8f, 0x01); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x90, 0xd1); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x91, 0x02); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x92, 0x0c); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x93, 0x02); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x94, 0x0e); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x95, 0x02); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x96, 0x43); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x97, 0x02); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x98, 0x7d); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x99, 0x02); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x9a, 0xa2); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x9b, 0x02); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x9c, 0xd7); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x9d, 0x02); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x9e, 0xf8); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x9f, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xa0, 0x2b); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xa2, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xa3, 0x3a); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xa4, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xa5, 0x4b); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xa6, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xa7, 0x5d); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xa9, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xaa, 0x73); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xab, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xac, 0x8e); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xad, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xae, 0xae); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xaf, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xb0, 0xc9); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xb1, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xb2, 0xcd); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xb3, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xb4, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xb5, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xb6, 0x20); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xb7, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xb8, 0x49); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xb9, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xba, 0x66); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xbb, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xbc, 0x7d); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xbd, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xbe, 0x91); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xbf, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xc0, 0xa3); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xc1, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xc2, 0xb3); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xc3, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xc4, 0xc1); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xc5, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xc6, 0xf1); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xc7, 0x01); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xc8, 0x18); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xc9, 0x01); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xca, 0x54); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xcb, 0x01); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xcc, 0x85); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xcd, 0x01); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xce, 0xd1); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xcf, 0x02); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xd0, 0x0c); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xd1, 0x02); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xd2, 0x0e); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xd3, 0x02); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xd4, 0x43); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xd5, 0x02); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xd6, 0x7d); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xd7, 0x02); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xd8, 0xa2); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xd9, 0x02); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xda, 0xd7); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xdb, 0x02); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xdc, 0xf8); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xdd, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xde, 0x2b); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xdf, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xe0, 0x3a); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xe1, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xe2, 0x4b); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xe3, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xe4, 0x5d); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xe5, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xe6, 0x73); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xe7, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xe8, 0x8e); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xe9, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xea, 0xae); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xeb, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xec, 0xc9); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xed, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xee, 0xcd); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xef, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xf0, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xf1, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xf2, 0x20); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xf3, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xf4, 0x49); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xf5, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xf6, 0x66); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xf7, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xf8, 0x7d); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xf9, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xfa, 0x91); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xff, 0x02); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xfb, 0x01); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x00, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x01, 0xa3); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x02, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x03, 0xb3); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x04, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x05, 0xc1); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x06, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x07, 0xf1); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x08, 0x01); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x09, 0x18); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x0a, 0x01); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x0b, 0x54); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x0c, 0x01); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x0d, 0x85); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x0e, 0x01); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x0f, 0xd1); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x10, 0x02); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x11, 0x0c); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x12, 0x02); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x13, 0x0e); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x14, 0x02); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x15, 0x43); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x16, 0x02); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x17, 0x7d); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x18, 0x02); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x19, 0xa2); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x1a, 0x02); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x1b, 0xd7); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x1c, 0x02); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x1d, 0xf8); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x1e, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x1f, 0x2b); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x20, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x21, 0x3a); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x22, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x23, 0x4b); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x24, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x25, 0x5d); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x26, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x27, 0x73); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x28, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x29, 0x8e); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x2a, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x2b, 0xae); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x2d, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x2f, 0xc9); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x30, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x31, 0xcd); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x32, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x33, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x34, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x35, 0x20); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x36, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x37, 0x49); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x38, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x39, 0x66); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x3a, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x3b, 0x7d); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x3d, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x3f, 0x91); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x40, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x41, 0xa3); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x42, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x43, 0xb3); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x44, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x45, 0xc1); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x46, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x47, 0xf1); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x48, 0x01); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x49, 0x18); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x4a, 0x01); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x4b, 0x54); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x4c, 0x01); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x4d, 0x85); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x4e, 0x01); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x4f, 0xd1); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x50, 0x02); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x51, 0x0c); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x52, 0x02); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x53, 0x0e); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x54, 0x02); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x55, 0x43); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x56, 0x02); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x58, 0x7d); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x59, 0x02); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x5a, 0xa2); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x5b, 0x02); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x5c, 0xd7); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x5d, 0x02); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x5e, 0xf8); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x5f, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x60, 0x2b); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x61, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x62, 0x3a); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x63, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x64, 0x4b); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x65, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x66, 0x5d); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x67, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x68, 0x73); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x69, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x6a, 0x8e); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x6b, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x6c, 0xae); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x6d, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x6e, 0xc9); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x6f, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x70, 0xcd); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x71, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x72, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x73, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x74, 0x20); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x75, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x76, 0x49); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x77, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x78, 0x66); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x79, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x7a, 0x7d); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x7b, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x7c, 0x91); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x7d, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x7e, 0xa3); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x7f, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x80, 0xb3); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x81, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x82, 0xc1); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x83, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x84, 0xf1); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x85, 0x01); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x86, 0x18); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x87, 0x01); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x88, 0x54); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x89, 0x01); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x8a, 0x85); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x8b, 0x01); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x8c, 0xd1); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x8d, 0x02); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x8e, 0x0c); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x8f, 0x02); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x90, 0x0e); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x91, 0x02); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x92, 0x43); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x93, 0x02); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x94, 0x7d); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x95, 0x02); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x96, 0xa2); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x97, 0x02); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x98, 0xd7); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x99, 0x02); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x9a, 0xf8); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x9b, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x9c, 0x2b); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x9d, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x9e, 0x3a); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x9f, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xa0, 0x4b); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xa2, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xa3, 0x5d); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xa4, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xa5, 0x73); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xa6, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xa7, 0x8e); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xa9, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xaa, 0xae); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xab, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xac, 0xc9); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xad, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xae, 0xcd); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xaf, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xb0, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xb1, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xb2, 0x20); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xb3, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xb4, 0x49); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xb5, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xb6, 0x66); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xb7, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xb8, 0x7d); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xb9, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xba, 0x91); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xbb, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xbc, 0xa3); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xbd, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xbe, 0xb3); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xbf, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xc0, 0xc1); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xc1, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xc2, 0xf1); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xc3, 0x01); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xc4, 0x18); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xc5, 0x01); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xc6, 0x54); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xc7, 0x01); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xc8, 0x85); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xc9, 0x01); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xca, 0xd1); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xcb, 0x02); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xcc, 0x0c); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xcd, 0x02); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xce, 0x0e); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xcf, 0x02); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xd0, 0x43); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xd1, 0x02); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xd2, 0x7d); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xd3, 0x02); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xd4, 0xa2); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xd5, 0x02); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xd6, 0xd7); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xd7, 0x02); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xd8, 0xf8); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xd9, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xda, 0x2b); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xdb, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xdc, 0x3a); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xdd, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xde, 0x4b); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xdf, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xe0, 0x5d); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xe1, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xe2, 0x73); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xe3, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xe4, 0x8e); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xe5, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xe6, 0xae); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xe7, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xe8, 0xc9); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xe9, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xea, 0xcd); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xff, 0xee); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x02, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x40, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x02, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x41, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x02, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x42, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xfb, 0x01); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xff, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xfb, 0x01); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xba, 0x03); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x35, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x36, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xb0, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xd3, 0x10); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xd4, 0x0f); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xd5, 0x0f); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xd6, 0x48); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xd7, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xd9, 0x00); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x11, 0x00); + mipi_dsi_msleep(&dsi_ctx, 120); + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x29, 0x00); + mipi_dsi_msleep(&dsi_ctx, 50); + + return dsi_ctx.accum_err; +} + +static int nt35532_off(struct novatek_nt35532 *ctx) +{ + struct mipi_dsi_multi_context dsi_ctx = { .dsi = ctx->dsi }; + + mipi_dsi_dcs_set_display_off_multi(&dsi_ctx); + mipi_dsi_msleep(&dsi_ctx, 50); + mipi_dsi_dcs_enter_sleep_mode_multi(&dsi_ctx); + mipi_dsi_msleep(&dsi_ctx, 120); + + return dsi_ctx.accum_err; +} + +static int nt35532_prepare(struct drm_panel *panel) +{ + struct novatek_nt35532 *ctx = to_novatek_nt35532(panel); + struct device *dev = &ctx->dsi->dev; + int ret; + + ret = regulator_bulk_enable(ARRAY_SIZE(nt35532_supplies), ctx->supplies); + if (ret < 0) { + dev_err(dev, "Failed to enable regulators: %d\n", ret); + return ret; + } + + nt35532_reset(ctx); + + ret = nt35532_on(ctx); + if (ret < 0) { + dev_err(dev, "Failed to initialize panel: %d\n", ret); + gpiod_set_value_cansleep(ctx->reset_gpio, 1); + regulator_bulk_disable(ARRAY_SIZE(nt35532_supplies), ctx->supplies); + return ret; + } + + return 0; +} + +static int nt35532_unprepare(struct drm_panel *panel) +{ + struct novatek_nt35532 *ctx = to_novatek_nt35532(panel); + struct device *dev = &ctx->dsi->dev; + int ret; + + ret = nt35532_off(ctx); + if (ret < 0) + dev_err(dev, "Failed to un-initialize panel: %d\n", ret); + + gpiod_set_value_cansleep(ctx->reset_gpio, 1); + regulator_bulk_disable(ARRAY_SIZE(nt35532_supplies), ctx->supplies); + + return 0; +} + +static const struct drm_display_mode nt35532_mode = { + .clock = (1080 + 100 + 6 + 94) * (1920 + 15 + 6 + 10) * 60 / 1000, + .hdisplay = 1080, + .hsync_start = 1080 + 100, + .hsync_end = 1080 + 100 + 6, + .htotal = 1080 + 100 + 6 + 94, + .vdisplay = 1920, + .vsync_start = 1920 + 15, + .vsync_end = 1920 + 15 + 6, + .vtotal = 1920 + 15 + 6 + 10, + .width_mm = 68, + .height_mm = 121, + .type = DRM_MODE_TYPE_DRIVER, +}; + +static int nt35532_get_modes(struct drm_panel *panel, + struct drm_connector *connector) +{ + return drm_connector_helper_get_modes_fixed(connector, &nt35532_mode); +} + +static const struct drm_panel_funcs novatek_nt35532_panel_funcs = { + .prepare = nt35532_prepare, + .unprepare = nt35532_unprepare, + .get_modes = nt35532_get_modes, +}; + +static int nt35532_probe(struct mipi_dsi_device *dsi) +{ + struct device *dev = &dsi->dev; + struct novatek_nt35532 *ctx; + int ret; + + ctx = devm_drm_panel_alloc(dev, struct novatek_nt35532, panel, + &novatek_nt35532_panel_funcs, + DRM_MODE_CONNECTOR_DSI); + if (IS_ERR(ctx)) + return PTR_ERR(ctx); + + ret = devm_regulator_bulk_get_const(dev, + ARRAY_SIZE(nt35532_supplies), + nt35532_supplies, + &ctx->supplies); + if (ret < 0) + return ret; + + ctx->reset_gpio = devm_gpiod_get(dev, "reset", GPIOD_OUT_HIGH); + if (IS_ERR(ctx->reset_gpio)) + return dev_err_probe(dev, PTR_ERR(ctx->reset_gpio), + "Failed to get reset-gpios\n"); + + ctx->dsi = dsi; + mipi_dsi_set_drvdata(dsi, ctx); + + dsi->lanes = 4; + dsi->format = MIPI_DSI_FMT_RGB888; + dsi->mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | + MIPI_DSI_MODE_VIDEO_HSE | MIPI_DSI_MODE_LPM; + + ctx->panel.prepare_prev_first = true; + + ret = drm_panel_of_backlight(&ctx->panel); + if (ret) + return dev_err_probe(dev, ret, "Failed to get backlight\n"); + + drm_panel_add(&ctx->panel); + + ret = mipi_dsi_attach(dsi); + if (ret < 0) { + drm_panel_remove(&ctx->panel); + return dev_err_probe(dev, ret, "Failed to attach to DSI host\n"); + } + + return 0; +} + +static void nt35532_remove(struct mipi_dsi_device *dsi) +{ + struct novatek_nt35532 *ctx = mipi_dsi_get_drvdata(dsi); + int ret; + + ret = mipi_dsi_detach(dsi); + if (ret < 0) + dev_err(&dsi->dev, "Failed to detach from DSI host: %d\n", ret); + + drm_panel_remove(&ctx->panel); +} + +static const struct of_device_id nt35532_of_match[] = { + { .compatible = "novatek,nt35532" }, + { /* sentinel */ } +}; +MODULE_DEVICE_TABLE(of, nt35532_of_match); + +static struct mipi_dsi_driver nt35532_driver = { + .probe = nt35532_probe, + .remove = nt35532_remove, + .driver = { + .name = "panel-novatek-nt35532", + .of_match_table = nt35532_of_match, + }, +}; +module_mipi_dsi_driver(nt35532_driver); + +MODULE_DESCRIPTION("DRM driver for Novatek NT35532-based 1080p video mode DSI panel"); +MODULE_LICENSE("GPL"); -- 2.52.0 ^ permalink raw reply related [flat|nested] 35+ messages in thread
* Re: [PATCH 2/6] drm/panel: Add driver for Novatek NT35532 2026-03-08 15:52 ` [PATCH 2/6] drm/panel: Add driver for Novatek NT35532 Cristian Cozzolino via B4 Relay @ 2026-03-08 19:27 ` Dmitry Baryshkov 2026-03-12 8:27 ` cristian_ci 0 siblings, 1 reply; 35+ messages in thread From: Dmitry Baryshkov @ 2026-03-08 19:27 UTC (permalink / raw) To: cristian_ci Cc: Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio, dri-devel, devicetree, linux-kernel, linux-arm-msm, ~postmarketos/upstreaming, phone-devel On Sun, Mar 08, 2026 at 04:52:42PM +0100, Cristian Cozzolino via B4 Relay wrote: > From: Cristian Cozzolino <cristian_ci@protonmail.com> > > Add support for Novatek NT35532-based 1080p video mode DSI panel. > > Signed-off-by: Cristian Cozzolino <cristian_ci@protonmail.com> > --- > MAINTAINERS | 1 + > drivers/gpu/drm/panel/Kconfig | 11 + > drivers/gpu/drm/panel/Makefile | 1 + > drivers/gpu/drm/panel/panel-novatek-nt35532.c | 767 ++++++++++++++++++++++++++ > 4 files changed, 780 insertions(+) > > diff --git a/MAINTAINERS b/MAINTAINERS > index 12243feb0b27..d854804dc8cc 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -8143,6 +8143,7 @@ DRM DRIVER FOR NOVATEK NT35532 PANELS > M: Cristian Cozzolino <cristian_ci@protonmail.com> > S: Maintained > F: Documentation/devicetree/bindings/display/panel/novatek,nt35532.yaml > +F: drivers/gpu/drm/panel/panel-novatek-nt35532.c > > DRM DRIVER FOR NOVATEK NT35560 PANELS > M: Linus Walleij <linusw@kernel.org> > diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig > index 307152ad7759..4eb9691ab552 100644 > --- a/drivers/gpu/drm/panel/Kconfig > +++ b/drivers/gpu/drm/panel/Kconfig > @@ -500,6 +500,17 @@ config DRM_PANEL_NOVATEK_NT35510 > around the Novatek NT35510 display controller, such as some > Hydis panels. > > +config DRM_PANEL_NOVATEK_NT35532 > + tristate "Novatek NT35532-based DSI video mode panel" > + depends on OF > + depends on DRM_MIPI_DSI > + depends on BACKLIGHT_CLASS_DEVICE > + select VIDEOMODE_HELPERS > + select DRM_KMS_HELPER > + help > + Say Y or M here if you want to enable support for Novatek > + NT35532-based 1080p video mode DSI panels. > + > config DRM_PANEL_NOVATEK_NT35560 > tristate "Novatek NT35560 DSI command mode panel" > depends on OF > diff --git a/drivers/gpu/drm/panel/Makefile b/drivers/gpu/drm/panel/Makefile > index aeffaa95666d..f2b3d9b7abee 100644 > --- a/drivers/gpu/drm/panel/Makefile > +++ b/drivers/gpu/drm/panel/Makefile > @@ -49,6 +49,7 @@ obj-$(CONFIG_DRM_PANEL_NEC_NL8048HL11) += panel-nec-nl8048hl11.o > obj-$(CONFIG_DRM_PANEL_NEWVISION_NV3051D) += panel-newvision-nv3051d.o > obj-$(CONFIG_DRM_PANEL_NEWVISION_NV3052C) += panel-newvision-nv3052c.o > obj-$(CONFIG_DRM_PANEL_NOVATEK_NT35510) += panel-novatek-nt35510.o > +obj-$(CONFIG_DRM_PANEL_NOVATEK_NT35532) += panel-novatek-nt35532.o > obj-$(CONFIG_DRM_PANEL_NOVATEK_NT35560) += panel-novatek-nt35560.o > obj-$(CONFIG_DRM_PANEL_NOVATEK_NT35950) += panel-novatek-nt35950.o > obj-$(CONFIG_DRM_PANEL_NOVATEK_NT36523) += panel-novatek-nt36523.o > diff --git a/drivers/gpu/drm/panel/panel-novatek-nt35532.c b/drivers/gpu/drm/panel/panel-novatek-nt35532.c > new file mode 100644 > index 000000000000..51ba548d0a8b > --- /dev/null > +++ b/drivers/gpu/drm/panel/panel-novatek-nt35532.c > @@ -0,0 +1,767 @@ > +// SPDX-License-Identifier: GPL-2.0-only > +/* > + * Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree. > + * Copyright (c) 2026 Cristian Cozzolino <cristian_ci@protonmail.com> > + */ > + > +#include <linux/delay.h> > +#include <linux/gpio/consumer.h> > +#include <linux/mod_devicetable.h> > +#include <linux/module.h> > +#include <linux/regulator/consumer.h> > + > +#include <drm/drm_mipi_dsi.h> > +#include <drm/drm_modes.h> > +#include <drm/drm_panel.h> > +#include <drm/drm_probe_helper.h> > + > +struct novatek_nt35532 { > + struct drm_panel panel; > + struct mipi_dsi_device *dsi; > + struct regulator_bulk_data *supplies; > + struct gpio_desc *reset_gpio; > +}; > + > +static const struct regulator_bulk_data nt35532_supplies[] = { > + { .supply = "vsn" }, > + { .supply = "vsp" }, > +}; > + > +static inline struct novatek_nt35532 *to_novatek_nt35532(struct drm_panel *panel) > +{ > + return container_of(panel, struct novatek_nt35532, panel); > +} > + > +static void nt35532_reset(struct novatek_nt35532 *ctx) > +{ > + gpiod_set_value_cansleep(ctx->reset_gpio, 0); > + usleep_range(10000, 11000); > + gpiod_set_value_cansleep(ctx->reset_gpio, 1); > + usleep_range(5000, 6000); > + gpiod_set_value_cansleep(ctx->reset_gpio, 0); > + usleep_range(10000, 11000); > +} > + > +static int nt35532_on(struct novatek_nt35532 *ctx) > +{ > + struct mipi_dsi_multi_context dsi_ctx = { .dsi = ctx->dsi }; > + > + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xff, 0x01); > + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x6e, 0x80); > + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x68, 0x13); > + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xfb, 0x01); > + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xff, 0x02); If this goes to be resent for any reason, could you please insert an empty line before 0xff, 0xNN wries? > + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xfb, 0x01); [...] > + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x11, 0x00); I suppose this is MIPI_DCS_EXIT_SLEEP_MODE, > + mipi_dsi_msleep(&dsi_ctx, 120); > + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x29, 0x00); MIPI_DCS_SET_DISPLAY_ON > + mipi_dsi_msleep(&dsi_ctx, 50); > + > + return dsi_ctx.accum_err; > +} > + -- With best wishes Dmitry ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [PATCH 2/6] drm/panel: Add driver for Novatek NT35532 2026-03-08 19:27 ` Dmitry Baryshkov @ 2026-03-12 8:27 ` cristian_ci 2026-03-12 15:19 ` Dmitry Baryshkov 0 siblings, 1 reply; 35+ messages in thread From: cristian_ci @ 2026-03-12 8:27 UTC (permalink / raw) To: Dmitry Baryshkov Cc: Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio, dri-devel, devicetree, linux-kernel, linux-arm-msm, ~postmarketos/upstreaming, phone-devel On Sunday, March 8th, 2026 at 20:27, Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com> wrote: > On Sun, Mar 08, 2026 at 04:52:42PM +0100, Cristian Cozzolino via B4 Relay wrote: > > From: Cristian Cozzolino <cristian_ci@protonmail.com> > > + > > +static int nt35532_on(struct novatek_nt35532 *ctx) > > +{ > > + struct mipi_dsi_multi_context dsi_ctx = { .dsi = ctx->dsi }; > > + > > + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xff, 0x01); > > + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x6e, 0x80); > > + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x68, 0x13); > > + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xfb, 0x01); > > + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xff, 0x02); > > If this goes to be resent for any reason, could you please insert an > empty line before 0xff, 0xNN wries? Just to be sure about such request, should I add a blank line before: mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xff, 0x02); , before: mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xff, 0x05); , before: mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xff, 0x01); and so on...? > > + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xfb, 0x01); > > [...] > > > + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x11, 0x00); > > I suppose this is MIPI_DCS_EXIT_SLEEP_MODE, > > > + mipi_dsi_msleep(&dsi_ctx, 120); > > + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x29, 0x00); > > MIPI_DCS_SET_DISPLAY_ON I've done a double-check through NT35532 datasheet and include/video/mipi_display.h: instruction codes match exactly those mipi dcs command enum item names you've mentioned. So, would I have something like: mipi_dsi_generic_write_seq_multi(&dsi_ctx, MIPI_DCS_EXIT_SLEEP_MODE, 0x00); mipi_dsi_generic_write_seq_multi(&dsi_ctx, MIPI_DCS_SET_DISPLAY_ON, 0x00); ? > > + mipi_dsi_msleep(&dsi_ctx, 50); > > + > > + return dsi_ctx.accum_err; > > +} > > + > > -- > With best wishes > Dmitry > ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [PATCH 2/6] drm/panel: Add driver for Novatek NT35532 2026-03-12 8:27 ` cristian_ci @ 2026-03-12 15:19 ` Dmitry Baryshkov 0 siblings, 0 replies; 35+ messages in thread From: Dmitry Baryshkov @ 2026-03-12 15:19 UTC (permalink / raw) To: cristian_ci Cc: Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio, dri-devel, devicetree, linux-kernel, linux-arm-msm, ~postmarketos/upstreaming, phone-devel On Thu, Mar 12, 2026 at 08:27:33AM +0000, cristian_ci wrote: > On Sunday, March 8th, 2026 at 20:27, Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com> wrote: > > > On Sun, Mar 08, 2026 at 04:52:42PM +0100, Cristian Cozzolino via B4 Relay wrote: > > > From: Cristian Cozzolino <cristian_ci@protonmail.com> > > > + > > > +static int nt35532_on(struct novatek_nt35532 *ctx) > > > +{ > > > + struct mipi_dsi_multi_context dsi_ctx = { .dsi = ctx->dsi }; > > > + > > > + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xff, 0x01); > > > + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x6e, 0x80); > > > + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x68, 0x13); > > > + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xfb, 0x01); > > > + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xff, 0x02); > > > > If this goes to be resent for any reason, could you please insert an > > empty line before 0xff, 0xNN wries? > > Just to be sure about such request, should I add a blank line before: > > mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xff, 0x02); > > , before: > > mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xff, 0x05); > > , before: > > mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xff, 0x01); > > and so on...? Yes > > > > + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0xfb, 0x01); > > > > [...] > > > > > + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x11, 0x00); > > > > I suppose this is MIPI_DCS_EXIT_SLEEP_MODE, > > > > > + mipi_dsi_msleep(&dsi_ctx, 120); > > > + mipi_dsi_generic_write_seq_multi(&dsi_ctx, 0x29, 0x00); > > > > MIPI_DCS_SET_DISPLAY_ON > > I've done a double-check through NT35532 datasheet and > include/video/mipi_display.h: instruction codes match exactly > those mipi dcs command enum item names you've mentioned. > So, would I have something like: > > mipi_dsi_generic_write_seq_multi(&dsi_ctx, MIPI_DCS_EXIT_SLEEP_MODE, 0x00); > > mipi_dsi_generic_write_seq_multi(&dsi_ctx, MIPI_DCS_SET_DISPLAY_ON, 0x00); > > ? Yes, thank you. > > > > + mipi_dsi_msleep(&dsi_ctx, 50); > > > + > > > + return dsi_ctx.accum_err; > > > +} > > > + > > > > -- > > With best wishes > > Dmitry > > -- With best wishes Dmitry ^ permalink raw reply [flat|nested] 35+ messages in thread
* [PATCH 3/6] arm64: dts: qcom: msm8953-flipkart-rimob: Enable display and GPU 2026-03-08 15:52 [PATCH 0/6] Enable new features for flipkart-rimob Cristian Cozzolino via B4 Relay 2026-03-08 15:52 ` [PATCH 1/6] dt-bindings: display: panel: Add Novatek NT35532 LCD DSI Cristian Cozzolino via B4 Relay 2026-03-08 15:52 ` [PATCH 2/6] drm/panel: Add driver for Novatek NT35532 Cristian Cozzolino via B4 Relay @ 2026-03-08 15:52 ` Cristian Cozzolino via B4 Relay 2026-03-08 15:01 ` Dmitry Baryshkov 2026-03-08 15:52 ` [PATCH 4/6] arm64: dts: qcom: msm8953-flipkart-rimob: Enable WiFi/Bluetooth Cristian Cozzolino via B4 Relay ` (2 subsequent siblings) 5 siblings, 1 reply; 35+ messages in thread From: Cristian Cozzolino via B4 Relay @ 2026-03-08 15:52 UTC (permalink / raw) To: Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio Cc: dri-devel, devicetree, linux-kernel, linux-arm-msm, ~postmarketos/upstreaming, phone-devel, Cristian Cozzolino From: Cristian Cozzolino <cristian_ci@protonmail.com> Add the description for the display panel found on this phone. And with this done we can also enable the GPU and set the zap shader firmware path. Signed-off-by: Cristian Cozzolino <cristian_ci@protonmail.com> --- .../arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts | 80 ++++++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts b/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts index ef4faf763132..a00cf83dba93 100644 --- a/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts +++ b/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts @@ -78,6 +78,13 @@ vph_pwr: vph-pwr-regulator { }; }; +&gpu { + status = "okay"; +}; + +&gpu_zap_shader { + firmware-name = "qcom/msm8953/flipkart/rimob/a506_zap.mdt"; +}; &hsusb_phy { vdd-supply = <&pm8953_l3>; @@ -87,11 +94,69 @@ &hsusb_phy { status = "okay"; }; +&ibb { + qcom,discharge-resistor-kohms = <32>; +}; + +&lab { + qcom,soft-start-us = <800>; +}; + +&mdss { + status = "okay"; +}; + +&mdss_dsi0 { + vdda-supply = <&pm8953_s3>; + vddio-supply = <&pm8953_l6>; + + pinctrl-0 = <&mdss_default>; + pinctrl-1 = <&mdss_sleep>; + pinctrl-names = "default", "sleep"; + + status = "okay"; + + panel: panel@0 { + compatible = "novatek,nt35532"; + reg = <0>; + + backlight = <&pmi8950_wled>; + reset-gpios = <&tlmm 61 GPIO_ACTIVE_LOW>; + vsp-supply = <&lab>; + vsn-supply = <&ibb>; + + port { + panel_in: endpoint { + remote-endpoint = <&mdss_dsi0_out>; + }; + }; + }; +}; + +&mdss_dsi0_out { + data-lanes = <0 1 2 3>; + remote-endpoint = <&panel_in>; +}; + +&mdss_dsi0_phy { + vcca-supply = <&pm8953_l3>; + + status = "okay"; +}; + &pm8953_resin { linux,code = <KEY_VOLUMEDOWN>; status = "okay"; }; +&pmi8950_wled { + qcom,current-limit-microamp = <10000>; + qcom,num-strings = <3>; + qcom,ovp-millivolt = <29500>; + + status = "okay"; +}; + &rpm_requests { regulators { compatible = "qcom,rpm-pm8953-regulators"; @@ -244,6 +309,21 @@ gpio_key_default: gpio-key-default-state { drive-strength = <2>; bias-pull-up; }; + + mdss_default: mdss-default-state { + pins = "gpio61"; + function = "gpio"; + drive-strength = <8>; + bias-disable; + output-high; + }; + + mdss_sleep: mdss-sleep-state { + pins = "gpio61"; + function = "gpio"; + drive-strength = <2>; + bias-pull-down; + }; }; &usb3 { -- 2.52.0 ^ permalink raw reply related [flat|nested] 35+ messages in thread
* Re: [PATCH 3/6] arm64: dts: qcom: msm8953-flipkart-rimob: Enable display and GPU 2026-03-08 15:52 ` [PATCH 3/6] arm64: dts: qcom: msm8953-flipkart-rimob: Enable display and GPU Cristian Cozzolino via B4 Relay @ 2026-03-08 15:01 ` Dmitry Baryshkov 2026-03-10 11:27 ` Konrad Dybcio 0 siblings, 1 reply; 35+ messages in thread From: Dmitry Baryshkov @ 2026-03-08 15:01 UTC (permalink / raw) To: cristian_ci Cc: Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio, dri-devel, devicetree, linux-kernel, linux-arm-msm, ~postmarketos/upstreaming, phone-devel On Sun, Mar 08, 2026 at 04:52:43PM +0100, Cristian Cozzolino via B4 Relay wrote: > From: Cristian Cozzolino <cristian_ci@protonmail.com> > > Add the description for the display panel found on this phone. > And with this done we can also enable the GPU and set the zap shader > firmware path. > > Signed-off-by: Cristian Cozzolino <cristian_ci@protonmail.com> > --- > .../arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts | 80 ++++++++++++++++++++++ > 1 file changed, 80 insertions(+) > > + > +&mdss_dsi0 { > + vdda-supply = <&pm8953_s3>; > + vddio-supply = <&pm8953_l6>; > + > + pinctrl-0 = <&mdss_default>; > + pinctrl-1 = <&mdss_sleep>; > + pinctrl-names = "default", "sleep"; It might be better to move pinctrl nodes to the panel device, because they control the panel reset pin (rather than some kind if DSI-related pin). Other than that LGTM. > + > + status = "okay"; > + > + panel: panel@0 { > + compatible = "novatek,nt35532"; > + reg = <0>; > + > + backlight = <&pmi8950_wled>; > + reset-gpios = <&tlmm 61 GPIO_ACTIVE_LOW>; > + vsp-supply = <&lab>; > + vsn-supply = <&ibb>; > + > + port { > + panel_in: endpoint { > + remote-endpoint = <&mdss_dsi0_out>; > + }; > + }; > + }; > +}; > + -- With best wishes Dmitry ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [PATCH 3/6] arm64: dts: qcom: msm8953-flipkart-rimob: Enable display and GPU 2026-03-08 15:01 ` Dmitry Baryshkov @ 2026-03-10 11:27 ` Konrad Dybcio 2026-03-10 16:42 ` cristian_ci 0 siblings, 1 reply; 35+ messages in thread From: Konrad Dybcio @ 2026-03-10 11:27 UTC (permalink / raw) To: Dmitry Baryshkov, cristian_ci Cc: Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio, dri-devel, devicetree, linux-kernel, linux-arm-msm, ~postmarketos/upstreaming, phone-devel On 3/8/26 4:01 PM, Dmitry Baryshkov wrote: > On Sun, Mar 08, 2026 at 04:52:43PM +0100, Cristian Cozzolino via B4 Relay wrote: >> From: Cristian Cozzolino <cristian_ci@protonmail.com> >> >> Add the description for the display panel found on this phone. >> And with this done we can also enable the GPU and set the zap shader >> firmware path. >> >> Signed-off-by: Cristian Cozzolino <cristian_ci@protonmail.com> >> --- >> .../arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts | 80 ++++++++++++++++++++++ >> 1 file changed, 80 insertions(+) >> >> + >> +&mdss_dsi0 { >> + vdda-supply = <&pm8953_s3>; >> + vddio-supply = <&pm8953_l6>; >> + >> + pinctrl-0 = <&mdss_default>; >> + pinctrl-1 = <&mdss_sleep>; >> + pinctrl-names = "default", "sleep"; > > It might be better to move pinctrl nodes to the panel device, because > they control the panel reset pin (rather than some kind if DSI-related > pin). +1, perhaps let's rename that pin to panel_reset while at it Konrad ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [PATCH 3/6] arm64: dts: qcom: msm8953-flipkart-rimob: Enable display and GPU 2026-03-10 11:27 ` Konrad Dybcio @ 2026-03-10 16:42 ` cristian_ci 2026-03-10 22:30 ` Dmitry Baryshkov 0 siblings, 1 reply; 35+ messages in thread From: cristian_ci @ 2026-03-10 16:42 UTC (permalink / raw) To: Konrad Dybcio Cc: Dmitry Baryshkov, Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio, dri-devel, devicetree, linux-kernel, linux-arm-msm, ~postmarketos/upstreaming, phone-devel On Tuesday, March 10th, 2026 at 12:28, Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> wrote: > On 3/8/26 4:01 PM, Dmitry Baryshkov wrote: > > On Sun, Mar 08, 2026 at 04:52:43PM +0100, Cristian Cozzolino via B4 Relay wrote: > >> From: Cristian Cozzolino <cristian_ci@protonmail.com> > >> > >> Add the description for the display panel found on this phone. > >> And with this done we can also enable the GPU and set the zap shader > >> firmware path. > >> > >> Signed-off-by: Cristian Cozzolino <cristian_ci@protonmail.com> > >> --- > >> .../arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts | 80 ++++++++++++++++++++++ > >> 1 file changed, 80 insertions(+) > >> > >> + > >> +&mdss_dsi0 { > >> + vdda-supply = <&pm8953_s3>; > >> + vddio-supply = <&pm8953_l6>; > >> + > >> + pinctrl-0 = <&mdss_default>; > >> + pinctrl-1 = <&mdss_sleep>; > >> + pinctrl-names = "default", "sleep"; > > > > It might be better to move pinctrl nodes to the panel device, because > > they control the panel reset pin (rather than some kind if DSI-related > > pin). > > +1, perhaps let's rename that pin to panel_reset while at it So, something like (plus related renaming in tlmm node): panel: panel@0 { compatible = "novatek,nt35532"; reg = <0>; backlight = <&pmi8950_wled>; reset-gpios = <&tlmm 61 GPIO_ACTIVE_LOW>; vsp-supply = <&lab>; vsn-supply = <&ibb>; pinctrl-0 = <&panel_default>; pinctrl-1 = <&panel_reset>; pinctrl-names = "default", "reset"; port { panel_in: endpoint { remote-endpoint = <&mdss_dsi0_out>; }; }; }; this? > Konrad > Regards ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [PATCH 3/6] arm64: dts: qcom: msm8953-flipkart-rimob: Enable display and GPU 2026-03-10 16:42 ` cristian_ci @ 2026-03-10 22:30 ` Dmitry Baryshkov 2026-03-12 7:58 ` cristian_ci 0 siblings, 1 reply; 35+ messages in thread From: Dmitry Baryshkov @ 2026-03-10 22:30 UTC (permalink / raw) To: cristian_ci Cc: Konrad Dybcio, Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio, dri-devel, devicetree, linux-kernel, linux-arm-msm, ~postmarketos/upstreaming, phone-devel On Tue, Mar 10, 2026 at 04:42:43PM +0000, cristian_ci wrote: > On Tuesday, March 10th, 2026 at 12:28, Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> wrote: > > > On 3/8/26 4:01 PM, Dmitry Baryshkov wrote: > > > On Sun, Mar 08, 2026 at 04:52:43PM +0100, Cristian Cozzolino via B4 Relay wrote: > > >> From: Cristian Cozzolino <cristian_ci@protonmail.com> > > >> > > >> Add the description for the display panel found on this phone. > > >> And with this done we can also enable the GPU and set the zap shader > > >> firmware path. > > >> > > >> Signed-off-by: Cristian Cozzolino <cristian_ci@protonmail.com> > > >> --- > > >> .../arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts | 80 ++++++++++++++++++++++ > > >> 1 file changed, 80 insertions(+) > > >> > > >> + > > >> +&mdss_dsi0 { > > >> + vdda-supply = <&pm8953_s3>; > > >> + vddio-supply = <&pm8953_l6>; > > >> + > > >> + pinctrl-0 = <&mdss_default>; > > >> + pinctrl-1 = <&mdss_sleep>; > > >> + pinctrl-names = "default", "sleep"; > > > > > > It might be better to move pinctrl nodes to the panel device, because > > > they control the panel reset pin (rather than some kind if DSI-related > > > pin). > > > > +1, perhaps let's rename that pin to panel_reset while at it > > So, something like (plus related renaming in tlmm node): > > panel: panel@0 { > compatible = "novatek,nt35532"; > reg = <0>; > > backlight = <&pmi8950_wled>; > reset-gpios = <&tlmm 61 GPIO_ACTIVE_LOW>; > vsp-supply = <&lab>; > vsn-supply = <&ibb>; > > pinctrl-0 = <&panel_default>; > pinctrl-1 = <&panel_reset>; > pinctrl-names = "default", "reset"; No, "reset" would not be recognized. Use "sleep" as before. > > port { > panel_in: endpoint { > remote-endpoint = <&mdss_dsi0_out>; > }; > }; > }; > > this? > > > Konrad > > > > Regards -- With best wishes Dmitry ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [PATCH 3/6] arm64: dts: qcom: msm8953-flipkart-rimob: Enable display and GPU 2026-03-10 22:30 ` Dmitry Baryshkov @ 2026-03-12 7:58 ` cristian_ci 2026-03-12 15:22 ` Dmitry Baryshkov 0 siblings, 1 reply; 35+ messages in thread From: cristian_ci @ 2026-03-12 7:58 UTC (permalink / raw) To: Dmitry Baryshkov Cc: Konrad Dybcio, Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio, dri-devel, devicetree, linux-kernel, linux-arm-msm, ~postmarketos/upstreaming, phone-devel On Tuesday, March 10th, 2026 at 23:30, Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com> wrote: > On Tue, Mar 10, 2026 at 04:42:43PM +0000, cristian_ci wrote: > > On Tuesday, March 10th, 2026 at 12:28, Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> wrote: > > > > > On 3/8/26 4:01 PM, Dmitry Baryshkov wrote: > > > > On Sun, Mar 08, 2026 at 04:52:43PM +0100, Cristian Cozzolino via B4 Relay wrote: > > > >> From: Cristian Cozzolino <cristian_ci@protonmail.com> > > > >> > > > >> Add the description for the display panel found on this phone. > > > >> And with this done we can also enable the GPU and set the zap shader > > > >> firmware path. > > > >> > > > >> Signed-off-by: Cristian Cozzolino <cristian_ci@protonmail.com> > > > >> --- > > > >> .../arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts | 80 ++++++++++++++++++++++ > > > >> 1 file changed, 80 insertions(+) > > > >> > > > >> + > > > >> +&mdss_dsi0 { > > > >> + vdda-supply = <&pm8953_s3>; > > > >> + vddio-supply = <&pm8953_l6>; > > > >> + > > > >> + pinctrl-0 = <&mdss_default>; > > > >> + pinctrl-1 = <&mdss_sleep>; > > > >> + pinctrl-names = "default", "sleep"; > > > > > > > > It might be better to move pinctrl nodes to the panel device, because > > > > they control the panel reset pin (rather than some kind if DSI-related > > > > pin). > > > > > > +1, perhaps let's rename that pin to panel_reset while at it > > > > So, something like (plus related renaming in tlmm node): > > > > panel: panel@0 { > > compatible = "novatek,nt35532"; > > reg = <0>; > > > > backlight = <&pmi8950_wled>; > > reset-gpios = <&tlmm 61 GPIO_ACTIVE_LOW>; > > vsp-supply = <&lab>; > > vsn-supply = <&ibb>; > > > > pinctrl-0 = <&panel_default>; > > pinctrl-1 = <&panel_reset>; > > pinctrl-names = "default", "reset"; > > No, "reset" would not be recognized. Use "sleep" as before. so, something like: pinctrl-1 = <&panel_sleep>; pinctrl-names = "default", "sleep"; ? Also, should I remove 'sleep' state if panel handles only one state ('default') instead of two states (like mdss)? > > > > port { > > panel_in: endpoint { > > remote-endpoint = <&mdss_dsi0_out>; > > }; > > }; > > }; > > > > this? > > > > > Konrad > > > > > > > Regards > > -- > With best wishes > Dmitry > ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [PATCH 3/6] arm64: dts: qcom: msm8953-flipkart-rimob: Enable display and GPU 2026-03-12 7:58 ` cristian_ci @ 2026-03-12 15:22 ` Dmitry Baryshkov 0 siblings, 0 replies; 35+ messages in thread From: Dmitry Baryshkov @ 2026-03-12 15:22 UTC (permalink / raw) To: cristian_ci Cc: Konrad Dybcio, Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio, dri-devel, devicetree, linux-kernel, linux-arm-msm, ~postmarketos/upstreaming, phone-devel On Thu, Mar 12, 2026 at 07:58:04AM +0000, cristian_ci wrote: > > On Tuesday, March 10th, 2026 at 23:30, Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com> wrote: > > > On Tue, Mar 10, 2026 at 04:42:43PM +0000, cristian_ci wrote: > > > On Tuesday, March 10th, 2026 at 12:28, Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> wrote: > > > > > > > On 3/8/26 4:01 PM, Dmitry Baryshkov wrote: > > > > > On Sun, Mar 08, 2026 at 04:52:43PM +0100, Cristian Cozzolino via B4 Relay wrote: > > > > >> From: Cristian Cozzolino <cristian_ci@protonmail.com> > > > > >> > > > > >> Add the description for the display panel found on this phone. > > > > >> And with this done we can also enable the GPU and set the zap shader > > > > >> firmware path. > > > > >> > > > > >> Signed-off-by: Cristian Cozzolino <cristian_ci@protonmail.com> > > > > >> --- > > > > >> .../arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts | 80 ++++++++++++++++++++++ > > > > >> 1 file changed, 80 insertions(+) > > > > >> > > > > >> + > > > > >> +&mdss_dsi0 { > > > > >> + vdda-supply = <&pm8953_s3>; > > > > >> + vddio-supply = <&pm8953_l6>; > > > > >> + > > > > >> + pinctrl-0 = <&mdss_default>; > > > > >> + pinctrl-1 = <&mdss_sleep>; > > > > >> + pinctrl-names = "default", "sleep"; > > > > > > > > > > It might be better to move pinctrl nodes to the panel device, because > > > > > they control the panel reset pin (rather than some kind if DSI-related > > > > > pin). > > > > > > > > +1, perhaps let's rename that pin to panel_reset while at it > > > > > > So, something like (plus related renaming in tlmm node): > > > > > > panel: panel@0 { > > > compatible = "novatek,nt35532"; > > > reg = <0>; > > > > > > backlight = <&pmi8950_wled>; > > > reset-gpios = <&tlmm 61 GPIO_ACTIVE_LOW>; > > > vsp-supply = <&lab>; > > > vsn-supply = <&ibb>; > > > > > > pinctrl-0 = <&panel_default>; > > > pinctrl-1 = <&panel_reset>; > > > pinctrl-names = "default", "reset"; > > > > No, "reset" would not be recognized. Use "sleep" as before. > > so, something like: > > pinctrl-1 = <&panel_sleep>; > pinctrl-names = "default", "sleep"; > > ? > > Also, should I remove 'sleep' state if panel handles only one state ('default') > instead of two states (like mdss)? Yes, DSI panels don't have (and don't use) a separate sleep pinctrl state. > > > > > > > port { > > > panel_in: endpoint { > > > remote-endpoint = <&mdss_dsi0_out>; > > > }; > > > }; > > > }; > > > > > > this? > > > > > > > Konrad > > > > > > > > > > Regards > > > > -- > > With best wishes > > Dmitry > > -- With best wishes Dmitry ^ permalink raw reply [flat|nested] 35+ messages in thread
* [PATCH 4/6] arm64: dts: qcom: msm8953-flipkart-rimob: Enable WiFi/Bluetooth 2026-03-08 15:52 [PATCH 0/6] Enable new features for flipkart-rimob Cristian Cozzolino via B4 Relay ` (2 preceding siblings ...) 2026-03-08 15:52 ` [PATCH 3/6] arm64: dts: qcom: msm8953-flipkart-rimob: Enable display and GPU Cristian Cozzolino via B4 Relay @ 2026-03-08 15:52 ` Cristian Cozzolino via B4 Relay 2026-03-08 15:08 ` Dmitry Baryshkov 2026-03-10 11:27 ` Konrad Dybcio 2026-03-08 15:52 ` [PATCH 5/6] arm64: dts: qcom: msm8953-flipkart-rimob: Enable touchscreen Cristian Cozzolino via B4 Relay 2026-03-08 15:52 ` [PATCH 6/6] arm64: dts: qcom: msm8953-flipkart-rimob: Enable Hall sensor Cristian Cozzolino via B4 Relay 5 siblings, 2 replies; 35+ messages in thread From: Cristian Cozzolino via B4 Relay @ 2026-03-08 15:52 UTC (permalink / raw) To: Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio Cc: dri-devel, devicetree, linux-kernel, linux-arm-msm, ~postmarketos/upstreaming, phone-devel, Cristian Cozzolino From: Cristian Cozzolino <cristian_ci@protonmail.com> Configure and enable the WCNSS which provides WiFi and Bluetooth on this device using the WCN3660B chip. Signed-off-by: Cristian Cozzolino <cristian_ci@protonmail.com> --- arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts b/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts index a00cf83dba93..7b2849405462 100644 --- a/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts +++ b/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts @@ -333,3 +333,18 @@ &usb3 { &usb3_dwc3 { dr_mode = "peripheral"; }; + +&wcnss { + vddpx-supply = <&pm8953_l5>; + + status = "okay"; +}; + +&wcnss_iris { + compatible = "qcom,wcn3660b"; + + vddxo-supply = <&pm8953_l7>; + vddrfa-supply = <&pm8953_l19>; + vddpa-supply = <&pm8953_l9>; + vdddig-supply = <&pm8953_l5>; +}; -- 2.52.0 ^ permalink raw reply related [flat|nested] 35+ messages in thread
* Re: [PATCH 4/6] arm64: dts: qcom: msm8953-flipkart-rimob: Enable WiFi/Bluetooth 2026-03-08 15:52 ` [PATCH 4/6] arm64: dts: qcom: msm8953-flipkart-rimob: Enable WiFi/Bluetooth Cristian Cozzolino via B4 Relay @ 2026-03-08 15:08 ` Dmitry Baryshkov 2026-03-10 11:27 ` Konrad Dybcio 1 sibling, 0 replies; 35+ messages in thread From: Dmitry Baryshkov @ 2026-03-08 15:08 UTC (permalink / raw) To: cristian_ci Cc: Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio, dri-devel, devicetree, linux-kernel, linux-arm-msm, ~postmarketos/upstreaming, phone-devel On Sun, Mar 08, 2026 at 04:52:44PM +0100, Cristian Cozzolino via B4 Relay wrote: > From: Cristian Cozzolino <cristian_ci@protonmail.com> > > Configure and enable the WCNSS which provides WiFi and Bluetooth on this > device using the WCN3660B chip. > > Signed-off-by: Cristian Cozzolino <cristian_ci@protonmail.com> > --- > arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts | 15 +++++++++++++++ > 1 file changed, 15 insertions(+) > Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com> -- With best wishes Dmitry ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [PATCH 4/6] arm64: dts: qcom: msm8953-flipkart-rimob: Enable WiFi/Bluetooth 2026-03-08 15:52 ` [PATCH 4/6] arm64: dts: qcom: msm8953-flipkart-rimob: Enable WiFi/Bluetooth Cristian Cozzolino via B4 Relay 2026-03-08 15:08 ` Dmitry Baryshkov @ 2026-03-10 11:27 ` Konrad Dybcio 1 sibling, 0 replies; 35+ messages in thread From: Konrad Dybcio @ 2026-03-10 11:27 UTC (permalink / raw) To: cristian_ci, Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio Cc: dri-devel, devicetree, linux-kernel, linux-arm-msm, ~postmarketos/upstreaming, phone-devel On 3/8/26 4:52 PM, Cristian Cozzolino via B4 Relay wrote: > From: Cristian Cozzolino <cristian_ci@protonmail.com> > > Configure and enable the WCNSS which provides WiFi and Bluetooth on this > device using the WCN3660B chip. > > Signed-off-by: Cristian Cozzolino <cristian_ci@protonmail.com> > --- Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> Konrad ^ permalink raw reply [flat|nested] 35+ messages in thread
* [PATCH 5/6] arm64: dts: qcom: msm8953-flipkart-rimob: Enable touchscreen 2026-03-08 15:52 [PATCH 0/6] Enable new features for flipkart-rimob Cristian Cozzolino via B4 Relay ` (3 preceding siblings ...) 2026-03-08 15:52 ` [PATCH 4/6] arm64: dts: qcom: msm8953-flipkart-rimob: Enable WiFi/Bluetooth Cristian Cozzolino via B4 Relay @ 2026-03-08 15:52 ` Cristian Cozzolino via B4 Relay 2026-03-10 13:08 ` Konrad Dybcio 2026-03-08 15:52 ` [PATCH 6/6] arm64: dts: qcom: msm8953-flipkart-rimob: Enable Hall sensor Cristian Cozzolino via B4 Relay 5 siblings, 1 reply; 35+ messages in thread From: Cristian Cozzolino via B4 Relay @ 2026-03-08 15:52 UTC (permalink / raw) To: Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio Cc: dri-devel, devicetree, linux-kernel, linux-arm-msm, ~postmarketos/upstreaming, phone-devel, Cristian Cozzolino From: Cristian Cozzolino <cristian_ci@protonmail.com> This device uses a Goodix GT5688 touch controller, connected to i2c_3. Add it to the device tree. Signed-off-by: Cristian Cozzolino <cristian_ci@protonmail.com> --- .../arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts | 32 ++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts b/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts index 7b2849405462..709ea6fc9fbb 100644 --- a/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts +++ b/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts @@ -94,6 +94,31 @@ &hsusb_phy { status = "okay"; }; +&i2c_3 { + status = "okay"; + + touchscreen@5d { + compatible = "goodix,gt5688"; + reg = <0x5d>; + + interrupts-extended = <&tlmm 65 IRQ_TYPE_LEVEL_LOW>; + + pinctrl-0 = <&tsp_int_rst_default>; + pinctrl-names = "default"; + + irq-gpios = <&tlmm 65 GPIO_ACTIVE_HIGH>; + reset-gpios = <&tlmm 64 GPIO_ACTIVE_HIGH>; + + VDDIO-supply = <&pm8953_l6>; + AVDD28-supply = <&pm8953_l10>; + + touchscreen-size-x = <1080>; + touchscreen-size-y = <1920>; + touchscreen-inverted-x; + touchscreen-inverted-y; + }; +}; + &ibb { qcom,discharge-resistor-kohms = <32>; }; @@ -324,6 +349,13 @@ mdss_sleep: mdss-sleep-state { drive-strength = <2>; bias-pull-down; }; + + tsp_int_rst_default: tsp-int-rst-default-state { + pins = "gpio64", "gpio65"; + function = "gpio"; + drive-strength = <8>; + bias-pull-up; + }; }; &usb3 { -- 2.52.0 ^ permalink raw reply related [flat|nested] 35+ messages in thread
* Re: [PATCH 5/6] arm64: dts: qcom: msm8953-flipkart-rimob: Enable touchscreen 2026-03-08 15:52 ` [PATCH 5/6] arm64: dts: qcom: msm8953-flipkart-rimob: Enable touchscreen Cristian Cozzolino via B4 Relay @ 2026-03-10 13:08 ` Konrad Dybcio 2026-03-10 16:20 ` cristian_ci 2026-03-10 22:49 ` Dmitry Baryshkov 0 siblings, 2 replies; 35+ messages in thread From: Konrad Dybcio @ 2026-03-10 13:08 UTC (permalink / raw) To: cristian_ci, Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio Cc: dri-devel, devicetree, linux-kernel, linux-arm-msm, ~postmarketos/upstreaming, phone-devel On 3/8/26 4:52 PM, Cristian Cozzolino via B4 Relay wrote: > From: Cristian Cozzolino <cristian_ci@protonmail.com> > > This device uses a Goodix GT5688 touch controller, connected to i2c_3. > Add it to the device tree. > > Signed-off-by: Cristian Cozzolino <cristian_ci@protonmail.com> > --- > .../arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts | 32 ++++++++++++++++++++++ > 1 file changed, 32 insertions(+) > > diff --git a/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts b/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts > index 7b2849405462..709ea6fc9fbb 100644 > --- a/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts > +++ b/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts > @@ -94,6 +94,31 @@ &hsusb_phy { > status = "okay"; > }; > > +&i2c_3 { > + status = "okay"; > + > + touchscreen@5d { > + compatible = "goodix,gt5688"; > + reg = <0x5d>; > + > + interrupts-extended = <&tlmm 65 IRQ_TYPE_LEVEL_LOW>; interrupts *and* irq-gpios sounds wrong.. and I think the driver doesn't even consume the former. Trying to read through some of that, I think it's on purpose since the IRQ GPIO is repurposed for setting the I2C addr (which nota bene doesn't match between the comment in that driver and this submission - perhaps that's just a SKU difference) during the reset sequence i.e., does the touch work any different if you drop the above? does /proc/interrupts differ? Konrad ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [PATCH 5/6] arm64: dts: qcom: msm8953-flipkart-rimob: Enable touchscreen 2026-03-10 13:08 ` Konrad Dybcio @ 2026-03-10 16:20 ` cristian_ci 2026-03-11 13:03 ` Konrad Dybcio 2026-03-10 22:49 ` Dmitry Baryshkov 1 sibling, 1 reply; 35+ messages in thread From: cristian_ci @ 2026-03-10 16:20 UTC (permalink / raw) To: Konrad Dybcio Cc: Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio, dri-devel, devicetree, linux-kernel, linux-arm-msm, ~postmarketos/upstreaming, phone-devel Cristian Sent with Proton Mail secure email. On Tuesday, March 10th, 2026 at 14:08, Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> wrote: > On 3/8/26 4:52 PM, Cristian Cozzolino via B4 Relay wrote: > > From: Cristian Cozzolino <cristian_ci@protonmail.com> > > > > This device uses a Goodix GT5688 touch controller, connected to i2c_3. > > Add it to the device tree. > > > > Signed-off-by: Cristian Cozzolino <cristian_ci@protonmail.com> > > --- > > .../arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts | 32 ++++++++++++++++++++++ > > 1 file changed, 32 insertions(+) > > > > diff --git a/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts b/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts > > index 7b2849405462..709ea6fc9fbb 100644 > > --- a/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts > > +++ b/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts > > @@ -94,6 +94,31 @@ &hsusb_phy { > > status = "okay"; > > }; > > > > +&i2c_3 { > > + status = "okay"; > > + > > + touchscreen@5d { > > + compatible = "goodix,gt5688"; > > + reg = <0x5d>; > > + > > + interrupts-extended = <&tlmm 65 IRQ_TYPE_LEVEL_LOW>; > > interrupts *and* irq-gpios sounds wrong.. and I think the driver doesn't > even consume the former. Trying to read through some of that, I think > it's on purpose since the IRQ GPIO is repurposed for setting the I2C addr > (which nota bene doesn't match between the comment in that driver and this > submission - perhaps that's just a SKU difference) during the reset > sequence > > i.e., does the touch work any different if you drop the above? Apparently, not. That works as expected. > does /proc/interrupts differ? When interrupts-extended is defined: ... 50: 318 0 0 0 0 0 0 0 msmgpio 65 Edge gt5688 ... 54: 3141 0 0 0 0 0 0 0 GIC-0 65 Level gpu-irq ... Instead, when interrupts-extended is removed/commented out, I see just: ... 53: 2404 0 0 0 0 0 0 0 GIC-0 65 Level gpu-irq ... > Konrad > Regards ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [PATCH 5/6] arm64: dts: qcom: msm8953-flipkart-rimob: Enable touchscreen 2026-03-10 16:20 ` cristian_ci @ 2026-03-11 13:03 ` Konrad Dybcio 2026-03-12 7:35 ` cristian_ci 0 siblings, 1 reply; 35+ messages in thread From: Konrad Dybcio @ 2026-03-11 13:03 UTC (permalink / raw) To: cristian_ci Cc: Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio, dri-devel, devicetree, linux-kernel, linux-arm-msm, ~postmarketos/upstreaming, phone-devel On 3/10/26 5:20 PM, cristian_ci wrote: > > > > > Cristian > > Sent with Proton Mail secure email. > > On Tuesday, March 10th, 2026 at 14:08, Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> wrote: > >> On 3/8/26 4:52 PM, Cristian Cozzolino via B4 Relay wrote: >>> From: Cristian Cozzolino <cristian_ci@protonmail.com> >>> >>> This device uses a Goodix GT5688 touch controller, connected to i2c_3. >>> Add it to the device tree. >>> >>> Signed-off-by: Cristian Cozzolino <cristian_ci@protonmail.com> >>> --- >>> .../arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts | 32 ++++++++++++++++++++++ >>> 1 file changed, 32 insertions(+) >>> >>> diff --git a/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts b/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts >>> index 7b2849405462..709ea6fc9fbb 100644 >>> --- a/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts >>> +++ b/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts >>> @@ -94,6 +94,31 @@ &hsusb_phy { >>> status = "okay"; >>> }; >>> >>> +&i2c_3 { >>> + status = "okay"; >>> + >>> + touchscreen@5d { >>> + compatible = "goodix,gt5688"; >>> + reg = <0x5d>; >>> + >>> + interrupts-extended = <&tlmm 65 IRQ_TYPE_LEVEL_LOW>; >> >> interrupts *and* irq-gpios sounds wrong.. and I think the driver doesn't >> even consume the former. Trying to read through some of that, I think >> it's on purpose since the IRQ GPIO is repurposed for setting the I2C addr >> (which nota bene doesn't match between the comment in that driver and this >> submission - perhaps that's just a SKU difference) during the reset >> sequence >> >> i.e., does the touch work any different if you drop the above? > > Apparently, not. That works as expected. > >> does /proc/interrupts differ? > > When interrupts-extended is defined: > > ... > 50: 318 0 0 0 0 0 0 0 msmgpio 65 Edge gt5688 > ... > 54: 3141 0 0 0 0 0 0 0 GIC-0 65 Level gpu-irq > ... > > Instead, when interrupts-extended is removed/commented out, I see just: > > ... > 53: 2404 0 0 0 0 0 0 0 GIC-0 65 Level gpu-irq > ... Hm, that's odd - I don't see the irq handler being registered anywhere, or anything requesting that name. Do you have out-of-tree changes to that driver? Konrad ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [PATCH 5/6] arm64: dts: qcom: msm8953-flipkart-rimob: Enable touchscreen 2026-03-11 13:03 ` Konrad Dybcio @ 2026-03-12 7:35 ` cristian_ci 0 siblings, 0 replies; 35+ messages in thread From: cristian_ci @ 2026-03-12 7:35 UTC (permalink / raw) To: Konrad Dybcio Cc: Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio, dri-devel, devicetree, linux-kernel, linux-arm-msm, ~postmarketos/upstreaming, phone-devel On Wednesday, March 11th, 2026 at 14:03, Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> wrote: > > > >> does /proc/interrupts differ? > > > > When interrupts-extended is defined: > > > > ... > > 50: 318 0 0 0 0 0 0 0 msmgpio 65 Edge gt5688 > > ... > > 54: 3141 0 0 0 0 0 0 0 GIC-0 65 Level gpu-irq > > ... > > > > Instead, when interrupts-extended is removed/commented out, I see just: > > > > ... > > 53: 2404 0 0 0 0 0 0 0 GIC-0 65 Level gpu-irq > > ... > > Hm, that's odd - I don't see the irq handler being registered anywhere, > or anything requesting that name. Do you have out-of-tree changes to that > driver? Tested on linux-next without changes to goodix.c. > Konrad > ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [PATCH 5/6] arm64: dts: qcom: msm8953-flipkart-rimob: Enable touchscreen 2026-03-10 13:08 ` Konrad Dybcio 2026-03-10 16:20 ` cristian_ci @ 2026-03-10 22:49 ` Dmitry Baryshkov 2026-03-11 12:47 ` Konrad Dybcio 1 sibling, 1 reply; 35+ messages in thread From: Dmitry Baryshkov @ 2026-03-10 22:49 UTC (permalink / raw) To: Konrad Dybcio Cc: cristian_ci, Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio, dri-devel, devicetree, linux-kernel, linux-arm-msm, ~postmarketos/upstreaming, phone-devel On Tue, Mar 10, 2026 at 02:08:40PM +0100, Konrad Dybcio wrote: > On 3/8/26 4:52 PM, Cristian Cozzolino via B4 Relay wrote: > > From: Cristian Cozzolino <cristian_ci@protonmail.com> > > > > This device uses a Goodix GT5688 touch controller, connected to i2c_3. > > Add it to the device tree. > > > > Signed-off-by: Cristian Cozzolino <cristian_ci@protonmail.com> > > --- > > .../arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts | 32 ++++++++++++++++++++++ > > 1 file changed, 32 insertions(+) > > > > diff --git a/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts b/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts > > index 7b2849405462..709ea6fc9fbb 100644 > > --- a/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts > > +++ b/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts > > @@ -94,6 +94,31 @@ &hsusb_phy { > > status = "okay"; > > }; > > > > +&i2c_3 { > > + status = "okay"; > > + > > + touchscreen@5d { > > + compatible = "goodix,gt5688"; > > + reg = <0x5d>; > > + > > + interrupts-extended = <&tlmm 65 IRQ_TYPE_LEVEL_LOW>; > > interrupts *and* irq-gpios sounds wrong.. and I think the driver doesn't > even consume the former. Trying to read through some of that, I think I think you need both, take a look, there are enough users of ts->gpiod_int. > it's on purpose since the IRQ GPIO is repurposed for setting the I2C addr > (which nota bene doesn't match between the comment in that driver and this > submission - perhaps that's just a SKU difference) during the reset > sequence > > i.e., does the touch work any different if you drop the above? > does /proc/interrupts differ? > > Konrad -- With best wishes Dmitry ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [PATCH 5/6] arm64: dts: qcom: msm8953-flipkart-rimob: Enable touchscreen 2026-03-10 22:49 ` Dmitry Baryshkov @ 2026-03-11 12:47 ` Konrad Dybcio 2026-03-11 13:16 ` Dmitry Baryshkov 0 siblings, 1 reply; 35+ messages in thread From: Konrad Dybcio @ 2026-03-11 12:47 UTC (permalink / raw) To: Dmitry Baryshkov Cc: cristian_ci, Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio, dri-devel, devicetree, linux-kernel, linux-arm-msm, ~postmarketos/upstreaming, phone-devel On 3/10/26 11:49 PM, Dmitry Baryshkov wrote: > On Tue, Mar 10, 2026 at 02:08:40PM +0100, Konrad Dybcio wrote: >> On 3/8/26 4:52 PM, Cristian Cozzolino via B4 Relay wrote: >>> From: Cristian Cozzolino <cristian_ci@protonmail.com> >>> >>> This device uses a Goodix GT5688 touch controller, connected to i2c_3. >>> Add it to the device tree. >>> >>> Signed-off-by: Cristian Cozzolino <cristian_ci@protonmail.com> >>> --- >>> .../arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts | 32 ++++++++++++++++++++++ >>> 1 file changed, 32 insertions(+) >>> >>> diff --git a/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts b/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts >>> index 7b2849405462..709ea6fc9fbb 100644 >>> --- a/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts >>> +++ b/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts >>> @@ -94,6 +94,31 @@ &hsusb_phy { >>> status = "okay"; >>> }; >>> >>> +&i2c_3 { >>> + status = "okay"; >>> + >>> + touchscreen@5d { >>> + compatible = "goodix,gt5688"; >>> + reg = <0x5d>; >>> + >>> + interrupts-extended = <&tlmm 65 IRQ_TYPE_LEVEL_LOW>; >> >> interrupts *and* irq-gpios sounds wrong.. and I think the driver doesn't >> even consume the former. Trying to read through some of that, I think > > I think you need both, take a look, there are enough users of > ts->gpiod_int. I said irq-gpios was necessary, interrupts is not. The only retrieval happens through: if (soc_intel_is_cht() && ts->gpio_count == 2 && ts->gpio_int_idx != -1) { irq = acpi_dev_gpio_irq_get(ACPI_COMPANION(dev), 0); if (irq > 0 && irq != ts->client->irq) { dev_warn(dev, "Overriding IRQ %d -> %d\n", ts->client->irq, irq); ts->client->irq = irq; } } Konrad ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [PATCH 5/6] arm64: dts: qcom: msm8953-flipkart-rimob: Enable touchscreen 2026-03-11 12:47 ` Konrad Dybcio @ 2026-03-11 13:16 ` Dmitry Baryshkov 2026-03-11 13:38 ` Konrad Dybcio 0 siblings, 1 reply; 35+ messages in thread From: Dmitry Baryshkov @ 2026-03-11 13:16 UTC (permalink / raw) To: Konrad Dybcio Cc: cristian_ci, Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio, dri-devel, devicetree, linux-kernel, linux-arm-msm, ~postmarketos/upstreaming, phone-devel On Wed, Mar 11, 2026 at 01:47:48PM +0100, Konrad Dybcio wrote: > On 3/10/26 11:49 PM, Dmitry Baryshkov wrote: > > On Tue, Mar 10, 2026 at 02:08:40PM +0100, Konrad Dybcio wrote: > >> On 3/8/26 4:52 PM, Cristian Cozzolino via B4 Relay wrote: > >>> From: Cristian Cozzolino <cristian_ci@protonmail.com> > >>> > >>> This device uses a Goodix GT5688 touch controller, connected to i2c_3. > >>> Add it to the device tree. > >>> > >>> Signed-off-by: Cristian Cozzolino <cristian_ci@protonmail.com> > >>> --- > >>> .../arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts | 32 ++++++++++++++++++++++ > >>> 1 file changed, 32 insertions(+) > >>> > >>> diff --git a/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts b/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts > >>> index 7b2849405462..709ea6fc9fbb 100644 > >>> --- a/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts > >>> +++ b/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts > >>> @@ -94,6 +94,31 @@ &hsusb_phy { > >>> status = "okay"; > >>> }; > >>> > >>> +&i2c_3 { > >>> + status = "okay"; > >>> + > >>> + touchscreen@5d { > >>> + compatible = "goodix,gt5688"; > >>> + reg = <0x5d>; > >>> + > >>> + interrupts-extended = <&tlmm 65 IRQ_TYPE_LEVEL_LOW>; > >> > >> interrupts *and* irq-gpios sounds wrong.. and I think the driver doesn't > >> even consume the former. Trying to read through some of that, I think > > > > I think you need both, take a look, there are enough users of > > ts->gpiod_int. > > I said irq-gpios was necessary, interrupts is not. The only retrieval > happens through: > > if (soc_intel_is_cht() && ts->gpio_count == 2 && ts->gpio_int_idx != -1) { > irq = acpi_dev_gpio_irq_get(ACPI_COMPANION(dev), 0); > if (irq > 0 && irq != ts->client->irq) { > dev_warn(dev, "Overriding IRQ %d -> %d\n", ts->client->irq, irq); > ts->client->irq = irq; > } > } static int goodix_request_irq(struct goodix_ts_data *ts) { if (!ts->client->irq) return 0; return devm_request_threaded_irq(&ts->client->dev, ts->client->irq, NULL, goodix_ts_irq_handler, ts->irq_flags, ts->client->name, ts); } I thought that i2c_client->irq is handled by the core. > > Konrad -- With best wishes Dmitry ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [PATCH 5/6] arm64: dts: qcom: msm8953-flipkart-rimob: Enable touchscreen 2026-03-11 13:16 ` Dmitry Baryshkov @ 2026-03-11 13:38 ` Konrad Dybcio 0 siblings, 0 replies; 35+ messages in thread From: Konrad Dybcio @ 2026-03-11 13:38 UTC (permalink / raw) To: Dmitry Baryshkov Cc: cristian_ci, Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio, dri-devel, devicetree, linux-kernel, linux-arm-msm, ~postmarketos/upstreaming, phone-devel On 3/11/26 2:16 PM, Dmitry Baryshkov wrote: > On Wed, Mar 11, 2026 at 01:47:48PM +0100, Konrad Dybcio wrote: >> On 3/10/26 11:49 PM, Dmitry Baryshkov wrote: >>> On Tue, Mar 10, 2026 at 02:08:40PM +0100, Konrad Dybcio wrote: >>>> On 3/8/26 4:52 PM, Cristian Cozzolino via B4 Relay wrote: >>>>> From: Cristian Cozzolino <cristian_ci@protonmail.com> >>>>> >>>>> This device uses a Goodix GT5688 touch controller, connected to i2c_3. >>>>> Add it to the device tree. >>>>> >>>>> Signed-off-by: Cristian Cozzolino <cristian_ci@protonmail.com> >>>>> --- >>>>> .../arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts | 32 ++++++++++++++++++++++ >>>>> 1 file changed, 32 insertions(+) >>>>> >>>>> diff --git a/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts b/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts >>>>> index 7b2849405462..709ea6fc9fbb 100644 >>>>> --- a/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts >>>>> +++ b/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts >>>>> @@ -94,6 +94,31 @@ &hsusb_phy { >>>>> status = "okay"; >>>>> }; >>>>> >>>>> +&i2c_3 { >>>>> + status = "okay"; >>>>> + >>>>> + touchscreen@5d { >>>>> + compatible = "goodix,gt5688"; >>>>> + reg = <0x5d>; >>>>> + >>>>> + interrupts-extended = <&tlmm 65 IRQ_TYPE_LEVEL_LOW>; >>>> >>>> interrupts *and* irq-gpios sounds wrong.. and I think the driver doesn't >>>> even consume the former. Trying to read through some of that, I think >>> >>> I think you need both, take a look, there are enough users of >>> ts->gpiod_int. >> >> I said irq-gpios was necessary, interrupts is not. The only retrieval >> happens through: >> >> if (soc_intel_is_cht() && ts->gpio_count == 2 && ts->gpio_int_idx != -1) { >> irq = acpi_dev_gpio_irq_get(ACPI_COMPANION(dev), 0); >> if (irq > 0 && irq != ts->client->irq) { >> dev_warn(dev, "Overriding IRQ %d -> %d\n", ts->client->irq, irq); >> ts->client->irq = irq; >> } >> } > > static int goodix_request_irq(struct goodix_ts_data *ts) > { > if (!ts->client->irq) > return 0; > > return devm_request_threaded_irq(&ts->client->dev, ts->client->irq, > NULL, goodix_ts_irq_handler, > ts->irq_flags, ts->client->name, ts); > } > > I thought that i2c_client->irq is handled by the core. Ohhhh that explains things Cristian, please ignore my request to remove it then Konrad ^ permalink raw reply [flat|nested] 35+ messages in thread
* [PATCH 6/6] arm64: dts: qcom: msm8953-flipkart-rimob: Enable Hall sensor 2026-03-08 15:52 [PATCH 0/6] Enable new features for flipkart-rimob Cristian Cozzolino via B4 Relay ` (4 preceding siblings ...) 2026-03-08 15:52 ` [PATCH 5/6] arm64: dts: qcom: msm8953-flipkart-rimob: Enable touchscreen Cristian Cozzolino via B4 Relay @ 2026-03-08 15:52 ` Cristian Cozzolino via B4 Relay 2026-03-08 15:14 ` Dmitry Baryshkov 5 siblings, 1 reply; 35+ messages in thread From: Cristian Cozzolino via B4 Relay @ 2026-03-08 15:52 UTC (permalink / raw) To: Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio Cc: dri-devel, devicetree, linux-kernel, linux-arm-msm, ~postmarketos/upstreaming, phone-devel, Cristian Cozzolino From: Cristian Cozzolino <cristian_ci@protonmail.com> Enable the Hall effect sensor (flip cover) for Billion Capture+. The GPIO is mapped to SW_LID events as in other qcom devices. Signed-off-by: Cristian Cozzolino <cristian_ci@protonmail.com> --- .../arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts | 25 ++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts b/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts index 709ea6fc9fbb..83812050a0a3 100644 --- a/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts +++ b/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts @@ -44,6 +44,24 @@ framebuffer@90001000 { }; }; + gpio-hall-sensor { + compatible = "gpio-keys"; + + pinctrl-0 = <&hall_sensor_default>; + pinctrl-names = "default"; + + label = "GPIO Hall Effect Sensor"; + + event-hall-sensor { + label = "Hall Effect Sensor"; + gpios = <&tlmm 46 GPIO_ACTIVE_LOW>; + linux,input-type = <EV_SW>; + linux,code = <SW_LID>; + linux,can-disable; + wakeup-source; + }; + }; + gpio-keys { compatible = "gpio-keys"; @@ -335,6 +353,13 @@ gpio_key_default: gpio-key-default-state { bias-pull-up; }; + hall_sensor_default: hall-sensor-default-state { + pins = "gpio46"; + function = "gpio"; + drive-strength = <2>; + bias-disable; + }; + mdss_default: mdss-default-state { pins = "gpio61"; function = "gpio"; -- 2.52.0 ^ permalink raw reply related [flat|nested] 35+ messages in thread
* Re: [PATCH 6/6] arm64: dts: qcom: msm8953-flipkart-rimob: Enable Hall sensor 2026-03-08 15:52 ` [PATCH 6/6] arm64: dts: qcom: msm8953-flipkart-rimob: Enable Hall sensor Cristian Cozzolino via B4 Relay @ 2026-03-08 15:14 ` Dmitry Baryshkov 0 siblings, 0 replies; 35+ messages in thread From: Dmitry Baryshkov @ 2026-03-08 15:14 UTC (permalink / raw) To: cristian_ci Cc: Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio, dri-devel, devicetree, linux-kernel, linux-arm-msm, ~postmarketos/upstreaming, phone-devel On Sun, Mar 08, 2026 at 04:52:46PM +0100, Cristian Cozzolino via B4 Relay wrote: > From: Cristian Cozzolino <cristian_ci@protonmail.com> > > Enable the Hall effect sensor (flip cover) for Billion Capture+. > The GPIO is mapped to SW_LID events as in other qcom devices. > > Signed-off-by: Cristian Cozzolino <cristian_ci@protonmail.com> > --- > .../arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts | 25 ++++++++++++++++++++++ > 1 file changed, 25 insertions(+) > > diff --git a/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts b/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts > index 709ea6fc9fbb..83812050a0a3 100644 > --- a/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts > +++ b/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts > @@ -44,6 +44,24 @@ framebuffer@90001000 { > }; > }; > > + gpio-hall-sensor { > + compatible = "gpio-keys"; Is there a reason to have a separate device for it? It can be squashed into the following gpio-keys. > + > + pinctrl-0 = <&hall_sensor_default>; > + pinctrl-names = "default"; > + > + label = "GPIO Hall Effect Sensor"; > + > + event-hall-sensor { > + label = "Hall Effect Sensor"; > + gpios = <&tlmm 46 GPIO_ACTIVE_LOW>; > + linux,input-type = <EV_SW>; > + linux,code = <SW_LID>; > + linux,can-disable; > + wakeup-source; > + }; > + }; > + > gpio-keys { > compatible = "gpio-keys"; > > @@ -335,6 +353,13 @@ gpio_key_default: gpio-key-default-state { > bias-pull-up; > }; > > + hall_sensor_default: hall-sensor-default-state { > + pins = "gpio46"; > + function = "gpio"; > + drive-strength = <2>; > + bias-disable; > + }; > + > mdss_default: mdss-default-state { > pins = "gpio61"; > function = "gpio"; > > -- > 2.52.0 > > -- With best wishes Dmitry ^ permalink raw reply [flat|nested] 35+ messages in thread
end of thread, other threads:[~2026-03-16 6:48 UTC | newest] Thread overview: 35+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-03-08 15:52 [PATCH 0/6] Enable new features for flipkart-rimob Cristian Cozzolino via B4 Relay 2026-03-08 15:52 ` [PATCH 1/6] dt-bindings: display: panel: Add Novatek NT35532 LCD DSI Cristian Cozzolino via B4 Relay 2026-03-08 16:13 ` Krzysztof Kozlowski 2026-03-09 14:52 ` cristian_ci 2026-03-09 15:08 ` Krzysztof Kozlowski 2026-03-10 17:48 ` cristian_ci 2026-03-10 20:06 ` Krzysztof Kozlowski 2026-03-13 8:26 ` cristian_ci 2026-03-13 8:32 ` Krzysztof Kozlowski 2026-03-16 6:47 ` cristian_ci 2026-03-08 15:52 ` [PATCH 2/6] drm/panel: Add driver for Novatek NT35532 Cristian Cozzolino via B4 Relay 2026-03-08 19:27 ` Dmitry Baryshkov 2026-03-12 8:27 ` cristian_ci 2026-03-12 15:19 ` Dmitry Baryshkov 2026-03-08 15:52 ` [PATCH 3/6] arm64: dts: qcom: msm8953-flipkart-rimob: Enable display and GPU Cristian Cozzolino via B4 Relay 2026-03-08 15:01 ` Dmitry Baryshkov 2026-03-10 11:27 ` Konrad Dybcio 2026-03-10 16:42 ` cristian_ci 2026-03-10 22:30 ` Dmitry Baryshkov 2026-03-12 7:58 ` cristian_ci 2026-03-12 15:22 ` Dmitry Baryshkov 2026-03-08 15:52 ` [PATCH 4/6] arm64: dts: qcom: msm8953-flipkart-rimob: Enable WiFi/Bluetooth Cristian Cozzolino via B4 Relay 2026-03-08 15:08 ` Dmitry Baryshkov 2026-03-10 11:27 ` Konrad Dybcio 2026-03-08 15:52 ` [PATCH 5/6] arm64: dts: qcom: msm8953-flipkart-rimob: Enable touchscreen Cristian Cozzolino via B4 Relay 2026-03-10 13:08 ` Konrad Dybcio 2026-03-10 16:20 ` cristian_ci 2026-03-11 13:03 ` Konrad Dybcio 2026-03-12 7:35 ` cristian_ci 2026-03-10 22:49 ` Dmitry Baryshkov 2026-03-11 12:47 ` Konrad Dybcio 2026-03-11 13:16 ` Dmitry Baryshkov 2026-03-11 13:38 ` Konrad Dybcio 2026-03-08 15:52 ` [PATCH 6/6] arm64: dts: qcom: msm8953-flipkart-rimob: Enable Hall sensor Cristian Cozzolino via B4 Relay 2026-03-08 15:14 ` Dmitry Baryshkov
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox