Add Anbernic RG Vita-Pro
Subsystems (6)
cover Add Anbernic RG Vita-Pro
From: Chris Morgan <[email protected]>
Add support for the Anbernic RG Vita-Pro, based on the Rockchip RK3576 SoC.
Chris Morgan (6):
dt-bindings: power: supply: sgm41542: document sgm41542
power: supply: sgm41542: Add SG Micro sgm41542 charger
dt-bindings: display: panel: document Anbernic TD4310 panel drm/panel: anbernic-td4310: Add RG Vita Pro panel
dt-bindings: arm: rockchip: Add Anbernic RG Vita-Pro
arm64: dts: rockchip: Add Anbernic RG Vita-Pro
.../devicetree/bindings/arm/rockchip.yaml | 6 + .../display/panel/anbernic,td4310.yaml | 63 + .../supply/sgmicro,sgm41542-charger.yaml | 99 ++ arch/arm64/boot/dts/rockchip/Makefile | 3 + .../rockchip/rk3576-anbernic-rg-vita-pro.dts | 1317 +++++++++++++++++ drivers/gpu/drm/panel/Kconfig | 10 + drivers/gpu/drm/panel/Makefile | 1 + drivers/gpu/drm/panel/panel-anbernic-td4310.c | 291 ++++ drivers/power/supply/Kconfig | 8 + drivers/power/supply/Makefile | 1 + drivers/power/supply/sgm41542_charger.c | 1045 +++++++++++++ 11 files changed, 2844 insertions(+) create mode 100644 Documentation/devicetree/bindings/display/panel/anbernic,td4310.yaml create mode 100644 Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml create mode 100644 arch/arm64/boot/dts/rockchip/rk3576-anbernic-rg-vita-pro.dts create mode 100644 drivers/gpu/drm/panel/panel-anbernic-td4310.c create mode 100644 drivers/power/supply/sgm41542_charger.c
Signature · 1 line
2.43.0
PATCH 1/6 dt-bindings: power: supply: sgm41542: document sgm41542
From: Chris Morgan <[email protected]>
Document the SG Micro sgm41542 battery charger/boost converter.
--- .../supply/sgmicro,sgm41542-charger.yaml | 99 +++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml new file +99 -0
@@ -0,0 +1,99 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/power/supply/sgmicro,sgm41542-charger.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: SGM41542 Battery Charger + +description: | + The SGMicro SGM41542 is a single cell battery charger/boost controller. + +maintainers: + - Chris Morgan <[email protected]> + - Xu Shengfei <[email protected]> + +properties: + compatible: + const: sgmicro,sgm41542 + + input-current-limit-microamp: + description: + Optional value to clamp the maximum input current limit to for + the device. If omitted, the default value for the hardware will + be used (2400000). + minimum: 100000 + maximum: 3800000 + + input-voltage-limit-microvolt: + description: + Optional value to clamp the maximum input voltage limit to for + the device. If omitted, the default value for the hardware will + be used (4500000). + minimum: 3900000 + maximum: 12000000 + + interrupts: + maxItems: 1 + + monitored-battery: + description: | + A phandle to a monitored battery node. Values for the following + are used by the driver and if not present will result in default + values being applied: + constant-charge-current-max-microamp + constant-charge-voltage-max-microvolt + charge-term-current-microamp + precharge-current-microamp + + reg: + maxItems: 1 + + regulators: + type: object + properties: + otg-vbus: + type: object + description: OTG boost regulator + $ref: /schemas/regulator/regulator.yaml + unevaluatedProperties: false + additionalProperties: false + +required: + - compatible + - reg + +additionalProperties: false + +examples: + - | + battery: battery { + compatible = "simple-battery"; + constant-charge-current-max-microamp = <10000000>; + constant-charge-voltage-max-microvolt = <4350000>; + precharge-current-microamp = <180000>; + charge-term-current-microamp = <300000>; + }; + #include <dt-bindings/gpio/gpio.h> + #include <dt-bindings/interrupt-controller/irq.h> + i2c { + #address-cells = <1>; + #size-cells = <0>; + + charger@3b { + compatible = "sgmicro,sgm41542"; + reg = <0x3b>; + input-current-limit-microamp = <3000000>; + input-voltage-limit-microvolt = <4500000>; + interrupt-parent = <&gpio0>; + interrupts = <26 IRQ_TYPE_EDGE_FALLING>; + monitored-battery = <&battery>; + + regulators { + otg-vbus { + regulator-max-microvolt = <5000000>; + regulator-min-microvolt = <5000000>; + }; + }; + }; + };
Signature · 1 line
2.43.0
Re: [PATCH 1/6] dt-bindings: power: supply: sgm41542: document sgm41542
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml
Quoted 15 lines · Chris Morgan
From: Chris Morgan <[email protected]>
Document the SG Micro sgm41542 battery charger/boost converter.
Signed-off-by Chris Morgan <[email protected]>--- .../supply/sgmicro,sgm41542-charger.yaml | 99 +++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yamlDocumentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml new file +0
-0
Filename must match compatible.
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml line 9
Quoted 10 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml new file +9
-0@@ -0,0 +1,99 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/power/supply/sgmicro,sgm41542-charger.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: SGM41542 Battery Charger + +description: |
Do not need '|' unless you need to preserve formatting.
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml line 20
Quoted 11 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml new file +11
-0+ The SGMicro SGM41542 is a single cell battery charger/boost controller. + +maintainers: + - Chris Morgan <[email protected]> + - Xu Shengfei <[email protected]> + +properties: + compatible: + const: sgmicro,sgm41542 + + input-current-limit-microamp:
Missing vendor prefix.
Quoted 9 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml new file +9
-0+ description: + Optional value to clamp the maximum input current limit to for + the device. If omitted, the default value for the hardware will + be used (2400000). + minimum: 100000 + maximum: 3800000 + + input-voltage-limit-microvolt: + description:
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml line 39
Quoted 10 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml new file +10
-0+ Optional value to clamp the maximum input voltage limit to for + the device. If omitted, the default value for the hardware will + be used (4500000). + minimum: 3900000 + maximum: 12000000 + + interrupts: + maxItems: 1 + + monitored-battery:
You miss definition of this property. I guess this is power supply, so reference proper schema for power supplies. Look at other bindings to for some example code.
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml line 52
Quoted 13 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml new file +13
-0+ description: | + A phandle to a monitored battery node. Values for the following + are used by the driver and if not present will result in default + values being applied: + constant-charge-current-max-microamp + constant-charge-voltage-max-microvolt + charge-term-current-microamp + precharge-current-microamp + + reg: + maxItems: 1 + + regulators:
No need for regulators node, just define here otg-vbus directly. But honestly, your example is incomplete or you defined something implied by the compatible. If you have a fixed 5V regulator, what is the point of defining it in the DT?
Quoted 15 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml new file +15
-0+ type: object + properties: + otg-vbus: + type: object + description: OTG boost regulator + $ref: /schemas/regulator/regulator.yaml + unevaluatedProperties: false + additionalProperties: false + +required: + - compatible + - reg + +additionalProperties: false +
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml line 77
Quoted 10 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml new file +10
-0+examples: + - | + battery: battery { + compatible = "simple-battery"; + constant-charge-current-max-microamp = <10000000>; + constant-charge-voltage-max-microvolt = <4350000>; + precharge-current-microamp = <180000>; + charge-term-current-microamp = <300000>; + }; + #include <dt-bindings/gpio/gpio.h>
Drop this one
Quoted 25 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml new file +22
-0+ #include <dt-bindings/interrupt-controller/irq.h> + i2c { + #address-cells = <1>; + #size-cells = <0>; + + charger@3b { + compatible = "sgmicro,sgm41542"; + reg = <0x3b>; + input-current-limit-microamp = <3000000>; + input-voltage-limit-microvolt = <4500000>; + interrupt-parent = <&gpio0>; + interrupts = <26 IRQ_TYPE_EDGE_FALLING>; + monitored-battery = <&battery>; + + regulators { + otg-vbus { + regulator-max-microvolt = <5000000>; + regulator-min-microvolt = <5000000>; + }; + }; + }; + };Signature · 1 line
2.43.0
Re: [PATCH 1/6] dt-bindings: power: supply: sgm41542: document sgm41542
Quoted 11 lines · Krzysztof Kozlowski
Quoted 10 lines · Chris Morgan
From: Chris Morgan <[email protected]>
Document the SG Micro sgm41542 battery charger/boost converter.
Signed-off-by Chris Morgan <[email protected]>--- .../supply/sgmicro,sgm41542-charger.yaml | 99 +++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml
Quoted 7 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml
Quoted 5 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml new file +0
-0Filename must match compatible.
Acknowledged.
Quoted 14 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml line 9
Quoted 11 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml new file +9
-0@@ -0,0 +1,99 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/power/supply/sgmicro,sgm41542-charger.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: SGM41542 Battery Charger + +description: |Do not need '|' unless you need to preserve formatting.
Will fix.
Quoted 5 lines
Quoted 5 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml new file +5
-0+ The SGMicro SGM41542 is a single cell battery charger/boost controller. + +maintainers: + - Chris Morgan <[email protected]> + - Xu Shengfei <[email protected]>
Quoted 9 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml line 20
Quoted 6 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml new file +6
-0+ +properties: + compatible: + const: sgmicro,sgm41542 + + input-current-limit-microamp:Missing vendor prefix.
This *appears* to be a standard value (perhaps not formally, but in use by enough devices to suggest a defacto standard), which is why I did not use the vendor prefix here. Do I need to add that for this one?
Quoted 15 lines
Quoted 15 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml new file +15
-0+ description: + Optional value to clamp the maximum input current limit to for + the device. If omitted, the default value for the hardware will + be used (2400000). + minimum: 100000 + maximum: 3800000 + + input-voltage-limit-microvolt: + description: + Optional value to clamp the maximum input voltage limit to for + the device. If omitted, the default value for the hardware will + be used (4500000). + minimum: 3900000 + maximum: 12000000 +
Quoted 8 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml line 39
Quoted 4 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml new file +4
-0+ interrupts: + maxItems: 1 + + monitored-battery:You miss definition of this property. I guess this is power supply, so reference proper schema for power supplies. Look at other bindings to for some example code.
I'll look at this some more, I might have a few more questions. But I will make the changes requested.
Quoted 11 lines
Quoted 11 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml new file +10
-0+ description: | + A phandle to a monitored battery node. Values for the following + are used by the driver and if not present will result in default + values being applied: + constant-charge-current-max-microamp + constant-charge-voltage-max-microvolt + charge-term-current-microamp + precharge-current-microamp + + reg:
Quoted 8 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml line 52
Quoted 3 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml new file +3
-0+ maxItems: 1 + + regulators:No need for regulators node, just define here otg-vbus directly. But honestly, your example is incomplete or you defined something implied by the compatible. If you have a fixed 5V regulator, what is the point of defining it in the DT?
The regulator can be adjusted within a range around 5V, and is referenced by the USB subsystem. Should I still omit it from the device tree or instead define the min and max values?
Quoted 20 lines
Quoted 20 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml new file +19
-0+ type: object + properties: + otg-vbus: + type: object + description: OTG boost regulator + $ref: /schemas/regulator/regulator.yaml + unevaluatedProperties: false + additionalProperties: false + +required: + - compatible + - reg + +additionalProperties: false + +examples: + - | + battery: battery { + compatible = "simple-battery";
Quoted 8 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml line 77
Quoted 6 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml new file +6
-0+ constant-charge-current-max-microamp = <10000000>; + constant-charge-voltage-max-microvolt = <4350000>; + precharge-current-microamp = <180000>; + charge-term-current-microamp = <300000>; + }; + #include <dt-bindings/gpio/gpio.h>Drop this one
Will do.
Quoted 18 lines
Quoted 18 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml new file +17
-0+ #include <dt-bindings/interrupt-controller/irq.h> + i2c { + #address-cells = <1>; + #size-cells = <0>; + + charger@3b { + compatible = "sgmicro,sgm41542"; + reg = <0x3b>; + input-current-limit-microamp = <3000000>; + input-voltage-limit-microvolt = <4500000>; + interrupt-parent = <&gpio0>; + interrupts = <26 IRQ_TYPE_EDGE_FALLING>; + monitored-battery = <&battery>; + + regulators { + otg-vbus { + regulator-max-microvolt = <5000000>;
Quoted 8 lines
Quoted 8 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml new file +5
-0+ regulator-min-microvolt = <5000000>; + }; + }; + }; + };Signature · 1 line
2.43.0
Thank you for your valuable feedback,
Chris
Re: [PATCH 1/6] dt-bindings: power: supply: sgm41542: document sgm41542
Quoted 54 lines · Chris Morgan
Quoted 11 lines · Krzysztof Kozlowski
Quoted 10 lines · Chris Morgan
From: Chris Morgan <[email protected]>
Document the SG Micro sgm41542 battery charger/boost converter.
Signed-off-by Chris Morgan <[email protected]>--- .../supply/sgmicro,sgm41542-charger.yaml | 99 +++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yamlQuoted 7 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml
Quoted 5 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml new file +0
-0Filename must match compatible.
Acknowledged.
Quoted 14 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml line 9
Quoted 11 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml new file +9
-0@@ -0,0 +1,99 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/power/supply/sgmicro,sgm41542-charger.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: SGM41542 Battery Charger + +description: |Do not need '|' unless you need to preserve formatting.
Will fix.
Quoted 5 lines
Quoted 5 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml new file +5
-0+ The SGMicro SGM41542 is a single cell battery charger/boost controller. + +maintainers: + - Chris Morgan <[email protected]> + - Xu Shengfei <[email protected]>Quoted 9 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml line 20
Quoted 6 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml new file +6
-0+ +properties: + compatible: + const: sgmicro,sgm41542 + + input-current-limit-microamp:Missing vendor prefix.
Quoted 3 lines
This *appears* to be a standard value (perhaps not formally, but in use by enough devices to suggest a defacto standard), which is why I did not use the vendor prefix here. Do I need to add that for this one?
I know, I found these other properties but I think they were just coming from old schema.
If it is really a common property, then should be defined in a common schema and this did not happen.
Quoted 48 lines
Quoted 16 lines
Quoted 16 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml new file +15
-0+ description: + Optional value to clamp the maximum input current limit to for + the device. If omitted, the default value for the hardware will + be used (2400000). + minimum: 100000 + maximum: 3800000 + + input-voltage-limit-microvolt: + description: + Optional value to clamp the maximum input voltage limit to for + the device. If omitted, the default value for the hardware will + be used (4500000). + minimum: 3900000 + maximum: 12000000 +Quoted 8 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml line 39
Quoted 4 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml new file +4
-0+ interrupts: + maxItems: 1 + + monitored-battery:You miss definition of this property. I guess this is power supply, so reference proper schema for power supplies. Look at other bindings to for some example code.
I'll look at this some more, I might have a few more questions. But I will make the changes requested.
Quoted 11 lines
Quoted 11 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml new file +10
-0+ description: | + A phandle to a monitored battery node. Values for the following + are used by the driver and if not present will result in default + values being applied: + constant-charge-current-max-microamp + constant-charge-voltage-max-microvolt + charge-term-current-microamp + precharge-current-microamp + + reg:Quoted 8 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml line 52
Quoted 3 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml new file +3
-0+ maxItems: 1 + + regulators:No need for regulators node, just define here otg-vbus directly. But honestly, your example is incomplete or you defined something implied by the compatible. If you have a fixed 5V regulator, what is the point of defining it in the DT?
Quoted 3 lines
The regulator can be adjusted within a range around 5V, and is referenced by the USB subsystem. Should I still omit it from the device tree or instead define the min and max values?
If it can be adjusted then it's fine, can stay.
Best regards,
Krzysztof
Re: [PATCH 1/6] dt-bindings: power: supply: sgm41542: document sgm41542
Quoted 59 lines · Krzysztof Kozlowski
Quoted 54 lines · Chris Morgan
Quoted 11 lines · Krzysztof Kozlowski
Quoted 10 lines · Chris Morgan
From: Chris Morgan <[email protected]>
Document the SG Micro sgm41542 battery charger/boost converter.
Signed-off-by Chris Morgan <[email protected]>--- .../supply/sgmicro,sgm41542-charger.yaml | 99 +++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yamlQuoted 7 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml
Quoted 5 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml new file +0
-0Filename must match compatible.
Acknowledged.
Quoted 14 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml line 9
Quoted 11 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml new file +9
-0@@ -0,0 +1,99 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/power/supply/sgmicro,sgm41542-charger.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: SGM41542 Battery Charger + +description: |Do not need '|' unless you need to preserve formatting.
Will fix.
Quoted 5 lines
Quoted 5 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml new file +5
-0+ The SGMicro SGM41542 is a single cell battery charger/boost controller. + +maintainers: + - Chris Morgan <[email protected]> + - Xu Shengfei <[email protected]>Quoted 9 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml line 20
Quoted 6 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml new file +6
-0+ +properties: + compatible: + const: sgmicro,sgm41542 + + input-current-limit-microamp:Missing vendor prefix.
Quoted 3 lines
This *appears* to be a standard value (perhaps not formally, but in use by enough devices to suggest a defacto standard), which is why I did not use the vendor prefix here. Do I need to add that for this one?
Quoted 5 lines
I know, I found these other properties but I think they were just coming from old schema.
If it is really a common property, then should be defined in a common schema and this did not happen.
Would now be a good time to add it to the power-supply.yaml document? It looks like this value is used by about 10 other devices.
Thank you,
Chris
Quoted 58 lines
Quoted 49 lines
Quoted 17 lines
Quoted 17 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml new file +15
-0+ description: + Optional value to clamp the maximum input current limit to for + the device. If omitted, the default value for the hardware will + be used (2400000). + minimum: 100000 + maximum: 3800000 + + input-voltage-limit-microvolt: + description: + Optional value to clamp the maximum input voltage limit to for + the device. If omitted, the default value for the hardware will + be used (4500000). + minimum: 3900000 + maximum: 12000000 +Quoted 8 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml line 39
Quoted 4 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml new file +4
-0+ interrupts: + maxItems: 1 + + monitored-battery:You miss definition of this property. I guess this is power supply, so reference proper schema for power supplies. Look at other bindings to for some example code.
I'll look at this some more, I might have a few more questions. But I will make the changes requested.
Quoted 11 lines
Quoted 11 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml new file +10
-0+ description: | + A phandle to a monitored battery node. Values for the following + are used by the driver and if not present will result in default + values being applied: + constant-charge-current-max-microamp + constant-charge-voltage-max-microvolt + charge-term-current-microamp + precharge-current-microamp + + reg:Quoted 8 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml line 52
Quoted 3 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml new file +3
-0+ maxItems: 1 + + regulators:No need for regulators node, just define here otg-vbus directly. But honestly, your example is incomplete or you defined something implied by the compatible. If you have a fixed 5V regulator, what is the point of defining it in the DT?
Quoted 3 lines
The regulator can be adjusted within a range around 5V, and is referenced by the USB subsystem. Should I still omit it from the device tree or instead define the min and max values?
If it can be adjusted then it's fine, can stay.
Best regards,
Krzysztof
Re: [PATCH 1/6] dt-bindings: power: supply: sgm41542: document sgm41542
Quoted 60 lines · Chris Morgan
Quoted 59 lines · Krzysztof Kozlowski
Quoted 57 lines · Chris Morgan
Quoted 11 lines · Krzysztof Kozlowski
Quoted 10 lines · Chris Morgan
From: Chris Morgan <[email protected]>
Document the SG Micro sgm41542 battery charger/boost converter.
Signed-off-by Chris Morgan <[email protected]>--- .../supply/sgmicro,sgm41542-charger.yaml | 99 +++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yamlQuoted 7 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml
Quoted 5 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml new file +0
-0Filename must match compatible.
Acknowledged.
Quoted 14 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml line 9
Quoted 11 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml new file +9
-0@@ -0,0 +1,99 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/power/supply/sgmicro,sgm41542-charger.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: SGM41542 Battery Charger + +description: |Do not need '|' unless you need to preserve formatting.
Will fix.
Quoted 5 lines
Quoted 5 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml new file +5
-0+ The SGMicro SGM41542 is a single cell battery charger/boost controller. + +maintainers: + - Chris Morgan <[email protected]> + - Xu Shengfei <[email protected]>Quoted 9 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml line 20
Quoted 6 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml new file +6
-0+ +properties: + compatible: + const: sgmicro,sgm41542 + + input-current-limit-microamp:Missing vendor prefix.
This *appears* to be a standard value (perhaps not formally, but in use by enough devices to suggest a defacto standard), which is why I did not use the vendor prefix here. Do I need to add that for this one?
Quoted 8 lines
Quoted 5 lines
I know, I found these other properties but I think they were just coming from old schema.
If it is really a common property, then should be defined in a common schema and this did not happen.
Would now be a good time to add it to the
power-supply.yamldocument? It looks like this value is used by about 10 other devices.
I have mixed feelings. Adding it there would mean that all schemas using unevaluatedProperties will get that property. That suggests they have such limiting ability in hardware or this ABI is implemented in some generic part of the kernel.
None of these are true, I think.
Maybe we need some documented guidance on usage of common schemas.
Best regards,
Krzysztof
Re: [PATCH 1/6] dt-bindings: power: supply: sgm41542: document sgm41542
Quoted 75 lines · Krzysztof Kozlowski
Quoted 60 lines · Chris Morgan
Quoted 59 lines · Krzysztof Kozlowski
Quoted 57 lines · Chris Morgan
Quoted 11 lines · Krzysztof Kozlowski
Quoted 10 lines · Chris Morgan
From: Chris Morgan <[email protected]>
Document the SG Micro sgm41542 battery charger/boost converter.
Signed-off-by Chris Morgan <[email protected]>--- .../supply/sgmicro,sgm41542-charger.yaml | 99 +++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yamlQuoted 7 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml
Quoted 5 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml new file +0
-0Filename must match compatible.
Acknowledged.
Quoted 14 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml line 9
Quoted 11 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml new file +9
-0@@ -0,0 +1,99 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/power/supply/sgmicro,sgm41542-charger.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: SGM41542 Battery Charger + +description: |Do not need '|' unless you need to preserve formatting.
Will fix.
Quoted 5 lines
Quoted 5 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml new file +5
-0+ The SGMicro SGM41542 is a single cell battery charger/boost controller. + +maintainers: + - Chris Morgan <[email protected]> + - Xu Shengfei <[email protected]>Quoted 9 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml line 20
Quoted 6 lines
Documentation/devicetree/bindings/power/supply/sgmicro,sgm41542-charger.yaml new file +6
-0+ +properties: + compatible: + const: sgmicro,sgm41542 + + input-current-limit-microamp:Missing vendor prefix.
This *appears* to be a standard value (perhaps not formally, but in use by enough devices to suggest a defacto standard), which is why I did not use the vendor prefix here. Do I need to add that for this one?
Quoted 8 lines
Quoted 5 lines
I know, I found these other properties but I think they were just coming from old schema.
If it is really a common property, then should be defined in a common schema and this did not happen.
Would now be a good time to add it to the
power-supply.yamldocument? It looks like this value is used by about 10 other devices.I have mixed feelings. Adding it there would mean that all schemas using unevaluatedProperties will get that property. That suggests they have such limiting ability in hardware or this ABI is implemented in some generic part of the kernel.
Quoted 6 lines
None of these are true, I think.
Maybe we need some documented guidance on usage of common schemas.
Best regards,
Krzysztof
Would you recommend I just use the vendor prefix then here? Or add this to power supply as an option? Or is there a 3rd option you would like for me to pursue?
Thank you,
Chris
Quoted 6 lines
_______________________________________________
Linux-rockchip mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-rockchip
PATCH 2/6 power: supply: sgm41542: Add SG Micro sgm41542 charger
In reply to Chris MorganFrom: Chris Morgan <[email protected]>
Add support for the SG Micro SGM41542 charger/boost converter. Driver was adapted from Rockchip BSP driver [1] and confirmed with vendor datasheet [2].
[1] https://github.com/rockchip-linux/kernel/blob/develop-6.6/drivers/power/supply/sgm41542_charger.c
[2] https://www.sg-micro.de/rect/assets/1e8de70b-657e-4156-be68-a64fdbe8e418/SGM41541_SGM41542.pdf
--- drivers/power/supply/Kconfig | 8 + drivers/power/supply/Makefile | 1 + drivers/power/supply/sgm41542_charger.c | 1045 +++++++++++++++++++++++ 3 files changed, 1054 insertions(+) create mode 100644 drivers/power/supply/sgm41542_charger.c
drivers/power/supply/Kconfig +8 -0
@@ -856,6 +856,14 @@ config CHARGER_RK817 help Say Y to include support for Rockchip RK817 Battery Charger. +config CHARGER_SGM41542 + tristate "SGM41542 charger driver" + depends on I2C + depends on GPIOLIB || COMPILE_TEST + select REGMAP_I2C + help + Say Y to enable support for the SGM41542 battery charger. + config CHARGER_SMB347 tristate "Summit Microelectronics SMB3XX Battery Charger" depends on I2C
drivers/power/supply/Makefile +1 -0
@@ -107,6 +107,7 @@ obj-$(CONFIG_CHARGER_BQ25890) += bq25890_charger.o obj-$(CONFIG_CHARGER_BQ25980) += bq25980_charger.o obj-$(CONFIG_CHARGER_BQ256XX) += bq256xx_charger.o obj-$(CONFIG_CHARGER_RK817) += rk817_charger.o +obj-$(CONFIG_CHARGER_SGM41542) += sgm41542_charger.o obj-$(CONFIG_CHARGER_SMB347) += smb347-charger.o obj-$(CONFIG_CHARGER_TPS65090) += tps65090-charger.o obj-$(CONFIG_CHARGER_TPS65217) += tps65217_charger.o
drivers/power/supply/sgm41542_charger.c new file +1045 -0
1,045 lines not on this page · raw message
Signature · 1 line
2.43.0
Re: [PATCH 2/6] power: supply: sgm41542: Add SG Micro sgm41542 charger
Quoted 11 lines · Chris Morgan
drivers/power/supply/sgm41542_charger.c new file +11
-0+strscpy (sgm->model_name, id->name,I2C_NAME_SIZE ); + + sgm->regmap =devm_regmap_init_i2c (client, &sgm4154x_regmap_config); +if (IS_ERR (sgm->regmap)) +return dev_err_probe (dev,PTR_ERR (sgm->regmap), +"Failed to allocate register map\n" ); + +i2c_set_clientdata (client, sgm); + + ret =sgm4154x_hw_chipid_detect (sgm); +if (ret)
drivers/power/supply/sgm41542_charger.c line 980
Quoted 10 lines
drivers/power/supply/sgm41542_charger.c new file +10
-0+dev_err_probe (dev, ret,"Unable to read HW ID\n" ); + +device_init_wakeup (dev,1 ); + +if (client->irq) { + ret =devm_request_threaded_irq (dev, client->irq,NULL , + sgm4154x_irq_handler_thread, +IRQF_TRIGGER_FALLING | +IRQF_ONESHOT , +"sgm41542-irq" , sgm);
Interrupt should be requested and enabled at the end or almost at the end. If it is triggered now, which supply are you marking as "changed"?
Code looks at least correct in relation between interrupt and workqueue, but it is not really obvious and thus not following established coding practice. Practice is usually: first you allocate driver-like or memory-like resources, then you request hardware related resources. That's why every probe starts with devm_kzalloc(). Similarly with workqueue, initializing power supply etc.
Quoted 10 lines
drivers/power/supply/sgm41542_charger.c new file +10
-0+if (ret) +return ret; +enable_irq_wake (client->irq); + } + + ret =sgm4154x_power_supply_init (sgm, dev); +if (ret) +return dev_err_probe (dev, ret,"Failed to register power supply\n" ); + + ret =sgm4154x_hw_init (sgm);
drivers/power/supply/sgm41542_charger.c line 1000
Quoted 10 lines
drivers/power/supply/sgm41542_charger.c new file +10
-0+if (ret) +return dev_err_probe (dev, ret,"Cannot initialize the chip.\n" ); + + sgm->sgm_monitor_wq =alloc_ordered_workqueue ("%s" , +WQ_MEM_RECLAIM |WQ_FREEZABLE ,"sgm-monitor-wq" ); +if (!sgm->sgm_monitor_wq) +return -EINVAL ; + + ret =devm_add_action_or_reset (dev, sgm4154x_destroy_workqueue, + sgm->sgm_monitor_wq);
Use rather devm_alloc_ordered_workqueue().
Best regards,
Krzysztof
PATCH 3/6 dt-bindings: display: panel: document Anbernic TD4310 panel
In reply to Chris MorganFrom: Chris Morgan <[email protected]>
The panel used by Anbernic in the RG Vita-Pro is a DSI panel based on the TD4310 controller IC. It measures approximately 5.5 inches diagonally and is 1080x1920 in resolution.
--- .../display/panel/anbernic,td4310.yaml | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 Documentation/devicetree/bindings/display/panel/anbernic,td4310.yaml
Documentation/devicetree/bindings/display/panel/anbernic,td4310.yaml new file +63 -0
@@ -0,0 +1,63 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/display/panel/anbernic,td4310.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Anbernic TD4310 Based Panels + +maintainers: + - Chris Morgan <[email protected]> + +description: + Bindings for Anbernic TD4310 Based Panels, such as the RG-Vita-Pro + panel (a 1080x1920 5.5 inch panel). + +allOf: + - $ref: panel-common.yaml# + +properties: + compatible: + items: + - const: anbernic,panel-vita-pro + + reg: + maxItems: 1 + + vdd-supply: + description: Panel power supply + +required: + - compatible + - reg + - reset-gpios + - port + +unevaluatedProperties: false + +examples: + - | + #include <dt-bindings/gpio/gpio.h> + + dsi { + #address-cells = <1>; + #size-cells = <0>; + + panel@0 { + compatible = "anbernic,panel-vita-pro"; + reg = <0>; + backlight = <&backlight>; + enable-gpios = <&gpio0 9 GPIO_ACTIVE_HIGH>; + reset-gpios = <&gpio0 13 GPIO_ACTIVE_LOW>; + rotation = <270>; + vdd-supply = <&vdd_lcd>; + + port { + panel_in: endpoint { + remote-endpoint = <&dsi_out>; + }; + }; + }; + }; + +...
Signature · 1 line
2.43.0
Re: [PATCH 3/6] dt-bindings: display: panel: document Anbernic TD4310 panel
Quoted 21 lines · Chris Morgan
From: Chris Morgan <[email protected]>
The panel used by Anbernic in the RG Vita-Pro is a DSI panel based on the TD4310 controller IC. It measures approximately 5.5 inches diagonally and is 1080x1920 in resolution.
Signed-off-by Chris Morgan <[email protected]>--- .../display/panel/anbernic,td4310.yaml | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 Documentation/devicetree/bindings/display/panel/anbernic,td4310.yamlDocumentation/devicetree/bindings/display/panel/anbernic,td4310.yaml new file +3
-0@@ -0,0 +1,63 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +---
Documentation/devicetree/bindings/display/panel/anbernic,td4310.yaml line 13
Quoted 10 lines
Documentation/devicetree/bindings/display/panel/anbernic,td4310.yaml new file +10
-0+$id: http://devicetree.org/schemas/display/panel/anbernic,td4310.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Anbernic TD4310 Based Panels + +maintainers: + - Chris Morgan <[email protected]> + +description: + Bindings for Anbernic TD4310 Based Panels, such as the RG-Vita-Pro
Description says what the bindings are for. Your description says that bindings are for "bindings for"... Just describe the hardware.
Quoted 9 lines
Documentation/devicetree/bindings/display/panel/anbernic,td4310.yaml new file +9
-0+ panel (a 1080x1920 5.5 inch panel). + +allOf: + - $ref: panel-common.yaml# + +properties: + compatible: + items: + - const: anbernic,panel-vita-pro
Documentation/devicetree/bindings/display/panel/anbernic,td4310.yaml line 32
Quoted 10 lines
Documentation/devicetree/bindings/display/panel/anbernic,td4310.yaml new file +10
-0+ + reg: + maxItems: 1 + + vdd-supply: + description: Panel power supply + +required: + - compatible + - reg
supply as well. most likely
Documentation/devicetree/bindings/display/panel/anbernic,td4310.yaml line 34
Quoted 2 lines
Documentation/devicetree/bindings/display/panel/anbernic,td4310.yaml new file +2
-0+ - reset-gpios + - port
Best regards,
Krzysztof
PATCH 4/6 drm/panel: anbernic-td4310: Add RG Vita Pro panel
In reply to Chris MorganFrom: Chris Morgan <[email protected]>
The panel used by Anbernic in the RG Vita-Pro is a DSI panel based on the TD4310 controller IC. It measures approximately 5.5 inches diagonally and is 1080x1920 in resolution.
--- drivers/gpu/drm/panel/Kconfig | 10 + drivers/gpu/drm/panel/Makefile | 1 + drivers/gpu/drm/panel/panel-anbernic-td4310.c | 291 ++++++++++++++++++ 3 files changed, 302 insertions(+) create mode 100644 drivers/gpu/drm/panel/panel-anbernic-td4310.c
drivers/gpu/drm/panel/Kconfig +10 -0
@@ -17,6 +17,16 @@ config DRM_PANEL_ABT_Y030XX067A Y030XX067A 320x480 3.0" panel as found in the YLM RG-280M, RG-300 and RG-99 handheld gaming consoles. +config DRM_PANEL_ANBERNIC_TD4310 + tristate "Anbernic TD4310 LCD panel" + depends on GPIOLIB && OF + depends on DRM_MIPI_DSI + depends on BACKLIGHT_CLASS_DEVICE + help + Say Y here to enable support for Anbernic designed panels with the + TD4310 panel controller such as the ones used on the Anbernic RG + Vita Pro. + config DRM_PANEL_ARM_VERSATILE tristate "ARM Versatile panel driver" depends on OF
drivers/gpu/drm/panel/Makefile +1 -0
@@ -1,5 +1,6 @@ # SPDX-License-Identifier: GPL-2.0 obj-$(CONFIG_DRM_PANEL_ABT_Y030XX067A) += panel-abt-y030xx067a.o +obj-$(CONFIG_DRM_PANEL_ANBERNIC_TD4310) += panel-anbernic-td4310.o obj-$(CONFIG_DRM_PANEL_ARM_VERSATILE) += panel-arm-versatile.o obj-$(CONFIG_DRM_PANEL_ASUS_Z00T_TM5P5_NT35596) += panel-asus-z00t-tm5p5-n35596.o obj-$(CONFIG_DRM_PANEL_AUO_A030JTN01) += panel-auo-a030jtn01.o
drivers/gpu/drm/panel/panel-anbernic-td4310.c new file +291 -0
291 lines not on this page · raw message
Signature · 1 line
2.43.0
PATCH 5/6 dt-bindings: arm: rockchip: Add Anbernic RG Vita-Pro
In reply to Chris MorganFrom: Chris Morgan <[email protected]>
Add compatible string for the Anbernic RG Vita-Pro.
--- Documentation/devicetree/bindings/arm/rockchip.yaml | 6 ++++++ 1 file changed, 6 insertions(+)
Documentation/devicetree/bindings/arm/rockchip.yaml +6 -0
@@ -66,6 +66,12 @@ properties: - anbernic,rg-ds - const: rockchip,rk3568 + - description: Anbernic RK3576 Handheld Gaming Console + items: + - enum: + - anbernic,rg-vita-pro + - const: rockchip,rk3576 + - description: Ariaboard Photonicat items: - const: ariaboard,photonicat
Signature · 1 line
2.43.0
Re: [PATCH 5/6] dt-bindings: arm: rockchip: Add Anbernic RG Vita-Pro
Quoted 5 lines · Chris Morgan
From: Chris Morgan <[email protected]>
Add compatible string for the Anbernic RG Vita-Pro.
Signed-off-by Chris Morgan <[email protected]>
You combined three completely independent subsystems into one patchset. Usually that's unnecessary burden on our mailboxes and instead of simple shazam of entire patchset maintainers need to pick up individual bits.
Best regards,
Krzysztof
Re: [PATCH 5/6] dt-bindings: arm: rockchip: Add Anbernic RG Vita-Pro
Quoted 10 lines · Krzysztof Kozlowski
Quoted 5 lines · Chris Morgan
From: Chris Morgan <[email protected]>
Add compatible string for the Anbernic RG Vita-Pro.
Signed-off-by Chris Morgan <[email protected]>You combined three completely independent subsystems into one patchset. Usually that's unnecessary burden on our mailboxes and instead of simple shazam of entire patchset maintainers need to pick up individual bits.
I'm sorry about that, I will only submit to the maintainers for the next revision along with the Rockchip mailing list. Thank you.
Chris
Quoted 6 lines
Best regards,
Krzysztof
PATCH 6/6 arm64: dts: rockchip: Add Anbernic RG Vita-Pro
In reply to Chris MorganFrom: Chris Morgan <[email protected]>
Add device tree for the Anbernic RG Vita-Pro, based on the Rockchip RK3576. All hardware is currently working except for the accelerometer, the touchscreen, the battery monitor, and DisplayPort over USB-C. PWM is also missing currently, and as a result the LEDs and panel backlight are currently controlled via GPIO but will be changed to PWM once supported.
The Anbernic RG Vita-Pro includes the following hardware:
- A 1080x1920 DSI display with touch.
- 21 buttons.
- 2 Analog joysticks controlled via userspace.
- 3 LEDs.
- 64GB eMMC, 2 SDMMC slots.
- RTL8852BE WiFi/Bluetooth combo
- 1 USB 3.0 USB-C port in OTG mode.
- 3.5mm headphone jack with play button support.
- 5000mAH battery
The following hardware has incomplete driver support and is not yet working:
- An Invensense icm42607p accelerometer.
- A Cellwise cw221x battery monitor.
- A Synaptics i2c touchscreen.
- DisplayPort over USB-C alt-mode.
- PWM controller.
--- arch/arm64/boot/dts/rockchip/Makefile | 3 + .../rockchip/rk3576-anbernic-rg-vita-pro.dts | 1317 +++++++++++++++++ 2 files changed, 1320 insertions(+) create mode 100644 arch/arm64/boot/dts/rockchip/rk3576-anbernic-rg-vita-pro.dts
arch/arm64/boot/dts/rockchip/Makefile +3 -0
@@ -165,6 +165,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-wolfvision-pf5.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-wolfvision-pf5-display-vz.dtbo dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-wolfvision-pf5-io-expander.dtbo dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-100ask-dshanpi-a1.dtb +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-anbernic-rg-vita-pro.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-armsom-sige5.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-armsom-sige5-v1.2-wifibt.dtbo dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-evb1-v10.dtb
@@ -215,6 +216,8 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588s-coolpi-4b.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588s-evb1-v10.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588s-gameforce-ace.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588s-indiedroid-nova.dtb +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588s-indiedroid-nova-tower.dtb +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588s-indiedroid-nova-test.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588s-khadas-edge2.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588s-nanopi-r6s.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588s-nanopi-r6c.dtb
arch/arm64/boot/dts/rockchip/rk3576-anbernic-rg-vita-pro.dts new file +1317 -0
1,317 lines not on this page · raw message
Signature · 1 line
2.43.0
Re: [PATCH 6/6] arm64: dts: rockchip: Add Anbernic RG Vita-Pro
Quoted 48 lines · Chris Morgan
From: Chris Morgan <[email protected]>
Add device tree for the Anbernic RG Vita-Pro, based on the Rockchip RK3576. All hardware is currently working except for the accelerometer, the touchscreen, the battery monitor, and DisplayPort over USB-C. PWM is also missing currently, and as a result the LEDs and panel backlight are currently controlled via GPIO but will be changed to PWM once supported.
The Anbernic RG Vita-Pro includes the following hardware:
- A 1080x1920 DSI display with touch.
- 21 buttons.
- 2 Analog joysticks controlled via userspace.
- 3 LEDs.
- 64GB eMMC, 2 SDMMC slots.
- RTL8852BE WiFi/Bluetooth combo
- 1 USB 3.0 USB-C port in OTG mode.
- 3.5mm headphone jack with play button support.
- 5000mAH batteryThe following hardware has incomplete driver support and is not yet working:
- An Invensense icm42607p accelerometer.
- A Cellwise cw221x battery monitor.
- A Synaptics i2c touchscreen.
- DisplayPort over USB-C alt-mode.
- PWM controller.Signed-off-by Chris Morgan <[email protected]>--- arch/arm64/boot/dts/rockchip/Makefile | 3 + .../rockchip/rk3576-anbernic-rg-vita-pro.dts | 1317 +++++++++++++++++ 2 files changed, 1320 insertions(+) create mode 100644 arch/arm64/boot/dts/rockchip/rk3576-anbernic-rg-vita-pro.dtsarch/arm64/boot/dts/rockchip/Makefile +1
-0@@ -165,6 +165,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-wolfvision-pf5.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-wolfvision-pf5-display-vz.dtbo dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-wolfvision-pf5-io-expander.dtbo dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-100ask-dshanpi-a1.dtb +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-anbernic-rg-vita-pro.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-armsom-sige5.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-armsom-sige5-v1.2-wifibt.dtbo dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-evb1-v10.dtb
arch/arm64/boot/dts/rockchip/Makefile dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588s-coolpi-4b.dtb · line 220
Quoted 5 lines
arch/arm64/boot/dts/rockchip/Makefile +2
-0@@ -215,6 +216,8 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588s-coolpi-4b.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588s-evb1-v10.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588s-gameforce-ace.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588s-indiedroid-nova.dtb +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588s-indiedroid-nova-tower.dtb +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588s-indiedroid-nova-test.dtb
Please disregard this. I just noticed some of my local branch leaked into my commit. I'll do a V2 with these removed once I get feedback on the rest of the series.
Thank you.
Quoted 1,329 lines
arch/arm64/boot/dts/rockchip/Makefile +0
-0dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588s-khadas-edge2.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588s-nanopi-r6s.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588s-nanopi-r6c.dtbarch/arm64/boot/dts/rockchip/rk3576-anbernic-rg-vita-pro.dts new file +1317
-0@@ -0,0 +1,1317 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Copyright (c) 2026 Chris Morgan <[email protected]> + */ + +/dts-v1/; + +#include <dt-bindings/gpio/gpio.h> +#include <dt-bindings/input/linux-event-codes.h> +#include <dt-bindings/leds/common.h> +#include <dt-bindings/pinctrl/rockchip.h> +#include <dt-bindings/pwm/pwm.h> +#include <dt-bindings/soc/rockchip,vop2.h> +#include <dt-bindings/usb/pd.h> + +#include "rk3576.dtsi" + +/ { + model = "Anbernic RG Vita Pro"; + chassis-type = "handset"; + compatible = "anbernic,rg-vita-pro", "rockchip,rk3576"; + + aliases { + mmc0 = &sdhci; + mmc1 = &sdmmc; + mmc2 = &sdio; + }; + + chosen { + stdout-path = "serial0:1500000n8"; + }; + + adc_keys_home: adc-keys-home { + compatible = "adc-keys"; + io-channel-names = "buttons"; + io-channels = <&saradc 1>; + keyup-threshold-microvolt = <1800000>; + poll-interval = <60>; + + button-home { + label = "HOME"; + linux,code = <BTN_MODE>; + press-threshold-microvolt = <1750>; + }; + }; + + adc_keys_play: adc-keys-play { + compatible = "adc-keys"; + io-channel-names = "buttons"; + io-channels = <&saradc 3>; + keyup-threshold-microvolt = <1300000>; + poll-interval = <60>; + + button-play { + label = "PLAY"; + linux,code = <KEY_PLAYPAUSE>; + press-threshold-microvolt = <1750>; + }; + }; + + /* + * Values from BSP, except for internal resistance which was set + * to 80 micro ohms which is more likely 80000 micro ohms. + */ + battery: battery { + compatible = "simple-battery"; + charge-full-design-microamp-hours = <8000000>; + charge-term-current-microamp = <300000>; + constant-charge-current-max-microamp = <10000000>; + constant-charge-voltage-max-microvolt = <4350000>; + factory-internal-resistance-micro-ohms = <80000>; + precharge-current-microamp = <180000>; + precharge-upper-limit-microvolt = <3600000>; + voltage-max-design-microvolt = <4350000>; + voltage-min-design-microvolt = <3000000>; + }; + + hp_amp: audio-amplifier { + compatible = "simple-audio-amplifier"; + enable-gpios = <&gpio0 RK_PC3 GPIO_ACTIVE_HIGH>; + pinctrl-0 = <&hp_amp_enable_h>; + pinctrl-names = "default"; + sound-name-prefix = "Headphone Amp"; + }; + + /* + * LEDs and Backlights can be controlled as a PWM, but PWM + * driver is not yet available. + */ + gpio_backlight: backlight { + compatible = "gpio-backlight"; + gpios = <&gpio2 RK_PC4 GPIO_ACTIVE_HIGH>; + pinctrl-0 = <&led_backlight_h>; + pinctrl-names = "default"; + }; + + gpio_leds: leds { + compatible = "gpio-leds"; + pinctrl-0 = <&led_amber_h>, <&led_green_h>, <&led_red_h>; + pinctrl-names = "default"; + + charging-led { + color = <LED_COLOR_ID_AMBER>; + function = LED_FUNCTION_CHARGING; + gpios = <&gpio3 RK_PA4 GPIO_ACTIVE_HIGH>; + }; + + full-led { + color = <LED_COLOR_ID_GREEN>; + function = LED_FUNCTION_POWER; + gpios = <&gpio3 RK_PA5 GPIO_ACTIVE_HIGH>; + }; + + bat-low-led { + color = <LED_COLOR_ID_RED>; + function = LED_FUNCTION_ALARM; + gpios = <&gpio3 RK_PA6 GPIO_ACTIVE_HIGH>; + }; + }; + + gpio_keys_control: gpio-keys-control { + compatible = "gpio-keys"; + pinctrl-0 = <&gamepad_keys_l>; + pinctrl-names = "default"; + + button-a { + gpios = <&gpio3 RK_PB6 GPIO_ACTIVE_LOW>; + label = "EAST"; + linux,code = <BTN_EAST>; + }; + + button-b { + gpios = <&gpio3 RK_PB7 GPIO_ACTIVE_LOW>; + label = "SOUTH"; + linux,code = <BTN_SOUTH>; + }; + + button-down { + gpios = <&gpio3 RK_PB1 GPIO_ACTIVE_LOW>; + label = "DPAD-DOWN"; + linux,code = <BTN_DPAD_DOWN>; + }; + + button-l1 { + gpios = <&gpio3 RK_PD7 GPIO_ACTIVE_LOW>; + label = "TL"; + linux,code = <BTN_TL>; + }; + + button-l2 { + gpios = <&gpio3 RK_PC1 GPIO_ACTIVE_LOW>; + label = "TL2"; + linux,code = <BTN_TL2>; + }; + + button-left { + gpios = <&gpio3 RK_PB2 GPIO_ACTIVE_LOW>; + label = "DPAD-LEFT"; + linux,code = <BTN_DPAD_LEFT>; + }; + + button-menu { + gpios = <&gpio3 RK_PA7 GPIO_ACTIVE_LOW>; + label = "HOME"; + linux,code = <KEY_HOME>; + }; + + button-right { + gpios = <&gpio3 RK_PB3 GPIO_ACTIVE_LOW>; + label = "DPAD-RIGHT"; + linux,code = <BTN_DPAD_RIGHT>; + }; + + button-r1 { + gpios = <&gpio3 RK_PC2 GPIO_ACTIVE_LOW>; + label = "T2"; + linux,code = <BTN_TR>; + }; + + button-r2 { + gpios = <&gpio3 RK_PC3 GPIO_ACTIVE_LOW>; + label = "TR2"; + linux,code = <BTN_TR2>; + }; + + button-select { + gpios = <&gpio3 RK_PD6 GPIO_ACTIVE_LOW>; + label = "SELECT"; + linux,code = <BTN_SELECT>; + }; + + button-start { + gpios = <&gpio3 RK_PD3 GPIO_ACTIVE_LOW>; + label = "START"; + linux,code = <BTN_START>; + }; + + button-thumbl { + gpios = <&gpio3 RK_PC0 GPIO_ACTIVE_LOW>; + label = "THUMBL"; + linux,code = <BTN_THUMBL>; + }; + + button-thumbr { + gpios = <&gpio3 RK_PC4 GPIO_ACTIVE_LOW>; + label = "THUMBR"; + linux,code = <BTN_THUMBR>; + }; + + button-up { + gpios = <&gpio3 RK_PB0 GPIO_ACTIVE_LOW>; + label = "DPAD-UP"; + linux,code = <BTN_DPAD_UP>; + }; + + button-x { + gpios = <&gpio3 RK_PB4 GPIO_ACTIVE_LOW>; + label = "NORTH"; + linux,code = <BTN_NORTH>; + }; + + button-y { + gpios = <&gpio3 RK_PB5 GPIO_ACTIVE_LOW>; + label = "WEST"; + linux,code = <BTN_WEST>; + }; + }; + + gpio_keys_volume: gpio-keys-volume { + compatible = "gpio-keys"; + autorepeat; + pinctrl-0 = <&vol_keys_l>; + pinctrl-names = "default"; + + vol-down-key { + gpios = <&gpio3 RK_PD1 GPIO_ACTIVE_LOW>; + label = "VOLUMEDOWN"; + linux,code = <KEY_VOLUMEDOWN>; + }; + + vol-up-key { + gpios = <&gpio3 RK_PD2 GPIO_ACTIVE_LOW>; + label = "VOLUMEUP"; + linux,code = <KEY_VOLUMEUP>; + }; + }; + + hdmi-con { + compatible = "hdmi-connector"; + type = "c"; + + port { + hdmi_con_in: endpoint { + remote-endpoint = <&hdmi_out_con>; + }; + }; + }; + + rfkill { + compatible = "rfkill-gpio"; + pinctrl-names = "default"; + pinctrl-0 = <&wifi_en_h>; + radio-type = "wlan"; + shutdown-gpios = <&gpio0 RK_PC6 GPIO_ACTIVE_HIGH>; + }; + + sound: sound { + compatible = "simple-audio-card"; + pinctrl-0 = <&hp_det>; + pinctrl-names = "default"; + simple-audio-card,aux-devs = <&aw87391_pa_l>, <&aw87391_pa_r>, + <&hp_amp>; + simple-audio-card,format = "i2s"; + simple-audio-card,hp-det-gpios = <&gpio4 RK_PA4 GPIO_ACTIVE_HIGH>; + simple-audio-card,mclk-fs = <256>; + simple-audio-card,name = "rockchip,es8388-codec"; + simple-audio-card,pin-switches = "Headphones", "Internal Speakers"; + simple-audio-card,routing = + "LINPUT1", "Mic Jack", + "LINPUT2", "Mic Jack", + "RINPUT1", "Onboard Microphone", + "RINPUT2", "Onboard Microphone", + "Headphones", "Headphone Amp OUTL", + "Headphones", "Headphone Amp OUTR", + "Headphone Amp INL", "LOUT1", + "Headphone Amp INR", "ROUT1", + "Internal Speakers", "Left Amp OUT", + "Internal Speakers", "Right Amp OUT", + "Left Amp IN", "LOUT2", + "Right Amp IN", "ROUT2"; + simple-audio-card,widgets = + "Microphone", "Mic Jack", + "Microphone", "Onboard Microphone", + "Headphone", "Headphones", + "Speaker", "Internal Speakers"; + status = "okay"; + + simple-audio-card,codec { + sound-dai = <&es8388>; + system-clock-frequency = <12288000>; + }; + + simple-audio-card,cpu { + sound-dai = <&sai1>; + }; + }; + + vcc_1v1_nldo_s3: regulator-vcc-1v1-nldo-s3 { + compatible = "regulator-fixed"; + regulator-always-on; + regulator-boot-on; + regulator-max-microvolt = <1100000>; + regulator-min-microvolt = <1100000>; + regulator-name = "vcc_1v1_nldo_s3"; + vin-supply = <&vcc_3v8_sys>; + }; + + vcc_2v0_pldo_s3: regulator-vcc-2v0-pldo-s3 { + compatible = "regulator-fixed"; + regulator-always-on; + regulator-boot-on; + regulator-max-microvolt = <2000000>; + regulator-min-microvolt = <2000000>; + regulator-name = "vcc_2v0_pldo_s3"; + vin-supply = <&vcc_3v8_sys>; + }; + + vcc_3v8_sys: regulator-vcc-3v8-sys { + compatible = "regulator-fixed"; + regulator-always-on; + regulator-boot-on; + regulator-max-microvolt = <3800000>; + regulator-min-microvolt = <3800000>; + regulator-name = "vcc_3v8_sys"; + }; + + vcc3v3_sd_s0: regulator-vcc3v3-sd-s0 { + compatible = "regulator-fixed"; + enable-active-high; + gpio = <&gpio0 RK_PB6 GPIO_ACTIVE_HIGH>; + pinctrl-0 = <&vcc_3v3_sd_s0_h>; + pinctrl-names = "default"; + regulator-max-microvolt = <3300000>; + regulator-min-microvolt = <3300000>; + regulator-name = "vcc3v3_sd_s0"; + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + vcc_sdio: regulator-vcc-sdio { + compatible = "regulator-gpio"; + regulator-name = "vcc_sdio"; + gpios = <&gpio0 RK_PB4 GPIO_ACTIVE_HIGH>; + pinctrl-0 = <&vcc_sdio_h>; + pinctrl-names = "default"; + regulator-max-microvolt = <3300000>; + regulator-min-microvolt = <1800000>; + states = <1800000 0>, <3300000 1>; + }; + + vcc_wifi: regulator-vcc-wifi { + compatible = "regulator-fixed"; + regulator-name = "vcc_wifi"; + enable-active-high; + gpios = <&gpio1 RK_PD2 GPIO_ACTIVE_HIGH>; + pinctrl-0 = <&vcc_wifi_h>; + pinctrl-names = "default"; + regulator-max-microvolt = <3300000>; + regulator-min-microvolt = <3300000>; + regulator-state-mem { + regulator-on-in-suspend; + }; + }; + + vdd_lcd: regulator-vdd-lcd { + compatible = "regulator-fixed"; + regulator-name = "vdd_lcd"; + regulator-always-on; + enable-active-high; + gpios = <&gpio0 RK_PB0 GPIO_ACTIVE_HIGH>; + pinctrl-0 = <&vdd_lcd_h>; + pinctrl-names = "default"; + regulator-state-mem { + regulator-off-in-suspend; + }; + }; +}; + +&combphy0_ps { + status = "okay"; +}; + +&cpu_b0 { + cpu-supply = <&vdd_cpu_big_s0>; +}; + +&cpu_b1 { + cpu-supply = <&vdd_cpu_big_s0>; +}; + +&cpu_b2 { + cpu-supply = <&vdd_cpu_big_s0>; +}; + +&cpu_b3 { + cpu-supply = <&vdd_cpu_big_s0>; +}; + +&cpu_l0 { + cpu-supply = <&vdd_cpu_lit_s0>; +}; + +&cpu_l1 { + cpu-supply = <&vdd_cpu_lit_s0>; +}; + +&cpu_l2 { + cpu-supply = <&vdd_cpu_lit_s0>; +}; + +&cpu_l3 { + cpu-supply = <&vdd_cpu_lit_s0>; +}; + +&dsi { + status = "okay"; + #address-cells = <1>; + #size-cells = <0>; + + panel: panel@0 { + compatible = "anbernic,panel-vita-pro"; + reg = <0>; + backlight = <&gpio_backlight>; + enable-gpios = <&gpio0 RK_PB1 GPIO_ACTIVE_HIGH>; + pinctrl-names = "default"; + pinctrl-0 = <&lcd_enable>, <&lcd_rst>; + reset-gpios = <&gpio0 RK_PB5 GPIO_ACTIVE_LOW>; + rotation = <270>; + vdd-supply = <&vdd_lcd>; + + port { + mipi_in_panel: endpoint { + remote-endpoint = <&mipi_out_panel>; + }; + }; + }; +}; + +&dsi_in { + dsi_in_vp1: endpoint { + remote-endpoint = <&vp1_out_dsi>; + }; +}; + +&dsi_out { + mipi_out_panel: endpoint { + remote-endpoint = <&mipi_in_panel>; + }; +}; + +&gpu { + mali-supply = <&vdd_gpu_s0>; + status = "okay"; +}; + +&hdmi { + status = "okay"; +}; + +&hdmi_in { + hdmi_in_vp0: endpoint { + remote-endpoint = <&vp0_out_hdmi>; + }; +}; + +&hdmi_out { + hdmi_out_con: endpoint { + remote-endpoint = <&hdmi_con_in>; + }; +}; + +&hdmi_sound { + status = "okay"; +}; + +&hdptxphy { + status = "okay"; +}; + +&i2c0 { + pinctrl-0 = <&i2c0m1_xfer>; + pinctrl-names = "default"; + status = "okay"; + + /* synaptics,dsx-i2c touchscreen at 0x70 */ +}; + +&i2c1 { + status = "okay"; + + pmic@23 { + compatible = "rockchip,rk806"; + reg = <0x23>; + #gpio-cells = <2>; + gpio-controller; + interrupt-parent = <&gpio0>; + interrupts = <RK_PA6 IRQ_TYPE_LEVEL_LOW>; + pinctrl-names = "default"; + pinctrl-0 = <&pmic_pins + &rk806_dvs1_null + &rk806_dvs2_null + &rk806_dvs3_null>; + system-power-controller; + vcc1-supply = <&vcc_3v8_sys>; + vcc2-supply = <&vcc_3v8_sys>; + vcc3-supply = <&vcc_3v8_sys>; + vcc4-supply = <&vcc_3v8_sys>; + vcc5-supply = <&vcc_3v8_sys>; + vcc6-supply = <&vcc_3v8_sys>; + vcc7-supply = <&vcc_3v8_sys>; + vcc8-supply = <&vcc_3v8_sys>; + vcc9-supply = <&vcc_3v8_sys>; + vcc10-supply = <&vcc_3v8_sys>; + vcc11-supply = <&vcc_2v0_pldo_s3>; + vcc12-supply = <&vcc_3v8_sys>; + vcc13-supply = <&vcc_1v1_nldo_s3>; + vcc14-supply = <&vcc_1v1_nldo_s3>; + vcca-supply = <&vcc_3v8_sys>; + + rk806_dvs1_null: dvs1-null-pins { + pins = "gpio_pwrctrl1"; + function = "pin_fun0"; + }; + + rk806_dvs1_pwrdn: dvs1-pwrdn-pins { + pins = "gpio_pwrctrl1"; + function = "pin_fun2"; + }; + + rk806_dvs1_rst: dvs1-rst-pins { + pins = "gpio_pwrctrl1"; + function = "pin_fun3"; + }; + + rk806_dvs1_slp: dvs1-slp-pins { + pins = "gpio_pwrctrl1"; + function = "pin_fun1"; + }; + + rk806_dvs2_dvs: dvs2-dvs-pins { + pins = "gpio_pwrctrl2"; + function = "pin_fun4"; + }; + + rk806_dvs2_gpio: dvs2-gpio-pins { + pins = "gpio_pwrctrl2"; + function = "pin_fun5"; + }; + + rk806_dvs2_null: dvs2-null-pins { + pins = "gpio_pwrctrl2"; + function = "pin_fun0"; + }; + + rk806_dvs2_pwrdn: dvs2-pwrdn-pins { + pins = "gpio_pwrctrl2"; + function = "pin_fun2"; + }; + + rk806_dvs2_rst: dvs2-rst-pins { + pins = "gpio_pwrctrl2"; + function = "pin_fun3"; + }; + + rk806_dvs2_slp: dvs2-slp-pins { + pins = "gpio_pwrctrl2"; + function = "pin_fun1"; + }; + + rk806_dvs3_dvs: dvs3-dvs-pins { + pins = "gpio_pwrctrl3"; + function = "pin_fun4"; + }; + + rk806_dvs3_gpio: dvs3-gpio-pins { + pins = "gpio_pwrctrl3"; + function = "pin_fun5"; + }; + + rk806_dvs3_null: dvs3-null-pins { + pins = "gpio_pwrctrl3"; + function = "pin_fun0"; + }; + + rk806_dvs3_pwrdn: dvs3-pwrdn-pins { + pins = "gpio_pwrctrl3"; + function = "pin_fun2"; + }; + + rk806_dvs3_rst: dvs3-rst-pins { + pins = "gpio_pwrctrl3"; + function = "pin_fun3"; + }; + + rk806_dvs3_slp: dvs3-slp-pins { + pins = "gpio_pwrctrl3"; + function = "pin_fun1"; + }; + + regulators { + vdd_cpu_big_s0: dcdc-reg1 { + regulator-always-on; + regulator-boot-on; + regulator-enable-ramp-delay = <400>; + regulator-min-microvolt = <550000>; + regulator-max-microvolt = <950000>; + regulator-name = "vdd_cpu_big_s0"; + regulator-ramp-delay = <12500>; + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + vdd_npu_s0: dcdc-reg2 { + regulator-boot-on; + regulator-enable-ramp-delay = <400>; + regulator-min-microvolt = <550000>; + regulator-max-microvolt = <950000>; + regulator-name = "vdd_npu_s0"; + regulator-ramp-delay = <12500>; + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + vdd_cpu_lit_s0: dcdc-reg3 { + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <550000>; + regulator-max-microvolt = <950000>; + regulator-name = "vdd_cpu_lit_s0"; + regulator-ramp-delay = <12500>; + regulator-state-mem { + regulator-off-in-suspend; + regulator-suspend-microvolt = <750000>; + }; + }; + + vcc_3v3_s3: dcdc-reg4 { + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-name = "vcc_3v3_s3"; + regulator-state-mem { + regulator-on-in-suspend; + regulator-suspend-microvolt = <3300000>; + }; + }; + + vdd_gpu_s0: dcdc-reg5 { + regulator-boot-on; + regulator-enable-ramp-delay = <400>; + regulator-min-microvolt = <550000>; + regulator-max-microvolt = <900000>; + regulator-name = "vdd_gpu_s0"; + regulator-ramp-delay = <12500>; + regulator-state-mem { + regulator-off-in-suspend; + regulator-suspend-microvolt = <850000>; + }; + }; + + vddq_ddr_s0: dcdc-reg6 { + regulator-always-on; + regulator-boot-on; + regulator-name = "vddq_ddr_s0"; + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + vdd_logic_s0: dcdc-reg7 { + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <550000>; + regulator-max-microvolt = <800000>; + regulator-name = "vdd_logic_s0"; + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + vcc_1v8_s3: dcdc-reg8 { + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-name = "vcc_1v8_s3"; + regulator-state-mem { + regulator-on-in-suspend; + regulator-suspend-microvolt = <1800000>; + }; + }; + + vdd2_ddr_s3: dcdc-reg9 { + regulator-always-on; + regulator-boot-on; + regulator-name = "vdd2_ddr_s3"; + regulator-state-mem { + regulator-on-in-suspend; + }; + }; + + vdd_ddr_s0: dcdc-reg10 { + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <550000>; + regulator-max-microvolt = <1200000>; + regulator-name = "vdd_ddr_s0"; + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + vcca_1v8_s0: pldo-reg1 { + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-name = "vcca_1v8_s0"; + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + vcca1v8_pldo2_s0: pldo-reg2 { + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-name = "vcca1v8_pldo2_s0"; + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + vdda_1v2_s0: pldo-reg3 { + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + regulator-name = "vdda_1v2_s0"; + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + vcca_3v3_s0: pldo-reg4 { + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-name = "vcca_3v3_s0"; + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + vccio_sd_s0: pldo-reg5 { + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3300000>; + regulator-name = "vccio_sd_s0"; + regulator-state-mem { + regulator-on-in-suspend; + }; + }; + + vcca1v8_pldo6_s3: pldo-reg6 { + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-name = "vcca1v8_pldo6_s3"; + regulator-state-mem { + regulator-on-in-suspend; + regulator-suspend-microvolt = <1800000>; + }; + }; + + vdd_0v75_s3: nldo-reg1 { + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <750000>; + regulator-max-microvolt = <750000>; + regulator-name = "vdd_0v75_s3"; + regulator-state-mem { + regulator-on-in-suspend; + regulator-suspend-microvolt = <750000>; + }; + }; + + vdda_ddr_pll_s0: nldo-reg2 { + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <850000>; + regulator-max-microvolt = <850000>; + regulator-name = "vdda_ddr_pll_s0"; + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + vdda0v75_hdmi_s0: nldo-reg3 { + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <750000>; + regulator-max-microvolt = <750000>; + regulator-name = "vdda0v75_hdmi_s0"; + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + vdda_0v85_s0: nldo-reg4 { + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <850000>; + regulator-max-microvolt = <850000>; + regulator-name = "vdda_0v85_s0"; + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + vdda_0v75_s0: nldo-reg5 { + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <750000>; + regulator-max-microvolt = <750000>; + regulator-name = "vdda_0v75_s0"; + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + }; + }; +}; + +&i2c2 { + status = "okay"; + + /* inv,icm42607 IMU at 0x68 */ +}; + +&i2c3 { + status = "okay"; + + es8388: audio-codec@10 { + compatible = "everest,es8388", "everest,es8328"; + reg = <0x10>; + assigned-clock-rates = <12288000>; + assigned-clocks = <&cru CLK_SAI1_MCLKOUT_TO_IO>; + AVDD-supply = <&vcca_3v3_s0>; + clocks = <&cru CLK_SAI1_MCLKOUT_TO_IO>; + DVDD-supply = <&vcc_3v3_s3>; + HPVDD-supply = <&vcca_3v3_s0>; + pinctrl-0 = <&sai1m0_mclk>; + pinctrl-names = "default"; + PVDD-supply = <&vcc_3v3_s3>; + #sound-dai-cells = <0>; + }; + + aw87391_pa_l: audio-codec@58 { + compatible = "anbernic,rgds-amp", "awinic,aw87391"; + reg = <0x58>; + #sound-dai-cells = <0>; + sound-name-prefix = "Left Amp"; + }; + + aw87391_pa_r: audio-codec@5b { + compatible = "anbernic,rgds-amp", "awinic,aw87391"; + reg = <0x5b>; + #sound-dai-cells = <0>; + sound-name-prefix = "Right Amp"; + }; +}; + +&i2c6 { + pinctrl-0 = <&i2c6m3_xfer>; + pinctrl-names = "default"; + status = "okay"; + + sgm41542: charger@3b { + compatible = "sgmicro,sgm41542"; + reg = <0x3b>; + input-current-limit-microamp = <3000000>; + input-voltage-limit-microvolt = <4500000>; + interrupt-parent = <&gpio0>; + interrupts = <RK_PD2 IRQ_TYPE_EDGE_FALLING>; + pinctrl-0 = <&charger_irq>; + pinctrl-names = "default"; + monitored-battery = <&battery>; + status = "okay"; + + regulators { + vbus5v0_typec: otg-vbus { + regulator-name = "vbus5v0_typec"; + regulator-max-microvolt = <5000000>; + regulator-min-microvolt = <5000000>; + + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + }; + }; + + /* Unused iSmartWare SW2001 encryption device at 0x3c */ + + husb311: typec-portc@4e { + compatible = "hynetek,husb311", "richtek,rt1711h"; + reg = <0x4e>; + interrupt-parent = <&gpio0>; + interrupts = <RK_PD1 IRQ_TYPE_LEVEL_LOW>; + pinctrl-0 = <&usbc_int>; + pinctrl-names = "default"; + status = "okay"; + vbus-supply = <&vbus5v0_typec>; + + connector { + compatible = "usb-c-connector"; + label = "USB-C"; + data-role = "dual"; + op-sink-microwatt = <10000000>; + power-role = "dual"; + try-power-role = "sink"; + + sink-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM) + PDO_FIXED(9000, 2000, PDO_FIXED_USB_COMM)>; + source-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>; + + altmodes { + displayport { + svid = /bits/ 16 <0xff01>; + vdo = <0xffffffff>; + }; + }; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + usbc0_hs_ep: endpoint { + remote-endpoint = <&usb_drd0_hs_ep>; + }; + }; + port@1 { + reg = <1>; + usbc0_ss_ep: endpoint { + remote-endpoint = <&usb_drd0_ss_ep>; + }; + }; + port@2 { + reg = <2>; + usbc0_dp_ep: endpoint { + remote-endpoint = <&usbdp_phy_ep>; + }; + }; + }; + }; + }; + + hym8563: rtc@51 { + compatible = "haoyu,hym8563"; + reg = <0x51>; + #clock-cells = <0>; + clock-output-names = "hym8563"; + interrupt-parent = <&gpio0>; + interrupts = <RK_PA0 IRQ_TYPE_LEVEL_LOW>; + pinctrl-names = "default"; + pinctrl-0 = <&hym8563_int>; + wakeup-source; + }; + + /* cellwise,cw221X battery manager at 0x64 */ +}; + +&mipidcphy { + status = "okay"; +}; + +&pcie0 { + pinctrl-names = "default"; + pinctrl-0 = <&pcie0_perstn>; + reset-gpios = <&gpio2 RK_PB4 GPIO_ACTIVE_HIGH>; + vpcie3v3-supply = <&vcc_wifi>; + status = "okay"; +}; + +&pinctrl { + audio { + hp_amp_enable_h: hp-amp-enable { + rockchip,pins = <0 RK_PC3 RK_FUNC_GPIO &pcfg_pull_none>; + }; + + hp_det: hp-det { + rockchip,pins = <4 RK_PA4 RK_FUNC_GPIO &pcfg_pull_up>; + }; + }; + + bluetooth { + bt_reset_gpio: bt-reset-pin { + rockchip,pins = <2 RK_PB6 RK_FUNC_GPIO &pcfg_pull_none>; + }; + + bt_wake_gpio: bt-wake-pin { + rockchip,pins = <2 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>; + }; + + bt_wake_host_irq: bt-wake-host-irq { + rockchip,pins = <2 RK_PC1 RK_FUNC_GPIO &pcfg_pull_up>; + }; + }; + + charger { + charger_irq: charger-irq { + rockchip,pins = <0 RK_PD2 RK_FUNC_GPIO &pcfg_pull_up>; + }; + }; + + display { + lcd_enable: lcd-enable { + rockchip,pins = <0 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>; + }; + + lcd_rst: lcd-rst { + rockchip,pins = <0 RK_PB5 RK_FUNC_GPIO &pcfg_pull_down>; + }; + }; + + gpio-keys { + vol_keys_l: vol-keys_l { + rockchip,pins = + <3 RK_PD1 RK_FUNC_GPIO &pcfg_pull_up>, + <3 RK_PD2 RK_FUNC_GPIO &pcfg_pull_up>; + }; + + gamepad_keys_l: gamepad-keys-l { + rockchip,pins = + <3 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up>, + <3 RK_PB0 RK_FUNC_GPIO &pcfg_pull_up>, + <3 RK_PB1 RK_FUNC_GPIO &pcfg_pull_up>, + <3 RK_PB2 RK_FUNC_GPIO &pcfg_pull_up>, + <3 RK_PB3 RK_FUNC_GPIO &pcfg_pull_up>, + <3 RK_PB4 RK_FUNC_GPIO &pcfg_pull_up>, + <3 RK_PB5 RK_FUNC_GPIO &pcfg_pull_up>, + <3 RK_PB6 RK_FUNC_GPIO &pcfg_pull_up>, + <3 RK_PB7 RK_FUNC_GPIO &pcfg_pull_up>, + <3 RK_PC0 RK_FUNC_GPIO &pcfg_pull_up>, + <3 RK_PC1 RK_FUNC_GPIO &pcfg_pull_up>, + <3 RK_PC2 RK_FUNC_GPIO &pcfg_pull_up>, + <3 RK_PC3 RK_FUNC_GPIO &pcfg_pull_up>, + <3 RK_PC4 RK_FUNC_GPIO &pcfg_pull_up>, + <3 RK_PD3 RK_FUNC_GPIO &pcfg_pull_up>, + <3 RK_PD6 RK_FUNC_GPIO &pcfg_pull_up>, + <3 RK_PD7 RK_FUNC_GPIO &pcfg_pull_up>; + }; + }; + + gpio-leds { + led_amber_h: led-amber-h { + rockchip,pins = <3 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>; + }; + + led_backlight_h: led-backlight-h { + rockchip,pins = <2 RK_PC4 RK_FUNC_GPIO &pcfg_pull_none>; + }; + + led_green_h: led-green-h { + rockchip,pins = <3 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>; + }; + + led_red_h: led-red-h { + rockchip,pins = <3 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>; + }; + }; + + pcie { + pcie0_perstn: pcie0-perstn { + rockchip,pins = <2 RK_PB4 RK_FUNC_GPIO &pcfg_pull_up>; + }; + }; + + regulator { + vcc_3v3_sd_s0_h: vcc-3v3-sd-s0-h { + rockchip,pins = <0 RK_PB6 RK_FUNC_GPIO &pcfg_pull_none>; + }; + + vcc_sdio_h: vcc-sdio-h { + rockchip,pins = <0 RK_PB4 RK_FUNC_GPIO &pcfg_pull_none>; + }; + + vcc_wifi_h: vcc-wifi-h { + rockchip,pins = <1 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>; + }; + + vdd_lcd_h: vdd-lcd-h { + rockchip,pins = <0 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>; + }; + }; + + rtc { + hym8563_int: hym8563-int { + rockchip,pins = <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>; + }; + }; + + touch { + touch_int: touch-int { + rockchip,pins = <0 RK_PC5 RK_FUNC_GPIO &pcfg_pull_up>; + }; + }; + + usb { + usbc_int: usbc-int { + rockchip,pins = <0 RK_PD1 RK_FUNC_GPIO &pcfg_pull_up>; + }; + + usbc0_sbu1: usbc0-sbu1 { + rockchip,pins = <4 RK_PB6 RK_FUNC_GPIO &pcfg_pull_down>; + }; + + usbc0_sbu2: usbc0-sbu2 { + rockchip,pins = <4 RK_PB7 RK_FUNC_GPIO &pcfg_pull_down>; + }; + }; + + wifi { + wifi_en_h: wifi-en-h { + rockchip,pins = <0 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>; + }; + }; +}; + +&sai1 { + pinctrl-0 = <&sai1m0_lrck + &sai1m0_sclk + &sai1m0_sdi0 + &sai1m0_sdo0>; + pinctrl-names = "default"; + status = "okay"; +}; + +&sai6 { + status = "okay"; +}; + +&saradc { + vref-supply = <&vcca1v8_pldo2_s0>; + status = "okay"; +}; + +&sdio { + bus-width = <4>; + cap-mmc-highspeed; + cap-sd-highspeed; + disable-wp; + max-frequency = <150000000>; + no-mmc; + no-sdio; + pinctrl-0 = <&sdmmc1m0_bus4>, <&sdmmc1m0_clk>, + <&sdmmc1m0_cmd>, <&sdmmc1m0_det>; + pinctrl-names = "default"; + sd-uhs-sdr12; + sd-uhs-sdr25; + sd-uhs-sdr50; + sd-uhs-sdr104; + vmmc-supply = <&vcc3v3_sd_s0>; + vqmmc-supply = <&vcc_sdio>; + status = "okay"; +}; + +&sdhci { + bus-width = <8>; + full-pwr-cycle-in-suspend; + no-sd; + no-sdio; + non-removable; + mmc-hs400-1_8v; + mmc-hs400-enhanced-strobe; + status = "okay"; +}; + +&sdmmc { + bus-width = <4>; + cap-mmc-highspeed; + cap-sd-highspeed; + disable-wp; + max-frequency = <150000000>; + no-sdio; + no-mmc; + pinctrl-0 = <&sdmmc0_bus4>, <&sdmmc0_clk>, + <&sdmmc0_cmd>, <&sdmmc0_det>; + pinctrl-names = "default"; + sd-uhs-sdr12; + sd-uhs-sdr25; + sd-uhs-sdr50; + sd-uhs-sdr104; + vmmc-supply = <&vcc3v3_sd_s0>; + vqmmc-supply = <&vccio_sd_s0>; + status = "okay"; +}; + +&spi1 { + num-cs = <1>; + pinctrl-0 = <&spi1m2_pins>, <&spi1m2_csn0>; + status = "okay"; + + /* SPI controlled MCU for joystick and joystick LEDs. */ +}; + +&vop { + status = "okay"; +}; + +&vop_mmu { + status = "okay"; +}; + +&vp0 { + vp0_out_hdmi: endpoint@ROCKCHIP_VOP2_EP_HDMI0 { + reg = <ROCKCHIP_VOP2_EP_HDMI0>; + remote-endpoint = <&hdmi_in_vp0>; + }; +}; + +&vp1 { + vp1_out_dsi: endpoint@ROCKCHIP_VOP2_EP_MIPI0 { + reg = <ROCKCHIP_VOP2_EP_MIPI0>; + remote-endpoint = <&dsi_in_vp1>; + }; +}; + +&u2phy0 { + status = "okay"; +}; + +&u2phy0_otg { + status = "okay"; +}; + +&uart0 { + status = "okay"; +}; + +&uart6 { + pinctrl-0 = <&uart6m1_xfer>, <&uart6m1_ctsn>, <&uart6m1_rtsn>; + pinctrl-names = "default"; + uart-has-rtscts; + status = "okay"; + + bluetooth { + compatible = "realtek,rtl8822cs-bt"; + device-wake-gpios = <&gpio2 RK_PB6 GPIO_ACTIVE_HIGH>; + enable-gpios = <&gpio2 RK_PB5 GPIO_ACTIVE_HIGH>; + host-wake-gpios = <&gpio2 RK_PC1 GPIO_ACTIVE_HIGH>; + pinctrl-0 = <&bt_reset_gpio>, <&bt_wake_gpio>, <&bt_wake_host_irq>; + pinctrl-names = "default"; + }; +}; + +&usbdp_phy { + mode-switch; + orientation-switch; + pinctrl-names = "default"; + pinctrl-0 = <&usbc0_sbu1 &usbc0_sbu2>; + sbu1-dc-gpios = <&gpio4 RK_PB6 GPIO_ACTIVE_HIGH>; + sbu2-dc-gpios = <&gpio4 RK_PB7 GPIO_ACTIVE_HIGH>; + status = "okay"; + + port { + usbdp_phy_ep: endpoint { + remote-endpoint = <&usbc0_dp_ep>; + }; + }; +}; + +&usb_drd0_dwc3 { + usb-role-switch; + dr_mode = "otg"; + status = "okay"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + usb_drd0_hs_ep: endpoint { + remote-endpoint = <&usbc0_hs_ep>; + }; + }; + + port@1 { + reg = <1>; + usb_drd0_ss_ep: endpoint { + remote-endpoint = <&usbc0_ss_ep>; + }; + }; + }; +};Signature · 1 line
2.43.0