aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2013-11-18 18:08:02 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2013-11-18 18:08:02 -0500
commita310410f616c78f24490de1274487a7b7b137d97 (patch)
treedbc2fc187800e6e7014263bf83e10d0155620029 /include
parentcdd278db0e3dd714e8076e58f723f3c59547591b (diff)
parent80f93c7b0f4599ffbdac8d964ecd1162b8b618b9 (diff)
Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media
Pull media updates from Mauro Carvalho Chehab: "This series include: - a new Remote Controller driver for ST SoC with the corresponding DT bindings - a new frontend (cx24117) - a new I2C camera flash driver (lm3560) - a new mem2mem driver for TI SoC (ti-vpe) - support for Raphael r828d added to r820t driver - some improvements on buffer allocation at VB2 core - usual driver fixes and improvements PS this time, we have a smaller number of patches. While it is hard to pinpoint to the reasons, I believe that it is mainly due to: 1) there are several patch series ready, but depending on DT review. I decided to grant some extra time for DT maintainers to look on it, as they're expecting to have more time with the changes agreed during ARM mini-summit and KS. If they can't review in time for 3.14, I'll review myself and apply for the next merge window. 2) I suspect that having both LinuxCon EU and LinuxCon NA happening during the same merge window affected the development productivity, as several core media developers participated on both events" * 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (151 commits) [media] media: st-rc: Add ST remote control driver [media] gpio-ir-recv: Include linux/of.h header [media] tvp7002: Include linux/of.h header [media] tvp514x: Include linux/of.h header [media] ths8200: Include linux/of.h header [media] adv7343: Include linux/of.h header [media] v4l: Fix typo in v4l2_subdev_get_try_crop() [media] media: i2c: add driver for dual LED Flash, lm3560 [media] rtl28xxu: add 15f4:0131 Astrometa DVB-T2 [media] rtl28xxu: add RTL2832P + R828D support [media] rtl2832: add new tuner R828D [media] r820t: add support for R828D [media] media/i2c: ths8200: fix build failure with gcc 4.5.4 [media] Add support for KWorld UB435-Q V2 [media] staging/media: fix msi3101 build errors [media] ddbridge: Remove casting the return value which is a void pointer [media] ngene: Remove casting the return value which is a void pointer [media] dm1105: remove unneeded not-null test [media] sh_mobile_ceu_camera: remove deprecated IRQF_DISABLED [media] media: rcar_vin: Add preliminary r8a7790 support ...
Diffstat (limited to 'include')
-rw-r--r--include/media/lm3560.h97
-rw-r--r--include/media/soc_camera.h27
-rw-r--r--include/media/v4l2-clk.h17
-rw-r--r--include/media/v4l2-common.h2
-rw-r--r--include/media/v4l2-ctrls.h2
-rw-r--r--include/media/v4l2-fh.h2
-rw-r--r--include/media/v4l2-subdev.h19
-rw-r--r--include/media/videobuf2-core.h4
-rw-r--r--include/media/videobuf2-dma-sg.h10
-rw-r--r--include/uapi/linux/v4l2-controls.h4
10 files changed, 163 insertions, 21 deletions
diff --git a/include/media/lm3560.h b/include/media/lm3560.h
new file mode 100644
index 000000000000..46670706d6f8
--- /dev/null
+++ b/include/media/lm3560.h
@@ -0,0 +1,97 @@
1/*
2 * include/media/lm3560.h
3 *
4 * Copyright (C) 2013 Texas Instruments
5 *
6 * Contact: Daniel Jeong <gshark.jeong@gmail.com>
7 * Ldd-Mlp <ldd-mlp@list.ti.com>
8 *
9 * This program is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU General Public License
11 * version 2 as published by the Free Software Foundation.
12 *
13 * This program is distributed in the hope that it will be useful, but
14 * WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
21 * 02110-1301 USA
22 *
23 */
24
25#ifndef __LM3560_H__
26#define __LM3560_H__
27
28#include <media/v4l2-subdev.h>
29
30#define LM3560_NAME "lm3560"
31#define LM3560_I2C_ADDR (0x53)
32
33/* FLASH Brightness
34 * min 62500uA, step 62500uA, max 1000000uA
35 */
36#define LM3560_FLASH_BRT_MIN 62500
37#define LM3560_FLASH_BRT_STEP 62500
38#define LM3560_FLASH_BRT_MAX 1000000
39#define LM3560_FLASH_BRT_uA_TO_REG(a) \
40 ((a) < LM3560_FLASH_BRT_MIN ? 0 : \
41 (((a) - LM3560_FLASH_BRT_MIN) / LM3560_FLASH_BRT_STEP))
42#define LM3560_FLASH_BRT_REG_TO_uA(a) \
43 ((a) * LM3560_FLASH_BRT_STEP + LM3560_FLASH_BRT_MIN)
44
45/* FLASH TIMEOUT DURATION
46 * min 32ms, step 32ms, max 1024ms
47 */
48#define LM3560_FLASH_TOUT_MIN 32
49#define LM3560_FLASH_TOUT_STEP 32
50#define LM3560_FLASH_TOUT_MAX 1024
51#define LM3560_FLASH_TOUT_ms_TO_REG(a) \
52 ((a) < LM3560_FLASH_TOUT_MIN ? 0 : \
53 (((a) - LM3560_FLASH_TOUT_MIN) / LM3560_FLASH_TOUT_STEP))
54#define LM3560_FLASH_TOUT_REG_TO_ms(a) \
55 ((a) * LM3560_FLASH_TOUT_STEP + LM3560_FLASH_TOUT_MIN)
56
57/* TORCH BRT
58 * min 31250uA, step 31250uA, max 250000uA
59 */
60#define LM3560_TORCH_BRT_MIN 31250
61#define LM3560_TORCH_BRT_STEP 31250
62#define LM3560_TORCH_BRT_MAX 250000
63#define LM3560_TORCH_BRT_uA_TO_REG(a) \
64 ((a) < LM3560_TORCH_BRT_MIN ? 0 : \
65 (((a) - LM3560_TORCH_BRT_MIN) / LM3560_TORCH_BRT_STEP))
66#define LM3560_TORCH_BRT_REG_TO_uA(a) \
67 ((a) * LM3560_TORCH_BRT_STEP + LM3560_TORCH_BRT_MIN)
68
69enum lm3560_led_id {
70 LM3560_LED0 = 0,
71 LM3560_LED1,
72 LM3560_LED_MAX
73};
74
75enum lm3560_peak_current {
76 LM3560_PEAK_1600mA = 0x00,
77 LM3560_PEAK_2300mA = 0x20,
78 LM3560_PEAK_3000mA = 0x40,
79 LM3560_PEAK_3600mA = 0x60
80};
81
82/* struct lm3560_platform_data
83 *
84 * @peak : peak current
85 * @max_flash_timeout: flash timeout
86 * @max_flash_brt: flash mode led brightness
87 * @max_torch_brt: torch mode led brightness
88 */
89struct lm3560_platform_data {
90 enum lm3560_peak_current peak;
91
92 u32 max_flash_timeout;
93 u32 max_flash_brt[LM3560_LED_MAX];
94 u32 max_torch_brt[LM3560_LED_MAX];
95};
96
97#endif /* __LM3560_H__ */
diff --git a/include/media/soc_camera.h b/include/media/soc_camera.h
index 34d2414f2b8c..865246b00127 100644
--- a/include/media/soc_camera.h
+++ b/include/media/soc_camera.h
@@ -146,9 +146,14 @@ struct soc_camera_subdev_desc {
146 /* sensor driver private platform data */ 146 /* sensor driver private platform data */
147 void *drv_priv; 147 void *drv_priv;
148 148
149 /* Optional regulators that have to be managed on power on/off events */ 149 /*
150 struct regulator_bulk_data *regulators; 150 * Set unbalanced_power to true to deal with legacy drivers, failing to
151 int num_regulators; 151 * balance their calls to subdevice's .s_power() method. clock_state is
152 * then used internally by helper functions, it shouldn't be touched by
153 * drivers or the platform code.
154 */
155 bool unbalanced_power;
156 unsigned long clock_state;
152 157
153 /* Optional callbacks to power on or off and reset the sensor */ 158 /* Optional callbacks to power on or off and reset the sensor */
154 int (*power)(struct device *, int); 159 int (*power)(struct device *, int);
@@ -162,6 +167,9 @@ struct soc_camera_subdev_desc {
162 int (*set_bus_param)(struct soc_camera_subdev_desc *, unsigned long flags); 167 int (*set_bus_param)(struct soc_camera_subdev_desc *, unsigned long flags);
163 unsigned long (*query_bus_param)(struct soc_camera_subdev_desc *); 168 unsigned long (*query_bus_param)(struct soc_camera_subdev_desc *);
164 void (*free_bus)(struct soc_camera_subdev_desc *); 169 void (*free_bus)(struct soc_camera_subdev_desc *);
170
171 /* Optional regulators that have to be managed on power on/off events */
172 struct v4l2_subdev_platform_data sd_pdata;
165}; 173};
166 174
167struct soc_camera_host_desc { 175struct soc_camera_host_desc {
@@ -202,9 +210,10 @@ struct soc_camera_link {
202 210
203 void *priv; 211 void *priv;
204 212
205 /* Optional regulators that have to be managed on power on/off events */ 213 /* Set by platforms to handle misbehaving drivers */
206 struct regulator_bulk_data *regulators; 214 bool unbalanced_power;
207 int num_regulators; 215 /* Used by soc-camera helper functions */
216 unsigned long clock_state;
208 217
209 /* Optional callbacks to power on or off and reset the sensor */ 218 /* Optional callbacks to power on or off and reset the sensor */
210 int (*power)(struct device *, int); 219 int (*power)(struct device *, int);
@@ -218,6 +227,12 @@ struct soc_camera_link {
218 unsigned long (*query_bus_param)(struct soc_camera_link *); 227 unsigned long (*query_bus_param)(struct soc_camera_link *);
219 void (*free_bus)(struct soc_camera_link *); 228 void (*free_bus)(struct soc_camera_link *);
220 229
230 /* Optional regulators that have to be managed on power on/off events */
231 struct regulator_bulk_data *regulators;
232 int num_regulators;
233
234 void *host_priv;
235
221 /* 236 /*
222 * Host part - keep at bottom and compatible to 237 * Host part - keep at bottom and compatible to
223 * struct soc_camera_host_desc 238 * struct soc_camera_host_desc
diff --git a/include/media/v4l2-clk.h b/include/media/v4l2-clk.h
index 0503a90b48bb..0b36cc138304 100644
--- a/include/media/v4l2-clk.h
+++ b/include/media/v4l2-clk.h
@@ -15,6 +15,7 @@
15#define MEDIA_V4L2_CLK_H 15#define MEDIA_V4L2_CLK_H
16 16
17#include <linux/atomic.h> 17#include <linux/atomic.h>
18#include <linux/export.h>
18#include <linux/list.h> 19#include <linux/list.h>
19#include <linux/mutex.h> 20#include <linux/mutex.h>
20 21
@@ -51,4 +52,20 @@ void v4l2_clk_disable(struct v4l2_clk *clk);
51unsigned long v4l2_clk_get_rate(struct v4l2_clk *clk); 52unsigned long v4l2_clk_get_rate(struct v4l2_clk *clk);
52int v4l2_clk_set_rate(struct v4l2_clk *clk, unsigned long rate); 53int v4l2_clk_set_rate(struct v4l2_clk *clk, unsigned long rate);
53 54
55struct module;
56
57struct v4l2_clk *__v4l2_clk_register_fixed(const char *dev_id,
58 const char *id, unsigned long rate, struct module *owner);
59void v4l2_clk_unregister_fixed(struct v4l2_clk *clk);
60
61static inline struct v4l2_clk *v4l2_clk_register_fixed(const char *dev_id,
62 const char *id,
63 unsigned long rate)
64{
65 return __v4l2_clk_register_fixed(dev_id, id, rate, THIS_MODULE);
66}
67
68#define v4l2_clk_name_i2c(name, size, adap, client) snprintf(name, size, \
69 "%d-%04x", adap, client)
70
54#endif 71#endif
diff --git a/include/media/v4l2-common.h b/include/media/v4l2-common.h
index 16550c439008..b87692c0b042 100644
--- a/include/media/v4l2-common.h
+++ b/include/media/v4l2-common.h
@@ -86,7 +86,7 @@ int v4l2_ctrl_check(struct v4l2_ext_control *ctrl, struct v4l2_queryctrl *qctrl,
86 const char * const *menu_items); 86 const char * const *menu_items);
87const char *v4l2_ctrl_get_name(u32 id); 87const char *v4l2_ctrl_get_name(u32 id);
88const char * const *v4l2_ctrl_get_menu(u32 id); 88const char * const *v4l2_ctrl_get_menu(u32 id);
89const s64 const *v4l2_ctrl_get_int_menu(u32 id, u32 *len); 89const s64 *v4l2_ctrl_get_int_menu(u32 id, u32 *len);
90int v4l2_ctrl_query_fill(struct v4l2_queryctrl *qctrl, s32 min, s32 max, s32 step, s32 def); 90int v4l2_ctrl_query_fill(struct v4l2_queryctrl *qctrl, s32 min, s32 max, s32 step, s32 def);
91int v4l2_ctrl_query_menu(struct v4l2_querymenu *qmenu, 91int v4l2_ctrl_query_menu(struct v4l2_querymenu *qmenu,
92 struct v4l2_queryctrl *qctrl, const char * const *menu_items); 92 struct v4l2_queryctrl *qctrl, const char * const *menu_items);
diff --git a/include/media/v4l2-ctrls.h b/include/media/v4l2-ctrls.h
index 47ada23345a1..16f7f2606516 100644
--- a/include/media/v4l2-ctrls.h
+++ b/include/media/v4l2-ctrls.h
@@ -571,7 +571,7 @@ static inline void v4l2_ctrl_lock(struct v4l2_ctrl *ctrl)
571 mutex_lock(ctrl->handler->lock); 571 mutex_lock(ctrl->handler->lock);
572} 572}
573 573
574/** v4l2_ctrl_lock() - Helper function to unlock the handler 574/** v4l2_ctrl_unlock() - Helper function to unlock the handler
575 * associated with the control. 575 * associated with the control.
576 * @ctrl: The control to unlock. 576 * @ctrl: The control to unlock.
577 */ 577 */
diff --git a/include/media/v4l2-fh.h b/include/media/v4l2-fh.h
index a62ee18cb7b7..528cdaf622e1 100644
--- a/include/media/v4l2-fh.h
+++ b/include/media/v4l2-fh.h
@@ -26,7 +26,9 @@
26#ifndef V4L2_FH_H 26#ifndef V4L2_FH_H
27#define V4L2_FH_H 27#define V4L2_FH_H
28 28
29#include <linux/fs.h>
29#include <linux/list.h> 30#include <linux/list.h>
31#include <linux/videodev2.h>
30 32
31struct video_device; 33struct video_device;
32struct v4l2_ctrl_handler; 34struct v4l2_ctrl_handler;
diff --git a/include/media/v4l2-subdev.h b/include/media/v4l2-subdev.h
index bfda0fe9aeb0..d67210a37ef3 100644
--- a/include/media/v4l2-subdev.h
+++ b/include/media/v4l2-subdev.h
@@ -559,6 +559,17 @@ struct v4l2_subdev_internal_ops {
559/* Set this flag if this subdev generates events. */ 559/* Set this flag if this subdev generates events. */
560#define V4L2_SUBDEV_FL_HAS_EVENTS (1U << 3) 560#define V4L2_SUBDEV_FL_HAS_EVENTS (1U << 3)
561 561
562struct regulator_bulk_data;
563
564struct v4l2_subdev_platform_data {
565 /* Optional regulators uset to power on/off the subdevice */
566 struct regulator_bulk_data *regulators;
567 int num_regulators;
568
569 /* Per-subdevice data, specific for a certain video host device */
570 void *host_priv;
571};
572
562/* Each instance of a subdev driver should create this struct, either 573/* Each instance of a subdev driver should create this struct, either
563 stand-alone or embedded in a larger struct. 574 stand-alone or embedded in a larger struct.
564 */ 575 */
@@ -592,6 +603,8 @@ struct v4l2_subdev {
592 struct v4l2_async_subdev *asd; 603 struct v4l2_async_subdev *asd;
593 /* Pointer to the managing notifier. */ 604 /* Pointer to the managing notifier. */
594 struct v4l2_async_notifier *notifier; 605 struct v4l2_async_notifier *notifier;
606 /* common part of subdevice platform data */
607 struct v4l2_subdev_platform_data *pdata;
595}; 608};
596 609
597#define media_entity_to_v4l2_subdev(ent) \ 610#define media_entity_to_v4l2_subdev(ent) \
@@ -622,13 +635,13 @@ struct v4l2_subdev_fh {
622 v4l2_subdev_get_try_##fun_name(struct v4l2_subdev_fh *fh, \ 635 v4l2_subdev_get_try_##fun_name(struct v4l2_subdev_fh *fh, \
623 unsigned int pad) \ 636 unsigned int pad) \
624 { \ 637 { \
625 BUG_ON(unlikely(pad >= vdev_to_v4l2_subdev( \ 638 BUG_ON(pad >= vdev_to_v4l2_subdev( \
626 fh->vfh.vdev)->entity.num_pads)); \ 639 fh->vfh.vdev)->entity.num_pads); \
627 return &fh->pad[pad].field_name; \ 640 return &fh->pad[pad].field_name; \
628 } 641 }
629 642
630__V4L2_SUBDEV_MK_GET_TRY(v4l2_mbus_framefmt, format, try_fmt) 643__V4L2_SUBDEV_MK_GET_TRY(v4l2_mbus_framefmt, format, try_fmt)
631__V4L2_SUBDEV_MK_GET_TRY(v4l2_rect, crop, try_compose) 644__V4L2_SUBDEV_MK_GET_TRY(v4l2_rect, crop, try_crop)
632__V4L2_SUBDEV_MK_GET_TRY(v4l2_rect, compose, try_compose) 645__V4L2_SUBDEV_MK_GET_TRY(v4l2_rect, compose, try_compose)
633#endif 646#endif
634 647
diff --git a/include/media/videobuf2-core.h b/include/media/videobuf2-core.h
index 6781258d0b67..bd8218b15009 100644
--- a/include/media/videobuf2-core.h
+++ b/include/media/videobuf2-core.h
@@ -391,7 +391,7 @@ unsigned long vb2_get_unmapped_area(struct vb2_queue *q,
391unsigned int vb2_poll(struct vb2_queue *q, struct file *file, poll_table *wait); 391unsigned int vb2_poll(struct vb2_queue *q, struct file *file, poll_table *wait);
392size_t vb2_read(struct vb2_queue *q, char __user *data, size_t count, 392size_t vb2_read(struct vb2_queue *q, char __user *data, size_t count,
393 loff_t *ppos, int nonblock); 393 loff_t *ppos, int nonblock);
394size_t vb2_write(struct vb2_queue *q, char __user *data, size_t count, 394size_t vb2_write(struct vb2_queue *q, const char __user *data, size_t count,
395 loff_t *ppos, int nonblock); 395 loff_t *ppos, int nonblock);
396 396
397/** 397/**
@@ -491,7 +491,7 @@ int vb2_ioctl_expbuf(struct file *file, void *priv,
491 491
492int vb2_fop_mmap(struct file *file, struct vm_area_struct *vma); 492int vb2_fop_mmap(struct file *file, struct vm_area_struct *vma);
493int vb2_fop_release(struct file *file); 493int vb2_fop_release(struct file *file);
494ssize_t vb2_fop_write(struct file *file, char __user *buf, 494ssize_t vb2_fop_write(struct file *file, const char __user *buf,
495 size_t count, loff_t *ppos); 495 size_t count, loff_t *ppos);
496ssize_t vb2_fop_read(struct file *file, char __user *buf, 496ssize_t vb2_fop_read(struct file *file, char __user *buf,
497 size_t count, loff_t *ppos); 497 size_t count, loff_t *ppos);
diff --git a/include/media/videobuf2-dma-sg.h b/include/media/videobuf2-dma-sg.h
index 0038526b8ef7..7b89852779af 100644
--- a/include/media/videobuf2-dma-sg.h
+++ b/include/media/videobuf2-dma-sg.h
@@ -15,16 +15,10 @@
15 15
16#include <media/videobuf2-core.h> 16#include <media/videobuf2-core.h>
17 17
18struct vb2_dma_sg_desc { 18static inline struct sg_table *vb2_dma_sg_plane_desc(
19 unsigned long size;
20 unsigned int num_pages;
21 struct scatterlist *sglist;
22};
23
24static inline struct vb2_dma_sg_desc *vb2_dma_sg_plane_desc(
25 struct vb2_buffer *vb, unsigned int plane_no) 19 struct vb2_buffer *vb, unsigned int plane_no)
26{ 20{
27 return (struct vb2_dma_sg_desc *)vb2_plane_cookie(vb, plane_no); 21 return (struct sg_table *)vb2_plane_cookie(vb, plane_no);
28} 22}
29 23
30extern const struct vb2_mem_ops vb2_dma_sg_memops; 24extern const struct vb2_mem_ops vb2_dma_sg_memops;
diff --git a/include/uapi/linux/v4l2-controls.h b/include/uapi/linux/v4l2-controls.h
index 083bb5a5aae2..1666aabbbb86 100644
--- a/include/uapi/linux/v4l2-controls.h
+++ b/include/uapi/linux/v4l2-controls.h
@@ -160,6 +160,10 @@ enum v4l2_colorfx {
160 * of controls. Total of 16 controls is reserved for this driver */ 160 * of controls. Total of 16 controls is reserved for this driver */
161#define V4L2_CID_USER_SI476X_BASE (V4L2_CID_USER_BASE + 0x1040) 161#define V4L2_CID_USER_SI476X_BASE (V4L2_CID_USER_BASE + 0x1040)
162 162
163/* The base for the TI VPE driver controls. Total of 16 controls is reserved for
164 * this driver */
165#define V4L2_CID_USER_TI_VPE_BASE (V4L2_CID_USER_BASE + 0x1050)
166
163/* MPEG-class control IDs */ 167/* MPEG-class control IDs */
164/* The MPEG controls are applicable to all codec controls 168/* The MPEG controls are applicable to all codec controls
165 * and the 'MPEG' part of the define is historical */ 169 * and the 'MPEG' part of the define is historical */