From: Jacek Anaszewski <j.anaszewski@samsung.com>
To: linux-leds@vger.kernel.org, linux-media@vger.kernel.org,
linux-kernel@vger.kernel.org
Cc: devicetree@vger.kernel.org, kyungmin.park@samsung.com,
b.zolnierkie@samsung.com, pavel@ucw.cz, cooloney@gmail.com,
rpurdie@rpsys.net, sakari.ailus@iki.fi, s.nawrocki@samsung.com,
Jacek Anaszewski <j.anaszewski@samsung.com>,
Sakari Ailus <sakari.ailus@linux.intel.com>
Subject: [PATCH/RFC v10 19/19] leds: aat1290: add support for V4L2 Flash sub-device
Date: Fri, 09 Jan 2015 16:23:09 +0100 [thread overview]
Message-ID: <1420816989-1808-20-git-send-email-j.anaszewski@samsung.com> (raw)
In-Reply-To: <1420816989-1808-1-git-send-email-j.anaszewski@samsung.com>
Add support for V4L2 Flash sub-device to the aat1290 LED Flash class
driver. The support allows for V4L2 Flash sub-device to take the control
of the LED Flash class device.
Signed-off-by: Jacek Anaszewski <j.anaszewski@samsung.com>
Acked-by: Kyungmin Park <kyungmin.park@samsung.com>
Cc: Bryan Wu <cooloney@gmail.com>
Cc: Richard Purdie <rpurdie@rpsys.net>
Cc: Sakari Ailus <sakari.ailus@linux.intel.com>
---
drivers/leds/leds-aat1290.c | 62 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 62 insertions(+)
diff --git a/drivers/leds/leds-aat1290.c b/drivers/leds/leds-aat1290.c
index 0a3c9b4..0974868 100644
--- a/drivers/leds/leds-aat1290.c
+++ b/drivers/leds/leds-aat1290.c
@@ -20,6 +20,7 @@
#include <linux/of_gpio.h>
#include <linux/platform_device.h>
#include <linux/slab.h>
+#include <media/v4l2-flash.h>
#include <linux/workqueue.h>
#define AAT1290_MOVIE_MODE_CURRENT_ADDR 17
@@ -67,6 +68,7 @@ struct aat1290_led {
struct mutex lock;
struct led_classdev_flash fled_cdev;
+ struct v4l2_flash *v4l2_flash;
int flen_gpio;
int en_set_gpio;
@@ -280,11 +282,44 @@ static void aat1290_init_flash_settings(struct aat1290_led *led,
setting->val = setting->max;
}
+#if IS_ENABLED(CONFIG_V4L2_FLASH_LED_CLASS)
+static void aat1290_init_v4l2_ctrl_config(struct aat1290_led_settings *s,
+ struct v4l2_flash_ctrl_config *config)
+{
+ struct led_flash_setting *setting;
+ struct v4l2_ctrl_config *c;
+
+ c = &config->intensity;
+ setting = &s->torch_brightness;
+ c->min = setting->min;
+ c->max = setting->max;
+ c->step = setting->step;
+ c->def = setting->val;
+
+ c = &config->flash_timeout;
+ setting = &s->flash_timeout;
+ c->min = setting->min;
+ c->max = setting->max;
+ c->step = setting->step;
+ c->def = setting->val;
+
+ config->has_external_strobe = false;
+}
+#else
+#define aat1290_init_v4l2_ctrl_config(s, config)
+#endif
+
static const struct led_flash_ops flash_ops = {
.strobe_set = aat1290_led_flash_strobe_set,
.timeout_set = aat1290_led_flash_timeout_set,
};
+#if IS_ENABLED(CONFIG_V4L2_FLASH_LED_CLASS)
+static const struct v4l2_flash_ops v4l2_flash_ops = {
+ .external_strobe_set = NULL,
+};
+#endif
+
static int aat1290_led_probe(struct platform_device *pdev)
{
struct device *dev = &pdev->dev;
@@ -292,6 +327,9 @@ static int aat1290_led_probe(struct platform_device *pdev)
struct aat1290_led *led;
struct led_classdev *led_cdev;
struct led_classdev_flash *fled_cdev;
+#if IS_ENABLED(CONFIG_V4L2_FLASH_LED_CLASS)
+ struct v4l2_flash_ctrl_config v4l2_flash_config;
+#endif
struct aat1290_led_settings settings;
int flen_gpio, enset_gpio, ret;
@@ -342,6 +380,9 @@ static int aat1290_led_probe(struct platform_device *pdev)
fled_cdev->timeout = settings.flash_timeout;
+ /* Init V4L2 Flash controls basing on initialized settings */
+ aat1290_init_v4l2_ctrl_config(&settings, &v4l2_flash_config);
+
/* Init led class */
led_cdev = &fled_cdev->led_cdev;
led_cdev->name = led->label;
@@ -361,13 +402,34 @@ static int aat1290_led_probe(struct platform_device *pdev)
mutex_init(&led->lock);
+ of_node_get(dev_node);
+ led_cdev->dev->of_node = dev_node;
+
+ /* Create V4L2 Flash subdev. */
+ led->v4l2_flash = v4l2_flash_init(fled_cdev,
+ &v4l2_flash_ops,
+ &v4l2_flash_config);
+ if (IS_ERR(led->v4l2_flash)) {
+ ret = PTR_ERR(led->v4l2_flash);
+ goto error_v4l2_flash_init;
+ }
+
return 0;
+
+error_v4l2_flash_init:
+ of_node_put(dev_node);
+ led_classdev_flash_unregister(fled_cdev);
+ mutex_destroy(&led->lock);
+
+ return ret;
}
static int aat1290_led_remove(struct platform_device *pdev)
{
struct aat1290_led *led = platform_get_drvdata(pdev);
+ v4l2_flash_release(led->v4l2_flash);
+ of_node_put(led->fled_cdev.led_cdev.dev->of_node);
led_classdev_flash_unregister(&led->fled_cdev);
cancel_work_sync(&led->work_brightness_set);
--
1.7.9.5
next prev parent reply other threads:[~2015-01-09 15:26 UTC|newest]
Thread overview: 91+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-09 15:22 [PATCH/RFC v10 00/19] LED / flash API integration Jacek Anaszewski
2015-01-09 15:22 ` [PATCH/RFC v10 01/19] leds: Add LED Flash class extension to the LED subsystem Jacek Anaszewski
2015-01-09 17:37 ` Pavel Machek
2015-01-26 23:02 ` Bryan Wu
2015-01-09 15:22 ` [PATCH/RFC v10 02/19] Documentation: leds: Add description of LED Flash class extension Jacek Anaszewski
2015-01-09 17:40 ` Pavel Machek
2015-01-12 8:04 ` Jacek Anaszewski
2015-01-26 23:03 ` Bryan Wu
2015-01-09 15:22 ` [PATCH/RFC v10 03/19] DT: leds: Add led-sources property Jacek Anaszewski
2015-01-09 17:42 ` Pavel Machek
2015-01-09 18:33 ` Rob Herring
2015-01-12 8:32 ` Jacek Anaszewski
2015-01-12 13:52 ` Rob Herring
2015-01-12 16:10 ` Jacek Anaszewski
2015-01-12 16:55 ` Rob Herring
2015-01-12 17:06 ` Mark Brown
2015-01-15 12:33 ` Sylwester Nawrocki
2015-01-15 14:37 ` Rob Herring
2015-01-15 21:03 ` Pavel Machek
2015-01-16 10:17 ` Sylwester Nawrocki
2015-01-13 8:42 ` Jacek Anaszewski
2015-01-15 14:24 ` Rob Herring
2015-01-15 15:53 ` Mark Brown
2015-01-16 9:07 ` Jacek Anaszewski
2015-01-16 13:48 ` Rob Herring
2015-01-16 15:52 ` Jacek Anaszewski
2015-01-20 16:09 ` Jacek Anaszewski
2015-01-20 17:29 ` Rob Herring
2015-01-20 17:40 ` Pavel Machek
2015-01-21 9:39 ` Jacek Anaszewski
2015-01-28 7:04 ` Sakari Ailus
2015-01-09 15:22 ` [PATCH/RFC v10 04/19] dt-binding: mfd: max77693: Add DT binding related macros Jacek Anaszewski
2015-01-09 17:43 ` Pavel Machek
2015-01-20 11:12 ` Lee Jones
2015-01-20 12:53 ` Jacek Anaszewski
2015-01-28 8:52 ` Sakari Ailus
2015-01-09 15:22 ` [PATCH/RFC v10 05/19] mfd: max77693: Modify flash cell name identifiers Jacek Anaszewski
2015-01-09 17:53 ` Pavel Machek
2015-01-20 11:13 ` Lee Jones
2015-01-20 12:57 ` Jacek Anaszewski
2015-01-20 15:41 ` Lee Jones
2015-01-09 15:22 ` [PATCH/RFC v10 06/19] mfd: max77693: modifications around max77693_led_platform_data Jacek Anaszewski
2015-01-09 17:56 ` Pavel Machek
2015-01-20 11:15 ` Lee Jones
2015-01-09 15:22 ` [PATCH/RFC v10 07/19] mfd: max77693: Adjust FLASH_EN_SHIFT and TORCH_EN_SHIFT macros Jacek Anaszewski
2015-01-09 17:59 ` Pavel Machek
2015-01-20 11:17 ` Lee Jones
2015-01-20 13:01 ` Jacek Anaszewski
2015-01-20 14:11 ` Jacek Anaszewski
2015-01-20 15:40 ` Lee Jones
2015-01-20 16:00 ` Pavel Machek
2015-01-20 16:41 ` Lee Jones
2015-01-09 15:22 ` [PATCH/RFC v10 08/19] leds: Add support for max77693 mfd flash cell Jacek Anaszewski
2015-01-09 18:46 ` Pavel Machek
2015-01-12 8:52 ` Jacek Anaszewski
2015-01-12 13:25 ` Pavel Machek
2015-01-12 13:46 ` Jacek Anaszewski
2015-02-05 15:34 ` Sakari Ailus
2015-02-05 16:26 ` Jacek Anaszewski
2015-01-09 15:22 ` [PATCH/RFC v10 09/19] DT: Add documentation for the mfd Maxim max77693 Jacek Anaszewski
2015-01-09 17:52 ` Pavel Machek
2015-01-20 11:21 ` Lee Jones
2015-01-20 14:36 ` Jacek Anaszewski
2015-01-20 15:38 ` Lee Jones
2015-01-09 15:23 ` [PATCH/RFC v10 10/19] leds: Add driver for AAT1290 current regulator Jacek Anaszewski
2015-01-09 18:57 ` Pavel Machek
2015-01-09 15:23 ` [PATCH/RFC v10 11/19] of: Add Skyworks Solutions, Inc. vendor prefix Jacek Anaszewski
2015-01-09 18:57 ` Pavel Machek
2015-01-09 15:23 ` [PATCH/RFC v10 12/19] DT: Add documentation for the Skyworks AAT1290 Jacek Anaszewski
2015-01-09 18:58 ` Pavel Machek
2015-01-09 15:23 ` [PATCH/RFC v10 13/19] exynos4-is: Add support for v4l2-flash subdevs Jacek Anaszewski
2015-01-09 19:06 ` Pavel Machek
2015-01-09 15:23 ` [PATCH/RFC v10 14/19] v4l2-ctrls: Add V4L2_CID_FLASH_SYNC_STROBE control Jacek Anaszewski
2015-01-09 19:06 ` Pavel Machek
2015-02-05 16:36 ` Sakari Ailus
2015-01-09 15:23 ` [PATCH/RFC v10 15/19] media: Add registration helpers for V4L2 flash sub-devices Jacek Anaszewski
2015-01-09 20:54 ` Pavel Machek
2015-01-12 9:46 ` Jacek Anaszewski
2015-01-12 13:27 ` Pavel Machek
2015-02-05 17:59 ` Sakari Ailus
2015-02-09 11:15 ` Jacek Anaszewski
2015-01-09 15:23 ` [PATCH/RFC v10 16/19] Documentation: leds: Add description of v4l2-flash sub-device Jacek Anaszewski
2015-01-09 20:57 ` Pavel Machek
2015-01-09 15:23 ` [PATCH/RFC v10 17/19] DT: Add documentation for exynos4-is 'flashes' property Jacek Anaszewski
2015-01-09 20:57 ` Pavel Machek
2015-01-21 16:32 ` Sylwester Nawrocki
2015-01-22 8:47 ` Jacek Anaszewski
2015-01-09 15:23 ` [PATCH/RFC v10 18/19] leds: max77693: add support for V4L2 Flash sub-device Jacek Anaszewski
2015-01-09 20:59 ` Pavel Machek
2015-01-09 15:23 ` Jacek Anaszewski [this message]
2015-01-09 20:59 ` [PATCH/RFC v10 19/19] leds: aat1290: " Pavel Machek
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=1420816989-1808-20-git-send-email-j.anaszewski@samsung.com \
--to=j.anaszewski@samsung.com \
--cc=b.zolnierkie@samsung.com \
--cc=cooloney@gmail.com \
--cc=devicetree@vger.kernel.org \
--cc=kyungmin.park@samsung.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-leds@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=pavel@ucw.cz \
--cc=rpurdie@rpsys.net \
--cc=s.nawrocki@samsung.com \
--cc=sakari.ailus@iki.fi \
--cc=sakari.ailus@linux.intel.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®