All of lore.kernel.org
 help / color / mirror / Atom feed
From: ChiYuan Huang <u0084500@gmail.com>
To: Lee Jones <lee.jones@linaro.org>,
	lgirdwood@gmail.com, Mark Brown <broonie@kernel.org>,
	Daniel Thompson <daniel.thompson@linaro.org>,
	jingoohan1@gmail.com, b.zolnierkie@samsung.com
Cc: dri-devel@lists.freedesktop.org, linux-fbdev@vger.kernel.org,
	lkml <linux-kernel@vger.kernel.org>,
	ChiYuan Huang <cy_huang@richtek.com>
Subject: Re: [PATCH v6 1/4] mfd: rt4831: Adds support for Richtek RT4831
Date: Mon, 19 Apr 2021 13:57:48 +0800	[thread overview]
Message-ID: <CADiBU3-d3_L8RTeYCirnfjJdG=ea6UVenAi8O8GO_LvOaB7OdA@mail.gmail.com> (raw)
In-Reply-To: <1616945059-8718-1-git-send-email-u0084500@gmail.com>

Hi, Linux mfd reviewers:
   It's been three weeks not to get any response from you.
Is there something wrong about this mfd patch?
If yes, please feel free to let me know.

cy_huang <u0084500@gmail.com> 於 2021年3月28日 週日 下午11:24寫道:
>
> From: ChiYuan Huang <cy_huang@richtek.com>
>
> This adds support Richtek RT4831 core. It includes four channel WLED driver
> and Display Bias Voltage outputs.
>
> Signed-off-by: ChiYuan Huang <cy_huang@richtek.com>
> ---
> The RT4831 regulator patches are already on main stream, and can be referred to
> 9351ab8b0cb6 regulator: rt4831: Adds support for Richtek RT4831 DSV regulator
> 934b05e81862 regulator: rt4831: Adds DT binding document for Richtek RT4831 DSV regulator
>
> since v6
> - Respin the date from 2020 to 2021.
> - Rmove the shutdown routine.
> - Change the macro OF_MFD_CELL to MFD_CELL_OF.
>
>
> since v5
> - Rename file name from rt4831-core.c to rt4831.c
> - Change RICHTEK_VID to RICHTEK_VENDOR_ID.
> - Change gpio_desc nameing from 'enable' to 'enable_gpio' in probe.
> - Change variable 'val' to the meaningful name 'chip_id'.
> - Refine the error log when vendor id is not matched.
> - Remove of_match_ptr.
>
> since v2
> - Refine Kconfig descriptions.
> - Add copyright.
> - Refine error logs in probe.
> - Refine comment lines in remove and shutdown.
> ---
>  drivers/mfd/Kconfig  |  10 +++++
>  drivers/mfd/Makefile |   1 +
>  drivers/mfd/rt4831.c | 115 +++++++++++++++++++++++++++++++++++++++++++++++++++
>  3 files changed, 126 insertions(+)
>  create mode 100644 drivers/mfd/rt4831.c
>
> diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
> index b74efa4..3f43834 100644
> --- a/drivers/mfd/Kconfig
> +++ b/drivers/mfd/Kconfig
> @@ -1065,6 +1065,16 @@ config MFD_RDC321X
>           southbridge which provides access to GPIOs and Watchdog using the
>           southbridge PCI device configuration space.
>
> +config MFD_RT4831
> +       tristate "Richtek RT4831 four channel WLED and Display Bias Voltage"
> +       depends on I2C
> +       select MFD_CORE
> +       select REGMAP_I2C
> +       help
> +         This enables support for the Richtek RT4831 that includes 4 channel
> +         WLED driving and Display Bias Voltage. It's commonly used to provide
> +         power to the LCD display and LCD backlight.
> +
>  config MFD_RT5033
>         tristate "Richtek RT5033 Power Management IC"
>         depends on I2C
> diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile
> index 834f546..5986914 100644
> --- a/drivers/mfd/Makefile
> +++ b/drivers/mfd/Makefile
> @@ -235,6 +235,7 @@ obj-$(CONFIG_MFD_MENF21BMC) += menf21bmc.o
>  obj-$(CONFIG_MFD_HI6421_PMIC)  += hi6421-pmic-core.o
>  obj-$(CONFIG_MFD_HI655X_PMIC)   += hi655x-pmic.o
>  obj-$(CONFIG_MFD_DLN2)         += dln2.o
> +obj-$(CONFIG_MFD_RT4831)       += rt4831.o
>  obj-$(CONFIG_MFD_RT5033)       += rt5033.o
>  obj-$(CONFIG_MFD_SKY81452)     += sky81452.o
>
> diff --git a/drivers/mfd/rt4831.c b/drivers/mfd/rt4831.c
> new file mode 100644
> index 00000000..b169781
> --- /dev/null
> +++ b/drivers/mfd/rt4831.c
> @@ -0,0 +1,115 @@
> +// SPDX-License-Identifier: GPL-2.0+
> +/*
> + * Copyright (c) 2021 Richtek Technology Corp.
> + *
> + * Author: ChiYuan Huang <cy_huang@richtek.com>
> + */
> +
> +#include <linux/gpio/consumer.h>
> +#include <linux/i2c.h>
> +#include <linux/kernel.h>
> +#include <linux/mfd/core.h>
> +#include <linux/module.h>
> +#include <linux/regmap.h>
> +
> +#define RT4831_REG_REVISION    0x01
> +#define RT4831_REG_ENABLE      0x08
> +#define RT4831_REG_I2CPROT     0x15
> +
> +#define RICHTEK_VENDOR_ID      0x03
> +#define RT4831_VID_MASK                GENMASK(1, 0)
> +#define RT4831_RESET_MASK      BIT(7)
> +#define RT4831_I2CSAFETMR_MASK BIT(0)
> +
> +static const struct mfd_cell rt4831_subdevs[] = {
> +       MFD_CELL_OF("rt4831-backlight", NULL, NULL, 0, 0, "richtek,rt4831-backlight"),
> +       MFD_CELL_NAME("rt4831-regulator")
> +};
> +
> +static bool rt4831_is_accessible_reg(struct device *dev, unsigned int reg)
> +{
> +       if (reg >= RT4831_REG_REVISION && reg <= RT4831_REG_I2CPROT)
> +               return true;
> +       return false;
> +}
> +
> +static const struct regmap_config rt4831_regmap_config = {
> +       .reg_bits = 8,
> +       .val_bits = 8,
> +       .max_register = RT4831_REG_I2CPROT,
> +
> +       .readable_reg = rt4831_is_accessible_reg,
> +       .writeable_reg = rt4831_is_accessible_reg,
> +};
> +
> +static int rt4831_probe(struct i2c_client *client)
> +{
> +       struct gpio_desc *enable_gpio;
> +       struct regmap *regmap;
> +       unsigned int chip_id;
> +       int ret;
> +
> +       enable_gpio = devm_gpiod_get_optional(&client->dev, "enable", GPIOD_OUT_HIGH);
> +       if (IS_ERR(enable_gpio)) {
> +               dev_err(&client->dev, "Failed to get 'enable' GPIO\n");
> +               return PTR_ERR(enable_gpio);
> +       }
> +
> +       regmap = devm_regmap_init_i2c(client, &rt4831_regmap_config);
> +       if (IS_ERR(regmap)) {
> +               dev_err(&client->dev, "Failed to initialize regmap\n");
> +               return PTR_ERR(regmap);
> +       }
> +
> +       ret = regmap_read(regmap, RT4831_REG_REVISION, &chip_id);
> +       if (ret) {
> +               dev_err(&client->dev, "Failed to get H/W revision\n");
> +               return ret;
> +       }
> +
> +       if ((chip_id & RT4831_VID_MASK) != RICHTEK_VENDOR_ID) {
> +               dev_err(&client->dev, "Chip vendor ID 0x%02x not matched\n", chip_id);
> +               return -ENODEV;
> +       }
> +
> +       /*
> +        * Used to prevent the abnormal shutdown.
> +        * If SCL/SDA both keep low for one second to reset HW.
> +        */
> +       ret = regmap_update_bits(regmap, RT4831_REG_I2CPROT, RT4831_I2CSAFETMR_MASK,
> +                                RT4831_I2CSAFETMR_MASK);
> +       if (ret) {
> +               dev_err(&client->dev, "Failed to enable I2C safety timer\n");
> +               return ret;
> +       }
> +
> +       return devm_mfd_add_devices(&client->dev, PLATFORM_DEVID_AUTO, rt4831_subdevs,
> +                                   ARRAY_SIZE(rt4831_subdevs), NULL, 0, NULL);
> +}
> +
> +static int rt4831_remove(struct i2c_client *client)
> +{
> +       struct regmap *regmap = dev_get_regmap(&client->dev, NULL);
> +
> +       /* Disable WLED and DSV outputs */
> +       return regmap_update_bits(regmap, RT4831_REG_ENABLE, RT4831_RESET_MASK, RT4831_RESET_MASK);
> +}
> +
> +static const struct of_device_id __maybe_unused rt4831_of_match[] = {
> +       { .compatible = "richtek,rt4831", },
> +       {}
> +};
> +MODULE_DEVICE_TABLE(of, rt4831_of_match);
> +
> +static struct i2c_driver rt4831_driver = {
> +       .driver = {
> +               .name = "rt4831",
> +               .of_match_table = rt4831_of_match,
> +       },
> +       .probe_new = rt4831_probe,
> +       .remove = rt4831_remove,
> +};
> +module_i2c_driver(rt4831_driver);
> +
> +MODULE_AUTHOR("ChiYuan Huang <cy_huang@richtek.com>");
> +MODULE_LICENSE("GPL v2");
> --
> 2.7.4
>

