* [PATCH v4 0/3] arm64: dts: qcom: Add Vicharak Axon Mini
@ 2026-06-07 11:36 Ajit Singh
2026-06-07 11:36 ` [PATCH v4 1/3] dt-bindings: vendor-prefixes: Add prefix for Vicharak Ajit Singh
` (2 more replies)
0 siblings, 3 replies; 14+ messages in thread
From: Ajit Singh @ 2026-06-07 11:36 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio
Cc: Dmitry Baryshkov, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
linux-arm-msm, devicetree, linux-kernel, Ajit Singh
Add initial support for the Vicharak Axon Mini, a QCS6490-based
single-board computer.
This series adds the Vicharak vendor prefix, documents the board
compatible, and adds the initial board DTS.
Tested:
- debug UART
- eMMC
- UFS
- SDIO WLAN
- USB 2.0 host
- PCIe
---
v3: https://lore.kernel.org/all/20260519125655.23796-1-blfizzyy@gmail.com/
Changes in v4:
- Move pinctrl-related changes under a /* pinctrl */ section.
- Explain why UFS ICE is kept disabled in commit msg.
- Add a comment describing the USB 2.0 host-only board routing.
Changes in v3:
- Dropped unused regulators.
- Pick up Acked-by tags for the binding patches.
Changes in v2:
- Drop unused Type-C VBUS regulator.
- Drop invalid camera thermal zone.
- Drop incorrect PM8350C thermal alarm override.
- Fix PCIe1 3.3 V regulator name.
- Drop redundant EUD disable override.
- Keep ICE disabled due to fatal SError during qcom_ice_create().
- Fix pinctrl property ordering.
- Sort top-level label references.
- Add blank lines before status properties.
Ajit Singh (3):
dt-bindings: vendor-prefixes: Add prefix for Vicharak
dt-bindings: arm: qcom: Add Vicharak Axon Mini
arm64: dts: qcom: Add Vicharak Axon Mini
.../devicetree/bindings/arm/qcom.yaml | 1 +
.../devicetree/bindings/vendor-prefixes.yaml | 2 +
arch/arm64/boot/dts/qcom/Makefile | 1 +
.../dts/qcom/qcs6490-vicharak-axon-mini.dts | 1027 +++++++++++++++++
4 files changed, 1031 insertions(+)
create mode 100644 arch/arm64/boot/dts/qcom/qcs6490-vicharak-axon-mini.dts
--
2.50.1 (Apple Git-155)
^ permalink raw reply [flat|nested] 14+ messages in thread* [PATCH v4 1/3] dt-bindings: vendor-prefixes: Add prefix for Vicharak 2026-06-07 11:36 [PATCH v4 0/3] arm64: dts: qcom: Add Vicharak Axon Mini Ajit Singh @ 2026-06-07 11:36 ` Ajit Singh 2026-06-07 11:36 ` [PATCH v4 2/3] dt-bindings: arm: qcom: Add Vicharak Axon Mini Ajit Singh 2026-06-07 11:36 ` [PATCH v4 3/3] arm64: dts: " Ajit Singh 2 siblings, 0 replies; 14+ messages in thread From: Ajit Singh @ 2026-06-07 11:36 UTC (permalink / raw) To: Bjorn Andersson, Konrad Dybcio Cc: Dmitry Baryshkov, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, devicetree, linux-kernel, Ajit Singh, Krzysztof Kozlowski Vicharak develops computing platforms and manufactures single-board computers, including FPGA-integrated SBCs. Add a vendor prefix for them. Link: https://vicharak.in/ Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com> Signed-off-by: Ajit Singh <blfizzyy@gmail.com> --- Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml index ee7fd3cfe203..1948356337b9 100644 --- a/Documentation/devicetree/bindings/vendor-prefixes.yaml +++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml @@ -1767,6 +1767,8 @@ patternProperties: description: VIA Technologies, Inc. "^vialab,.*": description: VIA Labs, Inc. + "^vicharak,.*": + description: Vicharak Computers Pvt. Ltd. "^vicor,.*": description: Vicor Corporation "^videostrong,.*": -- 2.50.1 (Apple Git-155) ^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH v4 2/3] dt-bindings: arm: qcom: Add Vicharak Axon Mini 2026-06-07 11:36 [PATCH v4 0/3] arm64: dts: qcom: Add Vicharak Axon Mini Ajit Singh 2026-06-07 11:36 ` [PATCH v4 1/3] dt-bindings: vendor-prefixes: Add prefix for Vicharak Ajit Singh @ 2026-06-07 11:36 ` Ajit Singh 2026-06-07 11:36 ` [PATCH v4 3/3] arm64: dts: " Ajit Singh 2 siblings, 0 replies; 14+ messages in thread From: Ajit Singh @ 2026-06-07 11:36 UTC (permalink / raw) To: Bjorn Andersson, Konrad Dybcio Cc: Dmitry Baryshkov, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, devicetree, linux-kernel, Ajit Singh, Krzysztof Kozlowski The Vicharak Axon Mini is a single-board computer based on the Qualcomm QCM6490 platform. Add the top-level compatible string for this board. Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com> Signed-off-by: Ajit Singh <blfizzyy@gmail.com> --- Documentation/devicetree/bindings/arm/qcom.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/arm/qcom.yaml b/Documentation/devicetree/bindings/arm/qcom.yaml index d48c625d3fc4..6924bfe7b949 100644 --- a/Documentation/devicetree/bindings/arm/qcom.yaml +++ b/Documentation/devicetree/bindings/arm/qcom.yaml @@ -361,6 +361,7 @@ properties: - radxa,dragon-q6a - shift,otter - thundercomm,rubikpi3 + - vicharak,axon-mini - const: qcom,qcm6490 - description: Qualcomm Technologies, Inc. Distributed Unit 1000 platform -- 2.50.1 (Apple Git-155) ^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH v4 3/3] arm64: dts: qcom: Add Vicharak Axon Mini 2026-06-07 11:36 [PATCH v4 0/3] arm64: dts: qcom: Add Vicharak Axon Mini Ajit Singh 2026-06-07 11:36 ` [PATCH v4 1/3] dt-bindings: vendor-prefixes: Add prefix for Vicharak Ajit Singh 2026-06-07 11:36 ` [PATCH v4 2/3] dt-bindings: arm: qcom: Add Vicharak Axon Mini Ajit Singh @ 2026-06-07 11:36 ` Ajit Singh 2026-06-07 18:56 ` Dmitry Baryshkov ` (2 more replies) 2 siblings, 3 replies; 14+ messages in thread From: Ajit Singh @ 2026-06-07 11:36 UTC (permalink / raw) To: Bjorn Andersson, Konrad Dybcio Cc: Dmitry Baryshkov, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, devicetree, linux-kernel, Ajit Singh Add DTS for the Vicharak Axon Mini board based on the Qualcomm QCS6490 SoC. This adds debug UART, eMMC, UFS, SDIO WLAN, USB 2.0 host, PCIe support along with regulators. The UFS ICE block is kept disabled because enabling it currently causes an SError during qcom_ice_create() on this board. UFS works without ICE. Signed-off-by: Ajit Singh <blfizzyy@gmail.com> --- arch/arm64/boot/dts/qcom/Makefile | 1 + .../dts/qcom/qcs6490-vicharak-axon-mini.dts | 1027 +++++++++++++++++ 2 files changed, 1028 insertions(+) create mode 100644 arch/arm64/boot/dts/qcom/qcs6490-vicharak-axon-mini.dts diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile index f80b5d9cf1e8..d8d04dc88e08 100644 --- a/arch/arm64/boot/dts/qcom/Makefile +++ b/arch/arm64/boot/dts/qcom/Makefile @@ -146,6 +146,7 @@ qcs6490-rb3gen2-industrial-mezzanine-dtbs := qcs6490-rb3gen2.dtb qcs6490-rb3gen2 dtb-$(CONFIG_ARCH_QCOM) += qcs6490-rb3gen2-industrial-mezzanine.dtb dtb-$(CONFIG_ARCH_QCOM) += qcs6490-rb3gen2-vision-mezzanine.dtb dtb-$(CONFIG_ARCH_QCOM) += qcs6490-thundercomm-rubikpi3.dtb +dtb-$(CONFIG_ARCH_QCOM) += qcs6490-vicharak-axon-mini.dtb dtb-$(CONFIG_ARCH_QCOM) += qcs8300-ride.dtb dtb-$(CONFIG_ARCH_QCOM) += qcs8550-aim300-aiot.dtb dtb-$(CONFIG_ARCH_QCOM) += qcs9100-ride.dtb diff --git a/arch/arm64/boot/dts/qcom/qcs6490-vicharak-axon-mini.dts b/arch/arm64/boot/dts/qcom/qcs6490-vicharak-axon-mini.dts new file mode 100644 index 000000000000..264668f739e1 --- /dev/null +++ b/arch/arm64/boot/dts/qcom/qcs6490-vicharak-axon-mini.dts @@ -0,0 +1,1027 @@ +// SPDX-License-Identifier: BSD-3-Clause +/* + * Copyright (c) 2026 Vicharak Computers Pvt. Ltd. + */ + +/dts-v1/; + +/* PM7250B is configured to use SID8/9 */ +#define PM7250B_SID 8 +#define PM7250B_SID1 9 + +#include <dt-bindings/iio/qcom,spmi-adc7-pmk8350.h> +#include <dt-bindings/iio/qcom,spmi-adc7-pm7325.h> +#include <dt-bindings/leds/common.h> +#include <dt-bindings/pinctrl/qcom,pmic-gpio.h> +#include <dt-bindings/regulator/qcom,rpmh-regulator.h> + +#include "kodiak.dtsi" +#include "pm7250b.dtsi" +#include "pm7325.dtsi" +#include "pm8350c.dtsi" +#include "pmk8350.dtsi" + +/delete-node/ &adsp_mem; +/delete-node/ &cdsp_mem; +/delete-node/ &ipa_fw_mem; +/delete-node/ &mpss_mem; +/delete-node/ &remoteproc_mpss; +/delete-node/ &remoteproc_wpss; +/delete-node/ &rmtfs_mem; +/delete-node/ &video_mem; +/delete-node/ &wifi; +/delete-node/ &wlan_ce_mem; +/delete-node/ &wlan_fw_mem; +/delete-node/ &wpss_mem; +/delete-node/ &xbl_mem; + +/ { + model = "Vicharak Axon Mini"; + compatible = "vicharak,axon-mini", "qcom,qcm6490"; + chassis-type = "embedded"; + + aliases { + serial0 = &uart5; + }; + + chosen { + stdout-path = "serial0:115200n8"; + }; + + leds { + compatible = "gpio-leds"; + + pinctrl-0 = <&user_leds>; + pinctrl-names = "default"; + + user-led { + color = <LED_COLOR_ID_BLUE>; + function = LED_FUNCTION_INDICATOR; + gpios = <&tlmm 19 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "default-on"; + default-state = "on"; + panic-indicator; + retain-state-suspended; + }; + + status-led { + color = <LED_COLOR_ID_BLUE>; + function = LED_FUNCTION_INDICATOR; + gpios = <&tlmm 55 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "heartbeat"; + default-state = "on"; + retain-state-suspended; + }; + }; + + reserved-memory { + xbl_mem: xbl@80700000 { + reg = <0x0 0x80700000 0x0 0x100000>; + no-map; + }; + + cdsp_secure_heap_mem: cdsp-secure-heap@81800000 { + reg = <0x0 0x81800000 0x0 0x1e00000>; + no-map; + }; + + camera_mem: camera@84300000 { + reg = <0x0 0x84300000 0x0 0x500000>; + no-map; + }; + + wpss_mem: wpss@84800000 { + reg = <0x0 0x84800000 0x0 0x1900000>; + no-map; + }; + + adsp_mem: adsp@86100000 { + reg = <0x0 0x86100000 0x0 0x2800000>; + no-map; + }; + + cdsp_mem: cdsp@88900000 { + reg = <0x0 0x88900000 0x0 0x1e00000>; + no-map; + }; + + video_mem: video@8a700000 { + reg = <0x0 0x8a700000 0x0 0x700000>; + no-map; + }; + + cvp_mem: cvp@8ae00000 { + reg = <0x0 0x8ae00000 0x0 0x500000>; + no-map; + }; + + ipa_fw_mem: ipa-fw@8b300000 { + reg = <0x0 0x8b300000 0x0 0x10000>; + no-map; + }; + + ipa_gsi_mem: ipa-gsi@8b310000 { + reg = <0x0 0x8b310000 0x0 0xa000>; + no-map; + }; + + gpu_microcode_mem: gpu-microcode@8b31a000 { + reg = <0x0 0x8b31a000 0x0 0x2000>; + no-map; + }; + + tz_stat_mem: tz-stat@c0000000 { + reg = <0x0 0xc0000000 0x0 0x100000>; + no-map; + }; + + tags_mem: tags@c0100000 { + reg = <0x0 0xc0100000 0x0 0x1200000>; + no-map; + }; + + qtee_mem: qtee@c1300000 { + reg = <0x0 0xc1300000 0x0 0x500000>; + no-map; + }; + + trusted_apps_mem: trusted-apps@c1800000 { + reg = <0x0 0xc1800000 0x0 0x1c00000>; + no-map; + }; + + debug_vm_mem: debug-vm@d0600000 { + reg = <0x0 0xd0600000 0x0 0x100000>; + no-map; + }; + }; + + thermal-zones { + chg-skin-thermal { + polling-delay-passive = <0>; + + thermal-sensors = <&pm7250b_adc_tm 0>; + + trips { + active-config0 { + temperature = <125000>; + hysteresis = <1000>; + type = "passive"; + }; + }; + }; + + conn-thermal { + polling-delay-passive = <0>; + + thermal-sensors = <&pm7250b_adc_tm 1>; + + trips { + active-config0 { + temperature = <125000>; + hysteresis = <1000>; + type = "passive"; + }; + }; + }; + + quiet-thermal { + polling-delay-passive = <0>; + + thermal-sensors = <&pmk8350_adc_tm 1>; + + trips { + active-config0 { + temperature = <125000>; + hysteresis = <1000>; + type = "passive"; + }; + }; + }; + + sdm-skin-thermal { + polling-delay-passive = <0>; + + thermal-sensors = <&pmk8350_adc_tm 3>; + + trips { + active-config0 { + temperature = <125000>; + hysteresis = <1000>; + type = "passive"; + }; + }; + }; + + xo-thermal { + polling-delay-passive = <0>; + + thermal-sensors = <&pmk8350_adc_tm 0>; + + trips { + active-config0 { + temperature = <125000>; + hysteresis = <1000>; + type = "passive"; + }; + }; + }; + }; + + vcc_5v0: regulator-vcc-5v-peri { + compatible = "regulator-fixed"; + regulator-name = "vcc_5v0"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + + vin-supply = <&vph_pwr>; + + regulator-boot-on; + regulator-always-on; + }; + + vph_pwr: regulator-vph-pwr { + compatible = "regulator-fixed"; + regulator-name = "vph_pwr"; + regulator-min-microvolt = <3700000>; + regulator-max-microvolt = <3700000>; + + regulator-boot-on; + regulator-always-on; + }; + + vcc_5v0_usb2_0: regulator-vcc-5v0-usb2-0 { + compatible = "regulator-fixed"; + regulator-name = "vcc_5v0_usb2_0"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + + vin-supply = <&vcc_5v0>; + + gpio = <&tlmm 117 GPIO_ACTIVE_HIGH>; + enable-active-high; + + pinctrl-0 = <&vcc5v0_usb2_0_en>; + pinctrl-names = "default"; + + regulator-boot-on; + regulator-always-on; + }; + + vcc_pcie1_3v3: regulator-vcc-pcie1-3v3 { + compatible = "regulator-fixed"; + regulator-name = "vcc_pcie1_3v3"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + + vin-supply = <&vcc_5v0>; + + gpio = <&tlmm 115 GPIO_ACTIVE_HIGH>; + enable-active-high; + + pinctrl-0 = <&vcc_pcie1_3v3_en>; + pinctrl-names = "default"; + + regulator-boot-on; + regulator-always-on; + }; + + vcc_pcie0_dsi_3v3: regulator-vcc-pcie0-dsi-3v3 { + compatible = "regulator-fixed"; + regulator-name = "vcc_pcie0_dsi_3v3"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + + vin-supply = <&vcc_5v0>; + + gpio = <&tlmm 114 GPIO_ACTIVE_HIGH>; + enable-active-high; + + pinctrl-0 = <&vcc_pcie0_dsi_3v3_en>; + pinctrl-names = "default"; + + regulator-boot-on; + regulator-always-on; + }; + + wlan_pwrseq: wlan-pwrseq { + compatible = "mmc-pwrseq-simple"; + + pinctrl-0 = <&wl_enable_h>; + pinctrl-names = "default"; + + reset-gpios = <&tlmm 84 GPIO_ACTIVE_LOW>; + post-power-on-delay-ms = <200>; + power-off-delay-us = <20000>; + }; +}; + +&apps_rsc { + regulators-0 { + compatible = "qcom,pm7325-rpmh-regulators"; + qcom,pmic-id = "b"; + + vdd-s1-supply = <&vph_pwr>; + vdd-s2-supply = <&vph_pwr>; + vdd-s3-supply = <&vph_pwr>; + vdd-s4-supply = <&vph_pwr>; + vdd-s5-supply = <&vph_pwr>; + vdd-s6-supply = <&vph_pwr>; + vdd-s7-supply = <&vph_pwr>; + vdd-s8-supply = <&vph_pwr>; + vdd-l1-l4-l12-l15-supply = <&vreg_s7b_0p972>; + vdd-l2-l7-supply = <&vreg_bob_3p296>; + vdd-l6-l9-l10-supply = <&vreg_s8b_1p272>; + vdd-l8-supply = <&vreg_s7b_0p972>; + vdd-l11-l17-l18-l19-supply = <&vreg_s1b_1p872>; + vdd-l13-supply = <&vreg_s7b_0p972>; + vdd-l14-l16-supply = <&vreg_s8b_1p272>; + + vreg_s1b_1p872: smps1 { + regulator-name = "vreg_s1b_1p872"; + regulator-min-microvolt = <1840000>; + regulator-max-microvolt = <2040000>; + }; + + vreg_s7b_0p972: smps7 { + regulator-name = "vreg_s7b_0p972"; + regulator-min-microvolt = <535000>; + regulator-max-microvolt = <1120000>; + }; + + vreg_s8b_1p272: smps8 { + regulator-name = "vreg_s8b_1p272"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1500000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_RET>; + }; + + vreg_l1b_0p912: ldo1 { + regulator-name = "vreg_l1b_0p912"; + regulator-min-microvolt = <825000>; + regulator-max-microvolt = <925000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l2b_3p072: ldo2 { + regulator-name = "vreg_l2b_3p072"; + regulator-min-microvolt = <2700000>; + regulator-max-microvolt = <3544000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l3b_0p504: ldo3 { + regulator-name = "vreg_l3b_0p504"; + regulator-min-microvolt = <312000>; + regulator-max-microvolt = <650000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l6b_1p2: ldo6 { + regulator-name = "vreg_l6b_1p2"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1260000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l7b_2p96: ldo7 { + regulator-name = "vreg_l7b_2p96"; + regulator-min-microvolt = <2960000>; + regulator-max-microvolt = <2960000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + regulator-allow-set-load; + regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM + RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l8b_0p904: ldo8 { + regulator-name = "vreg_l8b_0p904"; + regulator-min-microvolt = <870000>; + regulator-max-microvolt = <970000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l9b_1p2: ldo9 { + regulator-name = "vreg_l9b_1p2"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + regulator-allow-set-load; + regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM + RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l11b_1p504: ldo11 { + regulator-name = "vreg_l11b_1p504"; + regulator-min-microvolt = <1776000>; + regulator-max-microvolt = <2000000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l12b_0p751: ldo12 { + regulator-name = "vreg_l12b_0p751"; + regulator-min-microvolt = <751000>; + regulator-max-microvolt = <824000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l13b_0p53: ldo13 { + regulator-name = "vreg_l13b_0p53"; + regulator-min-microvolt = <530000>; + regulator-max-microvolt = <824000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l14b_1p08: ldo14 { + regulator-name = "vreg_l14b_1p08"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1304000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l15b_0p765: ldo15 { + regulator-name = "vreg_l15b_0p765"; + regulator-min-microvolt = <765000>; + regulator-max-microvolt = <1020000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l16b_1p1: ldo16 { + regulator-name = "vreg_l16b_1p1"; + regulator-min-microvolt = <1100000>; + regulator-max-microvolt = <1300000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + + regulator-always-on; + regulator-boot-on; + }; + + vreg_l17b_1p7: ldo17 { + regulator-name = "vreg_l17b_1p7"; + regulator-min-microvolt = <1700000>; + regulator-max-microvolt = <1900000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + + regulator-always-on; + regulator-boot-on; + }; + + vreg_l18b_1p8: ldo18 { + regulator-name = "vreg_l18b_1p8"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <2000000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l19b_1p8: ldo19 { + regulator-name = "vreg_l19b_1p8"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <2000000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + }; + + regulators-1 { + compatible = "qcom,pm8350c-rpmh-regulators"; + qcom,pmic-id = "c"; + + vdd-s1-supply = <&vph_pwr>; + vdd-s2-supply = <&vph_pwr>; + vdd-s3-supply = <&vph_pwr>; + vdd-s4-supply = <&vph_pwr>; + vdd-s5-supply = <&vph_pwr>; + vdd-s6-supply = <&vph_pwr>; + vdd-s7-supply = <&vph_pwr>; + vdd-s8-supply = <&vph_pwr>; + vdd-s9-supply = <&vph_pwr>; + vdd-s10-supply = <&vph_pwr>; + vdd-l1-l12-supply = <&vreg_s1b_1p872>; + vdd-l2-l8-supply = <&vreg_s1b_1p872>; + vdd-l3-l4-l5-l7-l13-supply = <&vreg_bob_3p296>; + vdd-l6-l9-l11-supply = <&vreg_bob_3p296>; + vdd-l10-supply = <&vreg_s7b_0p972>; + vdd-bob-supply = <&vph_pwr>; + + vreg_s1c_2p19: smps1 { + regulator-name = "vreg_s1c_2p19"; + regulator-min-microvolt = <2200000>; + regulator-max-microvolt = <2208000>; + }; + + vreg_s9c_1p084: smps9 { + regulator-name = "vreg_s9c_1p084"; + regulator-min-microvolt = <1010000>; + regulator-max-microvolt = <1170000>; + }; + + vreg_l1c_1p8: ldo1 { + regulator-name = "vreg_l1c_1p8"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1980000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l2c_1p62: ldo2 { + regulator-name = "vreg_l2c_1p62"; + regulator-min-microvolt = <1620000>; + regulator-max-microvolt = <1976000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l3c_2p8: ldo3 { + regulator-name = "vreg_l3c_2p8"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <3540000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l4c_1p62: ldo4 { + regulator-name = "vreg_l4c_1p62"; + regulator-min-microvolt = <1620000>; + regulator-max-microvolt = <3300000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l5c_1p62: ldo5 { + regulator-name = "vreg_l5c_1p62"; + regulator-min-microvolt = <1620000>; + regulator-max-microvolt = <3300000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l6c_2p96: ldo6 { + regulator-name = "vreg_l6c_2p96"; + regulator-min-microvolt = <1650000>; + regulator-max-microvolt = <3544000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l7c_3p0: ldo7 { + regulator-name = "vreg_l7c_3p0"; + regulator-min-microvolt = <3000000>; + regulator-max-microvolt = <3544000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l8c_1p62: ldo8 { + regulator-name = "vreg_l8c_1p62"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <2000000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l9c_2p96: ldo9 { + regulator-name = "vreg_l9c_2p96"; + regulator-min-microvolt = <2700000>; + regulator-max-microvolt = <3544000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l10c_0p88: ldo10 { + regulator-name = "vreg_l10c_0p88"; + regulator-min-microvolt = <720000>; + regulator-max-microvolt = <1050000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l11c_2p8: ldo11 { + regulator-name = "vreg_l11c_2p8"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <3544000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l12c_1p8: ldo12 { + regulator-name = "vreg_l12c_1p8"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <2000000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + + /* + * VREG_L12C_1P8 supplies the Ampak WLAN/BT module + * VDDIO and the external 32.768 kHz oscillator. + */ + regulator-always-on; + regulator-boot-on; + }; + + vreg_l13c_2p7: ldo13 { + regulator-name = "vreg_l13c_2p7"; + regulator-min-microvolt = <2700000>; + regulator-max-microvolt = <3544000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_bob_3p296: bob { + regulator-name = "vreg_bob_3p296"; + regulator-min-microvolt = <3008000>; + regulator-max-microvolt = <3300000>; + }; + }; +}; + +&gcc { + protected-clocks = <GCC_CFG_NOC_LPASS_CLK>, + <GCC_MSS_CFG_AHB_CLK>, + <GCC_MSS_GPLL0_MAIN_DIV_CLK_SRC>, + <GCC_MSS_OFFLINE_AXI_CLK>, + <GCC_MSS_Q6SS_BOOT_CLK_SRC>, + <GCC_MSS_Q6_MEMNOC_AXI_CLK>, + <GCC_MSS_SNOC_AXI_CLK>, + <GCC_QSPI_CNOC_PERIPH_AHB_CLK>, + <GCC_QSPI_CORE_CLK>, + <GCC_QSPI_CORE_CLK_SRC>, + <GCC_SEC_CTRL_CLK_SRC>, + <GCC_WPSS_AHB_BDG_MST_CLK>, + <GCC_WPSS_AHB_CLK>, + <GCC_WPSS_RSCP_CLK>; +}; + +&gpi_dma0 { + status = "okay"; +}; + +&gpi_dma1 { + status = "okay"; +}; + +&gpu { + status = "okay"; +}; + +&gpu_zap_shader { + firmware-name = "qcom/qcs6490/a660_zap.mbn"; +}; + +&ice { + status = "disabled"; +}; + +&pcie0 { + perst-gpios = <&tlmm 87 GPIO_ACTIVE_LOW>; + wake-gpios = <&tlmm 89 GPIO_ACTIVE_HIGH>; + + pinctrl-0 = <&pcie0_clkreq_n>, <&pcie0_reset_n>, <&pcie0_wake_n>; + pinctrl-names = "default"; + + status = "okay"; +}; + +&pcie0_phy { + vdda-phy-supply = <&vreg_l10c_0p88>; + vdda-pll-supply = <&vreg_l6b_1p2>; + + status = "okay"; +}; + +&pcie1 { + perst-gpios = <&tlmm 2 GPIO_ACTIVE_LOW>; + wake-gpios = <&tlmm 3 GPIO_ACTIVE_HIGH>; + + pinctrl-0 = <&pcie1_reset_n>, <&pcie1_wake_n>, <&pcie1_clkreq_n>; + pinctrl-names = "default"; + + status = "okay"; +}; + +&pcie1_phy { + vdda-phy-supply = <&vreg_l10c_0p88>; + vdda-pll-supply = <&vreg_l6b_1p2>; + + status = "okay"; +}; + +&pm7250b_adc { + channel@4d { + reg = <ADC5_AMUX_THM1_100K_PU>; + qcom,ratiometric; + qcom,hw-settle-time = <200>; + qcom,pre-scaling = <1 1>; + label = "charger_skin_therm"; + }; + + channel@4f { + reg = <ADC5_AMUX_THM3_100K_PU>; + qcom,ratiometric; + qcom,hw-settle-time = <200>; + qcom,pre-scaling = <1 1>; + label = "conn_therm"; + }; +}; + +&pm7250b_adc_tm { + status = "okay"; + + charger-skin-therm@0 { + reg = <0>; + io-channels = <&pm7250b_adc ADC5_AMUX_THM1_100K_PU>; + qcom,ratiometric; + qcom,hw-settle-time-us = <200>; + }; + + conn-therm@1 { + reg = <1>; + io-channels = <&pm7250b_adc ADC5_AMUX_THM3_100K_PU>; + qcom,ratiometric; + qcom,hw-settle-time-us = <200>; + }; +}; + +&pm7325_temp_alarm { + io-channels = <&pmk8350_vadc PM7325_ADC7_DIE_TEMP>; + io-channel-names = "thermal"; +}; + +&pmk8350_adc_tm { + status = "okay"; + + xo-therm@0 { + reg = <0>; + io-channels = <&pmk8350_vadc PMK8350_ADC7_AMUX_THM1_100K_PU>; + qcom,ratiometric; + qcom,hw-settle-time-us = <200>; + }; + + quiet-therm@1 { + reg = <1>; + io-channels = <&pmk8350_vadc PM7325_ADC7_AMUX_THM1_100K_PU>; + qcom,ratiometric; + qcom,hw-settle-time-us = <200>; + }; + + sdm-skin-therm@3 { + reg = <3>; + io-channels = <&pmk8350_vadc PM7325_ADC7_AMUX_THM3_100K_PU>; + qcom,ratiometric; + qcom,hw-settle-time-us = <200>; + }; +}; + +&pmk8350_rtc { + status = "okay"; +}; + +&pmk8350_vadc { + status = "okay"; + + channel@3 { + reg = <PMK8350_ADC7_DIE_TEMP>; + qcom,pre-scaling = <1 1>; + label = "pmk8350_die_therm"; + }; + + channel@44 { + reg = <PMK8350_ADC7_AMUX_THM1_100K_PU>; + qcom,ratiometric; + qcom,hw-settle-time = <200>; + qcom,pre-scaling = <1 1>; + label = "pmk8350_xo_therm"; + }; + + channel@103 { + reg = <PM7325_ADC7_DIE_TEMP>; + qcom,pre-scaling = <1 1>; + label = "pm7325_die_therm"; + }; + + channel@144 { + reg = <PM7325_ADC7_AMUX_THM1_100K_PU>; + qcom,ratiometric; + qcom,hw-settle-time = <200>; + qcom,pre-scaling = <1 1>; + label = "pm7325_quiet_therm"; + }; + + channel@146 { + reg = <PM7325_ADC7_AMUX_THM3_100K_PU>; + qcom,ratiometric; + qcom,hw-settle-time = <200>; + qcom,pre-scaling = <1 1>; + label = "pm7325_sdm_skin_therm"; + }; +}; + +&pon_pwrkey { + status = "okay"; +}; + +&pon_resin { + linux,code = <KEY_RESTART>; + + status = "okay"; +}; + +&qupv3_id_0 { + firmware-name = "qcom/qcs6490/qupv3fw.elf"; + + status = "okay"; +}; + +&qupv3_id_1 { + firmware-name = "qcom/qcs6490/qupv3fw.elf"; + + status = "okay"; +}; + +&remoteproc_adsp { + firmware-name = "qcom/qcs6490/adsp.mbn"; + + status = "okay"; +}; + +&remoteproc_cdsp { + firmware-name = "qcom/qcs6490/cdsp.mbn"; + + status = "okay"; +}; + +&sdhc_1 { + vqmmc-supply = <&vreg_l19b_1p8>; + vmmc-supply = <&vreg_bob_3p296>; + + non-removable; + no-sd; + no-sdio; + + status = "okay"; +}; + +&sdhc_2 { + vqmmc-supply = <&vreg_l2c_1p62>; + vmmc-supply = <&vreg_l6c_2p96>; + + mmc-pwrseq = <&wlan_pwrseq>; + + bus-width = <4>; + non-removable; + no-sd; + no-mmc; + cap-sdio-irq; + keep-power-in-suspend; + max-frequency = <100000000>; + + status = "okay"; +}; + +&tlmm { + gpio-reserved-ranges = <48 4>; /* NFC */ + + pcie0_reset_n: pcie0-reset-n-state { + pins = "gpio87"; + function = "gpio"; + drive-strength = <2>; + bias-disable; + }; + + pcie0_wake_n: pcie0-wake-n-state { + pins = "gpio89"; + function = "gpio"; + drive-strength = <2>; + bias-pull-up; + }; + + pcie1_reset_n: pcie1-reset-n-state { + pins = "gpio2"; + function = "gpio"; + drive-strength = <2>; + bias-disable; + }; + + pcie1_wake_n: pcie1-wake-n-state { + pins = "gpio3"; + function = "gpio"; + drive-strength = <2>; + bias-pull-up; + }; + + user_leds: user-led-state { + pins = "gpio19", "gpio55"; + function = "gpio"; + drive-strength = <2>; + bias-disable; + }; + + vcc_3v3_en: vcc-3v3-en-state { + pins = "gpio113"; + function = "gpio"; + drive-strength = <2>; + bias-disable; + }; + + vcc5v0_usb2_0_en: vcc-5v0-usb2-0-en-state { + pins = "gpio117"; + function = "gpio"; + drive-strength = <2>; + bias-disable; + }; + + vcc_pcie0_dsi_3v3_en: vcc-pcie0-dsi-3v3-en-state { + pins = "gpio114"; + function = "gpio"; + drive-strength = <2>; + bias-disable; + }; + + vcc_pcie1_3v3_en: vcc-pcie1-3v3-en-state { + pins = "gpio115"; + function = "gpio"; + drive-strength = <2>; + bias-disable; + }; + + wl_enable_h: wl-enable-h-state { + pins = "gpio84"; + function = "gpio"; + drive-strength = <8>; + bias-disable; + }; +}; + +&uart5 { + status = "okay"; +}; + +&ufs_mem_hc { + /delete-property/ qcom,ice; + + reset-gpios = <&tlmm 175 GPIO_ACTIVE_LOW>; + vcc-supply = <&vreg_l7b_2p96>; + vcc-max-microamp = <800000>; + vccq-supply = <&vreg_l9b_1p2>; + vccq-max-microamp = <900000>; + vccq2-supply = <&vreg_l9b_1p2>; + vccq2-max-microamp = <900000>; + + status = "okay"; +}; + +&ufs_mem_phy { + vdda-phy-supply = <&vreg_l10c_0p88>; + vdda-pll-supply = <&vreg_l6b_1p2>; + + status = "okay"; +}; + +&usb_2 { + /* Routed to an onboard USB hub for two USB-A host ports. */ + dr_mode = "host"; + + status = "okay"; +}; + +&usb_2_hsphy { + vdda-pll-supply = <&vreg_l10c_0p88>; + vdda33-supply = <&vreg_l2b_3p072>; + vdda18-supply = <&vreg_l1c_1p8>; + + status = "okay"; +}; + +&venus { + status = "okay"; +}; + +/* pinctrl */ +&pcie0_clkreq_n { + bias-pull-up; + drive-strength = <2>; +}; + +&pcie1_clkreq_n { + bias-pull-up; + drive-strength = <2>; +}; + +&sdc1_clk { + bias-disable; + drive-strength = <16>; +}; + +&sdc1_cmd { + bias-pull-up; + drive-strength = <10>; +}; + +&sdc1_data { + bias-pull-up; + drive-strength = <10>; +}; + +&sdc1_rclk { + bias-pull-down; +}; + +&sdc2_clk { + bias-disable; + drive-strength = <16>; +}; + +&sdc2_cmd { + bias-pull-up; + drive-strength = <10>; +}; + +&sdc2_data { + bias-pull-up; + drive-strength = <10>; +}; -- 2.50.1 (Apple Git-155) ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v4 3/3] arm64: dts: qcom: Add Vicharak Axon Mini 2026-06-07 11:36 ` [PATCH v4 3/3] arm64: dts: " Ajit Singh @ 2026-06-07 18:56 ` Dmitry Baryshkov 2026-06-10 12:58 ` Konrad Dybcio 2026-06-10 13:01 ` Konrad Dybcio 2 siblings, 0 replies; 14+ messages in thread From: Dmitry Baryshkov @ 2026-06-07 18:56 UTC (permalink / raw) To: Ajit Singh Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, devicetree, linux-kernel On Sun, Jun 07, 2026 at 05:06:58PM +0530, Ajit Singh wrote: > Add DTS for the Vicharak Axon Mini board based on the Qualcomm > QCS6490 SoC. > > This adds debug UART, eMMC, UFS, SDIO WLAN, USB 2.0 host, PCIe > support along with regulators. > > The UFS ICE block is kept disabled because enabling it currently causes > an SError during qcom_ice_create() on this board. UFS works without ICE. > > Signed-off-by: Ajit Singh <blfizzyy@gmail.com> > --- > arch/arm64/boot/dts/qcom/Makefile | 1 + > .../dts/qcom/qcs6490-vicharak-axon-mini.dts | 1027 +++++++++++++++++ > 2 files changed, 1028 insertions(+) > create mode 100644 arch/arm64/boot/dts/qcom/qcs6490-vicharak-axon-mini.dts > Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com> -- With best wishes Dmitry ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v4 3/3] arm64: dts: qcom: Add Vicharak Axon Mini 2026-06-07 11:36 ` [PATCH v4 3/3] arm64: dts: " Ajit Singh 2026-06-07 18:56 ` Dmitry Baryshkov @ 2026-06-10 12:58 ` Konrad Dybcio 2026-06-12 4:16 ` Ajit Singh 2026-06-10 13:01 ` Konrad Dybcio 2 siblings, 1 reply; 14+ messages in thread From: Konrad Dybcio @ 2026-06-10 12:58 UTC (permalink / raw) To: Ajit Singh, Bjorn Andersson, Bartosz Golaszewski Cc: Dmitry Baryshkov, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, devicetree, linux-kernel On 6/7/26 1:36 PM, Ajit Singh wrote: > Add DTS for the Vicharak Axon Mini board based on the Qualcomm > QCS6490 SoC. > > This adds debug UART, eMMC, UFS, SDIO WLAN, USB 2.0 host, PCIe > support along with regulators. > > The UFS ICE block is kept disabled because enabling it currently causes > an SError during qcom_ice_create() on this board. UFS works without ICE. > > Signed-off-by: Ajit Singh <blfizzyy@gmail.com> > --- [...] > + vreg_l12c_1p8: ldo12 { > + regulator-name = "vreg_l12c_1p8"; > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <2000000>; > + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > + > + /* > + * VREG_L12C_1P8 supplies the Ampak WLAN/BT module > + * VDDIO and the external 32.768 kHz oscillator. > + */ Sorry for the long review timelines on the previous patch, many of us were out for conferences.. Is the oscillator used for that WLAN module? Would you ideally like to be able to turn it on/off? Perhaps you could get that with a simple pwrseq driver (+Bartosz) Konrad ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v4 3/3] arm64: dts: qcom: Add Vicharak Axon Mini 2026-06-10 12:58 ` Konrad Dybcio @ 2026-06-12 4:16 ` Ajit Singh 2026-06-16 12:10 ` Konrad Dybcio 0 siblings, 1 reply; 14+ messages in thread From: Ajit Singh @ 2026-06-12 4:16 UTC (permalink / raw) To: Konrad Dybcio Cc: Bjorn Andersson, Bartosz Golaszewski, Dmitry Baryshkov, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, devicetree, linux-kernel On Wed, Jun 10, 2026 at 02:58:19PM +0530, Konrad Dybcio wrote: > On 6/7/26 1:36 PM, Ajit Singh wrote: > > Add DTS for the Vicharak Axon Mini board based on the Qualcomm > > QCS6490 SoC. > > > > This adds debug UART, eMMC, UFS, SDIO WLAN, USB 2.0 host, PCIe > > support along with regulators. > > > > The UFS ICE block is kept disabled because enabling it currently causes > > an SError during qcom_ice_create() on this board. UFS works without ICE. > > > > Signed-off-by: Ajit Singh <blfizzyy@gmail.com> > > --- > > [...] > > > + vreg_l12c_1p8: ldo12 { > > + regulator-name = "vreg_l12c_1p8"; > > + regulator-min-microvolt = <1800000>; > > + regulator-max-microvolt = <2000000>; > > + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > > + > > + /* > > + * VREG_L12C_1P8 supplies the Ampak WLAN/BT module > > + * VDDIO and the external 32.768 kHz oscillator. > > + */ > > Sorry for the long review timelines on the previous patch, many of us > were out for conferences.. > > Is the oscillator used for that WLAN module? Would you ideally like to > be able to turn it on/off? yes, oscillator is used for WLAN modules. Oscillator is powered from the same VREG_L12C rail as WLAN VDDIO, so there is no separate regulator control to put in pwrseq. So I think this will work fine? > > Perhaps you could get that with a simple pwrseq driver (+Bartosz) > > Konrad ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v4 3/3] arm64: dts: qcom: Add Vicharak Axon Mini 2026-06-12 4:16 ` Ajit Singh @ 2026-06-16 12:10 ` Konrad Dybcio 2026-06-18 6:29 ` Ajit Singh 0 siblings, 1 reply; 14+ messages in thread From: Konrad Dybcio @ 2026-06-16 12:10 UTC (permalink / raw) To: Ajit Singh Cc: Bjorn Andersson, Bartosz Golaszewski, Dmitry Baryshkov, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, devicetree, linux-kernel On 6/12/26 6:16 AM, Ajit Singh wrote: > On Wed, Jun 10, 2026 at 02:58:19PM +0530, Konrad Dybcio wrote: >> On 6/7/26 1:36 PM, Ajit Singh wrote: >>> Add DTS for the Vicharak Axon Mini board based on the Qualcomm >>> QCS6490 SoC. >>> >>> This adds debug UART, eMMC, UFS, SDIO WLAN, USB 2.0 host, PCIe >>> support along with regulators. >>> >>> The UFS ICE block is kept disabled because enabling it currently causes >>> an SError during qcom_ice_create() on this board. UFS works without ICE. >>> >>> Signed-off-by: Ajit Singh <blfizzyy@gmail.com> >>> --- >> >> [...] >> >>> + vreg_l12c_1p8: ldo12 { >>> + regulator-name = "vreg_l12c_1p8"; >>> + regulator-min-microvolt = <1800000>; >>> + regulator-max-microvolt = <2000000>; >>> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; >>> + >>> + /* >>> + * VREG_L12C_1P8 supplies the Ampak WLAN/BT module >>> + * VDDIO and the external 32.768 kHz oscillator. >>> + */ >> >> Sorry for the long review timelines on the previous patch, many of us >> were out for conferences.. >> >> Is the oscillator used for that WLAN module? Would you ideally like to >> be able to turn it on/off? > > yes, oscillator is used for WLAN modules. Oscillator is powered from the same > VREG_L12C rail as WLAN VDDIO, so there is no separate regulator control to put > in pwrseq. So I think this will work fine? Probably? My point is that you marked it as always-on, so it will *never* turn off right now. For e.g. Qualcomm wifi, there's some timing spec that needs to be met wrt delays between toggling various regulators and GPIOs going to the module, hence I suggested you may need some pwrseq inbetween to achieve reliable powering on/off Konrad ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v4 3/3] arm64: dts: qcom: Add Vicharak Axon Mini 2026-06-16 12:10 ` Konrad Dybcio @ 2026-06-18 6:29 ` Ajit Singh 2026-06-19 15:30 ` Konrad Dybcio 0 siblings, 1 reply; 14+ messages in thread From: Ajit Singh @ 2026-06-18 6:29 UTC (permalink / raw) To: Konrad Dybcio Cc: Bjorn Andersson, Bartosz Golaszewski, Dmitry Baryshkov, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, devicetree, linux-kernel On Tue, Jun 16, 2026 at 02:10:44PM +0530, Konrad Dybcio wrote: > On 6/12/26 6:16 AM, Ajit Singh wrote: > > On Wed, Jun 10, 2026 at 02:58:19PM +0530, Konrad Dybcio wrote: > >> On 6/7/26 1:36 PM, Ajit Singh wrote: > >>> Add DTS for the Vicharak Axon Mini board based on the Qualcomm > >>> QCS6490 SoC. > >>> > >>> This adds debug UART, eMMC, UFS, SDIO WLAN, USB 2.0 host, PCIe > >>> support along with regulators. > >>> > >>> The UFS ICE block is kept disabled because enabling it currently causes > >>> an SError during qcom_ice_create() on this board. UFS works without ICE. > >>> > >>> Signed-off-by: Ajit Singh <blfizzyy@gmail.com> > >>> --- > >> > >> [...] > >> > >>> + vreg_l12c_1p8: ldo12 { > >>> + regulator-name = "vreg_l12c_1p8"; > >>> + regulator-min-microvolt = <1800000>; > >>> + regulator-max-microvolt = <2000000>; > >>> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > >>> + > >>> + /* > >>> + * VREG_L12C_1P8 supplies the Ampak WLAN/BT module > >>> + * VDDIO and the external 32.768 kHz oscillator. > >>> + */ > >> > >> Sorry for the long review timelines on the previous patch, many of us > >> were out for conferences.. > >> > >> Is the oscillator used for that WLAN module? Would you ideally like to > >> be able to turn it on/off? > > > > yes, oscillator is used for WLAN modules. Oscillator is powered from the same > > VREG_L12C rail as WLAN VDDIO, so there is no separate regulator control to put > > in pwrseq. So I think this will work fine? > > Probably? My point is that you marked it as always-on, so it will *never* > turn off right now. For e.g. Qualcomm wifi, there's some timing spec that > needs to be met wrt delays between toggling various regulators and GPIOs > going to the module, hence I suggested you may need some pwrseq inbetween > to achieve reliable powering on/off > Right, I checked the module timing requirements. The module requires VBAT to be present before or at the same time as VDDIO, and WL_REG_ON to be asserted only after VBAT/VDDIO are valid, around 2 sleep-clock cycles later. On this board, VBAT is the shared VCC_3V3 rail and is enabled by hardware, so it is already present before VDDIO. VREG_L12C supplies WLAN/BT VDDIO and is kept on. The WL_REG_ON timing is handled by the existing mmc-pwrseq-simple reset GPIO/delay before SDIO enumeration. So I think the current sequencing matches the module timing requirement. > Konrad Ajit ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v4 3/3] arm64: dts: qcom: Add Vicharak Axon Mini 2026-06-18 6:29 ` Ajit Singh @ 2026-06-19 15:30 ` Konrad Dybcio 2026-06-20 4:57 ` Ajit Singh 0 siblings, 1 reply; 14+ messages in thread From: Konrad Dybcio @ 2026-06-19 15:30 UTC (permalink / raw) To: Ajit Singh Cc: Bjorn Andersson, Bartosz Golaszewski, Dmitry Baryshkov, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, devicetree, linux-kernel On 6/18/26 8:29 AM, Ajit Singh wrote: > On Tue, Jun 16, 2026 at 02:10:44PM +0530, Konrad Dybcio wrote: >> On 6/12/26 6:16 AM, Ajit Singh wrote: >>> On Wed, Jun 10, 2026 at 02:58:19PM +0530, Konrad Dybcio wrote: >>>> On 6/7/26 1:36 PM, Ajit Singh wrote: >>>>> Add DTS for the Vicharak Axon Mini board based on the Qualcomm >>>>> QCS6490 SoC. >>>>> >>>>> This adds debug UART, eMMC, UFS, SDIO WLAN, USB 2.0 host, PCIe >>>>> support along with regulators. >>>>> >>>>> The UFS ICE block is kept disabled because enabling it currently causes >>>>> an SError during qcom_ice_create() on this board. UFS works without ICE. >>>>> >>>>> Signed-off-by: Ajit Singh <blfizzyy@gmail.com> >>>>> --- >>>> >>>> [...] >>>> >>>>> + vreg_l12c_1p8: ldo12 { >>>>> + regulator-name = "vreg_l12c_1p8"; >>>>> + regulator-min-microvolt = <1800000>; >>>>> + regulator-max-microvolt = <2000000>; >>>>> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; >>>>> + >>>>> + /* >>>>> + * VREG_L12C_1P8 supplies the Ampak WLAN/BT module >>>>> + * VDDIO and the external 32.768 kHz oscillator. >>>>> + */ >>>> >>>> Sorry for the long review timelines on the previous patch, many of us >>>> were out for conferences.. >>>> >>>> Is the oscillator used for that WLAN module? Would you ideally like to >>>> be able to turn it on/off? >>> >>> yes, oscillator is used for WLAN modules. Oscillator is powered from the same >>> VREG_L12C rail as WLAN VDDIO, so there is no separate regulator control to put >>> in pwrseq. So I think this will work fine? >> >> Probably? My point is that you marked it as always-on, so it will *never* >> turn off right now. For e.g. Qualcomm wifi, there's some timing spec that >> needs to be met wrt delays between toggling various regulators and GPIOs >> going to the module, hence I suggested you may need some pwrseq inbetween >> to achieve reliable powering on/off >> > Right, I checked the module timing requirements. > > The module requires VBAT to be present before or at the same time as VDDIO, and > WL_REG_ON to be asserted only after VBAT/VDDIO are valid, around 2 sleep-clock > cycles later. > > On this board, VBAT is the shared VCC_3V3 rail and is enabled by hardware, so > it is already present before VDDIO. VREG_L12C supplies WLAN/BT VDDIO and is > kept on. The WL_REG_ON timing is handled by the existing mmc-pwrseq-simple > reset GPIO/delay before SDIO enumeration. > > So I think the current sequencing matches the module timing requirement. Since the sequencing is handled, can we drop the always-on property, perhaps by describing the SDIO WLAN? e.g. in arch/arm/boot/dts/st/ste-ux500-samsung-codina-tmo.dts there is: /* WLAN SDIO channel */ mmc@80118000 { arm,primecell-periphid = <0x10480180>; max-frequency = <50000000>; bus-width = <4>; non-removable; cap-sd-highspeed; pinctrl-names = "default", "sleep"; pinctrl-0 = <&mc1_a_2_default>; pinctrl-1 = <&mc1_a_2_sleep>; /* * GPIO-controlled voltage enablement: this drives * the WL_REG_ON line high when we use this device. * Represented as regulator to fill OCR mask. */ vmmc-supply = <&wl_reg>; #address-cells = <1>; #size-cells = <0>; status = "okay"; wifi@1 { compatible = "brcm,bcm4334-fmac", "brcm,bcm4329-fmac"; reg = <1>; /* GPIO216 WL_HOST_WAKE */ interrupt-parent = <&gpio6>; interrupts = <24 IRQ_TYPE_EDGE_FALLING>; interrupt-names = "host-wake"; pinctrl-names = "default"; pinctrl-0 = <&wlan_default_mode>; }; }; most notably though, it seems that the brcmfmac driver doesn't even use the regulator framework, probably because all of the SDIO WLANs that Linux supports were wired in a more "embedded" way, where the V(Q)MMC supplies were enough.. unless it's the case here too? Konrad ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v4 3/3] arm64: dts: qcom: Add Vicharak Axon Mini 2026-06-19 15:30 ` Konrad Dybcio @ 2026-06-20 4:57 ` Ajit Singh 2026-06-24 12:12 ` Konrad Dybcio 0 siblings, 1 reply; 14+ messages in thread From: Ajit Singh @ 2026-06-20 4:57 UTC (permalink / raw) To: Konrad Dybcio Cc: Bjorn Andersson, Bartosz Golaszewski, Dmitry Baryshkov, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, devicetree, linux-kernel On Fri, Jun 19, 2026 at 05:30:40PM +0530, Konrad Dybcio wrote: > On 6/18/26 8:29 AM, Ajit Singh wrote: > > On Tue, Jun 16, 2026 at 02:10:44PM +0530, Konrad Dybcio wrote: > >> On 6/12/26 6:16 AM, Ajit Singh wrote: > >>> On Wed, Jun 10, 2026 at 02:58:19PM +0530, Konrad Dybcio wrote: > >>>> On 6/7/26 1:36 PM, Ajit Singh wrote: > >>>>> Add DTS for the Vicharak Axon Mini board based on the Qualcomm > >>>>> QCS6490 SoC. > >>>>> > >>>>> This adds debug UART, eMMC, UFS, SDIO WLAN, USB 2.0 host, PCIe > >>>>> support along with regulators. > >>>>> > >>>>> The UFS ICE block is kept disabled because enabling it currently causes > >>>>> an SError during qcom_ice_create() on this board. UFS works without ICE. > >>>>> > >>>>> Signed-off-by: Ajit Singh <blfizzyy@gmail.com> > >>>>> --- > >>>> > >>>> [...] > >>>> > >>>>> + vreg_l12c_1p8: ldo12 { > >>>>> + regulator-name = "vreg_l12c_1p8"; > >>>>> + regulator-min-microvolt = <1800000>; > >>>>> + regulator-max-microvolt = <2000000>; > >>>>> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > >>>>> + > >>>>> + /* > >>>>> + * VREG_L12C_1P8 supplies the Ampak WLAN/BT module > >>>>> + * VDDIO and the external 32.768 kHz oscillator. > >>>>> + */ > >>>> > >>>> Sorry for the long review timelines on the previous patch, many of us > >>>> were out for conferences.. > >>>> > >>>> Is the oscillator used for that WLAN module? Would you ideally like to > >>>> be able to turn it on/off? > >>> > >>> yes, oscillator is used for WLAN modules. Oscillator is powered from the same > >>> VREG_L12C rail as WLAN VDDIO, so there is no separate regulator control to put > >>> in pwrseq. So I think this will work fine? > >> > >> Probably? My point is that you marked it as always-on, so it will *never* > >> turn off right now. For e.g. Qualcomm wifi, there's some timing spec that > >> needs to be met wrt delays between toggling various regulators and GPIOs > >> going to the module, hence I suggested you may need some pwrseq inbetween > >> to achieve reliable powering on/off > >> > > Right, I checked the module timing requirements. > > > > The module requires VBAT to be present before or at the same time as VDDIO, and > > WL_REG_ON to be asserted only after VBAT/VDDIO are valid, around 2 sleep-clock > > cycles later. > > > > On this board, VBAT is the shared VCC_3V3 rail and is enabled by hardware, so > > it is already present before VDDIO. VREG_L12C supplies WLAN/BT VDDIO and is > > kept on. The WL_REG_ON timing is handled by the existing mmc-pwrseq-simple > > reset GPIO/delay before SDIO enumeration. > > > > So I think the current sequencing matches the module timing requirement. > > Since the sequencing is handled, can we drop the always-on property, > perhaps by describing the SDIO WLAN? > > e.g. in arch/arm/boot/dts/st/ste-ux500-samsung-codina-tmo.dts there is: > > /* WLAN SDIO channel */ > mmc@80118000 { > arm,primecell-periphid = <0x10480180>; > max-frequency = <50000000>; > bus-width = <4>; > non-removable; > cap-sd-highspeed; > pinctrl-names = "default", "sleep"; > pinctrl-0 = <&mc1_a_2_default>; > pinctrl-1 = <&mc1_a_2_sleep>; > /* > * GPIO-controlled voltage enablement: this drives > * the WL_REG_ON line high when we use this device. > * Represented as regulator to fill OCR mask. > */ > vmmc-supply = <&wl_reg>; > > #address-cells = <1>; > #size-cells = <0>; > status = "okay"; > > wifi@1 { > compatible = "brcm,bcm4334-fmac", "brcm,bcm4329-fmac"; > reg = <1>; > /* GPIO216 WL_HOST_WAKE */ > interrupt-parent = <&gpio6>; > interrupts = <24 IRQ_TYPE_EDGE_FALLING>; > interrupt-names = "host-wake"; > pinctrl-names = "default"; > pinctrl-0 = <&wlan_default_mode>; > }; > }; > > most notably though, it seems that the brcmfmac driver doesn't even use > the regulator framework, probably because all of the SDIO WLANs that > Linux supports were wired in a more "embedded" way, where the V(Q)MMC > supplies were enough.. unless it's the case here too? It might not be possible to drop regulator-always-on for VREG_L12C here. The SDHC2 host already has its own vmmc/vqmmc rails: vqmmc-supply = <&vreg_l2c_1p62>; vmmc-supply = <&vreg_l6c_2p96>; VREG_L12C is a separate module-side VDDIO rail for the AP6272S WLAN/BT module. There is no separate GPIO-controlled enable for this rail; as you said, since brcmfmac does not appear to consume an extra VDDIO regulator from the SDIO child node, so unless there is a preferred way to model this module-side VDDIO rail, I think VREG_L12C still needs to stay always-on. > > Konrad Ajit ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v4 3/3] arm64: dts: qcom: Add Vicharak Axon Mini 2026-06-20 4:57 ` Ajit Singh @ 2026-06-24 12:12 ` Konrad Dybcio 0 siblings, 0 replies; 14+ messages in thread From: Konrad Dybcio @ 2026-06-24 12:12 UTC (permalink / raw) To: Ajit Singh Cc: Bjorn Andersson, Bartosz Golaszewski, Dmitry Baryshkov, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, devicetree, linux-kernel On 6/20/26 6:57 AM, Ajit Singh wrote: > On Fri, Jun 19, 2026 at 05:30:40PM +0530, Konrad Dybcio wrote: >> On 6/18/26 8:29 AM, Ajit Singh wrote: >>> On Tue, Jun 16, 2026 at 02:10:44PM +0530, Konrad Dybcio wrote: >>>> On 6/12/26 6:16 AM, Ajit Singh wrote: >>>>> On Wed, Jun 10, 2026 at 02:58:19PM +0530, Konrad Dybcio wrote: >>>>>> On 6/7/26 1:36 PM, Ajit Singh wrote: >>>>>>> Add DTS for the Vicharak Axon Mini board based on the Qualcomm >>>>>>> QCS6490 SoC. >>>>>>> >>>>>>> This adds debug UART, eMMC, UFS, SDIO WLAN, USB 2.0 host, PCIe >>>>>>> support along with regulators. >>>>>>> >>>>>>> The UFS ICE block is kept disabled because enabling it currently causes >>>>>>> an SError during qcom_ice_create() on this board. UFS works without ICE. >>>>>>> >>>>>>> Signed-off-by: Ajit Singh <blfizzyy@gmail.com> >>>>>>> --- [...] >> >> most notably though, it seems that the brcmfmac driver doesn't even use >> the regulator framework, probably because all of the SDIO WLANs that >> Linux supports were wired in a more "embedded" way, where the V(Q)MMC >> supplies were enough.. unless it's the case here too? > > It might not be possible to drop regulator-always-on for VREG_L12C here. The > SDHC2 host already has its own vmmc/vqmmc rails: > > vqmmc-supply = <&vreg_l2c_1p62>; > vmmc-supply = <&vreg_l6c_2p96>; > > VREG_L12C is a separate module-side VDDIO rail for the AP6272S WLAN/BT module. > There is no separate GPIO-controlled enable for this rail; > > as you said, since brcmfmac does not appear to consume an extra VDDIO regulator > from the SDIO child node, so unless there is a preferred way to model this > module-side VDDIO rail, I think VREG_L12C still needs to stay always-on. OK, let's get this merged then Konrad ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v4 3/3] arm64: dts: qcom: Add Vicharak Axon Mini 2026-06-07 11:36 ` [PATCH v4 3/3] arm64: dts: " Ajit Singh 2026-06-07 18:56 ` Dmitry Baryshkov 2026-06-10 12:58 ` Konrad Dybcio @ 2026-06-10 13:01 ` Konrad Dybcio 2026-06-11 9:35 ` Ajit Singh 2 siblings, 1 reply; 14+ messages in thread From: Konrad Dybcio @ 2026-06-10 13:01 UTC (permalink / raw) To: Ajit Singh, Bjorn Andersson Cc: Dmitry Baryshkov, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, devicetree, linux-kernel On 6/7/26 1:36 PM, Ajit Singh wrote: > Add DTS for the Vicharak Axon Mini board based on the Qualcomm > QCS6490 SoC. > > This adds debug UART, eMMC, UFS, SDIO WLAN, USB 2.0 host, PCIe > support along with regulators. > > The UFS ICE block is kept disabled because enabling it currently causes > an SError during qcom_ice_create() on this board. UFS works without ICE. > > Signed-off-by: Ajit Singh <blfizzyy@gmail.com> > --- [...] > + vreg_l16b_1p1: ldo16 { > + regulator-name = "vreg_l16b_1p1"; > + regulator-min-microvolt = <1100000>; > + regulator-max-microvolt = <1300000>; > + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > + > + regulator-always-on; > + regulator-boot-on; > + }; > + > + vreg_l17b_1p7: ldo17 { > + regulator-name = "vreg_l17b_1p7"; > + regulator-min-microvolt = <1700000>; > + regulator-max-microvolt = <1900000>; > + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > + > + regulator-always-on; > + regulator-boot-on; > + }; Any reason for these two to be always-on? [...] > +&usb_2 { > + /* Routed to an onboard USB hub for two USB-A host ports. */ > + dr_mode = "host"; Do they need to be powered/power sequenced in any way? see drivers/usb/misc/onboard_usb_dev.c and e.g. qcs6490-rb3gen2.dts -> usb5e3,610 Konrad ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v4 3/3] arm64: dts: qcom: Add Vicharak Axon Mini 2026-06-10 13:01 ` Konrad Dybcio @ 2026-06-11 9:35 ` Ajit Singh 0 siblings, 0 replies; 14+ messages in thread From: Ajit Singh @ 2026-06-11 9:35 UTC (permalink / raw) To: Konrad Dybcio Cc: Bjorn Andersson, Dmitry Baryshkov, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, devicetree, linux-kernel On Wed, Jun 10, 2026 at 03:01:48PM +0530, Konrad Dybcio wrote: > On 6/7/26 1:36 PM, Ajit Singh wrote: Thanks for review, Konrad! > > Add DTS for the Vicharak Axon Mini board based on the Qualcomm > > QCS6490 SoC. > > > > This adds debug UART, eMMC, UFS, SDIO WLAN, USB 2.0 host, PCIe > > support along with regulators. > > > > The UFS ICE block is kept disabled because enabling it currently causes > > an SError during qcom_ice_create() on this board. UFS works without ICE. > > > > Signed-off-by: Ajit Singh <blfizzyy@gmail.com> > > --- > > [...] > > > + vreg_l16b_1p1: ldo16 { > > + regulator-name = "vreg_l16b_1p1"; > > + regulator-min-microvolt = <1100000>; > > + regulator-max-microvolt = <1300000>; > > + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > > + > > + regulator-always-on; > > + regulator-boot-on; > > + }; > > + > > + vreg_l17b_1p7: ldo17 { > > + regulator-name = "vreg_l17b_1p7"; > > + regulator-min-microvolt = <1700000>; > > + regulator-max-microvolt = <1900000>; > > + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > > + > > + regulator-always-on; > > + regulator-boot-on; > > + }; > > Any reason for these two to be always-on? vreg_l17b_1p7 supplies VDDD of the ES8388 audio codec, and vreg_l16b_1p1 supplies the CH7218A eDP-to-HDMI bridge. Both consumers are not described in this initial DTS and will be added in follow-up patches. So yes, these do not need to be always-on in this patch. I will drop regulator-always-on and regulator-boot-on for both. > > [...] > > > +&usb_2 { > > + /* Routed to an onboard USB hub for two USB-A host ports. */ > > + dr_mode = "host"; > > Do they need to be powered/power sequenced in any way? > see drivers/usb/misc/onboard_usb_dev.c and e.g. qcs6490-rb3gen2.dts > -> usb5e3,610 Thanks, I checked it. For Axon-mini USB hub is powered from the shared VCC_3V3 rail, which is enabled by board hardware. There is no hub-specific reset so I think no power sequencing is required here. > > Konrad Ajit ^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2026-06-24 12:12 UTC | newest] Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2026-06-07 11:36 [PATCH v4 0/3] arm64: dts: qcom: Add Vicharak Axon Mini Ajit Singh 2026-06-07 11:36 ` [PATCH v4 1/3] dt-bindings: vendor-prefixes: Add prefix for Vicharak Ajit Singh 2026-06-07 11:36 ` [PATCH v4 2/3] dt-bindings: arm: qcom: Add Vicharak Axon Mini Ajit Singh 2026-06-07 11:36 ` [PATCH v4 3/3] arm64: dts: " Ajit Singh 2026-06-07 18:56 ` Dmitry Baryshkov 2026-06-10 12:58 ` Konrad Dybcio 2026-06-12 4:16 ` Ajit Singh 2026-06-16 12:10 ` Konrad Dybcio 2026-06-18 6:29 ` Ajit Singh 2026-06-19 15:30 ` Konrad Dybcio 2026-06-20 4:57 ` Ajit Singh 2026-06-24 12:12 ` Konrad Dybcio 2026-06-10 13:01 ` Konrad Dybcio 2026-06-11 9:35 ` Ajit Singh
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox