aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/platform/exynos4-is/fimc-is-sensor.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/platform/exynos4-is/fimc-is-sensor.h')
-rw-r--r--drivers/media/platform/exynos4-is/fimc-is-sensor.h49
1 files changed, 8 insertions, 41 deletions
diff --git a/drivers/media/platform/exynos4-is/fimc-is-sensor.h b/drivers/media/platform/exynos4-is/fimc-is-sensor.h
index 6036d49a6c68..173ccffa4bcd 100644
--- a/drivers/media/platform/exynos4-is/fimc-is-sensor.h
+++ b/drivers/media/platform/exynos4-is/fimc-is-sensor.h
@@ -13,24 +13,13 @@
13#ifndef FIMC_IS_SENSOR_H_ 13#ifndef FIMC_IS_SENSOR_H_
14#define FIMC_IS_SENSOR_H_ 14#define FIMC_IS_SENSOR_H_
15 15
16#include <linux/clk.h> 16#include <linux/of.h>
17#include <linux/device.h> 17#include <linux/types.h>
18#include <linux/kernel.h>
19#include <linux/platform_device.h>
20#include <linux/regulator/consumer.h>
21#include <linux/videodev2.h>
22#include <media/v4l2-subdev.h>
23
24#define FIMC_IS_SENSOR_OPEN_TIMEOUT 2000 /* ms */
25
26#define FIMC_IS_SENSOR_DEF_PIX_WIDTH 1296
27#define FIMC_IS_SENSOR_DEF_PIX_HEIGHT 732
28 18
19#define S5K6A3_OPEN_TIMEOUT 2000 /* ms */
29#define S5K6A3_SENSOR_WIDTH 1392 20#define S5K6A3_SENSOR_WIDTH 1392
30#define S5K6A3_SENSOR_HEIGHT 1392 21#define S5K6A3_SENSOR_HEIGHT 1392
31 22
32#define SENSOR_NUM_SUPPLIES 2
33
34enum fimc_is_sensor_id { 23enum fimc_is_sensor_id {
35 FIMC_IS_SENSOR_ID_S5K3H2 = 1, 24 FIMC_IS_SENSOR_ID_S5K3H2 = 1,
36 FIMC_IS_SENSOR_ID_S5K6A3, 25 FIMC_IS_SENSOR_ID_S5K6A3,
@@ -45,45 +34,23 @@ enum fimc_is_sensor_id {
45 34
46struct sensor_drv_data { 35struct sensor_drv_data {
47 enum fimc_is_sensor_id id; 36 enum fimc_is_sensor_id id;
48 const char * const subdev_name; 37 /* sensor open timeout in ms */
49 unsigned int width; 38 unsigned short open_timeout;
50 unsigned int height;
51}; 39};
52 40
53/** 41/**
54 * struct fimc_is_sensor - fimc-is sensor data structure 42 * struct fimc_is_sensor - fimc-is sensor data structure
55 * @dev: pointer to this I2C client device structure
56 * @subdev: the image sensor's v4l2 subdev
57 * @pad: subdev media source pad
58 * @supplies: image sensor's voltage regulator supplies
59 * @gpio_reset: GPIO connected to the sensor's reset pin
60 * @drvdata: a pointer to the sensor's parameters data structure 43 * @drvdata: a pointer to the sensor's parameters data structure
61 * @i2c_bus: ISP I2C bus index (0...1) 44 * @i2c_bus: ISP I2C bus index (0...1)
62 * @test_pattern: true to enable video test pattern 45 * @test_pattern: true to enable video test pattern
63 * @lock: mutex protecting the structure's members below
64 * @format: media bus format at the sensor's source pad
65 */ 46 */
66struct fimc_is_sensor { 47struct fimc_is_sensor {
67 struct device *dev;
68 struct v4l2_subdev subdev;
69 struct media_pad pad;
70 struct regulator_bulk_data supplies[SENSOR_NUM_SUPPLIES];
71 int gpio_reset;
72 const struct sensor_drv_data *drvdata; 48 const struct sensor_drv_data *drvdata;
73 unsigned int i2c_bus; 49 unsigned int i2c_bus;
74 bool test_pattern; 50 u8 test_pattern;
75
76 struct mutex lock;
77 struct v4l2_mbus_framefmt format;
78}; 51};
79 52
80static inline 53const struct sensor_drv_data *fimc_is_sensor_get_drvdata(
81struct fimc_is_sensor *sd_to_fimc_is_sensor(struct v4l2_subdev *sd) 54 struct device_node *node);
82{
83 return container_of(sd, struct fimc_is_sensor, subdev);
84}
85
86int fimc_is_register_sensor_driver(void);
87void fimc_is_unregister_sensor_driver(void);
88 55
89#endif /* FIMC_IS_SENSOR_H_ */ 56#endif /* FIMC_IS_SENSOR_H_ */