WARNING: multiple messages have this Message-ID (diff)
From: ChiYuan Huang <u0084500@gmail.com>
To: Lee Jones <lee.jones@linaro.org>,
	lgirdwood@gmail.com,  Mark Brown <broonie@kernel.org>,
	Daniel Thompson <daniel.thompson@linaro.org>,
	jingoohan1@gmail.com, b.zolnierkie@samsung.com
Cc: ChiYuan Huang <cy_huang@richtek.com>,
	linux-fbdev@vger.kernel.org, lkml <linux-kernel@vger.kernel.org>,
	dri-devel@lists.freedesktop.org
Subject: Re: [PATCH v6 1/4] mfd: rt4831: Adds support for Richtek RT4831
Date: Mon, 19 Apr 2021 13:57:48 +0800	[thread overview]
Message-ID: <CADiBU3-d3_L8RTeYCirnfjJdG=ea6UVenAi8O8GO_LvOaB7OdA@mail.gmail.com> (raw)
In-Reply-To: <1616945059-8718-1-git-send-email-u0084500@gmail.com>

Hi, Linux mfd reviewers:
   It's been three weeks not to get any response from you.
Is there something wrong about this mfd patch?
If yes, please feel free to let me know.

cy_huang <u0084500@gmail.com> 於 2021年3月28日 週日 下午11:24寫道:
>
> From: ChiYuan Huang <cy_huang@richtek.com>
>
> This adds support Richtek RT4831 core. It includes four channel WLED driver
> and Display Bias Voltage outputs.
>
> Signed-off-by: ChiYuan Huang <cy_huang@richtek.com>
> ---
> The RT4831 regulator patches are already on main stream, and can be referred to
> 9351ab8b0cb6 regulator: rt4831: Adds support for Richtek RT4831 DSV regulator
> 934b05e81862 regulator: rt4831: Adds DT binding document for Richtek RT4831 DSV regulator
>
> since v6
> - Respin the date from 2020 to 2021.
> - Rmove the shutdown routine.
> - Change the macro OF_MFD_CELL to MFD_CELL_OF.
>
>
> since v5
> - Rename file name from rt4831-core.c to rt4831.c
> - Change RICHTEK_VID to RICHTEK_VENDOR_ID.
> - Change gpio_desc nameing from 'enable' to 'enable_gpio' in probe.
> - Change variable 'val' to the meaningful name 'chip_id'.
> - Refine the error log when vendor id is not matched.
> - Remove of_match_ptr.
>
> since v2
> - Refine Kconfig descriptions.
> - Add copyright.
> - Refine error logs in probe.
> - Refine comment lines in remove and shutdown.
> ---
>  drivers/mfd/Kconfig  |  10 +++++
>  drivers/mfd/Makefile |   1 +
>  drivers/mfd/rt4831.c | 115 +++++++++++++++++++++++++++++++++++++++++++++++++++
>  3 files changed, 126 insertions(+)
>  create mode 100644 drivers/mfd/rt4831.c
>
> diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
> index b74efa4..3f43834 100644
> --- a/drivers/mfd/Kconfig
> +++ b/drivers/mfd/Kconfig
> @@ -1065,6 +1065,16 @@ config MFD_RDC321X
>           southbridge which provides access to GPIOs and Watchdog using the
>           southbridge PCI device configuration space.
>
> +config MFD_RT4831
> +       tristate "Richtek RT4831 four channel WLED and Display Bias Voltage"
> +       depends on I2C
> +       select MFD_CORE
> +       select REGMAP_I2C
> +       help
> +         This enables support for the Richtek RT4831 that includes 4 channel
> +         WLED driving and Display Bias Voltage. It's commonly used to provide
> +         power to the LCD display and LCD backlight.
> +
>  config MFD_RT5033
>         tristate "Richtek RT5033 Power Management IC"
>         depends on I2C
> diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile
> index 834f546..5986914 100644
> --- a/drivers/mfd/Makefile
> +++ b/drivers/mfd/Makefile
> @@ -235,6 +235,7 @@ obj-$(CONFIG_MFD_MENF21BMC) += menf21bmc.o
>  obj-$(CONFIG_MFD_HI6421_PMIC)  += hi6421-pmic-core.o
>  obj-$(CONFIG_MFD_HI655X_PMIC)   += hi655x-pmic.o
>  obj-$(CONFIG_MFD_DLN2)         += dln2.o
> +obj-$(CONFIG_MFD_RT4831)       += rt4831.o
>  obj-$(CONFIG_MFD_RT5033)       += rt5033.o
>  obj-$(CONFIG_MFD_SKY81452)     += sky81452.o
>
> diff --git a/drivers/mfd/rt4831.c b/drivers/mfd/rt4831.c
> new file mode 100644
> index 00000000..b169781
> --- /dev/null
> +++ b/drivers/mfd/rt4831.c
> @@ -0,0 +1,115 @@
> +// SPDX-License-Identifier: GPL-2.0+
> +/*
> + * Copyright (c) 2021 Richtek Technology Corp.
> + *
> + * Author: ChiYuan Huang <cy_huang@richtek.com>
> + */
> +
> +#include <linux/gpio/consumer.h>
> +#include <linux/i2c.h>
> +#include <linux/kernel.h>
> +#include <linux/mfd/core.h>
> +#include <linux/module.h>
> +#include <linux/regmap.h>
> +
> +#define RT4831_REG_REVISION    0x01
> +#define RT4831_REG_ENABLE      0x08
> +#define RT4831_REG_I2CPROT     0x15
> +
> +#define RICHTEK_VENDOR_ID      0x03
> +#define RT4831_VID_MASK                GENMASK(1, 0)
> +#define RT4831_RESET_MASK      BIT(7)
> +#define RT4831_I2CSAFETMR_MASK BIT(0)
> +
> +static const struct mfd_cell rt4831_subdevs[] = {
> +       MFD_CELL_OF("rt4831-backlight", NULL, NULL, 0, 0, "richtek,rt4831-backlight"),
> +       MFD_CELL_NAME("rt4831-regulator")
> +};
> +
> +static bool rt4831_is_accessible_reg(struct device *dev, unsigned int reg)
> +{
> +       if (reg >= RT4831_REG_REVISION && reg <= RT4831_REG_I2CPROT)
> +               return true;
> +       return false;
> +}
> +
> +static const struct regmap_config rt4831_regmap_config = {
> +       .reg_bits = 8,
> +       .val_bits = 8,
> +       .max_register = RT4831_REG_I2CPROT,
> +
> +       .readable_reg = rt4831_is_accessible_reg,
> +       .writeable_reg = rt4831_is_accessible_reg,
> +};
> +
> +static int rt4831_probe(struct i2c_client *client)
> +{
> +       struct gpio_desc *enable_gpio;
> +       struct regmap *regmap;
> +       unsigned int chip_id;
> +       int ret;
> +
> +       enable_gpio = devm_gpiod_get_optional(&client->dev, "enable", GPIOD_OUT_HIGH);
> +       if (IS_ERR(enable_gpio)) {
> +               dev_err(&client->dev, "Failed to get 'enable' GPIO\n");
> +               return PTR_ERR(enable_gpio);
> +       }
> +
> +       regmap = devm_regmap_init_i2c(client, &rt4831_regmap_config);
> +       if (IS_ERR(regmap)) {
> +               dev_err(&client->dev, "Failed to initialize regmap\n");
> +               return PTR_ERR(regmap);
> +       }
> +
> +       ret = regmap_read(regmap, RT4831_REG_REVISION, &chip_id);
> +       if (ret) {
> +               dev_err(&client->dev, "Failed to get H/W revision\n");
> +               return ret;
> +       }
> +
> +       if ((chip_id & RT4831_VID_MASK) != RICHTEK_VENDOR_ID) {
> +               dev_err(&client->dev, "Chip vendor ID 0x%02x not matched\n", chip_id);
> +               return -ENODEV;
> +       }
> +
> +       /*
> +        * Used to prevent the abnormal shutdown.
> +        * If SCL/SDA both keep low for one second to reset HW.
> +        */
> +       ret = regmap_update_bits(regmap, RT4831_REG_I2CPROT, RT4831_I2CSAFETMR_MASK,
> +                                RT4831_I2CSAFETMR_MASK);
> +       if (ret) {
> +               dev_err(&client->dev, "Failed to enable I2C safety timer\n");
> +               return ret;
> +       }
> +
> +       return devm_mfd_add_devices(&client->dev, PLATFORM_DEVID_AUTO, rt4831_subdevs,
> +                                   ARRAY_SIZE(rt4831_subdevs), NULL, 0, NULL);
> +}
> +
> +static int rt4831_remove(struct i2c_client *client)
> +{
> +       struct regmap *regmap = dev_get_regmap(&client->dev, NULL);
> +
> +       /* Disable WLED and DSV outputs */
> +       return regmap_update_bits(regmap, RT4831_REG_ENABLE, RT4831_RESET_MASK, RT4831_RESET_MASK);
> +}
> +
> +static const struct of_device_id __maybe_unused rt4831_of_match[] = {
> +       { .compatible = "richtek,rt4831", },
> +       {}
> +};
> +MODULE_DEVICE_TABLE(of, rt4831_of_match);
> +
> +static struct i2c_driver rt4831_driver = {
> +       .driver = {
> +               .name = "rt4831",
> +               .of_match_table = rt4831_of_match,
> +       },
> +       .probe_new = rt4831_probe,
> +       .remove = rt4831_remove,
> +};
> +module_i2c_driver(rt4831_driver);
> +
> +MODULE_AUTHOR("ChiYuan Huang <cy_huang@richtek.com>");
> +MODULE_LICENSE("GPL v2");
> --
> 2.7.4
>
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

  parent reply	other threads:[~2021-04-19  5:58 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-28 15:24 [PATCH v6 1/4] mfd: rt4831: Adds support for Richtek RT4831 cy_huang
2021-03-28 15:24 ` cy_huang
2021-03-28 15:24 ` [PATCH v6 2/4] backlight: rt4831: Adds DT binding document for Richtek RT4831 backlight cy_huang
2021-03-28 15:24   ` cy_huang
2021-03-29 10:28   ` Daniel Thompson
2021-03-29 10:28     ` Daniel Thompson
2021-03-28 15:24 ` [PATCH v6 3/4] mfd: rt4831: Adds DT binding document for Richtek RT4831 cy_huang
2021-03-28 15:24   ` cy_huang
2021-03-28 15:24 ` [PATCH v6 4/4] backlight: rt4831: Adds support for Richtek RT4831 backlight cy_huang
2021-03-28 15:24   ` cy_huang
2021-03-29 10:26   ` Daniel Thompson
2021-03-29 10:26     ` Daniel Thompson
2021-03-29 13:46     ` ChiYuan Huang
2021-03-29 13:46       ` ChiYuan Huang
2021-04-19  5:57 ` ChiYuan Huang [this message]
2021-04-19  5:57   ` [PATCH v6 1/4] mfd: rt4831: Adds support for Richtek RT4831 ChiYuan Huang
2021-04-19  7:22   ` Lee Jones
2021-04-19  7:22     ` Lee Jones
2021-04-19  7:23     ` Lee Jones
2021-04-19  7:23       ` Lee Jones
2021-04-19  7:24       ` Lee Jones
2021-04-19  7:24         ` Lee Jones
2021-04-19  9:55         ` ChiYuan Huang
2021-04-19  9:55           ` ChiYuan Huang
2021-04-23  0:58           ` ChiYuan Huang
2021-04-23  0:58             ` ChiYuan Huang
2021-04-23  8:27             ` Lee Jones
2021-04-23  8:27               ` Lee Jones

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CADiBU3-d3_L8RTeYCirnfjJdG=ea6UVenAi8O8GO_LvOaB7OdA@mail.gmail.com' \
    --to=u0084500@gmail.com \
    --cc=b.zolnierkie@samsung.com \
    --cc=broonie@kernel.org \
    --cc=cy_huang@richtek.com \
    --cc=daniel.thompson@linaro.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=jingoohan1@gmail.com \
    --cc=lee.jones@linaro.org \
    --cc=lgirdwood@gmail.com \
    --cc=linux-fbdev@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.