From: Lee Jones <lee@kernel.org>
To: Junhao Xie <bigfoot@classfun.cn>
Cc: devicetree@vger.kernel.org, linux-hwmon@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-leds@vger.kernel.org,
linux-pm@vger.kernel.org, linux-rtc@vger.kernel.org,
linux-watchdog@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-rockchip@lists.infradead.org,
Jean Delvare <jdelvare@suse.com>,
Guenter Roeck <linux@roeck-us.net>, Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>, Pavel Machek <pavel@ucw.cz>,
Sebastian Reichel <sre@kernel.org>,
Alexandre Belloni <alexandre.belloni@bootlin.com>,
Wim Van Sebroeck <wim@linux-watchdog.org>,
Heiko Stuebner <heiko@sntech.de>, Chukun Pan <amadeus@jmu.edu.cn>
Subject: Re: [PATCH 7/9] leds: add Photonicat PMU LED driver
Date: Wed, 2 Oct 2024 16:35:36 +0100 [thread overview]
Message-ID: <20241002153536.GG7504@google.com> (raw)
In-Reply-To: <20240906093630.2428329-8-bigfoot@classfun.cn>
On Fri, 06 Sep 2024, Junhao Xie wrote:
> Photonicat has a network status LED that can be controlled by system.
> The LED status can be set through command 0x19.
>
> Signed-off-by: Junhao Xie <bigfoot@classfun.cn>
> ---
> drivers/leds/Kconfig | 11 +++++
> drivers/leds/Makefile | 1 +
> drivers/leds/leds-photonicat.c | 75 ++++++++++++++++++++++++++++++++++
> 3 files changed, 87 insertions(+)
> create mode 100644 drivers/leds/leds-photonicat.c
>
> diff --git a/drivers/leds/Kconfig b/drivers/leds/Kconfig
> index 8d9d8da376e4..539adb5944e6 100644
> --- a/drivers/leds/Kconfig
> +++ b/drivers/leds/Kconfig
> @@ -381,6 +381,17 @@ config LEDS_PCA9532_GPIO
> To use a pin as gpio pca9532_type in pca9532_platform data needs to
> set to PCA9532_TYPE_GPIO.
>
> +config LEDS_PHOTONICAT_PMU
> + tristate "LED Support for Photonicat PMU"
> + depends on LEDS_CLASS
> + depends on MFD_PHOTONICAT_PMU
> + help
> + Photonicat has a network status LED that can be controlled by system,
"the system"
> + this option enables support for LEDs connected to the Photonicat PMU.
> +
> + To compile this driver as a module, choose M here: the
> + module will be called leds-photonicat.
> +
> config LEDS_GPIO
> tristate "LED Support for GPIO connected LEDs"
> depends on LEDS_CLASS
> diff --git a/drivers/leds/Makefile b/drivers/leds/Makefile
> index 18afbb5a23ee..dcd5312aee12 100644
> --- a/drivers/leds/Makefile
> +++ b/drivers/leds/Makefile
> @@ -76,6 +76,7 @@ obj-$(CONFIG_LEDS_PCA9532) += leds-pca9532.o
> obj-$(CONFIG_LEDS_PCA955X) += leds-pca955x.o
> obj-$(CONFIG_LEDS_PCA963X) += leds-pca963x.o
> obj-$(CONFIG_LEDS_PCA995X) += leds-pca995x.o
> +obj-$(CONFIG_LEDS_PHOTONICAT_PMU) += leds-photonicat.o
> obj-$(CONFIG_LEDS_PM8058) += leds-pm8058.o
> obj-$(CONFIG_LEDS_POWERNV) += leds-powernv.o
> obj-$(CONFIG_LEDS_PWM) += leds-pwm.o
> diff --git a/drivers/leds/leds-photonicat.c b/drivers/leds/leds-photonicat.c
> new file mode 100644
> index 000000000000..3aa5ce525b83
> --- /dev/null
> +++ b/drivers/leds/leds-photonicat.c
> @@ -0,0 +1,75 @@
> +// SPDX-License-Identifier: GPL-2.0-only
> +/*
> + * Copyright (c) 2024 Junhao Xie <bigfoot@classfun.cn>
> + */
> +
> +#include <linux/mfd/photonicat-pmu.h>
> +#include <linux/module.h>
> +#include <linux/of.h>
> +#include <linux/platform_device.h>
> +#include <linux/leds.h>
Alphabetical.
> +struct pcat_leds {
> + struct device *dev;
Where is this used?
> + struct pcat_pmu *pmu;
Why do you need to store this?
Can't you get this at the call-site by:
dev_get_drvdata(cdev->dev->parent)
> + struct led_classdev cdev;
> +};
> +
> +static int pcat_led_status_set(struct led_classdev *cdev,
> + enum led_brightness brightness)
> +{
> + struct pcat_leds *leds = container_of(cdev, struct pcat_leds, cdev);
> + struct pcat_data_cmd_led_setup setup = { 0, 0, 0 };
> +
> + if (brightness)
> + setup.on_time = 100;
> + else
> + setup.down_time = 100;
> + return pcat_pmu_write_data(leds->pmu, PCAT_CMD_NET_STATUS_LED_SETUP,
> + &setup, sizeof(setup));
> +}
> +
> +static int pcat_leds_probe(struct platform_device *pdev)
> +{
> + int ret;
Small sized variables at the bottom please.
> + struct device *dev = &pdev->dev;
> + struct pcat_leds *leds;
> + const char *label;
> +
> + leds = devm_kzalloc(dev, sizeof(*leds), GFP_KERNEL);
> + if (!leds)
> + return -ENOMEM;
> +
> + leds->dev = dev;
Where is this used?
> + leds->pmu = dev_get_drvdata(dev->parent);
> + platform_set_drvdata(pdev, leds);
Where do you platform_get_drvdata()
> + ret = of_property_read_string(dev->of_node, "label", &label);
> + if (ret)
> + return dev_err_probe(dev, ret, "No label property\n");
> +
> + leds->cdev.name = label;
> + leds->cdev.max_brightness = 1;
> + leds->cdev.brightness_set_blocking = pcat_led_status_set;
> +
> + return devm_led_classdev_register(dev, &leds->cdev);
> +}
> +
> +static const struct of_device_id pcat_leds_dt_ids[] = {
> + { .compatible = "ariaboard,photonicat-pmu-leds", },
How many LEDs are there?
> + { /* sentinel */ }
> +};
> +MODULE_DEVICE_TABLE(of, pcat_leds_dt_ids);
> +
> +static struct platform_driver pcat_leds_driver = {
> + .driver = {
> + .name = "photonicat-leds",
> + .of_match_table = pcat_leds_dt_ids,
> + },
> + .probe = pcat_leds_probe,
> +};
> +module_platform_driver(pcat_leds_driver);
> +
> +MODULE_AUTHOR("Junhao Xie <bigfoot@classfun.cn>");
> +MODULE_DESCRIPTION("Photonicat PMU Status LEDs");
> +MODULE_LICENSE("GPL");
> --
> 2.46.0
>
--
0)
Lee Jones [李琼斯]
WARNING: multiple messages have this Message-ID (diff)
From: Lee Jones <lee@kernel.org>
To: Junhao Xie <bigfoot@classfun.cn>
Cc: devicetree@vger.kernel.org, linux-hwmon@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-leds@vger.kernel.org,
linux-pm@vger.kernel.org, linux-rtc@vger.kernel.org,
linux-watchdog@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-rockchip@lists.infradead.org,
Jean Delvare <jdelvare@suse.com>,
Guenter Roeck <linux@roeck-us.net>, Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>, Pavel Machek <pavel@ucw.cz>,
Sebastian Reichel <sre@kernel.org>,
Alexandre Belloni <alexandre.belloni@bootlin.com>,
Wim Van Sebroeck <wim@linux-watchdog.org>,
Heiko Stuebner <heiko@sntech.de>, Chukun Pan <amadeus@jmu.edu.cn>
Subject: Re: [PATCH 7/9] leds: add Photonicat PMU LED driver
Date: Wed, 2 Oct 2024 16:35:36 +0100 [thread overview]
Message-ID: <20241002153536.GG7504@google.com> (raw)
In-Reply-To: <20240906093630.2428329-8-bigfoot@classfun.cn>
On Fri, 06 Sep 2024, Junhao Xie wrote:
> Photonicat has a network status LED that can be controlled by system.
> The LED status can be set through command 0x19.
>
> Signed-off-by: Junhao Xie <bigfoot@classfun.cn>
> ---
> drivers/leds/Kconfig | 11 +++++
> drivers/leds/Makefile | 1 +
> drivers/leds/leds-photonicat.c | 75 ++++++++++++++++++++++++++++++++++
> 3 files changed, 87 insertions(+)
> create mode 100644 drivers/leds/leds-photonicat.c
>
> diff --git a/drivers/leds/Kconfig b/drivers/leds/Kconfig
> index 8d9d8da376e4..539adb5944e6 100644
> --- a/drivers/leds/Kconfig
> +++ b/drivers/leds/Kconfig
> @@ -381,6 +381,17 @@ config LEDS_PCA9532_GPIO
> To use a pin as gpio pca9532_type in pca9532_platform data needs to
> set to PCA9532_TYPE_GPIO.
>
> +config LEDS_PHOTONICAT_PMU
> + tristate "LED Support for Photonicat PMU"
> + depends on LEDS_CLASS
> + depends on MFD_PHOTONICAT_PMU
> + help
> + Photonicat has a network status LED that can be controlled by system,
"the system"
> + this option enables support for LEDs connected to the Photonicat PMU.
> +
> + To compile this driver as a module, choose M here: the
> + module will be called leds-photonicat.
> +
> config LEDS_GPIO
> tristate "LED Support for GPIO connected LEDs"
> depends on LEDS_CLASS
> diff --git a/drivers/leds/Makefile b/drivers/leds/Makefile
> index 18afbb5a23ee..dcd5312aee12 100644
> --- a/drivers/leds/Makefile
> +++ b/drivers/leds/Makefile
> @@ -76,6 +76,7 @@ obj-$(CONFIG_LEDS_PCA9532) += leds-pca9532.o
> obj-$(CONFIG_LEDS_PCA955X) += leds-pca955x.o
> obj-$(CONFIG_LEDS_PCA963X) += leds-pca963x.o
> obj-$(CONFIG_LEDS_PCA995X) += leds-pca995x.o
> +obj-$(CONFIG_LEDS_PHOTONICAT_PMU) += leds-photonicat.o
> obj-$(CONFIG_LEDS_PM8058) += leds-pm8058.o
> obj-$(CONFIG_LEDS_POWERNV) += leds-powernv.o
> obj-$(CONFIG_LEDS_PWM) += leds-pwm.o
> diff --git a/drivers/leds/leds-photonicat.c b/drivers/leds/leds-photonicat.c
> new file mode 100644
> index 000000000000..3aa5ce525b83
> --- /dev/null
> +++ b/drivers/leds/leds-photonicat.c
> @@ -0,0 +1,75 @@
> +// SPDX-License-Identifier: GPL-2.0-only
> +/*
> + * Copyright (c) 2024 Junhao Xie <bigfoot@classfun.cn>
> + */
> +
> +#include <linux/mfd/photonicat-pmu.h>
> +#include <linux/module.h>
> +#include <linux/of.h>
> +#include <linux/platform_device.h>
> +#include <linux/leds.h>
Alphabetical.
> +struct pcat_leds {
> + struct device *dev;
Where is this used?
> + struct pcat_pmu *pmu;
Why do you need to store this?
Can't you get this at the call-site by:
dev_get_drvdata(cdev->dev->parent)
> + struct led_classdev cdev;
> +};
> +
> +static int pcat_led_status_set(struct led_classdev *cdev,
> + enum led_brightness brightness)
> +{
> + struct pcat_leds *leds = container_of(cdev, struct pcat_leds, cdev);
> + struct pcat_data_cmd_led_setup setup = { 0, 0, 0 };
> +
> + if (brightness)
> + setup.on_time = 100;
> + else
> + setup.down_time = 100;
> + return pcat_pmu_write_data(leds->pmu, PCAT_CMD_NET_STATUS_LED_SETUP,
> + &setup, sizeof(setup));
> +}
> +
> +static int pcat_leds_probe(struct platform_device *pdev)
> +{
> + int ret;
Small sized variables at the bottom please.
> + struct device *dev = &pdev->dev;
> + struct pcat_leds *leds;
> + const char *label;
> +
> + leds = devm_kzalloc(dev, sizeof(*leds), GFP_KERNEL);
> + if (!leds)
> + return -ENOMEM;
> +
> + leds->dev = dev;
Where is this used?
> + leds->pmu = dev_get_drvdata(dev->parent);
> + platform_set_drvdata(pdev, leds);
Where do you platform_get_drvdata()
> + ret = of_property_read_string(dev->of_node, "label", &label);
> + if (ret)
> + return dev_err_probe(dev, ret, "No label property\n");
> +
> + leds->cdev.name = label;
> + leds->cdev.max_brightness = 1;
> + leds->cdev.brightness_set_blocking = pcat_led_status_set;
> +
> + return devm_led_classdev_register(dev, &leds->cdev);
> +}
> +
> +static const struct of_device_id pcat_leds_dt_ids[] = {
> + { .compatible = "ariaboard,photonicat-pmu-leds", },
How many LEDs are there?
> + { /* sentinel */ }
> +};
> +MODULE_DEVICE_TABLE(of, pcat_leds_dt_ids);
> +
> +static struct platform_driver pcat_leds_driver = {
> + .driver = {
> + .name = "photonicat-leds",
> + .of_match_table = pcat_leds_dt_ids,
> + },
> + .probe = pcat_leds_probe,
> +};
> +module_platform_driver(pcat_leds_driver);
> +
> +MODULE_AUTHOR("Junhao Xie <bigfoot@classfun.cn>");
> +MODULE_DESCRIPTION("Photonicat PMU Status LEDs");
> +MODULE_LICENSE("GPL");
> --
> 2.46.0
>
--
0)
Lee Jones [李琼斯]
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
next prev parent reply other threads:[~2024-10-02 15:35 UTC|newest]
Thread overview: 72+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-06 9:36 [PATCH 0/9] Introduce Photonicat power management MCU driver Junhao Xie
2024-09-06 9:36 ` Junhao Xie
2024-09-06 9:36 ` [PATCH 1/9] mfd: Add driver for Photonicat power management MCU Junhao Xie
2024-09-06 9:36 ` Junhao Xie
2024-09-06 9:43 ` Krzysztof Kozlowski
2024-09-06 9:43 ` Krzysztof Kozlowski
2024-09-06 10:40 ` Junhao Xie
2024-09-06 10:40 ` Junhao Xie
2024-09-07 8:10 ` Markus Elfring
2024-09-07 8:10 ` Markus Elfring
2024-09-07 14:46 ` Junhao Xie
2024-09-07 14:46 ` Junhao Xie
2024-09-07 8:44 ` Markus Elfring
2024-09-07 8:44 ` Markus Elfring
2024-09-07 14:33 ` Junhao Xie
2024-09-07 14:33 ` Junhao Xie
2024-09-08 8:14 ` Krzysztof Kozlowski
2024-09-08 8:14 ` Krzysztof Kozlowski
2024-09-12 7:55 ` Lee Jones
2024-09-12 7:55 ` Lee Jones
2024-09-06 9:36 ` [PATCH 2/9] power: reset: add Photonicat PMU poweroff driver Junhao Xie
2024-09-06 9:36 ` Junhao Xie
2024-09-06 9:44 ` Krzysztof Kozlowski
2024-09-06 9:44 ` Krzysztof Kozlowski
2024-09-06 10:05 ` Junhao Xie
2024-09-06 10:05 ` Junhao Xie
2024-09-06 9:36 ` [PATCH 3/9] watchdog: Add Photonicat PMU watchdog driver Junhao Xie
2024-09-06 9:36 ` Junhao Xie
2024-09-06 11:52 ` Guenter Roeck
2024-09-06 11:52 ` Guenter Roeck
2024-09-06 13:41 ` Junhao Xie
2024-09-06 13:41 ` Junhao Xie
2024-09-06 9:36 ` [PATCH 4/9] power: supply: photonicat-supply: Add Photonicat PMU battery and charger Junhao Xie
2024-09-06 9:36 ` Junhao Xie
2024-09-06 9:36 ` [PATCH 5/9] rtc: Add Photonicat PMU real-time clock Junhao Xie
2024-09-06 9:36 ` Junhao Xie
2024-09-06 9:36 ` [PATCH 6/9] hwmon: Add support for Photonicat PMU board temperature sensor Junhao Xie
2024-09-06 9:36 ` Junhao Xie
2024-09-06 11:41 ` Guenter Roeck
2024-09-06 11:41 ` Guenter Roeck
2024-09-06 13:49 ` Junhao Xie
2024-09-06 13:49 ` Junhao Xie
2024-09-06 14:33 ` Guenter Roeck
2024-09-06 14:33 ` Guenter Roeck
2024-09-06 9:36 ` [PATCH 7/9] leds: add Photonicat PMU LED driver Junhao Xie
2024-09-06 9:36 ` Junhao Xie
2024-10-02 15:35 ` Lee Jones [this message]
2024-10-02 15:35 ` Lee Jones
2024-11-08 3:48 ` Junhao Xie
2024-11-08 3:48 ` Junhao Xie
2024-09-06 9:36 ` [PATCH 8/9] dt-bindings: Add documentation for Photonicat PMU Junhao Xie
2024-09-06 9:36 ` Junhao Xie
2024-09-06 9:51 ` Krzysztof Kozlowski
2024-09-06 9:51 ` Krzysztof Kozlowski
2024-09-07 14:27 ` Junhao Xie
2024-09-07 14:27 ` Junhao Xie
2024-09-08 8:13 ` Krzysztof Kozlowski
2024-09-08 8:13 ` Krzysztof Kozlowski
2024-09-06 9:36 ` [PATCH 9/9] arm64: dts: rockchip: add Photonicat PMU support for Ariaboard Photonicat Junhao Xie
2024-09-06 9:36 ` Junhao Xie
2024-09-06 9:53 ` Krzysztof Kozlowski
2024-09-06 9:53 ` Krzysztof Kozlowski
2024-09-06 13:56 ` Junhao Xie
2024-09-06 13:56 ` Junhao Xie
2024-09-06 9:45 ` [PATCH 0/9] Introduce Photonicat power management MCU driver Krzysztof Kozlowski
2024-09-06 9:45 ` Krzysztof Kozlowski
2024-09-06 10:20 ` Junhao Xie
2024-09-06 10:20 ` Junhao Xie
2024-09-08 9:30 ` Chukun Pan
2024-09-08 9:30 ` Chukun Pan
2024-09-11 6:23 ` Junhao Xie
2024-09-11 6:23 ` Junhao Xie
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=20241002153536.GG7504@google.com \
--to=lee@kernel.org \
--cc=alexandre.belloni@bootlin.com \
--cc=amadeus@jmu.edu.cn \
--cc=bigfoot@classfun.cn \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=heiko@sntech.de \
--cc=jdelvare@suse.com \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-hwmon@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-leds@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=linux-rockchip@lists.infradead.org \
--cc=linux-rtc@vger.kernel.org \
--cc=linux-watchdog@vger.kernel.org \
--cc=linux@roeck-us.net \
--cc=pavel@ucw.cz \
--cc=robh@kernel.org \
--cc=sre@kernel.org \
--cc=wim@linux-watchdog.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.