From nobody Sun Sep 14 14:33:38 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 70BA9C25B4E for ; Fri, 20 Jan 2023 18:45:30 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230022AbjATSp3 (ORCPT ); Fri, 20 Jan 2023 13:45:29 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49400 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229960AbjATSp0 (ORCPT ); Fri, 20 Jan 2023 13:45:26 -0500 Received: from relay07.th.seeweb.it (relay07.th.seeweb.it [IPv6:2001:4b7a:2000:18::168]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 150B58B301 for ; Fri, 20 Jan 2023 10:45:20 -0800 (PST) Received: from TimeMachine.lan (adsl-dyn97.91-127-229.t-com.sk [91.127.229.97]) by m-r2.th.seeweb.it (Postfix) with ESMTPA id 670283F58E; Fri, 20 Jan 2023 19:45:18 +0100 (CET) From: Martin Botka To: martin.botka1@gmail.com Cc: Konrad Dybcio , AngeloGioacchino Del Regno , Marijn Suijten , Jami Kettunen , Paul Bouchara , Jan Trmal , Jernej Skrabec , Samuel Holland , Andre Przywara , Martin Botka , Lee Jones , Rob Herring , Krzysztof Kozlowski , Chen-Yu Tsai , Liam Girdwood , Mark Brown , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v8 1/3] dt-bindings: mfd: x-powers,axp152: Document the AXP313a variant Date: Fri, 20 Jan 2023 19:44:57 +0100 Message-Id: <20230120184500.1899814-2-martin.botka@somainline.org> X-Mailer: git-send-email 2.39.0 In-Reply-To: <20230120184500.1899814-1-martin.botka@somainline.org> References: <20230120184500.1899814-1-martin.botka@somainline.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The X-Powers AXP313a is a PMIC used on some devices with the Allwinner H616 or H313 SoC. Signed-off-by: Martin Botka Signed-off-by: Andre Przywara Acked-by: Chen-Yu Tsai --- Documentation/devicetree/bindings/mfd/x-powers,axp152.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/mfd/x-powers,axp152.yaml b/D= ocumentation/devicetree/bindings/mfd/x-powers,axp152.yaml index b7a8747d5fa0..e2241cd28445 100644 --- a/Documentation/devicetree/bindings/mfd/x-powers,axp152.yaml +++ b/Documentation/devicetree/bindings/mfd/x-powers,axp152.yaml @@ -88,6 +88,7 @@ properties: - x-powers,axp209 - x-powers,axp221 - x-powers,axp223 + - x-powers,axp313a - x-powers,axp803 - x-powers,axp806 - x-powers,axp809 --=20 2.39.0 From nobody Sun Sep 14 14:33:38 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A5738C25B50 for ; Fri, 20 Jan 2023 18:45:34 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230061AbjATSpd (ORCPT ); Fri, 20 Jan 2023 13:45:33 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49418 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229964AbjATSp0 (ORCPT ); Fri, 20 Jan 2023 13:45:26 -0500 Received: from relay06.th.seeweb.it (relay06.th.seeweb.it [IPv6:2001:4b7a:2000:18::167]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BF7889DCB6 for ; Fri, 20 Jan 2023 10:45:21 -0800 (PST) Received: from TimeMachine.lan (adsl-dyn97.91-127-229.t-com.sk [91.127.229.97]) by m-r2.th.seeweb.it (Postfix) with ESMTPA id 749403F59A; Fri, 20 Jan 2023 19:45:19 +0100 (CET) From: Martin Botka To: martin.botka1@gmail.com Cc: Konrad Dybcio , AngeloGioacchino Del Regno , Marijn Suijten , Jami Kettunen , Paul Bouchara , Jan Trmal , Jernej Skrabec , Samuel Holland , Andre Przywara , Martin Botka , Lee Jones , Rob Herring , Krzysztof Kozlowski , Chen-Yu Tsai , Liam Girdwood , Mark Brown , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v8 2/3] mfd: axp20x: Add support for AXP313a PMIC Date: Fri, 20 Jan 2023 19:44:58 +0100 Message-Id: <20230120184500.1899814-3-martin.botka@somainline.org> X-Mailer: git-send-email 2.39.0 In-Reply-To: <20230120184500.1899814-1-martin.botka@somainline.org> References: <20230120184500.1899814-1-martin.botka@somainline.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The AXP313a is a PMIC chip produced by X-Powers, it can be connected via an I2C bus. The name AXP1530 seems to appear as well, and this is what is used in the BSP driver. From all we know it's the same chip, just a different name. However we have only seen AXP313a chips in the wild, so go with this name. Compared to the other AXP PMICs it's a rather simple affair: just three DCDC converters, three LDOs, and no battery charging support. Describe the regmap and the MFD bits, along with the registers exposed via I2C. Eventually advertise the device using the new compatible string. Signed-off-by: Martin Botka Signed-off-by: Andre Przywara --- drivers/mfd/axp20x-i2c.c | 2 ++ drivers/mfd/axp20x.c | 61 ++++++++++++++++++++++++++++++++++++++ include/linux/mfd/axp20x.h | 32 ++++++++++++++++++++ 3 files changed, 95 insertions(+) diff --git a/drivers/mfd/axp20x-i2c.c b/drivers/mfd/axp20x-i2c.c index f49fbd307958..f061177cb18e 100644 --- a/drivers/mfd/axp20x-i2c.c +++ b/drivers/mfd/axp20x-i2c.c @@ -63,6 +63,7 @@ static const struct of_device_id axp20x_i2c_of_match[] = =3D { { .compatible =3D "x-powers,axp209", .data =3D (void *)AXP209_ID }, { .compatible =3D "x-powers,axp221", .data =3D (void *)AXP221_ID }, { .compatible =3D "x-powers,axp223", .data =3D (void *)AXP223_ID }, + { .compatible =3D "x-powers,axp313a", .data =3D (void *)AXP313A_ID}, { .compatible =3D "x-powers,axp803", .data =3D (void *)AXP803_ID }, { .compatible =3D "x-powers,axp806", .data =3D (void *)AXP806_ID }, { }, @@ -76,6 +77,7 @@ static const struct i2c_device_id axp20x_i2c_id[] =3D { { "axp209", 0 }, { "axp221", 0 }, { "axp223", 0 }, + { "axp313a", 0 }, { "axp803", 0 }, { "axp806", 0 }, { }, diff --git a/drivers/mfd/axp20x.c b/drivers/mfd/axp20x.c index 01a6bbb6d266..ff15775f3c27 100644 --- a/drivers/mfd/axp20x.c +++ b/drivers/mfd/axp20x.c @@ -39,6 +39,7 @@ static const char * const axp20x_model_names[] =3D { "AXP221", "AXP223", "AXP288", + "AXP313a", "AXP803", "AXP806", "AXP809", @@ -154,6 +155,24 @@ static const struct regmap_range axp806_writeable_rang= es[] =3D { regmap_reg_range(AXP806_REG_ADDR_EXT, AXP806_REG_ADDR_EXT), }; =20 +static const struct regmap_range axp313a_writeable_ranges[] =3D { + regmap_reg_range(AXP313A_ON_INDICATE, AXP313A_IRQ_STATE), +}; + +static const struct regmap_range axp313a_volatile_ranges[] =3D { + regmap_reg_range(AXP313A_ON_INDICATE, AXP313A_IRQ_STATE), +}; + +static const struct regmap_access_table axp313a_writeable_table =3D { + .yes_ranges =3D axp313a_writeable_ranges, + .n_yes_ranges =3D ARRAY_SIZE(axp313a_writeable_ranges), +}; + +static const struct regmap_access_table axp313a_volatile_table =3D { + .yes_ranges =3D axp313a_volatile_ranges, + .n_yes_ranges =3D ARRAY_SIZE(axp313a_volatile_ranges), +}; + static const struct regmap_range axp806_volatile_ranges[] =3D { regmap_reg_range(AXP20X_IRQ1_STATE, AXP20X_IRQ2_STATE), }; @@ -272,6 +291,15 @@ static const struct regmap_config axp288_regmap_config= =3D { .cache_type =3D REGCACHE_RBTREE, }; =20 +static const struct regmap_config axp313a_regmap_config =3D { + .reg_bits =3D 8, + .val_bits =3D 8, + .wr_table =3D &axp313a_writeable_table, + .volatile_table =3D &axp313a_volatile_table, + .max_register =3D AXP313A_IRQ_STATE, + .cache_type =3D REGCACHE_RBTREE, +}; + static const struct regmap_config axp806_regmap_config =3D { .reg_bits =3D 8, .val_bits =3D 8, @@ -415,6 +443,16 @@ static const struct regmap_irq axp288_regmap_irqs[] = =3D { INIT_REGMAP_IRQ(AXP288, BC_USB_CHNG, 5, 1), }; =20 +static const struct regmap_irq axp313a_regmap_irqs[] =3D { + INIT_REGMAP_IRQ(AXP313A, PEK_RIS_EDGE, 0, 7), + INIT_REGMAP_IRQ(AXP313A, PEK_FAL_EDGE, 0, 6), + INIT_REGMAP_IRQ(AXP313A, PEK_SHORT, 0, 5), + INIT_REGMAP_IRQ(AXP313A, PEK_LONG, 0, 4), + INIT_REGMAP_IRQ(AXP313A, DCDC3_V_LOW, 0, 3), + INIT_REGMAP_IRQ(AXP313A, DCDC2_V_LOW, 0, 2), + INIT_REGMAP_IRQ(AXP313A, DIE_TEMP_HIGH, 0, 0), +}; + static const struct regmap_irq axp803_regmap_irqs[] =3D { INIT_REGMAP_IRQ(AXP803, ACIN_OVER_V, 0, 7), INIT_REGMAP_IRQ(AXP803, ACIN_PLUGIN, 0, 6), @@ -548,6 +586,17 @@ static const struct regmap_irq_chip axp288_regmap_irq_= chip =3D { =20 }; =20 +static const struct regmap_irq_chip axp313a_regmap_irq_chip =3D { + .name =3D "axp313a_irq_chip", + .status_base =3D AXP313A_IRQ_STATE, + .ack_base =3D AXP313A_IRQ_STATE, + .unmask_base =3D AXP313A_IRQ_EN, + .init_ack_masked =3D true, + .irqs =3D axp313a_regmap_irqs, + .num_irqs =3D ARRAY_SIZE(axp313a_regmap_irqs), + .num_regs =3D 1, +}; + static const struct regmap_irq_chip axp803_regmap_irq_chip =3D { .name =3D "axp803", .status_base =3D AXP20X_IRQ1_STATE, @@ -676,6 +725,12 @@ static const struct mfd_cell axp152_cells[] =3D { }, }; =20 +static struct mfd_cell axp313a_cells[] =3D { + { + .name =3D "axp20x-regulator", + }, +}; + static const struct resource axp288_adc_resources[] =3D { DEFINE_RES_IRQ_NAMED(AXP288_IRQ_GPADC, "GPADC"), }; @@ -892,6 +947,12 @@ int axp20x_match_device(struct axp20x_dev *axp20x) axp20x->regmap_irq_chip =3D &axp288_regmap_irq_chip; axp20x->irq_flags =3D IRQF_TRIGGER_LOW; break; + case AXP313A_ID: + axp20x->nr_cells =3D ARRAY_SIZE(axp313a_cells); + axp20x->cells =3D axp313a_cells; + axp20x->regmap_cfg =3D &axp313a_regmap_config; + axp20x->regmap_irq_chip =3D &axp313a_regmap_irq_chip; + break; case AXP803_ID: axp20x->nr_cells =3D ARRAY_SIZE(axp803_cells); axp20x->cells =3D axp803_cells; diff --git a/include/linux/mfd/axp20x.h b/include/linux/mfd/axp20x.h index 2058194807bd..12e4fc3e8391 100644 --- a/include/linux/mfd/axp20x.h +++ b/include/linux/mfd/axp20x.h @@ -17,6 +17,7 @@ enum axp20x_variants { AXP221_ID, AXP223_ID, AXP288_ID, + AXP313A_ID, AXP803_ID, AXP806_ID, AXP809_ID, @@ -91,6 +92,17 @@ enum axp20x_variants { #define AXP22X_ALDO3_V_OUT 0x2a #define AXP22X_CHRG_CTRL3 0x35 =20 +#define AXP313A_ON_INDICATE 0x00 +#define AXP313A_OUTPUT_CONTROL 0x10 +#define AXP313A_DCDC1_CONRTOL 0x13 +#define AXP313A_DCDC2_CONRTOL 0x14 +#define AXP313A_DCDC3_CONRTOL 0x15 +#define AXP313A_ALDO1_CONRTOL 0x16 +#define AXP313A_DLDO1_CONRTOL 0x17 +#define AXP313A_OUTPUT_MONITOR 0x1d +#define AXP313A_IRQ_EN 0x20 +#define AXP313A_IRQ_STATE 0x21 + #define AXP806_STARTUP_SRC 0x00 #define AXP806_CHIP_ID 0x03 #define AXP806_PWR_OUT_CTRL1 0x10 @@ -322,6 +334,16 @@ enum { AXP22X_REG_ID_MAX, }; =20 +enum { + AXP313A_DCDC1 =3D 0, + AXP313A_DCDC2, + AXP313A_DCDC3, + AXP313A_LDO1, + AXP313A_LDO2, + AXP313A_RTC_LDO, + AXP313A_REG_ID_MAX, +}; + enum { AXP806_DCDCA =3D 0, AXP806_DCDCB, @@ -548,6 +570,16 @@ enum axp288_irqs { AXP288_IRQ_BC_USB_CHNG, }; =20 +enum axp313a_irqs { + AXP313A_IRQ_DIE_TEMP_HIGH, + AXP313A_IRQ_DCDC2_V_LOW =3D 2, + AXP313A_IRQ_DCDC3_V_LOW, + AXP313A_IRQ_PEK_LONG, + AXP313A_IRQ_PEK_SHORT, + AXP313A_IRQ_PEK_FAL_EDGE, + AXP313A_IRQ_PEK_RIS_EDGE, +}; + enum axp803_irqs { AXP803_IRQ_ACIN_OVER_V =3D 1, AXP803_IRQ_ACIN_PLUGIN, --=20 2.39.0 From nobody Sun Sep 14 14:33:38 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 684E9C05027 for ; Fri, 20 Jan 2023 18:45:32 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230041AbjATSpa (ORCPT ); Fri, 20 Jan 2023 13:45:30 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49420 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229954AbjATSp0 (ORCPT ); Fri, 20 Jan 2023 13:45:26 -0500 Received: from m-r2.th.seeweb.it (m-r2.th.seeweb.it [IPv6:2001:4b7a:2000:18::171]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 70980A19B7 for ; Fri, 20 Jan 2023 10:45:22 -0800 (PST) Received: from TimeMachine.lan (adsl-dyn97.91-127-229.t-com.sk [91.127.229.97]) by m-r2.th.seeweb.it (Postfix) with ESMTPA id 7338B3F424; Fri, 20 Jan 2023 19:45:20 +0100 (CET) From: Martin Botka To: martin.botka1@gmail.com Cc: Konrad Dybcio , AngeloGioacchino Del Regno , Marijn Suijten , Jami Kettunen , Paul Bouchara , Jan Trmal , Jernej Skrabec , Samuel Holland , Andre Przywara , Martin Botka , Lee Jones , Rob Herring , Krzysztof Kozlowski , Chen-Yu Tsai , Liam Girdwood , Mark Brown , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v8 3/3] regulator: axp20x: Add support for AXP313a variant Date: Fri, 20 Jan 2023 19:44:59 +0100 Message-Id: <20230120184500.1899814-4-martin.botka@somainline.org> X-Mailer: git-send-email 2.39.0 In-Reply-To: <20230120184500.1899814-1-martin.botka@somainline.org> References: <20230120184500.1899814-1-martin.botka@somainline.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The AXP313a is your typical I2C controlled PMIC, although in a lighter fashion compared to the other X-Powers PMICs: it has only three DCDC rails, three LDOs, and no battery charging support. The AXP313a datasheet does not describe a register to change the DCDC switching frequency, and talks of it being fixed at 3 MHz. The BSP driver hints at a register being able to change that, but we haven't verified that, so leave that one out. It can be added later, if needed and/or required. The third LDO, RTCLDO, is fixed, and cannot even be turned on or off, programmatically. On top of that, its voltage is customisable (either 1.8V or 3.3V), which we cannot describe easily using the existing regulator wrapper functions. This should be fixed properly, using regulator-{min,max}-microvolt in the DT, but this requires more changes to the code. As some other PMICs (AXP2xx, AXP803) seem to paper over the same problem as well, we follow suit here and pretend it's a fixed 1.8V regulator. A proper fix can follow later. The BSP code seems to ignore this regulator altogether. Describe the AXP313A's voltage settings and switch registers, how the voltages are encoded, and connect this to the MFD device via its regulator ID. Signed-off-by: Martin Botka Signed-off-by: Andre Przywara --- drivers/regulator/axp20x-regulator.c | 60 ++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/drivers/regulator/axp20x-regulator.c b/drivers/regulator/axp20= x-regulator.c index d260c442b788..3087bc98694f 100644 --- a/drivers/regulator/axp20x-regulator.c +++ b/drivers/regulator/axp20x-regulator.c @@ -134,6 +134,11 @@ #define AXP22X_PWR_OUT_DLDO4_MASK BIT_MASK(6) #define AXP22X_PWR_OUT_ALDO3_MASK BIT_MASK(7) =20 +#define AXP313A_DCDC1_NUM_VOLTAGES 107 +#define AXP313A_DCDC23_NUM_VOLTAGES 88 +#define AXP313A_DCDC_V_OUT_MASK GENMASK(6, 0) +#define AXP313A_LDO_V_OUT_MASK GENMASK(4, 0) + #define AXP803_PWR_OUT_DCDC1_MASK BIT_MASK(0) #define AXP803_PWR_OUT_DCDC2_MASK BIT_MASK(1) #define AXP803_PWR_OUT_DCDC3_MASK BIT_MASK(2) @@ -638,6 +643,48 @@ static const struct regulator_desc axp22x_drivevbus_re= gulator =3D { .ops =3D &axp20x_ops_sw, }; =20 +static const struct linear_range axp313a_dcdc1_ranges[] =3D { + REGULATOR_LINEAR_RANGE(500000, 0, 70, 10000), + REGULATOR_LINEAR_RANGE(1220000, 71, 87, 20000), + REGULATOR_LINEAR_RANGE(1600000, 88, 106, 100000), +}; + +static const struct linear_range axp313a_dcdc2_ranges[] =3D { + REGULATOR_LINEAR_RANGE(500000, 0, 70, 10000), + REGULATOR_LINEAR_RANGE(1220000, 71, 87, 20000), +}; + +/* + * This is deviating from the datasheet. The values here are taken from the + * BSP driver and have been confirmed by measurements. + */ +static const struct linear_range axp313a_dcdc3_ranges[] =3D { + REGULATOR_LINEAR_RANGE(500000, 0, 70, 10000), + REGULATOR_LINEAR_RANGE(1220000, 71, 102, 20000), +}; + +static const struct regulator_desc axp313a_regulators[] =3D { + AXP_DESC_RANGES(AXP313A, DCDC1, "dcdc1", "vin1", + axp313a_dcdc1_ranges, AXP313A_DCDC1_NUM_VOLTAGES, + AXP313A_DCDC1_CONRTOL, AXP313A_DCDC_V_OUT_MASK, + AXP313A_OUTPUT_CONTROL, BIT(0)), + AXP_DESC_RANGES(AXP313A, DCDC2, "dcdc2", "vin2", + axp313a_dcdc2_ranges, AXP313A_DCDC23_NUM_VOLTAGES, + AXP313A_DCDC2_CONRTOL, AXP313A_DCDC_V_OUT_MASK, + AXP313A_OUTPUT_CONTROL, BIT(1)), + AXP_DESC_RANGES(AXP313A, DCDC3, "dcdc3", "vin3", + axp313a_dcdc3_ranges, AXP313A_DCDC23_NUM_VOLTAGES, + AXP313A_DCDC3_CONRTOL, AXP313A_DCDC_V_OUT_MASK, + AXP313A_OUTPUT_CONTROL, BIT(2)), + AXP_DESC(AXP313A, LDO1, "ldo1", "vin1", 500, 3500, 100, + AXP313A_ALDO1_CONRTOL, AXP313A_LDO_V_OUT_MASK, + AXP313A_OUTPUT_CONTROL, BIT(3)), + AXP_DESC(AXP313A, LDO2, "ldo2", "vin1", 500, 3500, 100, + AXP313A_DLDO1_CONRTOL, AXP313A_LDO_V_OUT_MASK, + AXP313A_OUTPUT_CONTROL, BIT(4)), + AXP_DESC_FIXED(AXP313A, RTC_LDO, "rtc-ldo", "vin1", 1800), +}; + /* DCDC ranges shared with AXP813 */ static const struct linear_range axp803_dcdc234_ranges[] =3D { REGULATOR_LINEAR_RANGE(500000, @@ -1040,6 +1087,15 @@ static int axp20x_set_dcdc_freq(struct platform_devi= ce *pdev, u32 dcdcfreq) def =3D 3000; step =3D 150; break; + case AXP313A_ID: + /* The DCDC PWM frequency seems to be fixed to 3 MHz. */ + if (dcdcfreq !=3D 3000000 && dcdcfreq !=3D 0) { + dev_err(&pdev->dev, + "DCDC frequency on AXP313a is fixed to 3 MHz.\n"); + return -EINVAL; + } + + return 0; default: dev_err(&pdev->dev, "Setting DCDC frequency for unsupported AXP variant\n"); @@ -1232,6 +1288,10 @@ static int axp20x_regulator_probe(struct platform_de= vice *pdev) drivevbus =3D of_property_read_bool(pdev->dev.parent->of_node, "x-powers,drive-vbus-en"); break; + case AXP313A_ID: + regulators =3D axp313a_regulators; + nregulators =3D AXP313A_REG_ID_MAX; + break; case AXP803_ID: regulators =3D axp803_regulators; nregulators =3D AXP803_REG_ID_MAX; --=20 2.39.0