Re: [PATCH v11 6/8] mfd: hi6421-spmi-pmic: move driver from staging

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxx>
> ---
>  .../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@xxxxxxxxxx>
> +
> +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@xxxxxxxxxx>
> +L:	linux-kernel@xxxxxxxxxxxxxxx
> +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@xxxxxxxxxx>
>  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, &regmap_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, &regmap_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@xxxxxxxxxx>
> -
> -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
> 
> 



[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux