* [PATCH 0/3] regulator: add support for the Nexperia NEX10000UB dual output LCD bias power supply
@ 2026-09-18 7:25 Neil Armstrong
2026-09-18 7:25 ` [PATCH 1/3] dt-bindings: vendor-prefixes: add vendor prefix for Nexperia B.V Neil Armstrong
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Neil Armstrong @ 2026-09-18 7:25 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Liam Girdwood,
Mark Brown
Cc: devicetree, linux-kernel, Neil Armstrong
Document and add regulator support for the Nexperia NEX10000UB dual
output LCD bias power supply which provides programmable positive
and negative output voltages mainly for display panels applications.
The driver supports setting the output voltage from 4V to 6V in
100mV steps for each output via the I2C programming interface and
supports the enable GPIOs for both outputs.
Product datashet can be found online at [1].
[1] https://assets.nexperia.com/documents/data-sheet/NEX10000UB.pdf
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
---
Neil Armstrong (3):
dt-bindings: vendor-prefixes: add vendor prefix for Nexperia B.V.
regulator: dt-bindings: document the Nexperia NEX10000UB dual output LCD bias power supply
regulator: add regulator driver for the Nexperia NEX10000UB
.../bindings/regulator/nexperia,nex10000ub.yaml | 66 +++++++++
.../devicetree/bindings/vendor-prefixes.yaml | 2 +
drivers/regulator/Kconfig | 8 ++
drivers/regulator/Makefile | 1 +
drivers/regulator/nex10000ub-regulator.c | 147 +++++++++++++++++++++
5 files changed, 224 insertions(+)
---
base-commit: fd73f4a6659897191fa0d40695fe370925dd3780
change-id: 20260918-topic-sm8x50-nex10000ub-3deca3c56ef4
Best regards,
--
Neil Armstrong <neil.armstrong@linaro.org>
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 1/3] dt-bindings: vendor-prefixes: add vendor prefix for Nexperia B.V.
2026-09-18 7:25 [PATCH 0/3] regulator: add support for the Nexperia NEX10000UB dual output LCD bias power supply Neil Armstrong
@ 2026-09-18 7:25 ` Neil Armstrong
2026-09-18 7:25 ` [PATCH 2/3] regulator: dt-bindings: document the Nexperia NEX10000UB dual output LCD bias power supply Neil Armstrong
2026-09-18 7:25 ` [PATCH 3/3] regulator: add regulator driver for the Nexperia NEX10000UB Neil Armstrong
2 siblings, 0 replies; 6+ messages in thread
From: Neil Armstrong @ 2026-09-18 7:25 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Liam Girdwood,
Mark Brown
Cc: devicetree, linux-kernel, Neil Armstrong
Document the vendor prefix for the semiconductor company Nexperia B.V.
The company website is https://www.nexperia.com/
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
---
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 ba2002969373..9103ced78b91 100644
--- a/Documentation/devicetree/bindings/vendor-prefixes.yaml
+++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml
@@ -1192,6 +1192,8 @@ patternProperties:
description: New Vision Display (Shenzhen) Co., Ltd.
"^nexbox,.*":
description: Nexbox
+ "^nexperia,.*":
+ description: Nexperia B.V.
"^nextthing,.*":
description: Next Thing Co.
"^ni,.*":
--
2.34.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 2/3] regulator: dt-bindings: document the Nexperia NEX10000UB dual output LCD bias power supply
2026-09-18 7:25 [PATCH 0/3] regulator: add support for the Nexperia NEX10000UB dual output LCD bias power supply Neil Armstrong
2026-09-18 7:25 ` [PATCH 1/3] dt-bindings: vendor-prefixes: add vendor prefix for Nexperia B.V Neil Armstrong
@ 2026-09-18 7:25 ` Neil Armstrong
2026-09-18 7:25 ` [PATCH 3/3] regulator: add regulator driver for the Nexperia NEX10000UB Neil Armstrong
2 siblings, 0 replies; 6+ messages in thread
From: Neil Armstrong @ 2026-09-18 7:25 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Liam Girdwood,
Mark Brown
Cc: devicetree, linux-kernel, Neil Armstrong
Document the Nexperia NEX10000UB dual output LCD bias power supply
which provides programmable positive and negative output voltages
mainly for display panels applications.
Product datashet can be found online at [1].
[1] https://assets.nexperia.com/documents/data-sheet/NEX10000UB.pdf
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
---
.../bindings/regulator/nexperia,nex10000ub.yaml | 66 ++++++++++++++++++++++
1 file changed, 66 insertions(+)
diff --git a/Documentation/devicetree/bindings/regulator/nexperia,nex10000ub.yaml b/Documentation/devicetree/bindings/regulator/nexperia,nex10000ub.yaml
new file mode 100644
index 000000000000..57a3d633b1bb
--- /dev/null
+++ b/Documentation/devicetree/bindings/regulator/nexperia,nex10000ub.yaml
@@ -0,0 +1,66 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/regulator/nexperia,nex10000ub.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Nexperia NEX10000UB dual output LCD bias power supply
+
+maintainers:
+ - Neil Armstrong <neil.armstrong@linaro.org>
+
+description:
+ The NEX10000UB is designed to supply positive/negative supplies for display Panels.
+
+properties:
+ compatible:
+ enum:
+ - nexperia,nex10000ub
+
+ reg:
+ maxItems: 1
+
+ vin-supply: true
+
+patternProperties:
+ "^(vpos|vneg)$":
+ type: object
+ $ref: regulator.yaml#
+ unevaluatedProperties: false
+
+ properties:
+ enable-gpios:
+ maxItems: 1
+
+required:
+ - compatible
+ - reg
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/gpio/gpio.h>
+
+ i2c {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ regulator@3e {
+ compatible = "nexperia,nex10000ub";
+ reg = <0x3e>;
+ vin-supply = <&supply>;
+
+ vpos {
+ regulator-name = "outp";
+ regulator-boot-on;
+ enable-gpios = <&gpio 23 GPIO_ACTIVE_HIGH>;
+ };
+
+ vneg {
+ regulator-name = "outn";
+ regulator-boot-on;
+ enable-gpios = <&gpio 40 GPIO_ACTIVE_HIGH>;
+ };
+ };
+ };
--
2.34.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 3/3] regulator: add regulator driver for the Nexperia NEX10000UB
2026-09-18 7:25 [PATCH 0/3] regulator: add support for the Nexperia NEX10000UB dual output LCD bias power supply Neil Armstrong
2026-09-18 7:25 ` [PATCH 1/3] dt-bindings: vendor-prefixes: add vendor prefix for Nexperia B.V Neil Armstrong
2026-09-18 7:25 ` [PATCH 2/3] regulator: dt-bindings: document the Nexperia NEX10000UB dual output LCD bias power supply Neil Armstrong
@ 2026-09-18 7:25 ` Neil Armstrong
2026-09-18 10:12 ` Mark Brown
2 siblings, 1 reply; 6+ messages in thread
From: Neil Armstrong @ 2026-09-18 7:25 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Liam Girdwood,
Mark Brown
Cc: devicetree, linux-kernel, Neil Armstrong
Add regulator support for the Nexperia NEX10000UB dual output LCD
bias power supply which provides programmable positive and negative
output voltages mainly for display panels applications.
The driver supports setting the output voltage from 4V to 6V in
100mV steps for each output via the I2C programming interface and
supports the enable GPIOs for both outputs.
Product datashet can be found online at [1].
[1] https://assets.nexperia.com/documents/data-sheet/NEX10000UB.pdf
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
---
drivers/regulator/Kconfig | 8 ++
drivers/regulator/Makefile | 1 +
drivers/regulator/nex10000ub-regulator.c | 147 +++++++++++++++++++++++++++++++
3 files changed, 156 insertions(+)
diff --git a/drivers/regulator/Kconfig b/drivers/regulator/Kconfig
index 89789ac7a786..4b98ce62ba01 100644
--- a/drivers/regulator/Kconfig
+++ b/drivers/regulator/Kconfig
@@ -1020,6 +1020,14 @@ config REGULATOR_MTK_DVFSRC
of Mediatek. It allows for voting on regulator state
between multiple users.
+config REGULATOR_NEX10000UB
+ tristate "Nexperia NEX10000UB Dual Output Power regulators"
+ depends on I2C && GPIOLIB
+ select REGMAP_I2C
+ help
+ This driver supports the NEX10000UB single inductor - dual output
+ power supply specifically designed for display panels.
+
config REGULATOR_PALMAS
tristate "TI Palmas PMIC Regulators"
depends on MFD_PALMAS
diff --git a/drivers/regulator/Makefile b/drivers/regulator/Makefile
index 5a764cec8df8..907efdf644eb 100644
--- a/drivers/regulator/Makefile
+++ b/drivers/regulator/Makefile
@@ -120,6 +120,7 @@ obj-$(CONFIG_REGULATOR_MT6370) += mt6370-regulator.o
obj-$(CONFIG_REGULATOR_MT6380) += mt6380-regulator.o
obj-$(CONFIG_REGULATOR_MT6397) += mt6397-regulator.o
obj-$(CONFIG_REGULATOR_MTK_DVFSRC) += mtk-dvfsrc-regulator.o
+obj-$(CONFIG_REGULATOR_NEX10000UB) += nex10000ub-regulator.o
obj-$(CONFIG_REGULATOR_QCOM_LABIBB) += qcom-labibb-regulator.o
obj-$(CONFIG_REGULATOR_QCOM_PM8008) += qcom-pm8008-regulator.o
obj-$(CONFIG_REGULATOR_QCOM_REFGEN) += qcom-refgen-regulator.o
diff --git a/drivers/regulator/nex10000ub-regulator.c b/drivers/regulator/nex10000ub-regulator.c
new file mode 100644
index 000000000000..b45a805d5601
--- /dev/null
+++ b/drivers/regulator/nex10000ub-regulator.c
@@ -0,0 +1,147 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Nexperia NEX10000UB Regulator driver
+ *
+ * Copyright (C) 2026 Linaro Limited.
+ */
+
+#include <linux/delay.h>
+#include <linux/err.h>
+#include <linux/gpio/consumer.h>
+#include <linux/i2c.h>
+#include <linux/module.h>
+#include <linux/regmap.h>
+#include <linux/regulator/driver.h>
+#include <linux/regulator/machine.h>
+
+#define NEX10000UB_REG_VPOS 0x00
+#define NEX10000UB_REG_VNEG 0x01
+#define NEX10000UB_REG_ID 0x02
+
+#define NEX10000UB_VOUT_MASK 0x1F
+#define NEX10000UB_VOUT_N_VOLTAGE 0x15
+#define NEX10000UB_VOUT_VMIN 4000000
+#define NEX10000UB_VOUT_VMAX 6000000
+#define NEX10000UB_VOUT_STEP 100000
+
+#define NEX10000UB_REGULATOR_ID_VPOS 0
+#define NEX10000UB_REGULATOR_ID_VNEG 1
+#define NEX10000UB_MAX_REGULATORS 2
+
+static const struct regulator_ops nex10000ub_regulator_ops = {
+ .enable = regulator_enable_regmap,
+ .disable = regulator_disable_regmap,
+ .is_enabled = regulator_is_enabled_regmap,
+ .list_voltage = regulator_list_voltage_linear,
+ .map_voltage = regulator_map_voltage_linear,
+ .get_voltage_sel = regulator_get_voltage_sel_regmap,
+ .set_voltage_sel = regulator_set_voltage_sel_regmap,
+};
+
+static int nex10000ub_of_parse_cb(struct device_node *np,
+ const struct regulator_desc *desc,
+ struct regulator_config *config)
+{
+ struct gpio_desc *ena_gpiod;
+
+ ena_gpiod = fwnode_gpiod_get_index(of_fwnode_handle(np), "enable", 0,
+ GPIOD_ASIS, desc->name);
+ if (IS_ERR(ena_gpiod))
+ return PTR_ERR(ena_gpiod);
+
+ config->ena_gpiod = ena_gpiod;
+
+ return 0;
+}
+
+#define NEX10000UB_REGULATOR_DESC(_id, _name) \
+ [NEX10000UB_REGULATOR_ID_##_id] = { \
+ .name = "nex10000ub-"#_name, \
+ .supply_name = "vin", \
+ .id = NEX10000UB_REGULATOR_ID_##_id, \
+ .of_match = of_match_ptr(#_name), \
+ .of_parse_cb = nex10000ub_of_parse_cb, \
+ .ops = &nex10000ub_regulator_ops, \
+ .n_voltages = NEX10000UB_VOUT_N_VOLTAGE, \
+ .min_uV = NEX10000UB_VOUT_VMIN, \
+ .uV_step = NEX10000UB_VOUT_STEP, \
+ .enable_time = 2000, \
+ .vsel_mask = NEX10000UB_VOUT_MASK, \
+ .vsel_reg = NEX10000UB_REG_##_id, \
+ .type = REGULATOR_VOLTAGE, \
+ .owner = THIS_MODULE, \
+ }
+
+static const struct regulator_desc nex10000_regs_desc[NEX10000UB_MAX_REGULATORS] = {
+ NEX10000UB_REGULATOR_DESC(VPOS, vpos),
+ NEX10000UB_REGULATOR_DESC(VNEG, vneg),
+};
+
+static const struct regmap_config nex10000ub_regmap_config = {
+ .reg_bits = 8,
+ .val_bits = 8,
+ .max_register = NEX10000UB_REG_ID,
+ .cache_type = REGCACHE_NONE,
+};
+
+static int nex10000ub_probe(struct i2c_client *client)
+{
+ struct device *dev = &client->dev;
+ struct regmap *map;
+ int id;
+ int ret;
+
+ map = devm_regmap_init_i2c(client, &nex10000ub_regmap_config);
+ if (IS_ERR(map)) {
+ ret = PTR_ERR(map);
+ dev_err(dev, "regmap init failed: %d\n", ret);
+ return ret;
+ }
+
+ for (id = 0; id < NEX10000UB_MAX_REGULATORS; ++id) {
+ struct regulator_config config = { };
+ struct regulator_dev *rdev;
+
+ config.regmap = map;
+ config.dev = dev;
+
+ rdev = devm_regulator_register(dev, &nex10000_regs_desc[id],
+ &config);
+ if (IS_ERR(rdev)) {
+ ret = PTR_ERR(rdev);
+ dev_err(dev, "regulator %s register failed: %d\n",
+ nex10000_regs_desc[id].name, ret);
+ return ret;
+ }
+ }
+
+ return 0;
+}
+
+static const struct i2c_device_id nex10000ub_id[] = {
+ { .name = "nex10000ub" },
+ { }
+};
+MODULE_DEVICE_TABLE(i2c, nex10000ub_id);
+
+static const struct of_device_id __maybe_unused nex10000ub_of_match[] = {
+ { .compatible = "nexperia,nex10000ub" },
+ {},
+};
+MODULE_DEVICE_TABLE(of, nex10000ub_of_match);
+
+static struct i2c_driver nex10000ub_i2c_driver = {
+ .driver = {
+ .name = "nex10000ub",
+ .probe_type = PROBE_PREFER_ASYNCHRONOUS,
+ .of_match_table = of_match_ptr(nex10000ub_of_match),
+ },
+ .probe = nex10000ub_probe,
+ .id_table = nex10000ub_id,
+};
+
+module_i2c_driver(nex10000ub_i2c_driver);
+
+MODULE_DESCRIPTION("NEX10000UB regulator driver");
+MODULE_AUTHOR("Neil Armstrong <neil.armstrong@linaro.org>");
+MODULE_LICENSE("GPL");
--
2.34.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 3/3] regulator: add regulator driver for the Nexperia NEX10000UB
2026-09-18 7:25 ` [PATCH 3/3] regulator: add regulator driver for the Nexperia NEX10000UB Neil Armstrong
@ 2026-09-18 10:12 ` Mark Brown
2026-09-18 12:12 ` Neil Armstrong
0 siblings, 1 reply; 6+ messages in thread
From: Mark Brown @ 2026-09-18 10:12 UTC (permalink / raw)
To: Neil Armstrong
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Liam Girdwood,
devicetree, linux-kernel
[-- Attachment #1: Type: text/plain, Size: 733 bytes --]
On Fri, Sep 18, 2026 at 09:25:39AM +0200, Neil Armstrong wrote:
> Add regulator support for the Nexperia NEX10000UB dual output LCD
> bias power supply which provides programmable positive and negative
> output voltages mainly for display panels applications.
> +static int nex10000ub_of_parse_cb(struct device_node *np,
> + const struct regulator_desc *desc,
> + struct regulator_config *config)
> +{
> + struct gpio_desc *ena_gpiod;
> +
> + ena_gpiod = fwnode_gpiod_get_index(of_fwnode_handle(np), "enable", 0,
> + GPIOD_ASIS, desc->name);
This is GPIOD_ASIS so the direction might not have been configured.
> + if (IS_ERR(ena_gpiod))
> + return PTR_ERR(ena_gpiod);
The binding says the property is optional.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 3/3] regulator: add regulator driver for the Nexperia NEX10000UB
2026-09-18 10:12 ` Mark Brown
@ 2026-09-18 12:12 ` Neil Armstrong
0 siblings, 0 replies; 6+ messages in thread
From: Neil Armstrong @ 2026-09-18 12:12 UTC (permalink / raw)
To: Mark Brown
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Liam Girdwood,
devicetree, linux-kernel
On 9/18/26 12:12, Mark Brown wrote:
> On Fri, Sep 18, 2026 at 09:25:39AM +0200, Neil Armstrong wrote:
>> Add regulator support for the Nexperia NEX10000UB dual output LCD
>> bias power supply which provides programmable positive and negative
>> output voltages mainly for display panels applications.
>
>> +static int nex10000ub_of_parse_cb(struct device_node *np,
>> + const struct regulator_desc *desc,
>> + struct regulator_config *config)
>> +{
>> + struct gpio_desc *ena_gpiod;
>> +
>> + ena_gpiod = fwnode_gpiod_get_index(of_fwnode_handle(np), "enable", 0,
>> + GPIOD_ASIS, desc->name);
>
> This is GPIOD_ASIS so the direction might not have been configured.
Will fix
>
>> + if (IS_ERR(ena_gpiod))
>> + return PTR_ERR(ena_gpiod);
>
> The binding says the property is optional.
Good catch, forgot to make it mandatory.
Thanks,
Neil
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2026-09-18 12:12 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-18 7:25 [PATCH 0/3] regulator: add support for the Nexperia NEX10000UB dual output LCD bias power supply Neil Armstrong
2026-09-18 7:25 ` [PATCH 1/3] dt-bindings: vendor-prefixes: add vendor prefix for Nexperia B.V Neil Armstrong
2026-09-18 7:25 ` [PATCH 2/3] regulator: dt-bindings: document the Nexperia NEX10000UB dual output LCD bias power supply Neil Armstrong
2026-09-18 7:25 ` [PATCH 3/3] regulator: add regulator driver for the Nexperia NEX10000UB Neil Armstrong
2026-09-18 10:12 ` Mark Brown
2026-09-18 12:12 ` Neil Armstrong
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®