* [PATCH v11 0/8] Move Hisilicon 6421v600 SPMI and USB drivers out of staging @ 2021-07-02 7:37 Mauro Carvalho Chehab 2021-07-02 7:37 ` [PATCH v11 6/8] mfd: hi6421-spmi-pmic: move driver from staging Mauro Carvalho Chehab ` (3 more replies) 0 siblings, 4 replies; 6+ messages in thread From: Mauro Carvalho Chehab @ 2021-07-02 7:37 UTC (permalink / raw) To: Greg Kroah-Hartman Cc: linuxarm, mauro.chehab, Mauro Carvalho Chehab, Lee Jones, Axel Lin, Mark Brown, Derek Kiernan, Dragan Cvetic, Rob Herring, devicetree, linux-arm-kernel, linux-kernel, linux-staging Hi Greg, As promised, that's the version 11, meant to be applied after -rc1. It depends on a regression fix patch merged via the regulator's tree: https://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator.git/commit/?h=for-5.14&id=5db5dd5be70eaf808d9fd90174b957fc5c2912cb (the dependence is just because of a trivial merge conflict) This series contain the final bits needed for the USB3 bus to work without staging drivers on Hikey 970. Mauro Carvalho Chehab (8): staging: hi6421-spmi-pmic: add a missing dot at copyright regulator: hi6421v600-regulator: add a missing dot at copyright staging: hikey9xx: split hi6421v600 irq into a separate driver staging: hi6421-spmi-pmic: cleanup drvdata staging: hi6421-spmi-pmic: rename spmi_device struct mfd: hi6421-spmi-pmic: move driver from staging dts: hisilicon: add support for the PMIC found on Hikey 970 dts: hisilicon: add support for USB3 on Hikey 970 .../mfd/hisilicon,hi6421-spmi-pmic.yaml | 134 ++++++++ MAINTAINERS | 7 + .../boot/dts/hisilicon/hi3670-hikey970.dts | 129 ++++++-- arch/arm64/boot/dts/hisilicon/hi3670.dtsi | 56 ++++ .../boot/dts/hisilicon/hikey970-pmic.dtsi | 87 +++++ drivers/mfd/Kconfig | 16 + drivers/mfd/Makefile | 1 + drivers/mfd/hi6421-spmi-pmic.c | 66 ++++ drivers/misc/Kconfig | 10 + drivers/misc/Makefile | 1 + drivers/misc/hi6421v600-irq.c | 313 ++++++++++++++++++ drivers/regulator/hi6421v600-regulator.c | 12 +- drivers/staging/Kconfig | 2 - drivers/staging/Makefile | 1 - drivers/staging/hikey9xx/Kconfig | 19 -- drivers/staging/hikey9xx/Makefile | 3 - drivers/staging/hikey9xx/TODO | 5 - drivers/staging/hikey9xx/hi6421-spmi-pmic.c | 311 ----------------- .../hikey9xx/hisilicon,hi6421-spmi-pmic.yaml | 134 -------- include/linux/mfd/hi6421-spmi-pmic.h | 30 -- 20 files changed, 807 insertions(+), 530 deletions(-) create mode 100644 Documentation/devicetree/bindings/mfd/hisilicon,hi6421-spmi-pmic.yaml create mode 100644 arch/arm64/boot/dts/hisilicon/hikey970-pmic.dtsi create mode 100644 drivers/mfd/hi6421-spmi-pmic.c create mode 100644 drivers/misc/hi6421v600-irq.c delete mode 100644 drivers/staging/hikey9xx/Kconfig delete mode 100644 drivers/staging/hikey9xx/Makefile delete mode 100644 drivers/staging/hikey9xx/TODO delete mode 100644 drivers/staging/hikey9xx/hi6421-spmi-pmic.c delete mode 100644 drivers/staging/hikey9xx/hisilicon,hi6421-spmi-pmic.yaml delete mode 100644 include/linux/mfd/hi6421-spmi-pmic.h -- 2.31.1 ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v11 6/8] mfd: hi6421-spmi-pmic: move driver from staging 2021-07-02 7:37 [PATCH v11 0/8] Move Hisilicon 6421v600 SPMI and USB drivers out of staging Mauro Carvalho Chehab @ 2021-07-02 7:37 ` Mauro Carvalho Chehab 2021-07-02 21:36 ` Rob Herring 2021-07-02 7:37 ` [PATCH v11 7/8] dts: hisilicon: add support for the PMIC found on Hikey 970 Mauro Carvalho Chehab ` (2 subsequent siblings) 3 siblings, 1 reply; 6+ messages in thread From: Mauro Carvalho Chehab @ 2021-07-02 7:37 UTC (permalink / raw) To: Greg Kroah-Hartman Cc: linuxarm, mauro.chehab, Mauro Carvalho Chehab, Axel Lin, Lee Jones, Rob Herring, devicetree, linux-kernel, linux-staging This driver is ready for mainstream. So, move it out of staging. Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> --- .../mfd/hisilicon,hi6421-spmi-pmic.yaml | 134 ++++++++++++++++++ MAINTAINERS | 7 + drivers/mfd/Kconfig | 16 +++ drivers/mfd/Makefile | 1 + drivers/mfd/hi6421-spmi-pmic.c | 66 +++++++++ drivers/staging/Kconfig | 2 - drivers/staging/Makefile | 1 - drivers/staging/hikey9xx/Kconfig | 19 --- drivers/staging/hikey9xx/Makefile | 3 - drivers/staging/hikey9xx/TODO | 5 - drivers/staging/hikey9xx/hi6421-spmi-pmic.c | 66 --------- .../hikey9xx/hisilicon,hi6421-spmi-pmic.yaml | 134 ------------------ 12 files changed, 224 insertions(+), 230 deletions(-) create mode 100644 Documentation/devicetree/bindings/mfd/hisilicon,hi6421-spmi-pmic.yaml create mode 100644 drivers/mfd/hi6421-spmi-pmic.c delete mode 100644 drivers/staging/hikey9xx/Kconfig delete mode 100644 drivers/staging/hikey9xx/Makefile delete mode 100644 drivers/staging/hikey9xx/TODO delete mode 100644 drivers/staging/hikey9xx/hi6421-spmi-pmic.c delete mode 100644 drivers/staging/hikey9xx/hisilicon,hi6421-spmi-pmic.yaml diff --git a/Documentation/devicetree/bindings/mfd/hisilicon,hi6421-spmi-pmic.yaml b/Documentation/devicetree/bindings/mfd/hisilicon,hi6421-spmi-pmic.yaml new file mode 100644 index 000000000000..8e355cddd437 --- /dev/null +++ b/Documentation/devicetree/bindings/mfd/hisilicon,hi6421-spmi-pmic.yaml @@ -0,0 +1,134 @@ +# SPDX-License-Identifier: GPL-2.0 +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/mfd/hisilicon,hi6421-spmi-pmic.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: HiSilicon 6421v600 SPMI PMIC + +maintainers: + - Mauro Carvalho Chehab <mchehab+huawei@kernel.org> + +description: | + HiSilicon 6421v600 should be connected inside a MIPI System Power Management + (SPMI) bus. It provides interrupts and power supply. + + The GPIO and interrupt settings are represented as part of the top-level PMIC + node. + + The SPMI controller part is provided by + Documentation/devicetree/bindings/mfd/hisilicon,hi6421-spmi-pmic.yaml + +properties: + $nodename: + pattern: "pmic@[0-9a-f]" + + compatible: + const: hisilicon,hi6421v600-spmi + + reg: + maxItems: 1 + + '#interrupt-cells': + const: 2 + + interrupt-controller: true + + gpios: + maxItems: 1 + description: GPIO used for IRQs + + regulators: + type: object + + properties: + '#address-cells': + const: 1 + + '#size-cells': + const: 0 + + patternProperties: + '^ldo[0-9]+@[0-9a-f]$': + type: object + + $ref: "/schemas/regulator/regulator.yaml#" + +required: + - compatible + - reg + - regulators + +additionalProperties: false + +examples: + - | + /* pmic properties */ + + pmic: pmic@0 { + compatible = "hisilicon,hi6421-spmi"; + reg = <0 0>; + + #interrupt-cells = <2>; + interrupt-controller; + gpios = <&gpio28 0 0>; + + regulators { + #address-cells = <1>; + #size-cells = <0>; + + ldo3: LDO3 { + regulator-name = "ldo3"; + regulator-min-microvolt = <1500000>; + regulator-max-microvolt = <2000000>; + regulator-boot-on; + }; + + ldo4: LDO4 { + regulator-name = "ldo4"; + regulator-min-microvolt = <1725000>; + regulator-max-microvolt = <1900000>; + regulator-boot-on; + }; + + ldo9: LDO9 { + regulator-name = "ldo9"; + regulator-min-microvolt = <1750000>; + regulator-max-microvolt = <3300000>; + regulator-boot-on; + }; + + ldo15: LDO15 { + regulator-name = "ldo15"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3000000>; + regulator-always-on; + }; + + ldo16: LDO16 { + regulator-name = "ldo16"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3000000>; + regulator-boot-on; + }; + + ldo17: LDO17 { + regulator-name = "ldo17"; + regulator-min-microvolt = <2500000>; + regulator-max-microvolt = <3300000>; + }; + + ldo33: LDO33 { + regulator-name = "ldo33"; + regulator-min-microvolt = <2500000>; + regulator-max-microvolt = <3300000>; + regulator-boot-on; + }; + + ldo34: LDO34 { + regulator-name = "ldo34"; + regulator-min-microvolt = <2600000>; + regulator-max-microvolt = <3300000>; + }; + }; + }; diff --git a/MAINTAINERS b/MAINTAINERS index 31a8cc819c0d..61bdd887d72f 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -8311,6 +8311,13 @@ S: Maintained F: Documentation/devicetree/bindings/spmi/hisilicon,hisi-spmi-controller.yaml F: drivers/spmi/hisi-spmi-controller.c +HISILICON SPMI PMIC DRIVER FOR HIKEY 6421v600 +M: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> +L: linux-kernel@vger.kernel.org +S: Maintained +F: Documentation/devicetree/bindings/mfd/hisilicon,hi6421-spmi-pmic.yaml +F: drivers/mfd/hi6421-spmi-pmic.c + HISILICON STAGING DRIVERS FOR HIKEY 960/970 M: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> S: Maintained diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig index 5c7f2b100191..99b8da2548b5 100644 --- a/drivers/mfd/Kconfig +++ b/drivers/mfd/Kconfig @@ -509,6 +509,22 @@ config MFD_HI6421_PMIC menus in order to enable them. We communicate with the Hi6421 via memory-mapped I/O. +config MFD_HI6421_SPMI + tristate "HiSilicon Hi6421v600 SPMI PMU/Codec IC" + depends on OF + depends on SPMI + select MFD_CORE + select REGMAP_SPMI + help + Add support for HiSilicon Hi6421v600 SPMI PMIC. Hi6421 includes + multi-functions, such as regulators, RTC, codec, Coulomb counter, + etc. + + This driver includes core APIs _only_. You have to select + individual components like voltage regulators under corresponding + menus in order to enable them. + We communicate with the Hi6421v600 via a SPMI bus. + config MFD_HI655X_PMIC tristate "HiSilicon Hi655X series PMU/Codec IC" depends on ARCH_HISI || COMPILE_TEST diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile index 4f6d2b8a5f76..e87230fc61ac 100644 --- a/drivers/mfd/Makefile +++ b/drivers/mfd/Makefile @@ -232,6 +232,7 @@ obj-$(CONFIG_MFD_IPAQ_MICRO) += ipaq-micro.o obj-$(CONFIG_MFD_IQS62X) += iqs62x.o obj-$(CONFIG_MFD_MENF21BMC) += menf21bmc.o obj-$(CONFIG_MFD_HI6421_PMIC) += hi6421-pmic-core.o +obj-$(CONFIG_MFD_HI6421_SPMI) += hi6421-spmi-pmic.o obj-$(CONFIG_MFD_HI655X_PMIC) += hi655x-pmic.o obj-$(CONFIG_MFD_DLN2) += dln2.o obj-$(CONFIG_MFD_RT5033) += rt5033.o diff --git a/drivers/mfd/hi6421-spmi-pmic.c b/drivers/mfd/hi6421-spmi-pmic.c new file mode 100644 index 000000000000..c9c0c3d7011f --- /dev/null +++ b/drivers/mfd/hi6421-spmi-pmic.c @@ -0,0 +1,66 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Device driver for regulators in HISI PMIC IC + * + * Copyright (c) 2013 Linaro Ltd. + * Copyright (c) 2011 Hisilicon. + * Copyright (c) 2020-2021 Huawei Technologies Co., Ltd. + */ + +#include <linux/mfd/core.h> +#include <linux/module.h> +#include <linux/platform_device.h> +#include <linux/regmap.h> +#include <linux/slab.h> +#include <linux/spmi.h> + +static const struct mfd_cell hi6421v600_devs[] = { + { .name = "hi6421v600-irq", }, + { .name = "hi6421v600-regulator", }, +}; + +static const struct regmap_config regmap_config = { + .reg_bits = 16, + .val_bits = BITS_PER_BYTE, + .max_register = 0xffff, + .fast_io = true +}; + +static int hi6421_spmi_pmic_probe(struct spmi_device *sdev) +{ + struct device *dev = &sdev->dev; + struct regmap *regmap; + int ret; + + regmap = devm_regmap_init_spmi_ext(sdev, ®map_config); + if (IS_ERR(regmap)) + return PTR_ERR(regmap); + + dev_set_drvdata(&sdev->dev, regmap); + + ret = devm_mfd_add_devices(&sdev->dev, PLATFORM_DEVID_NONE, + hi6421v600_devs, ARRAY_SIZE(hi6421v600_devs), + NULL, 0, NULL); + if (ret < 0) + dev_err(dev, "Failed to add child devices: %d\n", ret); + + return ret; +} + +static const struct of_device_id pmic_spmi_id_table[] = { + { .compatible = "hisilicon,hi6421-spmi" }, + { } +}; +MODULE_DEVICE_TABLE(of, pmic_spmi_id_table); + +static struct spmi_driver hi6421_spmi_pmic_driver = { + .driver = { + .name = "hi6421-spmi-pmic", + .of_match_table = pmic_spmi_id_table, + }, + .probe = hi6421_spmi_pmic_probe, +}; +module_spmi_driver(hi6421_spmi_pmic_driver); + +MODULE_DESCRIPTION("HiSilicon Hi6421v600 SPMI PMIC driver"); +MODULE_LICENSE("GPL v2"); diff --git a/drivers/staging/Kconfig b/drivers/staging/Kconfig index b7ae5bdc4eb5..5b4267d3ed6b 100644 --- a/drivers/staging/Kconfig +++ b/drivers/staging/Kconfig @@ -104,6 +104,4 @@ source "drivers/staging/qlge/Kconfig" source "drivers/staging/wfx/Kconfig" -source "drivers/staging/hikey9xx/Kconfig" - endif # STAGING diff --git a/drivers/staging/Makefile b/drivers/staging/Makefile index 075c979bfe7c..7179cdcaafe7 100644 --- a/drivers/staging/Makefile +++ b/drivers/staging/Makefile @@ -42,4 +42,3 @@ obj-$(CONFIG_FIELDBUS_DEV) += fieldbus/ obj-$(CONFIG_KPC2000) += kpc2000/ obj-$(CONFIG_QLGE) += qlge/ obj-$(CONFIG_WFX) += wfx/ -obj-y += hikey9xx/ diff --git a/drivers/staging/hikey9xx/Kconfig b/drivers/staging/hikey9xx/Kconfig deleted file mode 100644 index 9f53df9068fe..000000000000 --- a/drivers/staging/hikey9xx/Kconfig +++ /dev/null @@ -1,19 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0 - -# to be placed at drivers/mfd -config MFD_HI6421_SPMI - tristate "HiSilicon Hi6421v600 SPMI PMU/Codec IC" - depends on HAS_IOMEM - depends on OF - depends on SPMI - select MFD_CORE - select REGMAP_SPMI - help - Add support for HiSilicon Hi6421v600 SPMI PMIC. Hi6421 includes - multi-functions, such as regulators, RTC, codec, Coulomb counter, - etc. - - This driver includes core APIs _only_. You have to select - individual components like voltage regulators under corresponding - menus in order to enable them. - We communicate with the Hi6421v600 via a SPMI bus. diff --git a/drivers/staging/hikey9xx/Makefile b/drivers/staging/hikey9xx/Makefile deleted file mode 100644 index e3108d7dd849..000000000000 --- a/drivers/staging/hikey9xx/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0 - -obj-$(CONFIG_MFD_HI6421_SPMI) += hi6421-spmi-pmic.o diff --git a/drivers/staging/hikey9xx/TODO b/drivers/staging/hikey9xx/TODO deleted file mode 100644 index 65e7996a3066..000000000000 --- a/drivers/staging/hikey9xx/TODO +++ /dev/null @@ -1,5 +0,0 @@ -ToDo list: - -- Port other drivers needed by Hikey 960/970; -- Test drivers on Hikey 960; -- Validate device tree bindings. diff --git a/drivers/staging/hikey9xx/hi6421-spmi-pmic.c b/drivers/staging/hikey9xx/hi6421-spmi-pmic.c deleted file mode 100644 index c9c0c3d7011f..000000000000 --- a/drivers/staging/hikey9xx/hi6421-spmi-pmic.c +++ /dev/null @@ -1,66 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Device driver for regulators in HISI PMIC IC - * - * Copyright (c) 2013 Linaro Ltd. - * Copyright (c) 2011 Hisilicon. - * Copyright (c) 2020-2021 Huawei Technologies Co., Ltd. - */ - -#include <linux/mfd/core.h> -#include <linux/module.h> -#include <linux/platform_device.h> -#include <linux/regmap.h> -#include <linux/slab.h> -#include <linux/spmi.h> - -static const struct mfd_cell hi6421v600_devs[] = { - { .name = "hi6421v600-irq", }, - { .name = "hi6421v600-regulator", }, -}; - -static const struct regmap_config regmap_config = { - .reg_bits = 16, - .val_bits = BITS_PER_BYTE, - .max_register = 0xffff, - .fast_io = true -}; - -static int hi6421_spmi_pmic_probe(struct spmi_device *sdev) -{ - struct device *dev = &sdev->dev; - struct regmap *regmap; - int ret; - - regmap = devm_regmap_init_spmi_ext(sdev, ®map_config); - if (IS_ERR(regmap)) - return PTR_ERR(regmap); - - dev_set_drvdata(&sdev->dev, regmap); - - ret = devm_mfd_add_devices(&sdev->dev, PLATFORM_DEVID_NONE, - hi6421v600_devs, ARRAY_SIZE(hi6421v600_devs), - NULL, 0, NULL); - if (ret < 0) - dev_err(dev, "Failed to add child devices: %d\n", ret); - - return ret; -} - -static const struct of_device_id pmic_spmi_id_table[] = { - { .compatible = "hisilicon,hi6421-spmi" }, - { } -}; -MODULE_DEVICE_TABLE(of, pmic_spmi_id_table); - -static struct spmi_driver hi6421_spmi_pmic_driver = { - .driver = { - .name = "hi6421-spmi-pmic", - .of_match_table = pmic_spmi_id_table, - }, - .probe = hi6421_spmi_pmic_probe, -}; -module_spmi_driver(hi6421_spmi_pmic_driver); - -MODULE_DESCRIPTION("HiSilicon Hi6421v600 SPMI PMIC driver"); -MODULE_LICENSE("GPL v2"); diff --git a/drivers/staging/hikey9xx/hisilicon,hi6421-spmi-pmic.yaml b/drivers/staging/hikey9xx/hisilicon,hi6421-spmi-pmic.yaml deleted file mode 100644 index 8e355cddd437..000000000000 --- a/drivers/staging/hikey9xx/hisilicon,hi6421-spmi-pmic.yaml +++ /dev/null @@ -1,134 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0 -%YAML 1.2 ---- -$id: http://devicetree.org/schemas/mfd/hisilicon,hi6421-spmi-pmic.yaml# -$schema: http://devicetree.org/meta-schemas/core.yaml# - -title: HiSilicon 6421v600 SPMI PMIC - -maintainers: - - Mauro Carvalho Chehab <mchehab+huawei@kernel.org> - -description: | - HiSilicon 6421v600 should be connected inside a MIPI System Power Management - (SPMI) bus. It provides interrupts and power supply. - - The GPIO and interrupt settings are represented as part of the top-level PMIC - node. - - The SPMI controller part is provided by - Documentation/devicetree/bindings/mfd/hisilicon,hi6421-spmi-pmic.yaml - -properties: - $nodename: - pattern: "pmic@[0-9a-f]" - - compatible: - const: hisilicon,hi6421v600-spmi - - reg: - maxItems: 1 - - '#interrupt-cells': - const: 2 - - interrupt-controller: true - - gpios: - maxItems: 1 - description: GPIO used for IRQs - - regulators: - type: object - - properties: - '#address-cells': - const: 1 - - '#size-cells': - const: 0 - - patternProperties: - '^ldo[0-9]+@[0-9a-f]$': - type: object - - $ref: "/schemas/regulator/regulator.yaml#" - -required: - - compatible - - reg - - regulators - -additionalProperties: false - -examples: - - | - /* pmic properties */ - - pmic: pmic@0 { - compatible = "hisilicon,hi6421-spmi"; - reg = <0 0>; - - #interrupt-cells = <2>; - interrupt-controller; - gpios = <&gpio28 0 0>; - - regulators { - #address-cells = <1>; - #size-cells = <0>; - - ldo3: LDO3 { - regulator-name = "ldo3"; - regulator-min-microvolt = <1500000>; - regulator-max-microvolt = <2000000>; - regulator-boot-on; - }; - - ldo4: LDO4 { - regulator-name = "ldo4"; - regulator-min-microvolt = <1725000>; - regulator-max-microvolt = <1900000>; - regulator-boot-on; - }; - - ldo9: LDO9 { - regulator-name = "ldo9"; - regulator-min-microvolt = <1750000>; - regulator-max-microvolt = <3300000>; - regulator-boot-on; - }; - - ldo15: LDO15 { - regulator-name = "ldo15"; - regulator-min-microvolt = <1800000>; - regulator-max-microvolt = <3000000>; - regulator-always-on; - }; - - ldo16: LDO16 { - regulator-name = "ldo16"; - regulator-min-microvolt = <1800000>; - regulator-max-microvolt = <3000000>; - regulator-boot-on; - }; - - ldo17: LDO17 { - regulator-name = "ldo17"; - regulator-min-microvolt = <2500000>; - regulator-max-microvolt = <3300000>; - }; - - ldo33: LDO33 { - regulator-name = "ldo33"; - regulator-min-microvolt = <2500000>; - regulator-max-microvolt = <3300000>; - regulator-boot-on; - }; - - ldo34: LDO34 { - regulator-name = "ldo34"; - regulator-min-microvolt = <2600000>; - regulator-max-microvolt = <3300000>; - }; - }; - }; -- 2.31.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v11 6/8] mfd: hi6421-spmi-pmic: move driver from staging 2021-07-02 7:37 ` [PATCH v11 6/8] mfd: hi6421-spmi-pmic: move driver from staging Mauro Carvalho Chehab @ 2021-07-02 21:36 ` Rob Herring 0 siblings, 0 replies; 6+ messages in thread From: Rob Herring @ 2021-07-02 21:36 UTC (permalink / raw) To: Mauro Carvalho Chehab Cc: Greg Kroah-Hartman, linuxarm, mauro.chehab, Axel Lin, Lee Jones, devicetree, linux-kernel, linux-staging On Fri, Jul 02, 2021 at 09:37:21AM +0200, Mauro Carvalho Chehab wrote: > This driver is ready for mainstream. So, move it out of staging. > > Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> > --- > .../mfd/hisilicon,hi6421-spmi-pmic.yaml | 134 ++++++++++++++++++ > MAINTAINERS | 7 + > drivers/mfd/Kconfig | 16 +++ > drivers/mfd/Makefile | 1 + > drivers/mfd/hi6421-spmi-pmic.c | 66 +++++++++ > drivers/staging/Kconfig | 2 - > drivers/staging/Makefile | 1 - > drivers/staging/hikey9xx/Kconfig | 19 --- > drivers/staging/hikey9xx/Makefile | 3 - > drivers/staging/hikey9xx/TODO | 5 - > drivers/staging/hikey9xx/hi6421-spmi-pmic.c | 66 --------- > .../hikey9xx/hisilicon,hi6421-spmi-pmic.yaml | 134 ------------------ > 12 files changed, 224 insertions(+), 230 deletions(-) > create mode 100644 Documentation/devicetree/bindings/mfd/hisilicon,hi6421-spmi-pmic.yaml > create mode 100644 drivers/mfd/hi6421-spmi-pmic.c > delete mode 100644 drivers/staging/hikey9xx/Kconfig > delete mode 100644 drivers/staging/hikey9xx/Makefile > delete mode 100644 drivers/staging/hikey9xx/TODO > delete mode 100644 drivers/staging/hikey9xx/hi6421-spmi-pmic.c > delete mode 100644 drivers/staging/hikey9xx/hisilicon,hi6421-spmi-pmic.yaml > > diff --git a/Documentation/devicetree/bindings/mfd/hisilicon,hi6421-spmi-pmic.yaml b/Documentation/devicetree/bindings/mfd/hisilicon,hi6421-spmi-pmic.yaml > new file mode 100644 > index 000000000000..8e355cddd437 > --- /dev/null > +++ b/Documentation/devicetree/bindings/mfd/hisilicon,hi6421-spmi-pmic.yaml > @@ -0,0 +1,134 @@ > +# SPDX-License-Identifier: GPL-2.0 > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/mfd/hisilicon,hi6421-spmi-pmic.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: HiSilicon 6421v600 SPMI PMIC > + > +maintainers: > + - Mauro Carvalho Chehab <mchehab+huawei@kernel.org> > + > +description: | > + HiSilicon 6421v600 should be connected inside a MIPI System Power Management > + (SPMI) bus. It provides interrupts and power supply. > + > + The GPIO and interrupt settings are represented as part of the top-level PMIC > + node. > + > + The SPMI controller part is provided by > + Documentation/devicetree/bindings/mfd/hisilicon,hi6421-spmi-pmic.yaml > + > +properties: > + $nodename: > + pattern: "pmic@[0-9a-f]" > + > + compatible: > + const: hisilicon,hi6421v600-spmi Doesn't match the example. > + > + reg: > + maxItems: 1 > + > + '#interrupt-cells': > + const: 2 > + > + interrupt-controller: true > + > + gpios: > + maxItems: 1 > + description: GPIO used for IRQs Use 'interrupts' instead if this is an interrupt. > + > + regulators: > + type: object > + > + properties: > + '#address-cells': > + const: 1 > + > + '#size-cells': > + const: 0 > + > + patternProperties: > + '^ldo[0-9]+@[0-9a-f]$': > + type: object > + > + $ref: "/schemas/regulator/regulator.yaml#" > + > +required: > + - compatible > + - reg > + - regulators > + > +additionalProperties: false > + > +examples: > + - | > + /* pmic properties */ > + > + pmic: pmic@0 { > + compatible = "hisilicon,hi6421-spmi"; > + reg = <0 0>; > + > + #interrupt-cells = <2>; > + interrupt-controller; > + gpios = <&gpio28 0 0>; > + > + regulators { > + #address-cells = <1>; > + #size-cells = <0>; > + > + ldo3: LDO3 { > + regulator-name = "ldo3"; > + regulator-min-microvolt = <1500000>; > + regulator-max-microvolt = <2000000>; > + regulator-boot-on; > + }; > + > + ldo4: LDO4 { > + regulator-name = "ldo4"; > + regulator-min-microvolt = <1725000>; > + regulator-max-microvolt = <1900000>; > + regulator-boot-on; > + }; > + > + ldo9: LDO9 { > + regulator-name = "ldo9"; > + regulator-min-microvolt = <1750000>; > + regulator-max-microvolt = <3300000>; > + regulator-boot-on; > + }; > + > + ldo15: LDO15 { > + regulator-name = "ldo15"; > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <3000000>; > + regulator-always-on; > + }; > + > + ldo16: LDO16 { > + regulator-name = "ldo16"; > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <3000000>; > + regulator-boot-on; > + }; > + > + ldo17: LDO17 { > + regulator-name = "ldo17"; > + regulator-min-microvolt = <2500000>; > + regulator-max-microvolt = <3300000>; > + }; > + > + ldo33: LDO33 { > + regulator-name = "ldo33"; > + regulator-min-microvolt = <2500000>; > + regulator-max-microvolt = <3300000>; > + regulator-boot-on; > + }; > + > + ldo34: LDO34 { > + regulator-name = "ldo34"; > + regulator-min-microvolt = <2600000>; > + regulator-max-microvolt = <3300000>; > + }; > + }; > + }; > diff --git a/MAINTAINERS b/MAINTAINERS > index 31a8cc819c0d..61bdd887d72f 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -8311,6 +8311,13 @@ S: Maintained > F: Documentation/devicetree/bindings/spmi/hisilicon,hisi-spmi-controller.yaml > F: drivers/spmi/hisi-spmi-controller.c > > +HISILICON SPMI PMIC DRIVER FOR HIKEY 6421v600 > +M: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> > +L: linux-kernel@vger.kernel.org > +S: Maintained > +F: Documentation/devicetree/bindings/mfd/hisilicon,hi6421-spmi-pmic.yaml > +F: drivers/mfd/hi6421-spmi-pmic.c > + > HISILICON STAGING DRIVERS FOR HIKEY 960/970 > M: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> > S: Maintained > diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig > index 5c7f2b100191..99b8da2548b5 100644 > --- a/drivers/mfd/Kconfig > +++ b/drivers/mfd/Kconfig > @@ -509,6 +509,22 @@ config MFD_HI6421_PMIC > menus in order to enable them. > We communicate with the Hi6421 via memory-mapped I/O. > > +config MFD_HI6421_SPMI > + tristate "HiSilicon Hi6421v600 SPMI PMU/Codec IC" > + depends on OF > + depends on SPMI > + select MFD_CORE > + select REGMAP_SPMI > + help > + Add support for HiSilicon Hi6421v600 SPMI PMIC. Hi6421 includes > + multi-functions, such as regulators, RTC, codec, Coulomb counter, > + etc. > + > + This driver includes core APIs _only_. You have to select > + individual components like voltage regulators under corresponding > + menus in order to enable them. > + We communicate with the Hi6421v600 via a SPMI bus. > + > config MFD_HI655X_PMIC > tristate "HiSilicon Hi655X series PMU/Codec IC" > depends on ARCH_HISI || COMPILE_TEST > diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile > index 4f6d2b8a5f76..e87230fc61ac 100644 > --- a/drivers/mfd/Makefile > +++ b/drivers/mfd/Makefile > @@ -232,6 +232,7 @@ obj-$(CONFIG_MFD_IPAQ_MICRO) += ipaq-micro.o > obj-$(CONFIG_MFD_IQS62X) += iqs62x.o > obj-$(CONFIG_MFD_MENF21BMC) += menf21bmc.o > obj-$(CONFIG_MFD_HI6421_PMIC) += hi6421-pmic-core.o > +obj-$(CONFIG_MFD_HI6421_SPMI) += hi6421-spmi-pmic.o > obj-$(CONFIG_MFD_HI655X_PMIC) += hi655x-pmic.o > obj-$(CONFIG_MFD_DLN2) += dln2.o > obj-$(CONFIG_MFD_RT5033) += rt5033.o > diff --git a/drivers/mfd/hi6421-spmi-pmic.c b/drivers/mfd/hi6421-spmi-pmic.c > new file mode 100644 > index 000000000000..c9c0c3d7011f > --- /dev/null > +++ b/drivers/mfd/hi6421-spmi-pmic.c > @@ -0,0 +1,66 @@ > +// SPDX-License-Identifier: GPL-2.0 > +/* > + * Device driver for regulators in HISI PMIC IC > + * > + * Copyright (c) 2013 Linaro Ltd. > + * Copyright (c) 2011 Hisilicon. > + * Copyright (c) 2020-2021 Huawei Technologies Co., Ltd. > + */ > + > +#include <linux/mfd/core.h> > +#include <linux/module.h> > +#include <linux/platform_device.h> > +#include <linux/regmap.h> > +#include <linux/slab.h> > +#include <linux/spmi.h> > + > +static const struct mfd_cell hi6421v600_devs[] = { > + { .name = "hi6421v600-irq", }, > + { .name = "hi6421v600-regulator", }, > +}; > + > +static const struct regmap_config regmap_config = { > + .reg_bits = 16, > + .val_bits = BITS_PER_BYTE, > + .max_register = 0xffff, > + .fast_io = true > +}; > + > +static int hi6421_spmi_pmic_probe(struct spmi_device *sdev) > +{ > + struct device *dev = &sdev->dev; > + struct regmap *regmap; > + int ret; > + > + regmap = devm_regmap_init_spmi_ext(sdev, ®map_config); > + if (IS_ERR(regmap)) > + return PTR_ERR(regmap); > + > + dev_set_drvdata(&sdev->dev, regmap); > + > + ret = devm_mfd_add_devices(&sdev->dev, PLATFORM_DEVID_NONE, > + hi6421v600_devs, ARRAY_SIZE(hi6421v600_devs), > + NULL, 0, NULL); > + if (ret < 0) > + dev_err(dev, "Failed to add child devices: %d\n", ret); > + > + return ret; > +} > + > +static const struct of_device_id pmic_spmi_id_table[] = { > + { .compatible = "hisilicon,hi6421-spmi" }, > + { } > +}; > +MODULE_DEVICE_TABLE(of, pmic_spmi_id_table); > + > +static struct spmi_driver hi6421_spmi_pmic_driver = { > + .driver = { > + .name = "hi6421-spmi-pmic", > + .of_match_table = pmic_spmi_id_table, > + }, > + .probe = hi6421_spmi_pmic_probe, > +}; > +module_spmi_driver(hi6421_spmi_pmic_driver); > + > +MODULE_DESCRIPTION("HiSilicon Hi6421v600 SPMI PMIC driver"); > +MODULE_LICENSE("GPL v2"); > diff --git a/drivers/staging/Kconfig b/drivers/staging/Kconfig > index b7ae5bdc4eb5..5b4267d3ed6b 100644 > --- a/drivers/staging/Kconfig > +++ b/drivers/staging/Kconfig > @@ -104,6 +104,4 @@ source "drivers/staging/qlge/Kconfig" > > source "drivers/staging/wfx/Kconfig" > > -source "drivers/staging/hikey9xx/Kconfig" > - > endif # STAGING > diff --git a/drivers/staging/Makefile b/drivers/staging/Makefile > index 075c979bfe7c..7179cdcaafe7 100644 > --- a/drivers/staging/Makefile > +++ b/drivers/staging/Makefile > @@ -42,4 +42,3 @@ obj-$(CONFIG_FIELDBUS_DEV) += fieldbus/ > obj-$(CONFIG_KPC2000) += kpc2000/ > obj-$(CONFIG_QLGE) += qlge/ > obj-$(CONFIG_WFX) += wfx/ > -obj-y += hikey9xx/ > diff --git a/drivers/staging/hikey9xx/Kconfig b/drivers/staging/hikey9xx/Kconfig > deleted file mode 100644 > index 9f53df9068fe..000000000000 > --- a/drivers/staging/hikey9xx/Kconfig > +++ /dev/null > @@ -1,19 +0,0 @@ > -# SPDX-License-Identifier: GPL-2.0 > - > -# to be placed at drivers/mfd > -config MFD_HI6421_SPMI > - tristate "HiSilicon Hi6421v600 SPMI PMU/Codec IC" > - depends on HAS_IOMEM > - depends on OF > - depends on SPMI > - select MFD_CORE > - select REGMAP_SPMI > - help > - Add support for HiSilicon Hi6421v600 SPMI PMIC. Hi6421 includes > - multi-functions, such as regulators, RTC, codec, Coulomb counter, > - etc. > - > - This driver includes core APIs _only_. You have to select > - individual components like voltage regulators under corresponding > - menus in order to enable them. > - We communicate with the Hi6421v600 via a SPMI bus. > diff --git a/drivers/staging/hikey9xx/Makefile b/drivers/staging/hikey9xx/Makefile > deleted file mode 100644 > index e3108d7dd849..000000000000 > --- a/drivers/staging/hikey9xx/Makefile > +++ /dev/null > @@ -1,3 +0,0 @@ > -# SPDX-License-Identifier: GPL-2.0 > - > -obj-$(CONFIG_MFD_HI6421_SPMI) += hi6421-spmi-pmic.o > diff --git a/drivers/staging/hikey9xx/TODO b/drivers/staging/hikey9xx/TODO > deleted file mode 100644 > index 65e7996a3066..000000000000 > --- a/drivers/staging/hikey9xx/TODO > +++ /dev/null > @@ -1,5 +0,0 @@ > -ToDo list: > - > -- Port other drivers needed by Hikey 960/970; > -- Test drivers on Hikey 960; > -- Validate device tree bindings. > diff --git a/drivers/staging/hikey9xx/hi6421-spmi-pmic.c b/drivers/staging/hikey9xx/hi6421-spmi-pmic.c > deleted file mode 100644 > index c9c0c3d7011f..000000000000 > --- a/drivers/staging/hikey9xx/hi6421-spmi-pmic.c > +++ /dev/null > @@ -1,66 +0,0 @@ > -// SPDX-License-Identifier: GPL-2.0 > -/* > - * Device driver for regulators in HISI PMIC IC > - * > - * Copyright (c) 2013 Linaro Ltd. > - * Copyright (c) 2011 Hisilicon. > - * Copyright (c) 2020-2021 Huawei Technologies Co., Ltd. > - */ > - > -#include <linux/mfd/core.h> > -#include <linux/module.h> > -#include <linux/platform_device.h> > -#include <linux/regmap.h> > -#include <linux/slab.h> > -#include <linux/spmi.h> > - > -static const struct mfd_cell hi6421v600_devs[] = { > - { .name = "hi6421v600-irq", }, > - { .name = "hi6421v600-regulator", }, > -}; > - > -static const struct regmap_config regmap_config = { > - .reg_bits = 16, > - .val_bits = BITS_PER_BYTE, > - .max_register = 0xffff, > - .fast_io = true > -}; > - > -static int hi6421_spmi_pmic_probe(struct spmi_device *sdev) > -{ > - struct device *dev = &sdev->dev; > - struct regmap *regmap; > - int ret; > - > - regmap = devm_regmap_init_spmi_ext(sdev, ®map_config); > - if (IS_ERR(regmap)) > - return PTR_ERR(regmap); > - > - dev_set_drvdata(&sdev->dev, regmap); > - > - ret = devm_mfd_add_devices(&sdev->dev, PLATFORM_DEVID_NONE, > - hi6421v600_devs, ARRAY_SIZE(hi6421v600_devs), > - NULL, 0, NULL); > - if (ret < 0) > - dev_err(dev, "Failed to add child devices: %d\n", ret); > - > - return ret; > -} > - > -static const struct of_device_id pmic_spmi_id_table[] = { > - { .compatible = "hisilicon,hi6421-spmi" }, > - { } > -}; > -MODULE_DEVICE_TABLE(of, pmic_spmi_id_table); > - > -static struct spmi_driver hi6421_spmi_pmic_driver = { > - .driver = { > - .name = "hi6421-spmi-pmic", > - .of_match_table = pmic_spmi_id_table, > - }, > - .probe = hi6421_spmi_pmic_probe, > -}; > -module_spmi_driver(hi6421_spmi_pmic_driver); > - > -MODULE_DESCRIPTION("HiSilicon Hi6421v600 SPMI PMIC driver"); > -MODULE_LICENSE("GPL v2"); > diff --git a/drivers/staging/hikey9xx/hisilicon,hi6421-spmi-pmic.yaml b/drivers/staging/hikey9xx/hisilicon,hi6421-spmi-pmic.yaml > deleted file mode 100644 > index 8e355cddd437..000000000000 > --- a/drivers/staging/hikey9xx/hisilicon,hi6421-spmi-pmic.yaml > +++ /dev/null > @@ -1,134 +0,0 @@ > -# SPDX-License-Identifier: GPL-2.0 > -%YAML 1.2 > ---- > -$id: http://devicetree.org/schemas/mfd/hisilicon,hi6421-spmi-pmic.yaml# > -$schema: http://devicetree.org/meta-schemas/core.yaml# > - > -title: HiSilicon 6421v600 SPMI PMIC > - > -maintainers: > - - Mauro Carvalho Chehab <mchehab+huawei@kernel.org> > - > -description: | > - HiSilicon 6421v600 should be connected inside a MIPI System Power Management > - (SPMI) bus. It provides interrupts and power supply. > - > - The GPIO and interrupt settings are represented as part of the top-level PMIC > - node. > - > - The SPMI controller part is provided by > - Documentation/devicetree/bindings/mfd/hisilicon,hi6421-spmi-pmic.yaml > - > -properties: > - $nodename: > - pattern: "pmic@[0-9a-f]" > - > - compatible: > - const: hisilicon,hi6421v600-spmi > - > - reg: > - maxItems: 1 > - > - '#interrupt-cells': > - const: 2 > - > - interrupt-controller: true > - > - gpios: > - maxItems: 1 > - description: GPIO used for IRQs > - > - regulators: > - type: object > - > - properties: > - '#address-cells': > - const: 1 > - > - '#size-cells': > - const: 0 > - > - patternProperties: > - '^ldo[0-9]+@[0-9a-f]$': > - type: object > - > - $ref: "/schemas/regulator/regulator.yaml#" > - > -required: > - - compatible > - - reg > - - regulators > - > -additionalProperties: false > - > -examples: > - - | > - /* pmic properties */ > - > - pmic: pmic@0 { > - compatible = "hisilicon,hi6421-spmi"; > - reg = <0 0>; > - > - #interrupt-cells = <2>; > - interrupt-controller; > - gpios = <&gpio28 0 0>; > - > - regulators { > - #address-cells = <1>; > - #size-cells = <0>; > - > - ldo3: LDO3 { > - regulator-name = "ldo3"; > - regulator-min-microvolt = <1500000>; > - regulator-max-microvolt = <2000000>; > - regulator-boot-on; > - }; > - > - ldo4: LDO4 { > - regulator-name = "ldo4"; > - regulator-min-microvolt = <1725000>; > - regulator-max-microvolt = <1900000>; > - regulator-boot-on; > - }; > - > - ldo9: LDO9 { > - regulator-name = "ldo9"; > - regulator-min-microvolt = <1750000>; > - regulator-max-microvolt = <3300000>; > - regulator-boot-on; > - }; > - > - ldo15: LDO15 { > - regulator-name = "ldo15"; > - regulator-min-microvolt = <1800000>; > - regulator-max-microvolt = <3000000>; > - regulator-always-on; > - }; > - > - ldo16: LDO16 { > - regulator-name = "ldo16"; > - regulator-min-microvolt = <1800000>; > - regulator-max-microvolt = <3000000>; > - regulator-boot-on; > - }; > - > - ldo17: LDO17 { > - regulator-name = "ldo17"; > - regulator-min-microvolt = <2500000>; > - regulator-max-microvolt = <3300000>; > - }; > - > - ldo33: LDO33 { > - regulator-name = "ldo33"; > - regulator-min-microvolt = <2500000>; > - regulator-max-microvolt = <3300000>; > - regulator-boot-on; > - }; > - > - ldo34: LDO34 { > - regulator-name = "ldo34"; > - regulator-min-microvolt = <2600000>; > - regulator-max-microvolt = <3300000>; > - }; > - }; > - }; > -- > 2.31.1 > > ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v11 7/8] dts: hisilicon: add support for the PMIC found on Hikey 970 2021-07-02 7:37 [PATCH v11 0/8] Move Hisilicon 6421v600 SPMI and USB drivers out of staging Mauro Carvalho Chehab 2021-07-02 7:37 ` [PATCH v11 6/8] mfd: hi6421-spmi-pmic: move driver from staging Mauro Carvalho Chehab @ 2021-07-02 7:37 ` Mauro Carvalho Chehab 2021-07-02 7:37 ` [PATCH v11 8/8] dts: hisilicon: add support for USB3 " Mauro Carvalho Chehab 2021-07-12 10:45 ` (subset) [PATCH v11 0/8] Move Hisilicon 6421v600 SPMI and USB drivers out of staging Mark Brown 3 siblings, 0 replies; 6+ messages in thread From: Mauro Carvalho Chehab @ 2021-07-02 7:37 UTC (permalink / raw) To: Greg Kroah-Hartman Cc: linuxarm, mauro.chehab, Mauro Carvalho Chehab, Axel Lin, Lee Jones, Rob Herring, Wei Xu, devicetree, linux-arm-kernel, linux-kernel Add a device tree for the HiSilicon 6421v600 SPMI PMIC, used on HiKey970 board. As we now have support for it, change the fixed regulators used by the SD I/O to use the proper LDO supplies. Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> --- .../boot/dts/hisilicon/hi3670-hikey970.dts | 22 +---- .../boot/dts/hisilicon/hikey970-pmic.dtsi | 87 +++++++++++++++++++ 2 files changed, 90 insertions(+), 19 deletions(-) create mode 100644 arch/arm64/boot/dts/hisilicon/hikey970-pmic.dtsi diff --git a/arch/arm64/boot/dts/hisilicon/hi3670-hikey970.dts b/arch/arm64/boot/dts/hisilicon/hi3670-hikey970.dts index 7f9f9886c349..5e6d7b329771 100644 --- a/arch/arm64/boot/dts/hisilicon/hi3670-hikey970.dts +++ b/arch/arm64/boot/dts/hisilicon/hi3670-hikey970.dts @@ -12,6 +12,7 @@ #include "hi3670.dtsi" #include "hikey970-pinctrl.dtsi" +#include "hikey970-pmic.dtsi" / { model = "HiKey970"; @@ -39,23 +40,6 @@ memory@0 { reg = <0x0 0x0 0x0 0x0>; }; - sd_1v8: regulator-1v8 { - compatible = "regulator-fixed"; - regulator-name = "fixed-1.8V"; - regulator-min-microvolt = <1800000>; - regulator-max-microvolt = <1800000>; - regulator-always-on; - }; - - sd_3v3: regulator-3v3 { - compatible = "regulator-fixed"; - regulator-name = "fixed-3.3V"; - regulator-min-microvolt = <3300000>; - regulator-max-microvolt = <3300000>; - regulator-boot-on; - regulator-always-on; - }; - wlan_en: wlan-en-1-8v { compatible = "regulator-fixed"; regulator-name = "wlan-en-regulator"; @@ -402,8 +386,8 @@ &dwmmc1 { pinctrl-0 = <&sd_pmx_func &sd_clk_cfg_func &sd_cfg_func>; - vmmc-supply = <&sd_3v3>; - vqmmc-supply = <&sd_1v8>; + vmmc-supply = <&ldo16>; + vqmmc-supply = <&ldo9>; status = "okay"; }; diff --git a/arch/arm64/boot/dts/hisilicon/hikey970-pmic.dtsi b/arch/arm64/boot/dts/hisilicon/hikey970-pmic.dtsi new file mode 100644 index 000000000000..48c739eacba0 --- /dev/null +++ b/arch/arm64/boot/dts/hisilicon/hikey970-pmic.dtsi @@ -0,0 +1,87 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * dts file for Hi6421v600 SPMI PMIC used at the HiKey970 Development Board + * + * Copyright (C) 2020, Huawei Tech. Co., Ltd. + */ + +#include <dt-bindings/spmi/spmi.h> + +/ { + spmi: spmi@fff24000 { + compatible = "hisilicon,kirin970-spmi-controller"; + #address-cells = <2>; + #size-cells = <0>; + status = "okay"; + reg = <0x0 0xfff24000 0x0 0x1000>; + hisilicon,spmi-channel = <2>; + + pmic: pmic@0 { + compatible = "hisilicon,hi6421-spmi"; + reg = <0 SPMI_USID>; + + #interrupt-cells = <2>; + interrupt-controller; + gpios = <&gpio28 0 0>; + + regulators { + #address-cells = <1>; + #size-cells = <0>; + + ldo3: LDO3 { /* HDMI */ + regulator-name = "ldo3"; + regulator-min-microvolt = <1500000>; + regulator-max-microvolt = <2000000>; + regulator-boot-on; + }; + + ldo4: LDO4 { /* 40 PIN */ + regulator-name = "ldo4"; + regulator-min-microvolt = <1725000>; + regulator-max-microvolt = <1900000>; + regulator-boot-on; + }; + + ldo9: LDO9 { /* SDCARD I/O */ + regulator-name = "ldo9"; + regulator-min-microvolt = <1750000>; + regulator-max-microvolt = <3300000>; + regulator-boot-on; + }; + + ldo15: LDO15 { /* UFS */ + regulator-name = "ldo15"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3000000>; + regulator-always-on; + }; + + ldo16: LDO16 { /* SD */ + regulator-name = "ldo16"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3000000>; + regulator-boot-on; + }; + + ldo17: LDO17 { /* USB HUB */ + regulator-name = "ldo17"; + regulator-min-microvolt = <2500000>; + regulator-max-microvolt = <3300000>; + }; + + ldo33: LDO33 { /* PEX8606 */ + regulator-name = "ldo33"; + regulator-min-microvolt = <2500000>; + regulator-max-microvolt = <3300000>; + regulator-boot-on; + }; + + ldo34: LDO34 { /* GPS AUX IN VDD */ + regulator-name = "ldo34"; + regulator-min-microvolt = <2600000>; + regulator-max-microvolt = <3300000>; + }; + }; + }; + }; +}; -- 2.31.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v11 8/8] dts: hisilicon: add support for USB3 on Hikey 970 2021-07-02 7:37 [PATCH v11 0/8] Move Hisilicon 6421v600 SPMI and USB drivers out of staging Mauro Carvalho Chehab 2021-07-02 7:37 ` [PATCH v11 6/8] mfd: hi6421-spmi-pmic: move driver from staging Mauro Carvalho Chehab 2021-07-02 7:37 ` [PATCH v11 7/8] dts: hisilicon: add support for the PMIC found on Hikey 970 Mauro Carvalho Chehab @ 2021-07-02 7:37 ` Mauro Carvalho Chehab 2021-07-12 10:45 ` (subset) [PATCH v11 0/8] Move Hisilicon 6421v600 SPMI and USB drivers out of staging Mark Brown 3 siblings, 0 replies; 6+ messages in thread From: Mauro Carvalho Chehab @ 2021-07-02 7:37 UTC (permalink / raw) To: Greg Kroah-Hartman Cc: linuxarm, mauro.chehab, Mauro Carvalho Chehab, Axel Lin, Lee Jones, Rob Herring, Wei Xu, devicetree, linux-arm-kernel, linux-kernel Add the USB3 bindings for Kirin 970 phy and Hikey 970 board. Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> --- .../boot/dts/hisilicon/hi3670-hikey970.dts | 107 ++++++++++++++++++ arch/arm64/boot/dts/hisilicon/hi3670.dtsi | 56 +++++++++ 2 files changed, 163 insertions(+) diff --git a/arch/arm64/boot/dts/hisilicon/hi3670-hikey970.dts b/arch/arm64/boot/dts/hisilicon/hi3670-hikey970.dts index 5e6d7b329771..9e3dfe877ebe 100644 --- a/arch/arm64/boot/dts/hisilicon/hi3670-hikey970.dts +++ b/arch/arm64/boot/dts/hisilicon/hi3670-hikey970.dts @@ -53,6 +53,30 @@ wlan_en: wlan-en-1-8v { startup-delay-us = <70000>; enable-active-high; }; + + hikey_usbhub: hikey_usbhub { + compatible = "hisilicon,kirin970_hikey_usbhub"; + + typec-vbus-gpios = <&gpio26 1 0>; + otg-switch-gpios = <&gpio4 2 0>; + hub_reset_en_gpio = <&gpio0 3 0>; + hub-vdd-supply = <&ldo17>; + usb-role-switch; + + port { + #address-cells = <1>; + #size-cells = <0>; + + hikey_usb_ep0: endpoint@0 { + reg = <0>; + remote-endpoint = <&dwc3_role_switch>; + }; + hikey_usb_ep1: endpoint@1 { + reg = <1>; + remote-endpoint = <&rt1711h_ep>; + }; + }; + }; }; /* @@ -430,3 +454,86 @@ &uart6 { label = "LS-UART1"; status = "okay"; }; + +&usb_phy { + phy-supply = <&ldo17>; +}; + +&i2c1 { + status = "okay"; + + rt1711h: rt1711h@4e { + compatible = "richtek,rt1711h"; + reg = <0x4e>; + status = "okay"; + interrupt-parent = <&gpio27>; + interrupts = <5 IRQ_TYPE_LEVEL_LOW>; + pinctrl-names = "default"; + pinctrl-0 = <&usb_cfg_func>; + + usb_con: connector { + compatible = "usb-c-connector"; + label = "USB-C"; + data-role = "dual"; + power-role = "dual"; + try-power-role = "sink"; + source-pdos = <PDO_FIXED(5000, 500, PDO_FIXED_USB_COMM)>; + sink-pdos = <PDO_FIXED(5000, 500, PDO_FIXED_USB_COMM) + PDO_VAR(5000, 5000, 1000)>; + op-sink-microwatt = <10000000>; + + ports { + #address-cells = <1>; + #size-cells = <0>; + port@1 { + reg = <1>; + usb_con_ss: endpoint { + remote-endpoint = <&dwc3_ss>; + }; + }; + }; + }; + port { + #address-cells = <1>; + #size-cells = <0>; + + rt1711h_ep: endpoint@0 { + reg = <0>; + remote-endpoint = <&hikey_usb_ep1>; + }; + }; + }; +}; + +&i2c2 { + /* USB HUB is on this bus at address 0x44 */ + status = "okay"; +}; + +&dwc3 { /* USB */ + dr_mode = "otg"; + maximum-speed = "super-speed"; + phy_type = "utmi"; + snps,dis-del-phy-power-chg-quirk; + snps,dis_u2_susphy_quirk; + snps,dis_u3_susphy_quirk; + snps,tx_de_emphasis_quirk; + snps,tx_de_emphasis = <1>; + snps,dis-split-quirk; + snps,gctl-reset-quirk; + usb-role-switch; + role-switch-default-mode = "host"; + port { + #address-cells = <1>; + #size-cells = <0>; + dwc3_role_switch: endpoint@0 { + reg = <0>; + remote-endpoint = <&hikey_usb_ep0>; + }; + + dwc3_ss: endpoint@1 { + reg = <1>; + remote-endpoint = <&usb_con_ss>; + }; + }; +}; diff --git a/arch/arm64/boot/dts/hisilicon/hi3670.dtsi b/arch/arm64/boot/dts/hisilicon/hi3670.dtsi index 8830795c8efc..6476149d99e3 100644 --- a/arch/arm64/boot/dts/hisilicon/hi3670.dtsi +++ b/arch/arm64/boot/dts/hisilicon/hi3670.dtsi @@ -8,6 +8,7 @@ #include <dt-bindings/interrupt-controller/arm-gic.h> #include <dt-bindings/clock/hi3670-clock.h> +#include <dt-bindings/usb/pd.h> / { compatible = "hisilicon,hi3670"; @@ -785,5 +786,60 @@ i2c4: i2c@fdf0d000 { pinctrl-0 = <&i2c4_pmx_func &i2c4_cfg_func>; status = "disabled"; }; + + usb3_otg_bc: usb3_otg_bc@ff200000 { + compatible = "syscon", "simple-mfd"; + reg = <0x0 0xff200000 0x0 0x1000>; + + usb_phy: usbphy { + compatible = "hisilicon,hi3670-usb-phy"; + #phy-cells = <0>; + hisilicon,pericrg-syscon = <&crg_ctrl>; + hisilicon,pctrl-syscon = <&pctrl>; + hisilicon,sctrl-syscon = <&sctrl>; + hisilicon,eye-diagram-param = <0xFDFEE4>; + hisilicon,tx-vboost-lvl = <0x5>; + }; + }; + + usb31_misc_rst: usb31_misc_rst_controller { + compatible = "hisilicon,hi3660-reset"; + #reset-cells = <2>; + hisi,rst-syscon = <&usb3_otg_bc>; + }; + + usb3: hisi_dwc3 { + compatible = "hisilicon,hi3670-dwc3"; + #address-cells = <2>; + #size-cells = <2>; + ranges; + + clocks = <&crg_ctrl HI3670_CLK_GATE_ABB_USB>, + <&crg_ctrl HI3670_HCLK_GATE_USB3OTG>, + <&crg_ctrl HI3670_CLK_GATE_USB3OTG_REF>, + <&crg_ctrl HI3670_ACLK_GATE_USB3DVFS>; + clock-names = "clk_gate_abb_usb", + "hclk_gate_usb3otg", + "clk_gate_usb3otg_ref", + "aclk_gate_usb3dvfs"; + + assigned-clocks = <&crg_ctrl HI3670_ACLK_GATE_USB3DVFS>; + assigned-clock-rates = <238000000>; + resets = <&crg_rst 0x90 6>, + <&crg_rst 0x90 7>, + <&usb31_misc_rst 0xA0 8>, + <&usb31_misc_rst 0xA0 9>; + + dwc3: usb@ff100000 { + compatible = "snps,dwc3"; + reg = <0x0 0xff100000 0x0 0x100000>; + + interrupts = <0 159 IRQ_TYPE_LEVEL_HIGH>, + <0 161 IRQ_TYPE_LEVEL_HIGH>; + + phys = <&usb_phy>; + phy-names = "usb3-phy"; + }; + }; }; }; -- 2.31.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: (subset) [PATCH v11 0/8] Move Hisilicon 6421v600 SPMI and USB drivers out of staging 2021-07-02 7:37 [PATCH v11 0/8] Move Hisilicon 6421v600 SPMI and USB drivers out of staging Mauro Carvalho Chehab ` (2 preceding siblings ...) 2021-07-02 7:37 ` [PATCH v11 8/8] dts: hisilicon: add support for USB3 " Mauro Carvalho Chehab @ 2021-07-12 10:45 ` Mark Brown 3 siblings, 0 replies; 6+ messages in thread From: Mark Brown @ 2021-07-12 10:45 UTC (permalink / raw) To: Mauro Carvalho Chehab, Greg Kroah-Hartman Cc: Mark Brown, Rob Herring, Dragan Cvetic, devicetree, linuxarm, linux-arm-kernel, mauro.chehab, linux-kernel, linux-staging, Derek Kiernan, Lee Jones, Axel Lin On Fri, 2 Jul 2021 09:37:15 +0200, Mauro Carvalho Chehab wrote: > As promised, that's the version 11, meant to be applied after -rc1. > > It depends on a regression fix patch merged via the regulator's tree: > > https://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator.git/commit/?h=for-5.14&id=5db5dd5be70eaf808d9fd90174b957fc5c2912cb > > (the dependence is just because of a trivial merge conflict) > > [...] Applied to https://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator.git for-next Thanks! [2/8] regulator: hi6421v600-regulator: add a missing dot at copyright commit: e8608f8956ff4015a206f75631a266d93e84bb2d 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 ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2021-07-12 10:47 UTC | newest] Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-07-02 7:37 [PATCH v11 0/8] Move Hisilicon 6421v600 SPMI and USB drivers out of staging Mauro Carvalho Chehab 2021-07-02 7:37 ` [PATCH v11 6/8] mfd: hi6421-spmi-pmic: move driver from staging Mauro Carvalho Chehab 2021-07-02 21:36 ` Rob Herring 2021-07-02 7:37 ` [PATCH v11 7/8] dts: hisilicon: add support for the PMIC found on Hikey 970 Mauro Carvalho Chehab 2021-07-02 7:37 ` [PATCH v11 8/8] dts: hisilicon: add support for USB3 " Mauro Carvalho Chehab 2021-07-12 10:45 ` (subset) [PATCH v11 0/8] Move Hisilicon 6421v600 SPMI and USB drivers out of staging Mark Brown
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).