Loading drivers/media/platform/msm/camera_v2/sensor/flash/Makefile +1 −0 Original line number Diff line number Diff line Loading @@ -4,3 +4,4 @@ obj-$(CONFIG_MSMB_CAMERA) += msm_led_flash.o obj-$(CONFIG_MSMB_CAMERA) += msm_led_trigger.o obj-$(CONFIG_MSMB_CAMERA) += msm_led_i2c_trigger.o obj-$(CONFIG_MSMB_CAMERA) += adp1660.o obj-$(CONFIG_MSMB_CAMERA) += msm_led_torch.o drivers/media/platform/msm/camera_v2/sensor/flash/msm_led_torch.c 0 → 100644 +60 −0 Original line number Diff line number Diff line /* Copyright (c) 2013, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and * only version 2 as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * */ #define pr_fmt(fmt) "%s:%d " fmt, __func__, __LINE__ #include <linux/module.h> #include "msm_led_flash.h" static struct led_trigger *torch_trigger; static void msm_led_torch_brightness_set(struct led_classdev *led_cdev, enum led_brightness value) { if (!torch_trigger) { pr_err("No torch trigger found, can't set brightness\n"); return; } led_trigger_event(torch_trigger, value); }; static struct led_classdev msm_torch_led = { .name = "torch-light", .brightness_set = msm_led_torch_brightness_set, .brightness = LED_OFF, }; int32_t msm_led_torch_create_classdev(struct platform_device *pdev, void *data) { int rc; struct msm_led_flash_ctrl_t *fctrl = (struct msm_led_flash_ctrl_t *)data; if (!fctrl || !fctrl->torch_trigger) { pr_err("Invalid fctrl or torch trigger\n"); return -EINVAL; } torch_trigger = fctrl->torch_trigger; msm_led_torch_brightness_set(&msm_torch_led, LED_OFF); rc = led_classdev_register(&pdev->dev, &msm_torch_led); if (rc) { pr_err("Failed to register led dev. rc = %d\n", rc); return rc; } return 0; }; drivers/media/platform/msm/camera_v2/sensor/flash/msm_led_trigger.c +7 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,9 @@ #define CDBG(fmt, args...) do { } while (0) #endif extern int32_t msm_led_torch_create_classdev( struct platform_device *pdev, void *data); static struct msm_led_flash_ctrl_t fctrl; static int32_t msm_led_trigger_get_subdev_id(struct msm_led_flash_ctrl_t *fctrl, Loading Loading @@ -209,7 +212,11 @@ static int32_t msm_led_trigger_probe(struct platform_device *pdev) of_node_put(flash_src_node); } } rc = msm_led_flash_create_v4lsubdev(pdev, &fctrl); if (!rc) msm_led_torch_create_classdev(pdev, &fctrl); return rc; } Loading Loading
drivers/media/platform/msm/camera_v2/sensor/flash/Makefile +1 −0 Original line number Diff line number Diff line Loading @@ -4,3 +4,4 @@ obj-$(CONFIG_MSMB_CAMERA) += msm_led_flash.o obj-$(CONFIG_MSMB_CAMERA) += msm_led_trigger.o obj-$(CONFIG_MSMB_CAMERA) += msm_led_i2c_trigger.o obj-$(CONFIG_MSMB_CAMERA) += adp1660.o obj-$(CONFIG_MSMB_CAMERA) += msm_led_torch.o
drivers/media/platform/msm/camera_v2/sensor/flash/msm_led_torch.c 0 → 100644 +60 −0 Original line number Diff line number Diff line /* Copyright (c) 2013, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and * only version 2 as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * */ #define pr_fmt(fmt) "%s:%d " fmt, __func__, __LINE__ #include <linux/module.h> #include "msm_led_flash.h" static struct led_trigger *torch_trigger; static void msm_led_torch_brightness_set(struct led_classdev *led_cdev, enum led_brightness value) { if (!torch_trigger) { pr_err("No torch trigger found, can't set brightness\n"); return; } led_trigger_event(torch_trigger, value); }; static struct led_classdev msm_torch_led = { .name = "torch-light", .brightness_set = msm_led_torch_brightness_set, .brightness = LED_OFF, }; int32_t msm_led_torch_create_classdev(struct platform_device *pdev, void *data) { int rc; struct msm_led_flash_ctrl_t *fctrl = (struct msm_led_flash_ctrl_t *)data; if (!fctrl || !fctrl->torch_trigger) { pr_err("Invalid fctrl or torch trigger\n"); return -EINVAL; } torch_trigger = fctrl->torch_trigger; msm_led_torch_brightness_set(&msm_torch_led, LED_OFF); rc = led_classdev_register(&pdev->dev, &msm_torch_led); if (rc) { pr_err("Failed to register led dev. rc = %d\n", rc); return rc; } return 0; };
drivers/media/platform/msm/camera_v2/sensor/flash/msm_led_trigger.c +7 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,9 @@ #define CDBG(fmt, args...) do { } while (0) #endif extern int32_t msm_led_torch_create_classdev( struct platform_device *pdev, void *data); static struct msm_led_flash_ctrl_t fctrl; static int32_t msm_led_trigger_get_subdev_id(struct msm_led_flash_ctrl_t *fctrl, Loading Loading @@ -209,7 +212,11 @@ static int32_t msm_led_trigger_probe(struct platform_device *pdev) of_node_put(flash_src_node); } } rc = msm_led_flash_create_v4lsubdev(pdev, &fctrl); if (!rc) msm_led_torch_create_classdev(pdev, &fctrl); return rc; } Loading