* [PATCH v2 0/2] regulator: add new UniPhier regulator support @ 2018-07-10 1:27 Kunihiko Hayashi 2018-07-10 1:27 ` [PATCH v2 1/2] dt-bindings: regulator: add DT bindings for UniPhier regulator Kunihiko Hayashi 2018-07-10 1:27 ` [PATCH v2 2/2] regulator: uniphier: add regulator driver for UniPhier SoC Kunihiko Hayashi 0 siblings, 2 replies; 7+ messages in thread From: Kunihiko Hayashi @ 2018-07-10 1:27 UTC (permalink / raw) To: linux-arm-kernel This series add new regulator controller support for UniPhier SoCs. Currently this supports USB3 VBUS controller only. This USB3 VBUS belongs to USB3 glue layer. Changes since v1: - dt-bindings: add description of glue layer - replace read/write accesses with regmap_mmio - rewrite a header with C++ comment style - reuse soc_data for pxs2, ld20 and pxs3 - replace clk operations with clk_bulk - move nclks and nrsts to soc_data Kunihiko Hayashi (2): dt-bindings: regulator: add DT bindings for UniPhier regulator regulator: uniphier: add regulator driver for UniPhier SoC .../bindings/regulator/uniphier-regulator.txt | 57 +++++ drivers/regulator/Kconfig | 8 + drivers/regulator/Makefile | 1 + drivers/regulator/uniphier-regulator.c | 247 +++++++++++++++++++++ 4 files changed, 313 insertions(+) create mode 100644 Documentation/devicetree/bindings/regulator/uniphier-regulator.txt create mode 100644 drivers/regulator/uniphier-regulator.c -- 2.7.4 ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v2 1/2] dt-bindings: regulator: add DT bindings for UniPhier regulator 2018-07-10 1:27 [PATCH v2 0/2] regulator: add new UniPhier regulator support Kunihiko Hayashi @ 2018-07-10 1:27 ` Kunihiko Hayashi 2018-07-11 9:33 ` Applied "dt-bindings: regulator: add DT bindings for UniPhier regulator" to the regulator tree Mark Brown 2018-07-10 1:27 ` [PATCH v2 2/2] regulator: uniphier: add regulator driver for UniPhier SoC Kunihiko Hayashi 1 sibling, 1 reply; 7+ messages in thread From: Kunihiko Hayashi @ 2018-07-10 1:27 UTC (permalink / raw) To: linux-arm-kernel Add DT bindings for regulators implemented in UniPhier SoCs. Signed-off-by: Kunihiko Hayashi <hayashi.kunihiko@socionext.com> --- .../bindings/regulator/uniphier-regulator.txt | 57 ++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 Documentation/devicetree/bindings/regulator/uniphier-regulator.txt diff --git a/Documentation/devicetree/bindings/regulator/uniphier-regulator.txt b/Documentation/devicetree/bindings/regulator/uniphier-regulator.txt new file mode 100644 index 0000000..c9919f4 --- /dev/null +++ b/Documentation/devicetree/bindings/regulator/uniphier-regulator.txt @@ -0,0 +1,57 @@ +Socionext UniPhier Regulator Controller + +This describes the devicetree bindings for regulator controller implemented +on Socionext UniPhier SoCs. + +USB3 Controller +--------------- + +This regulator controls VBUS and belongs to USB3 glue layer. Before using +the regulator, it is necessary to control the clocks and resets to enable +this layer. These clocks and resets should be described in each property. + +Required properties: +- compatible: Should be + "socionext,uniphier-pro4-usb3-regulator" - for Pro4 SoC + "socionext,uniphier-pxs2-usb3-regulator" - for PXs2 SoC + "socionext,uniphier-ld20-usb3-regulator" - for LD20 SoC + "socionext,uniphier-pxs3-usb3-regulator" - for PXs3 SoC +- reg: Specifies offset and length of the register set for the device. +- clocks: A list of phandles to the clock gate for USB3 glue layer. + According to the clock-names, appropriate clocks are required. +- clock-names: Should contain + "gio", "link" - for Pro4 SoC + "link" - for others +- resets: A list of phandles to the reset control for USB3 glue layer. + According to the reset-names, appropriate resets are required. +- reset-names: Should contain + "gio", "link" - for Pro4 SoC + "link" - for others + +See Documentation/devicetree/bindings/regulator/regulator.txt +for more details about the regulator properties. + +Example: + + usb-glue at 65b00000 { + compatible = "socionext,uniphier-ld20-dwc3-glue", + "simple-mfd"; + #address-cells = <1>; + #size-cells = <1>; + ranges = <0 0x65b00000 0x400>; + + usb_vbus0: regulators at 100 { + compatible = "socionext,uniphier-ld20-usb3-regulator"; + reg = <0x100 0x10>; + clock-names = "link"; + clocks = <&sys_clk 14>; + reset-names = "link"; + resets = <&sys_rst 14>; + }; + + phy { + ... + phy-supply = <&usb_vbus0>; + }; + ... + }; -- 2.7.4 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Applied "dt-bindings: regulator: add DT bindings for UniPhier regulator" to the regulator tree 2018-07-10 1:27 ` [PATCH v2 1/2] dt-bindings: regulator: add DT bindings for UniPhier regulator Kunihiko Hayashi @ 2018-07-11 9:33 ` Mark Brown 0 siblings, 0 replies; 7+ messages in thread From: Mark Brown @ 2018-07-11 9:33 UTC (permalink / raw) To: linux-arm-kernel The patch dt-bindings: regulator: add DT bindings for UniPhier regulator has been applied to the regulator tree at https://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator.git All being well this means that it will be integrated into the linux-next tree (usually sometime in the next 24 hours) and sent to Linus during the next merge window (or sooner if it is a bug fix), however if problems are discovered then the patch may be dropped or reverted. You may get further e-mails resulting from automated or manual testing and review of the tree, please engage with people reporting problems and send followup patches addressing any issues that are reported if needed. If any updates are required or you are submitting further changes they should be sent as incremental updates against current git, existing patches will not be replaced. Please add any relevant lists and maintainers to the CCs when replying to this mail. Thanks, Mark >From 64a7b80ba6ee80f64d36e59331d14b1d25cf7006 Mon Sep 17 00:00:00 2001 From: Kunihiko Hayashi <hayashi.kunihiko@socionext.com> Date: Wed, 11 Jul 2018 13:30:51 +0900 Subject: [PATCH] dt-bindings: regulator: add DT bindings for UniPhier regulator Add DT bindings for regulators implemented in UniPhier SoCs. Signed-off-by: Kunihiko Hayashi <hayashi.kunihiko@socionext.com> Signed-off-by: Mark Brown <broonie@kernel.org> --- .../bindings/regulator/uniphier-regulator.txt | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 Documentation/devicetree/bindings/regulator/uniphier-regulator.txt diff --git a/Documentation/devicetree/bindings/regulator/uniphier-regulator.txt b/Documentation/devicetree/bindings/regulator/uniphier-regulator.txt new file mode 100644 index 000000000000..c9919f4b92d2 --- /dev/null +++ b/Documentation/devicetree/bindings/regulator/uniphier-regulator.txt @@ -0,0 +1,57 @@ +Socionext UniPhier Regulator Controller + +This describes the devicetree bindings for regulator controller implemented +on Socionext UniPhier SoCs. + +USB3 Controller +--------------- + +This regulator controls VBUS and belongs to USB3 glue layer. Before using +the regulator, it is necessary to control the clocks and resets to enable +this layer. These clocks and resets should be described in each property. + +Required properties: +- compatible: Should be + "socionext,uniphier-pro4-usb3-regulator" - for Pro4 SoC + "socionext,uniphier-pxs2-usb3-regulator" - for PXs2 SoC + "socionext,uniphier-ld20-usb3-regulator" - for LD20 SoC + "socionext,uniphier-pxs3-usb3-regulator" - for PXs3 SoC +- reg: Specifies offset and length of the register set for the device. +- clocks: A list of phandles to the clock gate for USB3 glue layer. + According to the clock-names, appropriate clocks are required. +- clock-names: Should contain + "gio", "link" - for Pro4 SoC + "link" - for others +- resets: A list of phandles to the reset control for USB3 glue layer. + According to the reset-names, appropriate resets are required. +- reset-names: Should contain + "gio", "link" - for Pro4 SoC + "link" - for others + +See Documentation/devicetree/bindings/regulator/regulator.txt +for more details about the regulator properties. + +Example: + + usb-glue at 65b00000 { + compatible = "socionext,uniphier-ld20-dwc3-glue", + "simple-mfd"; + #address-cells = <1>; + #size-cells = <1>; + ranges = <0 0x65b00000 0x400>; + + usb_vbus0: regulators at 100 { + compatible = "socionext,uniphier-ld20-usb3-regulator"; + reg = <0x100 0x10>; + clock-names = "link"; + clocks = <&sys_clk 14>; + reset-names = "link"; + resets = <&sys_rst 14>; + }; + + phy { + ... + phy-supply = <&usb_vbus0>; + }; + ... + }; -- 2.18.0.rc2 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v2 2/2] regulator: uniphier: add regulator driver for UniPhier SoC 2018-07-10 1:27 [PATCH v2 0/2] regulator: add new UniPhier regulator support Kunihiko Hayashi 2018-07-10 1:27 ` [PATCH v2 1/2] dt-bindings: regulator: add DT bindings for UniPhier regulator Kunihiko Hayashi @ 2018-07-10 1:27 ` Kunihiko Hayashi 2018-07-10 17:44 ` Mark Brown 1 sibling, 1 reply; 7+ messages in thread From: Kunihiko Hayashi @ 2018-07-10 1:27 UTC (permalink / raw) To: linux-arm-kernel Initial commit to add support for regulators implemented in UniPhier SoCs. This supports USB VBUS only. Signed-off-by: Kunihiko Hayashi <hayashi.kunihiko@socionext.com> --- drivers/regulator/Kconfig | 8 ++ drivers/regulator/Makefile | 1 + drivers/regulator/uniphier-regulator.c | 247 +++++++++++++++++++++++++++++++++ 3 files changed, 256 insertions(+) create mode 100644 drivers/regulator/uniphier-regulator.c diff --git a/drivers/regulator/Kconfig b/drivers/regulator/Kconfig index 097f617..7f7ad0d 100644 --- a/drivers/regulator/Kconfig +++ b/drivers/regulator/Kconfig @@ -932,6 +932,14 @@ config REGULATOR_TWL4030 This driver supports the voltage regulators provided by this family of companion chips. +config REGULATOR_UNIPHIER + tristate "UniPhier regulator driver" + depends on ARCH_UNIPHIER || COMPILE_TEST + depends on OF && MFD_SYSCON + default ARCH_UNIPHIER + help + Support for regulators implemented on Socionext UniPhier SoCs. + config REGULATOR_VCTRL tristate "Voltage controlled regulators" depends on OF diff --git a/drivers/regulator/Makefile b/drivers/regulator/Makefile index 590674f..c0dd281 100644 --- a/drivers/regulator/Makefile +++ b/drivers/regulator/Makefile @@ -116,6 +116,7 @@ obj-$(CONFIG_REGULATOR_TPS65912) += tps65912-regulator.o obj-$(CONFIG_REGULATOR_TPS80031) += tps80031-regulator.o obj-$(CONFIG_REGULATOR_TPS65132) += tps65132-regulator.o obj-$(CONFIG_REGULATOR_TWL4030) += twl-regulator.o twl6030-regulator.o +obj-$(CONFIG_REGULATOR_UNIPHIER) += uniphier-regulator.o obj-$(CONFIG_REGULATOR_VCTRL) += vctrl-regulator.o obj-$(CONFIG_REGULATOR_VEXPRESS) += vexpress-regulator.o obj-$(CONFIG_REGULATOR_WM831X) += wm831x-dcdc.o diff --git a/drivers/regulator/uniphier-regulator.c b/drivers/regulator/uniphier-regulator.c new file mode 100644 index 0000000..17b6081 --- /dev/null +++ b/drivers/regulator/uniphier-regulator.c @@ -0,0 +1,247 @@ +// SPDX-License-Identifier: GPL-2.0 +// +// Regulator controller driver for UniPhier SoC +// Copyright 2018 Socionext Inc. +// Author: Kunihiko Hayashi <hayashi.kunihiko@socionext.com> + +#include <linux/clk.h> +#include <linux/io.h> +#include <linux/module.h> +#include <linux/of_device.h> +#include <linux/platform_device.h> +#include <linux/regmap.h> +#include <linux/regulator/driver.h> +#include <linux/regulator/of_regulator.h> +#include <linux/reset.h> + +#define MAX_CLKS 2 +#define MAX_RSTS 2 + +struct uniphier_regulator_soc_data { + int nclks; + const char * const *clock_names; + int nrsts; + const char * const *reset_names; + const struct regulator_desc *desc; + const struct regmap_config *regconf; +}; + +struct uniphier_regulator_priv { + struct regmap *regmap; + struct clk_bulk_data clk[MAX_CLKS]; + struct reset_control *rst[MAX_RSTS]; + const struct uniphier_regulator_soc_data *data; +}; + +static int uniphier_regulator_enable(struct regulator_dev *rdev) +{ + struct uniphier_regulator_priv *priv = rdev_get_drvdata(rdev); + + return regmap_update_bits(priv->regmap, rdev->desc->enable_reg, + rdev->desc->enable_mask, + rdev->desc->enable_val); +} + +static int uniphier_regulator_disable(struct regulator_dev *rdev) +{ + struct uniphier_regulator_priv *priv = rdev_get_drvdata(rdev); + + return regmap_update_bits(priv->regmap, rdev->desc->enable_reg, + rdev->desc->enable_mask, + rdev->desc->disable_val); +} + +static int uniphier_regulator_is_enabled(struct regulator_dev *rdev) +{ + struct uniphier_regulator_priv *priv = rdev_get_drvdata(rdev); + unsigned int val; + int ret = -EINVAL; + + regmap_read(priv->regmap, rdev->desc->enable_reg, &val); + val &= rdev->desc->enable_mask; + + if (val == rdev->desc->enable_val) + ret = 1; + else if (val == rdev->desc->disable_val) + ret = 0; + + return ret; +} + +static struct regulator_ops uniphier_regulator_ops = { + .enable = uniphier_regulator_enable, + .disable = uniphier_regulator_disable, + .is_enabled = uniphier_regulator_is_enabled, +}; + +static int uniphier_regulator_probe(struct platform_device *pdev) +{ + struct device *dev = &pdev->dev; + struct uniphier_regulator_priv *priv; + struct regulator_config config = { }; + struct regulator_dev *rdev; + struct resource *res; + void __iomem *base; + const char *name; + int i, ret, nr; + + priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL); + if (!priv) + return -ENOMEM; + + priv->data = of_device_get_match_data(dev); + if (WARN_ON(!priv->data)) + return -EINVAL; + + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); + base = devm_ioremap_resource(dev, res); + if (IS_ERR(base)) + return PTR_ERR(base); + + for (i = 0; i < priv->data->nclks; i++) + priv->clk[i].id = priv->data->clock_names[i]; + ret = devm_clk_bulk_get(dev, priv->data->nclks, priv->clk); + if (ret) + return ret; + + for (i = 0; i < priv->data->nrsts; i++) { + name = priv->data->reset_names[i]; + priv->rst[i] = devm_reset_control_get_shared(dev, name); + if (IS_ERR(priv->rst[i])) + return PTR_ERR(priv->rst[i]); + } + + ret = clk_bulk_prepare_enable(priv->data->nclks, priv->clk); + if (ret) + return ret; + + for (nr = 0; nr < priv->data->nrsts; nr++) { + ret = reset_control_deassert(priv->rst[nr]); + if (ret) + goto out_rst_assert; + } + + priv->regmap = devm_regmap_init_mmio(dev, base, priv->data->regconf); + if (IS_ERR(priv->regmap)) + return PTR_ERR(priv->regmap); + + config.dev = dev; + config.driver_data = priv; + config.of_node = dev->of_node; + config.init_data = of_get_regulator_init_data(dev, dev->of_node, + priv->data->desc); + rdev = devm_regulator_register(dev, priv->data->desc, &config); + if (IS_ERR(rdev)) { + ret = PTR_ERR(rdev); + goto out_rst_assert; + } + + platform_set_drvdata(pdev, priv); + + return 0; + +out_rst_assert: + while (nr--) + reset_control_assert(priv->rst[nr]); + + clk_bulk_disable_unprepare(priv->data->nclks, priv->clk); + + return ret; +} + +static int uniphier_regulator_remove(struct platform_device *pdev) +{ + struct uniphier_regulator_priv *priv = platform_get_drvdata(pdev); + int i; + + for (i = 0; i < priv->data->nrsts; i++) + reset_control_assert(priv->rst[i]); + + clk_bulk_disable_unprepare(priv->data->nclks, priv->clk); + + return 0; +} + +/* USB3 controller data */ +#define USB3VBUS_OFFSET 0x0 +#define USB3VBUS_REG BIT(4) +#define USB3VBUS_REG_EN BIT(3) +static const struct regulator_desc uniphier_usb3_regulator_desc = { + .name = "vbus", + .of_match = of_match_ptr("vbus"), + .ops = &uniphier_regulator_ops, + .type = REGULATOR_VOLTAGE, + .owner = THIS_MODULE, + .enable_reg = USB3VBUS_OFFSET, + .enable_mask = USB3VBUS_REG_EN | USB3VBUS_REG, + .enable_val = USB3VBUS_REG_EN | USB3VBUS_REG, + .disable_val = USB3VBUS_REG_EN, +}; + +static const struct regmap_config uniphier_usb3_regulator_regconf = { + .reg_bits = 32, + .val_bits = 32, + .reg_stride = 4, + .max_register = 1, +}; + +static const char * const uniphier_pro4_clock_reset_names[] = { + "gio", "link", +}; + +static const struct uniphier_regulator_soc_data uniphier_pro4_usb3_data = { + .nclks = ARRAY_SIZE(uniphier_pro4_clock_reset_names), + .clock_names = uniphier_pro4_clock_reset_names, + .nrsts = ARRAY_SIZE(uniphier_pro4_clock_reset_names), + .reset_names = uniphier_pro4_clock_reset_names, + .desc = &uniphier_usb3_regulator_desc, + .regconf = &uniphier_usb3_regulator_regconf, +}; + +static const char * const uniphier_pxs2_clock_reset_names[] = { + "link", +}; + +static const struct uniphier_regulator_soc_data uniphier_pxs2_usb3_data = { + .nclks = ARRAY_SIZE(uniphier_pxs2_clock_reset_names), + .clock_names = uniphier_pxs2_clock_reset_names, + .nrsts = ARRAY_SIZE(uniphier_pxs2_clock_reset_names), + .reset_names = uniphier_pxs2_clock_reset_names, + .desc = &uniphier_usb3_regulator_desc, + .regconf = &uniphier_usb3_regulator_regconf, +}; + +static const struct of_device_id uniphier_regulator_match[] = { + /* USB VBUS */ + { + .compatible = "socionext,uniphier-pro4-usb3-regulator", + .data = &uniphier_pro4_usb3_data, + }, + { + .compatible = "socionext,uniphier-pxs2-usb3-regulator", + .data = &uniphier_pxs2_usb3_data, + }, + { + .compatible = "socionext,uniphier-ld20-usb3-regulator", + .data = &uniphier_pxs2_usb3_data, + }, + { + .compatible = "socionext,uniphier-pxs3-usb3-regulator", + .data = &uniphier_pxs2_usb3_data, + }, + { /* Sentinel */ }, +}; + +static struct platform_driver uniphier_regulator_driver = { + .probe = uniphier_regulator_probe, + .remove = uniphier_regulator_remove, + .driver = { + .name = "uniphier-regulator", + .of_match_table = uniphier_regulator_match, + }, +}; +module_platform_driver(uniphier_regulator_driver); + +MODULE_AUTHOR("Kunihiko Hayashi <hayashi.kunihiko@socionext.com>"); +MODULE_DESCRIPTION("UniPhier Regulator Controller Driver"); +MODULE_LICENSE("GPL"); -- 2.7.4 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v2 2/2] regulator: uniphier: add regulator driver for UniPhier SoC 2018-07-10 1:27 ` [PATCH v2 2/2] regulator: uniphier: add regulator driver for UniPhier SoC Kunihiko Hayashi @ 2018-07-10 17:44 ` Mark Brown 2018-07-11 2:31 ` Kunihiko Hayashi 0 siblings, 1 reply; 7+ messages in thread From: Mark Brown @ 2018-07-10 17:44 UTC (permalink / raw) To: linux-arm-kernel On Tue, Jul 10, 2018 at 10:27:17AM +0900, Kunihiko Hayashi wrote: > +static int uniphier_regulator_enable(struct regulator_dev *rdev) > +{ > + struct uniphier_regulator_priv *priv = rdev_get_drvdata(rdev); > + > + return regmap_update_bits(priv->regmap, rdev->desc->enable_reg, > + rdev->desc->enable_mask, > + rdev->desc->enable_val); > +} This is just regulator_enable_regmap() isn't it? Same for disable, unless I'm missing something (which is possible). > +static int uniphier_regulator_is_enabled(struct regulator_dev *rdev) > +{ > + struct uniphier_regulator_priv *priv = rdev_get_drvdata(rdev); > + unsigned int val; > + int ret = -EINVAL; > + > + regmap_read(priv->regmap, rdev->desc->enable_reg, &val); > + val &= rdev->desc->enable_mask; > + > + if (val == rdev->desc->enable_val) > + ret = 1; > + else if (val == rdev->desc->disable_val) > + ret = 0; > + > + return ret; > +} This isn't *quite* regulator_is_enabled_regmap() as it explicitly checks if the disable value is set and errors otherwise which would be a good fix for that. Could you do a patch for that? -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 488 bytes Desc: not available URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20180710/99184ecf/attachment.sig> ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v2 2/2] regulator: uniphier: add regulator driver for UniPhier SoC 2018-07-10 17:44 ` Mark Brown @ 2018-07-11 2:31 ` Kunihiko Hayashi 2018-07-11 9:32 ` Mark Brown 0 siblings, 1 reply; 7+ messages in thread From: Kunihiko Hayashi @ 2018-07-11 2:31 UTC (permalink / raw) To: linux-arm-kernel Hi Mark, On Tue, 10 Jul 2018 18:44:51 +0100 <broonie@kernel.org> wrote: > On Tue, Jul 10, 2018 at 10:27:17AM +0900, Kunihiko Hayashi wrote: > > > +static int uniphier_regulator_enable(struct regulator_dev *rdev) > > +{ > > + struct uniphier_regulator_priv *priv = rdev_get_drvdata(rdev); > > + > > + return regmap_update_bits(priv->regmap, rdev->desc->enable_reg, > > + rdev->desc->enable_mask, > > + rdev->desc->enable_val); > > +} > > This is just regulator_enable_regmap() isn't it? Same for disable, > unless I'm missing something (which is possible). Exactly, it's reasonable to replace this with the helper function. I'll check and apply it. > > +static int uniphier_regulator_is_enabled(struct regulator_dev *rdev) > > +{ > > + struct uniphier_regulator_priv *priv = rdev_get_drvdata(rdev); > > + unsigned int val; > > + int ret = -EINVAL; > > + > > + regmap_read(priv->regmap, rdev->desc->enable_reg, &val); > > + val &= rdev->desc->enable_mask; > > + > > + if (val == rdev->desc->enable_val) > > + ret = 1; > > + else if (val == rdev->desc->disable_val) > > + ret = 0; > > + > > + return ret; > > +} > > This isn't *quite* regulator_is_enabled_regmap() as it explicitly checks > if the disable value is set and errors otherwise which would be a good > fix for that. Could you do a patch for that? Although I'm worried that the register have a value that is neither enable_val or disable_val, the "is_enabled" function returns whether the regulator is enabled or not, so I can apply regulator_is_enabled_regmap(). I'll apply it in v3. Thank you, --- Best Regards, Kunihiko Hayashi ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v2 2/2] regulator: uniphier: add regulator driver for UniPhier SoC 2018-07-11 2:31 ` Kunihiko Hayashi @ 2018-07-11 9:32 ` Mark Brown 0 siblings, 0 replies; 7+ messages in thread From: Mark Brown @ 2018-07-11 9:32 UTC (permalink / raw) To: linux-arm-kernel On Wed, Jul 11, 2018 at 11:31:35AM +0900, Kunihiko Hayashi wrote: > On Tue, 10 Jul 2018 18:44:51 +0100 <broonie@kernel.org> wrote: > > On Tue, Jul 10, 2018 at 10:27:17AM +0900, Kunihiko Hayashi wrote: > > This isn't *quite* regulator_is_enabled_regmap() as it explicitly checks > > if the disable value is set and errors otherwise which would be a good > > fix for that. Could you do a patch for that? > Although I'm worried that the register have a value that is neither > enable_val or disable_val, the "is_enabled" function returns whether > the regulator is enabled or not, so I can apply regulator_is_enabled_regmap(). Yes, I think it's a good thing to add that check - it's possible that there'll be some other value in there and it's better to be careful. -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 488 bytes Desc: not available URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20180711/9961250d/attachment.sig> ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2018-07-11 9:33 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2018-07-10 1:27 [PATCH v2 0/2] regulator: add new UniPhier regulator support Kunihiko Hayashi 2018-07-10 1:27 ` [PATCH v2 1/2] dt-bindings: regulator: add DT bindings for UniPhier regulator Kunihiko Hayashi 2018-07-11 9:33 ` Applied "dt-bindings: regulator: add DT bindings for UniPhier regulator" to the regulator tree Mark Brown 2018-07-10 1:27 ` [PATCH v2 2/2] regulator: uniphier: add regulator driver for UniPhier SoC Kunihiko Hayashi 2018-07-10 17:44 ` Mark Brown 2018-07-11 2:31 ` Kunihiko Hayashi 2018-07-11 9:32 ` Mark Brown
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox