xref: /OK3568_Linux_fs/kernel/drivers/media/platform/exynos4-is/fimc-is-sensor.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * Samsung EXYNOS4x12 FIMC-IS (Imaging Subsystem) driver
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  * Copyright (C) 2013 Samsung Electronics Co., Ltd.
6*4882a593Smuzhiyun  *
7*4882a593Smuzhiyun  * Authors:  Sylwester Nawrocki <s.nawrocki@samsung.com>
8*4882a593Smuzhiyun  *	     Younghwan Joo <yhwan.joo@samsung.com>
9*4882a593Smuzhiyun  */
10*4882a593Smuzhiyun #ifndef FIMC_IS_SENSOR_H_
11*4882a593Smuzhiyun #define FIMC_IS_SENSOR_H_
12*4882a593Smuzhiyun 
13*4882a593Smuzhiyun #include <linux/of.h>
14*4882a593Smuzhiyun #include <linux/types.h>
15*4882a593Smuzhiyun 
16*4882a593Smuzhiyun #define S5K6A3_OPEN_TIMEOUT		2000 /* ms */
17*4882a593Smuzhiyun #define S5K6A3_SENSOR_WIDTH		1392
18*4882a593Smuzhiyun #define S5K6A3_SENSOR_HEIGHT		1392
19*4882a593Smuzhiyun 
20*4882a593Smuzhiyun enum fimc_is_sensor_id {
21*4882a593Smuzhiyun 	FIMC_IS_SENSOR_ID_S5K3H2 = 1,
22*4882a593Smuzhiyun 	FIMC_IS_SENSOR_ID_S5K6A3,
23*4882a593Smuzhiyun 	FIMC_IS_SENSOR_ID_S5K4E5,
24*4882a593Smuzhiyun 	FIMC_IS_SENSOR_ID_S5K3H7,
25*4882a593Smuzhiyun 	FIMC_IS_SENSOR_ID_CUSTOM,
26*4882a593Smuzhiyun 	FIMC_IS_SENSOR_ID_END
27*4882a593Smuzhiyun };
28*4882a593Smuzhiyun 
29*4882a593Smuzhiyun #define IS_SENSOR_CTRL_BUS_I2C0		0
30*4882a593Smuzhiyun #define IS_SENSOR_CTRL_BUS_I2C1		1
31*4882a593Smuzhiyun 
32*4882a593Smuzhiyun struct sensor_drv_data {
33*4882a593Smuzhiyun 	enum fimc_is_sensor_id id;
34*4882a593Smuzhiyun 	/* sensor open timeout in ms */
35*4882a593Smuzhiyun 	unsigned short open_timeout;
36*4882a593Smuzhiyun };
37*4882a593Smuzhiyun 
38*4882a593Smuzhiyun /**
39*4882a593Smuzhiyun  * struct fimc_is_sensor - fimc-is sensor data structure
40*4882a593Smuzhiyun  * @drvdata: a pointer to the sensor's parameters data structure
41*4882a593Smuzhiyun  * @i2c_bus: ISP I2C bus index (0...1)
42*4882a593Smuzhiyun  * @test_pattern: true to enable video test pattern
43*4882a593Smuzhiyun  */
44*4882a593Smuzhiyun struct fimc_is_sensor {
45*4882a593Smuzhiyun 	const struct sensor_drv_data *drvdata;
46*4882a593Smuzhiyun 	unsigned int i2c_bus;
47*4882a593Smuzhiyun 	u8 test_pattern;
48*4882a593Smuzhiyun };
49*4882a593Smuzhiyun 
50*4882a593Smuzhiyun const struct sensor_drv_data *fimc_is_sensor_get_drvdata(
51*4882a593Smuzhiyun 				struct device_node *node);
52*4882a593Smuzhiyun 
53*4882a593Smuzhiyun #endif /* FIMC_IS_SENSOR_H_ */
54