* [PATCH 0/2] Add RT5033 Flash LED driver @ 2015-10-02 9:41 Ingi Kim [not found] ` <1443778875-18261-1-git-send-email-ingi2.kim-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org> ` (2 more replies) 0 siblings, 3 replies; 10+ messages in thread From: Ingi Kim @ 2015-10-02 9:41 UTC (permalink / raw) To: robh+dt-DgEjT+Ai2ygdnm+yROfE0A, pawel.moll-5wv7dgnIgG8, mark.rutland-5wv7dgnIgG8, ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg, galak-sgV2jX0FEOL9JmXXK+q4OQ, rpurdie-Fm38FmjxZ/leoWH0uzbU5w, j.anaszewski-Sze3O3UU22JBDgjK7y7TUQ Cc: sameo-VuQAYsv1563Yd54FQh9/CA, lee.jones-QSEj5FYQhm4dnm+yROfE0A, devicetree-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA, linux-leds-u79uwXL29TY76Z2rM5mHXA This patch adds ktd2692 Flash LED driver with LED Flash class Ingi Kim (2): leds: rt5033: add DT binding for RT5033 leds: rt5033: Add RT5033 Flash led device driver .../devicetree/bindings/leds/leds-rt5033.txt | 38 ++++ drivers/leds/Kconfig | 8 + drivers/leds/Makefile | 1 + drivers/leds/leds-rt5033.c | 222 +++++++++++++++++++++ drivers/mfd/rt5033.c | 3 + include/linux/mfd/rt5033-private.h | 67 ++++++- include/linux/mfd/rt5033.h | 27 ++- 7 files changed, 355 insertions(+), 11 deletions(-) create mode 100644 Documentation/devicetree/bindings/leds/leds-rt5033.txt create mode 100644 drivers/leds/leds-rt5033.c -- 2.0.5 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 10+ messages in thread
[parent not found: <1443778875-18261-1-git-send-email-ingi2.kim-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>]
* [PATCH 1/2] leds: rt5033: add DT binding for RT5033 [not found] ` <1443778875-18261-1-git-send-email-ingi2.kim-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org> @ 2015-10-02 9:41 ` Ingi Kim 2015-10-02 14:31 ` Rob Herring 0 siblings, 1 reply; 10+ messages in thread From: Ingi Kim @ 2015-10-02 9:41 UTC (permalink / raw) To: robh+dt-DgEjT+Ai2ygdnm+yROfE0A, pawel.moll-5wv7dgnIgG8, mark.rutland-5wv7dgnIgG8, ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg, galak-sgV2jX0FEOL9JmXXK+q4OQ, rpurdie-Fm38FmjxZ/leoWH0uzbU5w, j.anaszewski-Sze3O3UU22JBDgjK7y7TUQ Cc: sameo-VuQAYsv1563Yd54FQh9/CA, lee.jones-QSEj5FYQhm4dnm+yROfE0A, devicetree-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA, linux-leds-u79uwXL29TY76Z2rM5mHXA, Ingi Kim This patch adds the device tree bindings for RT5033 flash LEDs. Signed-off-by: Ingi Kim <ingi2.kim-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org> --- .../devicetree/bindings/leds/leds-rt5033.txt | 38 ++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 Documentation/devicetree/bindings/leds/leds-rt5033.txt diff --git a/Documentation/devicetree/bindings/leds/leds-rt5033.txt b/Documentation/devicetree/bindings/leds/leds-rt5033.txt new file mode 100644 index 0000000..2ef7bdc --- /dev/null +++ b/Documentation/devicetree/bindings/leds/leds-rt5033.txt @@ -0,0 +1,38 @@ +* Richtek Technology Corporation - RT5033 Flash LED Driver + +The RT5033 Flash LED Circuit is designed for one or two LEDs driving +for torch and strobe applications, it provides an I2C software command +to trigger the torch and strobe operation. + +Required properties: +- compatible : Must be "richtek,rt5033-led". + +A discrete LED element connected to the device must be represented by a child +node - see Documentation/devicetree/bindings/leds/common.txt. + +Required properties of the LED child node: + See Documentation/devicetree/bindings/leds/common.txt +- led-max-microamp : Minimum Threshold for Timer protection + is defined internally (Maximum 200mA). +- flash-max-microamp : Flash LED maximum current +- flash-max-timeout-us : Flash LED maximum timeout + +Optional properties of the LED child node: +- label : see Documentation/devicetree/bindings/leds/common.txt + +Example: + +rt5033 { + compatible = "richtek,rt5033"; + + led { + compatible = "richtek,rt5033-led"; + + flash-led { + label = "rt5033-flash"; + led-max-microamp = <200000>; + flash-max-microamp = <800000>; + flash-max-timeout-us = <1216000>; + }; + }; +} -- 2.0.5 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 1/2] leds: rt5033: add DT binding for RT5033 2015-10-02 9:41 ` [PATCH 1/2] leds: rt5033: add DT binding for RT5033 Ingi Kim @ 2015-10-02 14:31 ` Rob Herring 2015-10-05 10:40 ` Ingi Kim 0 siblings, 1 reply; 10+ messages in thread From: Rob Herring @ 2015-10-02 14:31 UTC (permalink / raw) To: Ingi Kim Cc: Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala, Richard Purdie, Jacek Anaszewski, Samuel Ortiz, Lee Jones, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Linux LED Subsystem On Fri, Oct 2, 2015 at 4:41 AM, Ingi Kim <ingi2.kim@samsung.com> wrote: > This patch adds the device tree bindings for RT5033 flash LEDs. > > Signed-off-by: Ingi Kim <ingi2.kim@samsung.com> Acked-by: Rob Herring <robh@kernel.org> > --- > .../devicetree/bindings/leds/leds-rt5033.txt | 38 ++++++++++++++++++++++ > 1 file changed, 38 insertions(+) > create mode 100644 Documentation/devicetree/bindings/leds/leds-rt5033.txt > > diff --git a/Documentation/devicetree/bindings/leds/leds-rt5033.txt b/Documentation/devicetree/bindings/leds/leds-rt5033.txt > new file mode 100644 > index 0000000..2ef7bdc > --- /dev/null > +++ b/Documentation/devicetree/bindings/leds/leds-rt5033.txt > @@ -0,0 +1,38 @@ > +* Richtek Technology Corporation - RT5033 Flash LED Driver > + > +The RT5033 Flash LED Circuit is designed for one or two LEDs driving > +for torch and strobe applications, it provides an I2C software command > +to trigger the torch and strobe operation. > + > +Required properties: > +- compatible : Must be "richtek,rt5033-led". > + > +A discrete LED element connected to the device must be represented by a child > +node - see Documentation/devicetree/bindings/leds/common.txt. > + > +Required properties of the LED child node: > + See Documentation/devicetree/bindings/leds/common.txt > +- led-max-microamp : Minimum Threshold for Timer protection > + is defined internally (Maximum 200mA). > +- flash-max-microamp : Flash LED maximum current > +- flash-max-timeout-us : Flash LED maximum timeout > + > +Optional properties of the LED child node: > +- label : see Documentation/devicetree/bindings/leds/common.txt > + > +Example: > + > +rt5033 { > + compatible = "richtek,rt5033"; > + > + led { > + compatible = "richtek,rt5033-led"; > + > + flash-led { > + label = "rt5033-flash"; > + led-max-microamp = <200000>; > + flash-max-microamp = <800000>; > + flash-max-timeout-us = <1216000>; > + }; > + }; > +} > -- > 2.0.5 > ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 1/2] leds: rt5033: add DT binding for RT5033 2015-10-02 14:31 ` Rob Herring @ 2015-10-05 10:40 ` Ingi Kim 0 siblings, 0 replies; 10+ messages in thread From: Ingi Kim @ 2015-10-05 10:40 UTC (permalink / raw) To: Rob Herring Cc: Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala, Richard Purdie, Jacek Anaszewski, Samuel Ortiz, Lee Jones, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Linux LED Subsystem Hello, Rob Herring I'll push ver2 patch soon with your acked because other patch has some issues. Thanks for the review. On 2015년 10월 02일 23:31, Rob Herring wrote: > On Fri, Oct 2, 2015 at 4:41 AM, Ingi Kim <ingi2.kim@samsung.com> wrote: >> This patch adds the device tree bindings for RT5033 flash LEDs. >> >> Signed-off-by: Ingi Kim <ingi2.kim@samsung.com> > > Acked-by: Rob Herring <robh@kernel.org> > >> --- >> .../devicetree/bindings/leds/leds-rt5033.txt | 38 ++++++++++++++++++++++ >> 1 file changed, 38 insertions(+) >> create mode 100644 Documentation/devicetree/bindings/leds/leds-rt5033.txt >> >> diff --git a/Documentation/devicetree/bindings/leds/leds-rt5033.txt b/Documentation/devicetree/bindings/leds/leds-rt5033.txt >> new file mode 100644 >> index 0000000..2ef7bdc >> --- /dev/null >> +++ b/Documentation/devicetree/bindings/leds/leds-rt5033.txt >> @@ -0,0 +1,38 @@ >> +* Richtek Technology Corporation - RT5033 Flash LED Driver >> + >> +The RT5033 Flash LED Circuit is designed for one or two LEDs driving >> +for torch and strobe applications, it provides an I2C software command >> +to trigger the torch and strobe operation. >> + >> +Required properties: >> +- compatible : Must be "richtek,rt5033-led". >> + >> +A discrete LED element connected to the device must be represented by a child >> +node - see Documentation/devicetree/bindings/leds/common.txt. >> + >> +Required properties of the LED child node: >> + See Documentation/devicetree/bindings/leds/common.txt >> +- led-max-microamp : Minimum Threshold for Timer protection >> + is defined internally (Maximum 200mA). >> +- flash-max-microamp : Flash LED maximum current >> +- flash-max-timeout-us : Flash LED maximum timeout >> + >> +Optional properties of the LED child node: >> +- label : see Documentation/devicetree/bindings/leds/common.txt >> + >> +Example: >> + >> +rt5033 { >> + compatible = "richtek,rt5033"; >> + >> + led { >> + compatible = "richtek,rt5033-led"; >> + >> + flash-led { >> + label = "rt5033-flash"; >> + led-max-microamp = <200000>; >> + flash-max-microamp = <800000>; >> + flash-max-timeout-us = <1216000>; >> + }; >> + }; >> +} >> -- >> 2.0.5 >> > ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 2/2] leds: rt5033: Add RT5033 Flash led device driver 2015-10-02 9:41 [PATCH 0/2] Add RT5033 Flash LED driver Ingi Kim [not found] ` <1443778875-18261-1-git-send-email-ingi2.kim-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org> @ 2015-10-02 9:41 ` Ingi Kim 2015-10-02 10:04 ` kbuild test robot 2015-10-05 7:21 ` Lee Jones 2015-10-02 14:59 ` [PATCH 0/2] Add RT5033 Flash LED driver Jacek Anaszewski 2 siblings, 2 replies; 10+ messages in thread From: Ingi Kim @ 2015-10-02 9:41 UTC (permalink / raw) To: robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak, rpurdie, j.anaszewski Cc: sameo, lee.jones, devicetree, linux-kernel, linux-leds, Ingi Kim This patch adds device driver of Richtek RT5033 PMIC. The driver supports a current regulated output to drive white LEDs for camera flash. Signed-off-by: Ingi Kim <ingi2.kim@samsung.com> --- drivers/leds/Kconfig | 8 ++ drivers/leds/Makefile | 1 + drivers/leds/leds-rt5033.c | 222 +++++++++++++++++++++++++++++++++++++ drivers/mfd/rt5033.c | 3 + include/linux/mfd/rt5033-private.h | 67 +++++++++-- include/linux/mfd/rt5033.h | 27 ++++- 6 files changed, 317 insertions(+), 11 deletions(-) create mode 100644 drivers/leds/leds-rt5033.c diff --git a/drivers/leds/Kconfig b/drivers/leds/Kconfig index 42990f2..29613e3 100644 --- a/drivers/leds/Kconfig +++ b/drivers/leds/Kconfig @@ -345,6 +345,14 @@ config LEDS_PCA963X LED driver chip accessed via the I2C bus. Supported devices include PCA9633 and PCA9634 +config LEDS_RT5033 + tristate "LED support for RT5033 PMIC" + depends on LEDS_CLASS_FLASH && OF + depends on MFD_RT5033 + help + This option enables support for on-chip LED driver on + RT5033 PMIC. + config LEDS_WM831X_STATUS tristate "LED support for status LEDs on WM831x PMICs" depends on LEDS_CLASS diff --git a/drivers/leds/Makefile b/drivers/leds/Makefile index b503f92..bcc4d93 100644 --- a/drivers/leds/Makefile +++ b/drivers/leds/Makefile @@ -23,6 +23,7 @@ obj-$(CONFIG_LEDS_COBALT_QUBE) += leds-cobalt-qube.o obj-$(CONFIG_LEDS_COBALT_RAQ) += leds-cobalt-raq.o obj-$(CONFIG_LEDS_SUNFIRE) += leds-sunfire.o obj-$(CONFIG_LEDS_PCA9532) += leds-pca9532.o +obj-$(CONFIG_LEDS_RT5033) += leds-rt5033.o obj-$(CONFIG_LEDS_GPIO_REGISTER) += leds-gpio-register.o obj-$(CONFIG_LEDS_GPIO) += leds-gpio.o obj-$(CONFIG_LEDS_LP3944) += leds-lp3944.o diff --git a/drivers/leds/leds-rt5033.c b/drivers/leds/leds-rt5033.c new file mode 100644 index 0000000..b154676 --- /dev/null +++ b/drivers/leds/leds-rt5033.c @@ -0,0 +1,222 @@ +/* + * led driver for RT5033 + * + * Copyright (C) 2015 Samsung Electronics, Co., Ltd. + * Ingi Kim <ingi2.kim@samsung.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + */ + +#include <linux/mfd/rt5033.h> +#include <linux/mfd/rt5033-private.h> +#include <linux/module.h> +#include <linux/platform_device.h> + +#define RT5033_LED_FLASH_TIMEOUT_MIN 64000 +#define RT5033_LED_FLASH_TIMEOUT_STEPS 32000 +#define RT5033_LED_TORCH_CURRENT_LEVEL_MAX 16 + +/* Macro for getting offset of flash timeout */ +#define GET_TIMEOUT_OFFSET(tm, step) ((tm) / (step) - 2) + +static struct rt5033_led *flcdev_to_led( + struct led_classdev_flash *fled_cdev) +{ + return container_of(fled_cdev, struct rt5033_led, fled_cdev); +} + +static int rt5033_led_brightness_set(struct led_classdev *led_cdev, + enum led_brightness brightness) +{ + struct led_classdev_flash *fled_cdev = lcdev_to_flcdev(led_cdev); + struct rt5033_led *led = flcdev_to_led(fled_cdev); + + if (!brightness) { + regmap_update_bits(led->regmap, RT5033_REG_FL_FUNCTION2, + RT5033_FL_CTRL2_MASK, 0x0); + } else { + regmap_update_bits(led->regmap, RT5033_REG_FL_FUNCTION1, + RT5033_FL_FUNC1_MASK, RT5033_FL_PINCTRL); + regmap_update_bits(led->regmap, RT5033_REG_FL_CTRL1, + RT5033_FL_CTRL1_MASK, (brightness-1) << 4); + regmap_update_bits(led->regmap, RT5033_REG_FL_FUNCTION2, + RT5033_FL_CTRL2_MASK, RT5033_FL_ENFLED); + } + + return 0; +} + +static void rt5033_init_flash_timeout(struct rt5033_led *led) +{ + struct led_flash_setting *setting; + + setting = &led->fled_cdev.timeout; + setting->min = RT5033_LED_FLASH_TIMEOUT_MIN; + setting->max = led->data->flash_max_timeout; + setting->step = RT5033_LED_FLASH_TIMEOUT_STEPS; + setting->val = led->data->flash_max_timeout; +} + +static int rt5033_led_parse_dt(struct rt5033_led *led, struct device *dev) +{ + struct device_node *np = dev->of_node; + struct device_node *child_node; + struct rt5033_led_config_data *data; + int ret = 0; + + if (!np) + return -ENXIO; + + data = devm_kzalloc(dev, sizeof(*data), GFP_KERNEL); + if (!data) + return -ENOMEM; + + child_node = of_get_next_available_child(np, NULL); + if (!child_node) { + dev_err(dev, "DT child node isn't found\n"); + return -EINVAL; + } + + led->fled_cdev.led_cdev.name = + of_get_property(child_node, "label", NULL) ? : child_node->name; + + ret = of_property_read_u32(child_node, "led-max-microamp", + &data->torch_max_microamp); + if (ret) { + dev_err(dev, "failed to parse led-max-microamp\n"); + return ret; + } + + ret = of_property_read_u32(child_node, "flash-max-microamp", + &data->flash_max_microamp); + if (ret) { + dev_err(dev, "failed to parse flash-max-microamp\n"); + return ret; + } + + ret = of_property_read_u32(child_node, "flash-max-timeout-us", + &data->flash_max_timeout); + if (ret) + dev_err(dev, "failed to parse flash-max-timeout-us\n"); + + of_node_put(child_node); + led->data = data; + + return ret; +} + +static int rt5033_led_flash_timeout_set(struct led_classdev_flash *fled_cdev, + u32 timeout) +{ + return 0; +} + +static int rt5033_led_flash_strobe_set(struct led_classdev_flash *fled_cdev, + bool state) +{ + struct rt5033_led *led = flcdev_to_led(fled_cdev); + u32 flash_tm_reg; + + regmap_update_bits(led->regmap, RT5033_REG_FL_FUNCTION1, + RT5033_FL_FUNC1_MASK, RT5033_FL_RESET); + fled_cdev->led_cdev.brightness = LED_OFF; + + if (state) { + flash_tm_reg = GET_TIMEOUT_OFFSET(fled_cdev->timeout.val, + fled_cdev->timeout.step); + regmap_update_bits(led->regmap, RT5033_REG_FL_STROBE_CTRL2, + RT5033_FL_STRBCTRL2_MASK, flash_tm_reg); + regmap_update_bits(led->regmap, RT5033_REG_FL_FUNCTION1, + RT5033_FL_FUNC1_MASK, RT5033_FL_STRB_SEL + | RT5033_FL_PINCTRL); + regmap_update_bits(led->regmap, RT5033_REG_FL_FUNCTION2, + RT5033_FL_FUNC2_MASK, RT5033_FL_ENFLED + | RT5033_FL_SREG_STRB); + } + + return 0; +} + +static const struct led_flash_ops flash_ops = { + .strobe_set = rt5033_led_flash_strobe_set, + .timeout_set = rt5033_led_flash_timeout_set, +}; + +static int rt5033_led_probe(struct platform_device *pdev) +{ + struct rt5033_dev *rt5033 = dev_get_drvdata(pdev->dev.parent); + struct rt5033_led *led; + struct led_classdev *led_cdev; + int ret; + + led = devm_kzalloc(&pdev->dev, sizeof(*led), GFP_KERNEL); + if (!led) + return -ENOMEM; + + platform_set_drvdata(pdev, led); + led->dev = &pdev->dev; + led->regmap = rt5033->regmap; + + ret = rt5033_led_parse_dt(led, &pdev->dev); + if (ret) + return ret; + + rt5033_init_flash_timeout(led); + led->fled_cdev.ops = &flash_ops; + led_cdev = &led->fled_cdev.led_cdev; + + led_cdev->max_brightness = RT5033_LED_TORCH_CURRENT_LEVEL_MAX; + led_cdev->brightness_set_sync = rt5033_led_brightness_set; + led_cdev->flags |= LED_CORE_SUSPENDRESUME | LED_DEV_CAP_FLASH; + + ret = led_classdev_flash_register(&pdev->dev, &led->fled_cdev); + if (ret < 0) { + dev_err(&pdev->dev, "can't register LED %s\n", led_cdev->name); + return ret; + } + + regmap_update_bits(led->regmap, RT5033_REG_FL_FUNCTION1, + RT5033_FL_FUNC1_MASK, RT5033_FL_RESET); + + return 0; +} + +static int rt5033_led_remove(struct platform_device *pdev) +{ + struct rt5033_led *led = platform_get_drvdata(pdev); + + led_classdev_flash_unregister(&led->fled_cdev); + + return 0; +} + +static const struct platform_device_id rt5033_led_id[] = { + { "rt5033-led", }, + { /* sentinel */ }, +}; +MODULE_DEVICE_TABLE(platform, rt5033_led_id); + +static const struct of_device_id rt5033_led_match[] = { + { .compatible = "richtek,rt5033-led", }, + { /* sentinel */ }, +}; +MODULE_DEVICE_TABLE(of, rt5033_led_match); + +static struct platform_driver rt5033_led_driver = { + .driver = { + .name = "rt5033-led", + .of_match_table = rt5033_led_match, + }, + .probe = rt5033_led_probe, + .id_table = rt5033_led_id, + .remove = rt5033_led_remove, +}; +module_platform_driver(rt5033_led_driver); + +MODULE_AUTHOR("Ingi Kim <ingi2.kim@samsung.com>"); +MODULE_DESCRIPTION("Richtek RT5033 LED driver"); +MODULE_LICENSE("GPL v2"); +MODULE_ALIAS("platform:rt5033-led"); diff --git a/drivers/mfd/rt5033.c b/drivers/mfd/rt5033.c index d60f916..035421c 100644 --- a/drivers/mfd/rt5033.c +++ b/drivers/mfd/rt5033.c @@ -47,6 +47,9 @@ static const struct mfd_cell rt5033_devs[] = { }, { .name = "rt5033-battery", .of_compatible = "richtek,rt5033-battery", + }, { + .name = "rt5033-led", + .of_compatible = "richtek,rt5033-led", }, }; diff --git a/include/linux/mfd/rt5033-private.h b/include/linux/mfd/rt5033-private.h index 1b63fc2..21c3aff 100644 --- a/include/linux/mfd/rt5033-private.h +++ b/include/linux/mfd/rt5033-private.h @@ -25,15 +25,15 @@ enum rt5033_reg { /* Reserved 0x09~0x18 */ RT5033_REG_RT_CTRL1 = 0x19, /* Reserved 0x1A~0x20 */ - RT5033_REG_FLED_FUNCTION1 = 0x21, - RT5033_REG_FLED_FUNCTION2 = 0x22, - RT5033_REG_FLED_STROBE_CTRL1 = 0x23, - RT5033_REG_FLED_STROBE_CTRL2 = 0x24, - RT5033_REG_FLED_CTRL1 = 0x25, - RT5033_REG_FLED_CTRL2 = 0x26, - RT5033_REG_FLED_CTRL3 = 0x27, - RT5033_REG_FLED_CTRL4 = 0x28, - RT5033_REG_FLED_CTRL5 = 0x29, + RT5033_REG_FL_FUNCTION1 = 0x21, + RT5033_REG_FL_FUNCTION2 = 0x22, + RT5033_REG_FL_STROBE_CTRL1 = 0x23, + RT5033_REG_FL_STROBE_CTRL2 = 0x24, + RT5033_REG_FL_CTRL1 = 0x25, + RT5033_REG_FL_CTRL2 = 0x26, + RT5033_REG_FL_CTRL3 = 0x27, + RT5033_REG_FL_CTRL4 = 0x28, + RT5033_REG_FL_CTRL5 = 0x29, /* Reserved 0x2A~0x40 */ RT5033_REG_CTRL = 0x41, RT5033_REG_BUCK_CTRL = 0x42, @@ -93,6 +93,55 @@ enum rt5033_reg { #define RT5033_RT_CTRL1_UUG_MASK 0x02 #define RT5033_RT_HZ_MASK 0x01 +/* RT5033 FLED Function1 register */ +#define RT5033_FL_FLED1_MASK 0x94 +#define RT5033_FL_STROBE_SEL 0x04 +#define RT5033_FL_PIN_CTRL 0x10 +#define RT5033_FL_RESET 0x80 + +/* RT5033 FLED Function2 register */ +#define RT5033_FL_FLED2_MASK 0x81 +#define RT5033_FL_ENFLED 0x01 +#define RT5033_FL_SREG_STROBE 0x80 + +/* RT5033 FLED Strobe Control1 */ +#define RT5033_FL_STRBCTRL1_MASK 0xFF +#define RT5033_FL_STRBCTRL1_TM_CUR_MAX 0xE0 +#define RT5033_FL_STRBCTRL1_FL_CUR_DEF 0x0D +#define RT5033_FL_STRBCTRL1_FL_CUR_MAX 0x1F + +/* RT5033 FLED Strobe Control2 */ +#define RT5033_FL_STRBCTRL2_MASK 0x3F +#define RT5033_FL_STRBCTRL2_TM_DEF 0x0F +#define RT5033_FL_STRBCTRL2_TM_MAX 0x3F + +/* RT5033 FLED Control1 */ +#define RT5033_FL_CTRL1_MASK 0xF7 +#define RT5033_FL_CTRL1_TORCH_CUR_DEF 0x20 +#define RT5033_FL_CTRL1_TORCH_CUR_MAX 0xF0 +#define RT5033_FL_CTRL1_LBP_DEF 0x02 +#define RT5033_FL_CTRL1_LBP_MAX 0x07 + +/* RT5033 FLED Control2 */ +#define RT5033_FL_CTRL2_MASK 0xFF +#define RT5033_FL_CTRL2_VMID_DEF 0x37 +#define RT5033_FL_CTRL2_VMID_MAX 0x3F +#define RT5033_FL_CTRL2_TRACK_ALIVE 0x40 +#define RT5033_FL_CTRL2_MID_TRACK 0x80 + +/* RT5033 FLED Control4 */ +#define RT5033_FL_CTRL4_MASK 0xE0 +#define RT5033_FL_CTRL4_RESV 0x14 +#define RT5033_FL_CTRL4_VTRREG_DEF 0x40 +#define RT5033_FL_CTRL4_VTRREG_MAX 0x60 +#define RT5033_FL_CTRL4_TRACK_CLK 0x80 + +/* RT5033 FLED Control5 */ +#define RT5033_FL_CTRL5_MASK 0xC0 +#define RT5033_FL_CTRL5_RESV 0x10 +#define RT5033_FL_CTRL5_TA_GOOD 0x40 +#define RT5033_FL_CTRL5_TA_EXIST 0x80 + /* RT5033 control register */ #define RT5033_CTRL_FCCM_BUCK_MASK 0x00 #define RT5033_CTRL_BUCKOMS_MASK 0x01 diff --git a/include/linux/mfd/rt5033.h b/include/linux/mfd/rt5033.h index 6cff5cf..45c97b7 100644 --- a/include/linux/mfd/rt5033.h +++ b/include/linux/mfd/rt5033.h @@ -12,10 +12,11 @@ #ifndef __RT5033_H__ #define __RT5033_H__ -#include <linux/regulator/consumer.h> +#include <linux/led-class-flash.h> #include <linux/i2c.h> -#include <linux/regmap.h> #include <linux/power_supply.h> +#include <linux/regmap.h> +#include <linux/regulator/consumer.h> /* RT5033 regulator IDs */ enum rt5033_regulators { @@ -59,4 +60,26 @@ struct rt5033_charger { struct rt5033_charger_data *chg; }; +/* RT5033 led platform data */ + +struct rt5033_led_config_data { + /* maximum LED current in movie mode */ + u32 torch_max_microamp; + /* maximum LED current in flash mode */ + u32 flash_max_microamp; + /* maximum flash timeout */ + u32 flash_max_timeout; + /* max LED brightness level */ + enum led_brightness max_brightness; +}; + +struct rt5033_led { + struct device *dev; + struct rt5033_dev *rt5033; + struct regmap *regmap; + + /* Related LED class device */ + struct led_classdev cdev; +}; + #endif /* __RT5033_H__ */ -- 2.0.5 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] leds: rt5033: Add RT5033 Flash led device driver 2015-10-02 9:41 ` [PATCH 2/2] leds: rt5033: Add RT5033 Flash led device driver Ingi Kim @ 2015-10-02 10:04 ` kbuild test robot 2015-10-05 7:21 ` Lee Jones 1 sibling, 0 replies; 10+ messages in thread From: kbuild test robot @ 2015-10-02 10:04 UTC (permalink / raw) Cc: kbuild-all, robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak, rpurdie, j.anaszewski, sameo, lee.jones, devicetree, linux-kernel, linux-leds, Ingi Kim [-- Attachment #1: Type: text/plain, Size: 7260 bytes --] Hi Ingi, [auto build test results on v4.3-rc3 -- if it's inappropriate base, please ignore] config: i386-allmodconfig (attached as .config) reproduce: # save the attached .config to linux build tree make ARCH=i386 All error/warnings (new ones prefixed by >>): In file included from include/linux/list.h:8:0, from include/linux/kobject.h:20, from include/linux/device.h:17, from include/linux/leds.h:15, from include/linux/led-class-flash.h:15, from include/linux/mfd/rt5033.h:15, from drivers/leds/leds-rt5033.c:13: drivers/leds/leds-rt5033.c: In function 'flcdev_to_led': >> include/linux/kernel.h:811:27: error: 'struct rt5033_led' has no member named 'fled_cdev' const typeof( ((type *)0)->member ) *__mptr = (ptr); \ ^ >> drivers/leds/leds-rt5033.c:28:9: note: in expansion of macro 'container_of' return container_of(fled_cdev, struct rt5033_led, fled_cdev); ^ include/linux/kernel.h:811:48: warning: initialization from incompatible pointer type [-Wincompatible-pointer-types] const typeof( ((type *)0)->member ) *__mptr = (ptr); \ ^ >> drivers/leds/leds-rt5033.c:28:9: note: in expansion of macro 'container_of' return container_of(fled_cdev, struct rt5033_led, fled_cdev); ^ In file included from include/linux/compiler.h:56:0, from include/linux/ioport.h:12, from include/linux/device.h:16, from include/linux/leds.h:15, from include/linux/led-class-flash.h:15, from include/linux/mfd/rt5033.h:15, from drivers/leds/leds-rt5033.c:13: >> include/linux/compiler-gcc.h:158:2: error: 'struct rt5033_led' has no member named 'fled_cdev' __builtin_offsetof(a, b) ^ include/linux/stddef.h:16:32: note: in expansion of macro '__compiler_offsetof' #define offsetof(TYPE, MEMBER) __compiler_offsetof(TYPE, MEMBER) ^ include/linux/kernel.h:812:29: note: in expansion of macro 'offsetof' (type *)( (char *)__mptr - offsetof(type,member) );}) ^ >> drivers/leds/leds-rt5033.c:28:9: note: in expansion of macro 'container_of' return container_of(fled_cdev, struct rt5033_led, fled_cdev); ^ drivers/leds/leds-rt5033.c: In function 'rt5033_led_brightness_set': >> drivers/leds/leds-rt5033.c:42:8: error: 'RT5033_FL_FUNC1_MASK' undeclared (first use in this function) RT5033_FL_FUNC1_MASK, RT5033_FL_PINCTRL); ^ drivers/leds/leds-rt5033.c:42:8: note: each undeclared identifier is reported only once for each function it appears in >> drivers/leds/leds-rt5033.c:42:30: error: 'RT5033_FL_PINCTRL' undeclared (first use in this function) RT5033_FL_FUNC1_MASK, RT5033_FL_PINCTRL); ^ drivers/leds/leds-rt5033.c: In function 'rt5033_init_flash_timeout': >> drivers/leds/leds-rt5033.c:56:16: error: 'struct rt5033_led' has no member named 'fled_cdev' setting = &led->fled_cdev.timeout; ^ >> drivers/leds/leds-rt5033.c:58:20: error: 'struct rt5033_led' has no member named 'data' setting->max = led->data->flash_max_timeout; ^ drivers/leds/leds-rt5033.c:60:20: error: 'struct rt5033_led' has no member named 'data' setting->val = led->data->flash_max_timeout; ^ drivers/leds/leds-rt5033.c: In function 'rt5033_led_parse_dt': drivers/leds/leds-rt5033.c:83:5: error: 'struct rt5033_led' has no member named 'fled_cdev' led->fled_cdev.led_cdev.name = ^ drivers/leds/leds-rt5033.c:106:5: error: 'struct rt5033_led' has no member named 'data' led->data = data; ^ drivers/leds/leds-rt5033.c: In function 'rt5033_led_flash_strobe_set': drivers/leds/leds-rt5033.c:124:7: error: 'RT5033_FL_FUNC1_MASK' undeclared (first use in this function) RT5033_FL_FUNC1_MASK, RT5033_FL_RESET); ^ >> drivers/leds/leds-rt5033.c:133:30: error: 'RT5033_FL_STRB_SEL' undeclared (first use in this function) RT5033_FL_FUNC1_MASK, RT5033_FL_STRB_SEL ^ drivers/leds/leds-rt5033.c:134:10: error: 'RT5033_FL_PINCTRL' undeclared (first use in this function) | RT5033_FL_PINCTRL); ^ >> drivers/leds/leds-rt5033.c:136:8: error: 'RT5033_FL_FUNC2_MASK' undeclared (first use in this function) RT5033_FL_FUNC2_MASK, RT5033_FL_ENFLED ^ >> drivers/leds/leds-rt5033.c:137:10: error: 'RT5033_FL_SREG_STRB' undeclared (first use in this function) | RT5033_FL_SREG_STRB); ^ drivers/leds/leds-rt5033.c: In function 'rt5033_led_probe': drivers/leds/leds-rt5033.c:168:5: error: 'struct rt5033_led' has no member named 'fled_cdev' led->fled_cdev.ops = &flash_ops; ^ drivers/leds/leds-rt5033.c:169:17: error: 'struct rt5033_led' has no member named 'fled_cdev' led_cdev = &led->fled_cdev.led_cdev; ^ drivers/leds/leds-rt5033.c:175:52: error: 'struct rt5033_led' has no member named 'fled_cdev' ret = led_classdev_flash_register(&pdev->dev, &led->fled_cdev); ^ drivers/leds/leds-rt5033.c:182:7: error: 'RT5033_FL_FUNC1_MASK' undeclared (first use in this function) RT5033_FL_FUNC1_MASK, RT5033_FL_RESET); ^ drivers/leds/leds-rt5033.c: In function 'rt5033_led_remove': drivers/leds/leds-rt5033.c:191:36: error: 'struct rt5033_led' has no member named 'fled_cdev' led_classdev_flash_unregister(&led->fled_cdev); ^ drivers/leds/leds-rt5033.c: In function 'flcdev_to_led': >> drivers/leds/leds-rt5033.c:29:1: warning: control reaches end of non-void function [-Wreturn-type] } ^ vim +811 include/linux/kernel.h ^1da177e Linus Torvalds 2005-04-16 805 * @ptr: the pointer to the member. ^1da177e Linus Torvalds 2005-04-16 806 * @type: the type of the container struct this is embedded in. ^1da177e Linus Torvalds 2005-04-16 807 * @member: the name of the member within the struct. ^1da177e Linus Torvalds 2005-04-16 808 * ^1da177e Linus Torvalds 2005-04-16 809 */ ^1da177e Linus Torvalds 2005-04-16 810 #define container_of(ptr, type, member) ({ \ ^1da177e Linus Torvalds 2005-04-16 @811 const typeof( ((type *)0)->member ) *__mptr = (ptr); \ ^1da177e Linus Torvalds 2005-04-16 812 (type *)( (char *)__mptr - offsetof(type,member) );}) ^1da177e Linus Torvalds 2005-04-16 813 b9d4f426 Arnaud Lacombe 2011-07-25 814 /* Rebuild everything on CONFIG_FTRACE_MCOUNT_RECORD */ :::::: The code at line 811 was first introduced by commit :::::: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Linux-2.6.12-rc2 :::::: TO: Linus Torvalds <torvalds@ppc970.osdl.org> :::::: CC: Linus Torvalds <torvalds@ppc970.osdl.org> --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation [-- Attachment #2: .config.gz --] [-- Type: application/octet-stream, Size: 51595 bytes --] ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] leds: rt5033: Add RT5033 Flash led device driver 2015-10-02 9:41 ` [PATCH 2/2] leds: rt5033: Add RT5033 Flash led device driver Ingi Kim 2015-10-02 10:04 ` kbuild test robot @ 2015-10-05 7:21 ` Lee Jones 2015-10-05 10:36 ` Ingi Kim 1 sibling, 1 reply; 10+ messages in thread From: Lee Jones @ 2015-10-05 7:21 UTC (permalink / raw) To: Ingi Kim Cc: robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak, rpurdie, j.anaszewski, sameo, devicetree, linux-kernel, linux-leds On Fri, 02 Oct 2015, Ingi Kim wrote: > This patch adds device driver of Richtek RT5033 PMIC. > The driver supports a current regulated output to drive > white LEDs for camera flash. > > Signed-off-by: Ingi Kim <ingi2.kim@samsung.com> > --- > drivers/leds/Kconfig | 8 ++ > drivers/leds/Makefile | 1 + > drivers/leds/leds-rt5033.c | 222 +++++++++++++++++++++++++++++++++++++ > drivers/mfd/rt5033.c | 3 + > include/linux/mfd/rt5033-private.h | 67 +++++++++-- > include/linux/mfd/rt5033.h | 27 ++++- Please pull the MFD changes out into to separate patch(es). > 6 files changed, 317 insertions(+), 11 deletions(-) > create mode 100644 drivers/leds/leds-rt5033.c [...] > diff --git a/drivers/mfd/rt5033.c b/drivers/mfd/rt5033.c > index d60f916..035421c 100644 > --- a/drivers/mfd/rt5033.c > +++ b/drivers/mfd/rt5033.c > @@ -47,6 +47,9 @@ static const struct mfd_cell rt5033_devs[] = { > }, { > .name = "rt5033-battery", > .of_compatible = "richtek,rt5033-battery", > + }, { > + .name = "rt5033-led", > + .of_compatible = "richtek,rt5033-led", > }, > }; Needs to be in a patch of its own. > diff --git a/include/linux/mfd/rt5033-private.h b/include/linux/mfd/rt5033-private.h > index 1b63fc2..21c3aff 100644 > --- a/include/linux/mfd/rt5033-private.h > +++ b/include/linux/mfd/rt5033-private.h > @@ -25,15 +25,15 @@ enum rt5033_reg { > /* Reserved 0x09~0x18 */ > RT5033_REG_RT_CTRL1 = 0x19, > /* Reserved 0x1A~0x20 */ > - RT5033_REG_FLED_FUNCTION1 = 0x21, > - RT5033_REG_FLED_FUNCTION2 = 0x22, > - RT5033_REG_FLED_STROBE_CTRL1 = 0x23, > - RT5033_REG_FLED_STROBE_CTRL2 = 0x24, > - RT5033_REG_FLED_CTRL1 = 0x25, > - RT5033_REG_FLED_CTRL2 = 0x26, > - RT5033_REG_FLED_CTRL3 = 0x27, > - RT5033_REG_FLED_CTRL4 = 0x28, > - RT5033_REG_FLED_CTRL5 = 0x29, > + RT5033_REG_FL_FUNCTION1 = 0x21, > + RT5033_REG_FL_FUNCTION2 = 0x22, > + RT5033_REG_FL_STROBE_CTRL1 = 0x23, > + RT5033_REG_FL_STROBE_CTRL2 = 0x24, > + RT5033_REG_FL_CTRL1 = 0x25, > + RT5033_REG_FL_CTRL2 = 0x26, > + RT5033_REG_FL_CTRL3 = 0x27, > + RT5033_REG_FL_CTRL4 = 0x28, > + RT5033_REG_FL_CTRL5 = 0x29, Why this change? The previous naming convention was better. > /* Reserved 0x2A~0x40 */ > RT5033_REG_CTRL = 0x41, > RT5033_REG_BUCK_CTRL = 0x42, > @@ -93,6 +93,55 @@ enum rt5033_reg { > #define RT5033_RT_CTRL1_UUG_MASK 0x02 > #define RT5033_RT_HZ_MASK 0x01 > > +/* RT5033 FLED Function1 register */ > +#define RT5033_FL_FLED1_MASK 0x94 > +#define RT5033_FL_STROBE_SEL 0x04 > +#define RT5033_FL_PIN_CTRL 0x10 > +#define RT5033_FL_RESET 0x80 > + > +/* RT5033 FLED Function2 register */ > +#define RT5033_FL_FLED2_MASK 0x81 > +#define RT5033_FL_ENFLED 0x01 > +#define RT5033_FL_SREG_STROBE 0x80 > + > +/* RT5033 FLED Strobe Control1 */ > +#define RT5033_FL_STRBCTRL1_MASK 0xFF > +#define RT5033_FL_STRBCTRL1_TM_CUR_MAX 0xE0 > +#define RT5033_FL_STRBCTRL1_FL_CUR_DEF 0x0D > +#define RT5033_FL_STRBCTRL1_FL_CUR_MAX 0x1F > + > +/* RT5033 FLED Strobe Control2 */ > +#define RT5033_FL_STRBCTRL2_MASK 0x3F > +#define RT5033_FL_STRBCTRL2_TM_DEF 0x0F > +#define RT5033_FL_STRBCTRL2_TM_MAX 0x3F > + > +/* RT5033 FLED Control1 */ > +#define RT5033_FL_CTRL1_MASK 0xF7 > +#define RT5033_FL_CTRL1_TORCH_CUR_DEF 0x20 > +#define RT5033_FL_CTRL1_TORCH_CUR_MAX 0xF0 > +#define RT5033_FL_CTRL1_LBP_DEF 0x02 > +#define RT5033_FL_CTRL1_LBP_MAX 0x07 > + > +/* RT5033 FLED Control2 */ > +#define RT5033_FL_CTRL2_MASK 0xFF > +#define RT5033_FL_CTRL2_VMID_DEF 0x37 > +#define RT5033_FL_CTRL2_VMID_MAX 0x3F > +#define RT5033_FL_CTRL2_TRACK_ALIVE 0x40 > +#define RT5033_FL_CTRL2_MID_TRACK 0x80 > + > +/* RT5033 FLED Control4 */ > +#define RT5033_FL_CTRL4_MASK 0xE0 > +#define RT5033_FL_CTRL4_RESV 0x14 > +#define RT5033_FL_CTRL4_VTRREG_DEF 0x40 > +#define RT5033_FL_CTRL4_VTRREG_MAX 0x60 > +#define RT5033_FL_CTRL4_TRACK_CLK 0x80 > + > +/* RT5033 FLED Control5 */ > +#define RT5033_FL_CTRL5_MASK 0xC0 > +#define RT5033_FL_CTRL5_RESV 0x10 > +#define RT5033_FL_CTRL5_TA_GOOD 0x40 > +#define RT5033_FL_CTRL5_TA_EXIST 0x80 > + > /* RT5033 control register */ > #define RT5033_CTRL_FCCM_BUCK_MASK 0x00 > #define RT5033_CTRL_BUCKOMS_MASK 0x01 > diff --git a/include/linux/mfd/rt5033.h b/include/linux/mfd/rt5033.h > index 6cff5cf..45c97b7 100644 > --- a/include/linux/mfd/rt5033.h > +++ b/include/linux/mfd/rt5033.h > @@ -12,10 +12,11 @@ > #ifndef __RT5033_H__ > #define __RT5033_H__ > > -#include <linux/regulator/consumer.h> > +#include <linux/led-class-flash.h> > #include <linux/i2c.h> > -#include <linux/regmap.h> > #include <linux/power_supply.h> > +#include <linux/regmap.h> > +#include <linux/regulator/consumer.h> > > /* RT5033 regulator IDs */ > enum rt5033_regulators { > @@ -59,4 +60,26 @@ struct rt5033_charger { > struct rt5033_charger_data *chg; > }; > > +/* RT5033 led platform data */ > + > +struct rt5033_led_config_data { > + /* maximum LED current in movie mode */ > + u32 torch_max_microamp; > + /* maximum LED current in flash mode */ > + u32 flash_max_microamp; > + /* maximum flash timeout */ > + u32 flash_max_timeout; > + /* max LED brightness level */ > + enum led_brightness max_brightness; > +}; Rid these comments. Use kerneldoc format instead. > +struct rt5033_led { > + struct device *dev; > + struct rt5033_dev *rt5033; > + struct regmap *regmap; > + > + /* Related LED class device */ > + struct led_classdev cdev; > +}; > + > #endif /* __RT5033_H__ */ -- Lee Jones Linaro STMicroelectronics Landing Team Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] leds: rt5033: Add RT5033 Flash led device driver 2015-10-05 7:21 ` Lee Jones @ 2015-10-05 10:36 ` Ingi Kim 0 siblings, 0 replies; 10+ messages in thread From: Ingi Kim @ 2015-10-05 10:36 UTC (permalink / raw) To: Lee Jones Cc: robh+dt-DgEjT+Ai2ygdnm+yROfE0A, pawel.moll-5wv7dgnIgG8, mark.rutland-5wv7dgnIgG8, ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg, galak-sgV2jX0FEOL9JmXXK+q4OQ, rpurdie-Fm38FmjxZ/leoWH0uzbU5w, j.anaszewski-Sze3O3UU22JBDgjK7y7TUQ, sameo-VuQAYsv1563Yd54FQh9/CA, devicetree-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA, linux-leds-u79uwXL29TY76Z2rM5mHXA Hello Lee Jones, Thanks for the review. I'll try to divide this patch and change name and comment. Then push ver2 patch soon. On 2015년 10월 05일 16:21, Lee Jones wrote: > On Fri, 02 Oct 2015, Ingi Kim wrote: > >> This patch adds device driver of Richtek RT5033 PMIC. >> The driver supports a current regulated output to drive >> white LEDs for camera flash. >> >> Signed-off-by: Ingi Kim <ingi2.kim-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org> >> --- >> drivers/leds/Kconfig | 8 ++ >> drivers/leds/Makefile | 1 + >> drivers/leds/leds-rt5033.c | 222 +++++++++++++++++++++++++++++++++++++ >> drivers/mfd/rt5033.c | 3 + >> include/linux/mfd/rt5033-private.h | 67 +++++++++-- >> include/linux/mfd/rt5033.h | 27 ++++- > > Please pull the MFD changes out into to separate patch(es). > >> 6 files changed, 317 insertions(+), 11 deletions(-) >> create mode 100644 drivers/leds/leds-rt5033.c > > [...] > >> diff --git a/drivers/mfd/rt5033.c b/drivers/mfd/rt5033.c >> index d60f916..035421c 100644 >> --- a/drivers/mfd/rt5033.c >> +++ b/drivers/mfd/rt5033.c >> @@ -47,6 +47,9 @@ static const struct mfd_cell rt5033_devs[] = { >> }, { >> .name = "rt5033-battery", >> .of_compatible = "richtek,rt5033-battery", >> + }, { >> + .name = "rt5033-led", >> + .of_compatible = "richtek,rt5033-led", >> }, >> }; > > Needs to be in a patch of its own. > >> diff --git a/include/linux/mfd/rt5033-private.h b/include/linux/mfd/rt5033-private.h >> index 1b63fc2..21c3aff 100644 >> --- a/include/linux/mfd/rt5033-private.h >> +++ b/include/linux/mfd/rt5033-private.h >> @@ -25,15 +25,15 @@ enum rt5033_reg { >> /* Reserved 0x09~0x18 */ >> RT5033_REG_RT_CTRL1 = 0x19, >> /* Reserved 0x1A~0x20 */ >> - RT5033_REG_FLED_FUNCTION1 = 0x21, >> - RT5033_REG_FLED_FUNCTION2 = 0x22, >> - RT5033_REG_FLED_STROBE_CTRL1 = 0x23, >> - RT5033_REG_FLED_STROBE_CTRL2 = 0x24, >> - RT5033_REG_FLED_CTRL1 = 0x25, >> - RT5033_REG_FLED_CTRL2 = 0x26, >> - RT5033_REG_FLED_CTRL3 = 0x27, >> - RT5033_REG_FLED_CTRL4 = 0x28, >> - RT5033_REG_FLED_CTRL5 = 0x29, >> + RT5033_REG_FL_FUNCTION1 = 0x21, >> + RT5033_REG_FL_FUNCTION2 = 0x22, >> + RT5033_REG_FL_STROBE_CTRL1 = 0x23, >> + RT5033_REG_FL_STROBE_CTRL2 = 0x24, >> + RT5033_REG_FL_CTRL1 = 0x25, >> + RT5033_REG_FL_CTRL2 = 0x26, >> + RT5033_REG_FL_CTRL3 = 0x27, >> + RT5033_REG_FL_CTRL4 = 0x28, >> + RT5033_REG_FL_CTRL5 = 0x29, > > Why this change? > > The previous naming convention was better. > >> /* Reserved 0x2A~0x40 */ >> RT5033_REG_CTRL = 0x41, >> RT5033_REG_BUCK_CTRL = 0x42, >> @@ -93,6 +93,55 @@ enum rt5033_reg { >> #define RT5033_RT_CTRL1_UUG_MASK 0x02 >> #define RT5033_RT_HZ_MASK 0x01 >> >> +/* RT5033 FLED Function1 register */ >> +#define RT5033_FL_FLED1_MASK 0x94 >> +#define RT5033_FL_STROBE_SEL 0x04 >> +#define RT5033_FL_PIN_CTRL 0x10 >> +#define RT5033_FL_RESET 0x80 >> + >> +/* RT5033 FLED Function2 register */ >> +#define RT5033_FL_FLED2_MASK 0x81 >> +#define RT5033_FL_ENFLED 0x01 >> +#define RT5033_FL_SREG_STROBE 0x80 >> + >> +/* RT5033 FLED Strobe Control1 */ >> +#define RT5033_FL_STRBCTRL1_MASK 0xFF >> +#define RT5033_FL_STRBCTRL1_TM_CUR_MAX 0xE0 >> +#define RT5033_FL_STRBCTRL1_FL_CUR_DEF 0x0D >> +#define RT5033_FL_STRBCTRL1_FL_CUR_MAX 0x1F >> + >> +/* RT5033 FLED Strobe Control2 */ >> +#define RT5033_FL_STRBCTRL2_MASK 0x3F >> +#define RT5033_FL_STRBCTRL2_TM_DEF 0x0F >> +#define RT5033_FL_STRBCTRL2_TM_MAX 0x3F >> + >> +/* RT5033 FLED Control1 */ >> +#define RT5033_FL_CTRL1_MASK 0xF7 >> +#define RT5033_FL_CTRL1_TORCH_CUR_DEF 0x20 >> +#define RT5033_FL_CTRL1_TORCH_CUR_MAX 0xF0 >> +#define RT5033_FL_CTRL1_LBP_DEF 0x02 >> +#define RT5033_FL_CTRL1_LBP_MAX 0x07 >> + >> +/* RT5033 FLED Control2 */ >> +#define RT5033_FL_CTRL2_MASK 0xFF >> +#define RT5033_FL_CTRL2_VMID_DEF 0x37 >> +#define RT5033_FL_CTRL2_VMID_MAX 0x3F >> +#define RT5033_FL_CTRL2_TRACK_ALIVE 0x40 >> +#define RT5033_FL_CTRL2_MID_TRACK 0x80 >> + >> +/* RT5033 FLED Control4 */ >> +#define RT5033_FL_CTRL4_MASK 0xE0 >> +#define RT5033_FL_CTRL4_RESV 0x14 >> +#define RT5033_FL_CTRL4_VTRREG_DEF 0x40 >> +#define RT5033_FL_CTRL4_VTRREG_MAX 0x60 >> +#define RT5033_FL_CTRL4_TRACK_CLK 0x80 >> + >> +/* RT5033 FLED Control5 */ >> +#define RT5033_FL_CTRL5_MASK 0xC0 >> +#define RT5033_FL_CTRL5_RESV 0x10 >> +#define RT5033_FL_CTRL5_TA_GOOD 0x40 >> +#define RT5033_FL_CTRL5_TA_EXIST 0x80 >> + >> /* RT5033 control register */ >> #define RT5033_CTRL_FCCM_BUCK_MASK 0x00 >> #define RT5033_CTRL_BUCKOMS_MASK 0x01 >> diff --git a/include/linux/mfd/rt5033.h b/include/linux/mfd/rt5033.h >> index 6cff5cf..45c97b7 100644 >> --- a/include/linux/mfd/rt5033.h >> +++ b/include/linux/mfd/rt5033.h >> @@ -12,10 +12,11 @@ >> #ifndef __RT5033_H__ >> #define __RT5033_H__ >> >> -#include <linux/regulator/consumer.h> >> +#include <linux/led-class-flash.h> >> #include <linux/i2c.h> >> -#include <linux/regmap.h> >> #include <linux/power_supply.h> >> +#include <linux/regmap.h> >> +#include <linux/regulator/consumer.h> >> >> /* RT5033 regulator IDs */ >> enum rt5033_regulators { >> @@ -59,4 +60,26 @@ struct rt5033_charger { >> struct rt5033_charger_data *chg; >> }; >> >> +/* RT5033 led platform data */ >> + >> +struct rt5033_led_config_data { >> + /* maximum LED current in movie mode */ >> + u32 torch_max_microamp; >> + /* maximum LED current in flash mode */ >> + u32 flash_max_microamp; >> + /* maximum flash timeout */ >> + u32 flash_max_timeout; >> + /* max LED brightness level */ >> + enum led_brightness max_brightness; >> +}; > > Rid these comments. Use kerneldoc format instead. > >> +struct rt5033_led { >> + struct device *dev; >> + struct rt5033_dev *rt5033; >> + struct regmap *regmap; >> + >> + /* Related LED class device */ >> + struct led_classdev cdev; >> +}; >> + >> #endif /* __RT5033_H__ */ > -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 0/2] Add RT5033 Flash LED driver 2015-10-02 9:41 [PATCH 0/2] Add RT5033 Flash LED driver Ingi Kim [not found] ` <1443778875-18261-1-git-send-email-ingi2.kim-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org> 2015-10-02 9:41 ` [PATCH 2/2] leds: rt5033: Add RT5033 Flash led device driver Ingi Kim @ 2015-10-02 14:59 ` Jacek Anaszewski 2015-10-05 2:11 ` Ingi Kim 2 siblings, 1 reply; 10+ messages in thread From: Jacek Anaszewski @ 2015-10-02 14:59 UTC (permalink / raw) To: Ingi Kim Cc: robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak, rpurdie, sameo, lee.jones, devicetree, linux-kernel, linux-leds Hi Ingi, Thanks for the patches. Please fix build errors and resubmit. On 10/02/2015 11:41 AM, Ingi Kim wrote: > This patch adds ktd2692 Flash LED driver with LED Flash class > > Ingi Kim (2): > leds: rt5033: add DT binding for RT5033 > leds: rt5033: Add RT5033 Flash led device driver > > .../devicetree/bindings/leds/leds-rt5033.txt | 38 ++++ > drivers/leds/Kconfig | 8 + > drivers/leds/Makefile | 1 + > drivers/leds/leds-rt5033.c | 222 +++++++++++++++++++++ > drivers/mfd/rt5033.c | 3 + > include/linux/mfd/rt5033-private.h | 67 ++++++- > include/linux/mfd/rt5033.h | 27 ++- > 7 files changed, 355 insertions(+), 11 deletions(-) > create mode 100644 Documentation/devicetree/bindings/leds/leds-rt5033.txt > create mode 100644 drivers/leds/leds-rt5033.c > -- Best Regards, Jacek Anaszewski ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 0/2] Add RT5033 Flash LED driver 2015-10-02 14:59 ` [PATCH 0/2] Add RT5033 Flash LED driver Jacek Anaszewski @ 2015-10-05 2:11 ` Ingi Kim 0 siblings, 0 replies; 10+ messages in thread From: Ingi Kim @ 2015-10-05 2:11 UTC (permalink / raw) To: Jacek Anaszewski Cc: robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak, rpurdie, sameo, lee.jones, devicetree, linux-kernel, linux-leds Hi, Jacek Thanks for review my patch Oops! old version patch is sent. I should have checked.. I'll send new patch, soon. Thanks Ingi Kim On 2015년 10월 02일 23:59, Jacek Anaszewski wrote: > Hi Ingi, > > Thanks for the patches. Please fix build errors > and resubmit. > > On 10/02/2015 11:41 AM, Ingi Kim wrote: >> This patch adds ktd2692 Flash LED driver with LED Flash class >> >> Ingi Kim (2): >> leds: rt5033: add DT binding for RT5033 >> leds: rt5033: Add RT5033 Flash led device driver >> >> .../devicetree/bindings/leds/leds-rt5033.txt | 38 ++++ >> drivers/leds/Kconfig | 8 + >> drivers/leds/Makefile | 1 + >> drivers/leds/leds-rt5033.c | 222 +++++++++++++++++++++ >> drivers/mfd/rt5033.c | 3 + >> include/linux/mfd/rt5033-private.h | 67 ++++++- >> include/linux/mfd/rt5033.h | 27 ++- >> 7 files changed, 355 insertions(+), 11 deletions(-) >> create mode 100644 Documentation/devicetree/bindings/leds/leds-rt5033.txt >> create mode 100644 drivers/leds/leds-rt5033.c >> > > ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2015-10-05 10:40 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2015-10-02 9:41 [PATCH 0/2] Add RT5033 Flash LED driver Ingi Kim [not found] ` <1443778875-18261-1-git-send-email-ingi2.kim-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org> 2015-10-02 9:41 ` [PATCH 1/2] leds: rt5033: add DT binding for RT5033 Ingi Kim 2015-10-02 14:31 ` Rob Herring 2015-10-05 10:40 ` Ingi Kim 2015-10-02 9:41 ` [PATCH 2/2] leds: rt5033: Add RT5033 Flash led device driver Ingi Kim 2015-10-02 10:04 ` kbuild test robot 2015-10-05 7:21 ` Lee Jones 2015-10-05 10:36 ` Ingi Kim 2015-10-02 14:59 ` [PATCH 0/2] Add RT5033 Flash LED driver Jacek Anaszewski 2015-10-05 2:11 ` Ingi Kim
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).