Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 789cabe5 authored by Evgeniy Borisov's avatar Evgeniy Borisov
Browse files

msm: camera: Multi module support in sensor architecture



In current sensor architecture, one platform device is created for
every sensor defined in dtsi for that platform. It creates redundancy
since only one camera can be connected in camera slot for particular
target. To avoid this redundancy, create platform device for every
camera slot for that platform and probe using single compatible name
"qcom,camera" for all drivers. Add sensor utility functions to be
used by all camera sensors.

Change-Id: I135bda007f8eec2f339a6b3dbf1116c5ab600b94
Signed-off-by: default avatarSreesudhan Ramakrish Ramkumar <srramku@codeaurora.org>
Signed-off-by: default avatarEvgeniy Borisov <eborisov@codeaurora.org>
parent 5cfc0347
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -50,6 +50,7 @@ MSM sensor node contains properties of camera sensor

Required properties:
- compatible : should be manufacturer name followed by sensor name
    - "qcom,camera"
    - "qcom,s5k3l1yx"
    - "sne,imx134"
    - "qcom,imx135"
+4 −0
Original line number Diff line number Diff line
@@ -3356,6 +3356,10 @@ static struct clk_lookup msm_clocks_8226[] = {
	CLK_LOOKUP("cam_clk", camss_mclk0_clk.c, "6a.qcom,camera"),
	CLK_LOOKUP("cam_clk", camss_mclk0_clk.c, "6c.qcom,camera"),
	CLK_LOOKUP("cam_clk", camss_mclk0_clk.c, "20.qcom,camera"),
	CLK_LOOKUP("cam_src_clk", mclk0_clk_src.c, "0.qcom,camera"),
	CLK_LOOKUP("cam_src_clk", mclk0_clk_src.c, "1.qcom,camera"),
	CLK_LOOKUP("cam_clk", camss_mclk0_clk.c, "0.qcom,camera"),
	CLK_LOOKUP("cam_clk", camss_mclk0_clk.c, "1.qcom,camera"),

	/* eeprom clocks */
	CLK_LOOKUP("cam_src_clk", mclk0_clk_src.c, "6c.qcom,eeprom"),
+12 −0
Original line number Diff line number Diff line
@@ -4842,6 +4842,12 @@ static struct clk_lookup msm_clocks_8974pro_only[] __initdata = {
	CLK_LOOKUP("cam_clk", camss_mclk2_clk.c, "6c.qcom,camera"),
	CLK_LOOKUP("cam_clk", camss_mclk1_clk.c, "90.qcom,camera"),
	CLK_LOOKUP("cam_clk", camss_mclk1_clk.c, "6d.qcom,camera"),
	CLK_LOOKUP("cam_src_clk", mclk0_clk_src.c, "0.qcom,camera"),
	CLK_LOOKUP("cam_src_clk", mclk2_clk_src.c, "1.qcom,camera"),
	CLK_LOOKUP("cam_src_clk", mclk1_clk_src.c, "2.qcom,camera"),
	CLK_LOOKUP("cam_clk", camss_mclk0_clk.c, "0.qcom,camera"),
	CLK_LOOKUP("cam_clk", camss_mclk2_clk.c, "1.qcom,camera"),
	CLK_LOOKUP("cam_clk", camss_mclk1_clk.c, "2.qcom,camera"),
};

static struct clk_lookup msm_clocks_8974_only[] __initdata = {
@@ -4853,6 +4859,12 @@ static struct clk_lookup msm_clocks_8974_only[] __initdata = {
	CLK_LOOKUP("cam_clk", camss_gp0_clk.c, "20.qcom,camera"),
	CLK_LOOKUP("cam_clk", gcc_gp1_clk.c, "6c.qcom,camera"),
	CLK_LOOKUP("cam_clk", camss_gp1_clk.c, "90.qcom,camera"),
	CLK_LOOKUP("cam_src_clk", mmss_gp0_clk_src.c, "0.qcom,camera"),
	CLK_LOOKUP("cam_src_clk", gp1_clk_src.c, "2.qcom,camera"),
	CLK_LOOKUP("cam_src_clk", mmss_gp1_clk_src.c, "1.qcom,camera"),
	CLK_LOOKUP("cam_clk", camss_gp0_clk.c, "0.qcom,camera"),
	CLK_LOOKUP("cam_clk", gcc_gp1_clk.c, "2.qcom,camera"),
	CLK_LOOKUP("cam_clk", camss_gp1_clk.c, "1.qcom,camera"),
};

static struct clk_lookup msm_clocks_8974_common[] __initdata = {
+0 −11
Original line number Diff line number Diff line
@@ -37,12 +37,6 @@ enum msm_bus_perf_setting {
	S_EXIT
};

enum cci_i2c_master_t {
	MASTER_0,
	MASTER_1,
	MASTER_MAX,
};

struct msm_camera_slave_info {
	uint16_t sensor_slave_addr;
	uint16_t sensor_id_reg_addr;
@@ -84,14 +78,9 @@ struct msm_camera_sensor_board_info {
	const char *sensor_name;
	struct msm_camera_slave_info *slave_info;
	struct msm_camera_csi_lane_params *csi_lane_params;
	struct camera_vreg_t *cam_vreg;
	int num_vreg;
	struct msm_camera_sensor_strobe_flash_data *strobe_flash_data;
	struct msm_camera_gpio_conf *gpio_conf;
	struct msm_actuator_info *actuator_info;
	struct msm_camera_i2c_conf *i2c_conf;
	struct msm_sensor_info_t *sensor_info;
	struct msm_sensor_init_params *sensor_init_params;
	const char *misc_regulator;
	struct msm_camera_power_ctrl_t power_info;
};
+1 −1
Original line number Diff line number Diff line
@@ -4,7 +4,7 @@ ccflags-y += -Idrivers/media/platform/msm/camera_v2/camera
ccflags-y += -Idrivers/media/platform/msm/camera_v2/sensor/io
ccflags-y += -Idrivers/media/platform/msm/camera_v2/sensor/cci
obj-$(CONFIG_MSMB_CAMERA) += cci/ io/ csiphy/ csid/ actuator/ flash/ eeprom/
obj-$(CONFIG_MSM_CAMERA_SENSOR) += msm_sensor.o
obj-$(CONFIG_MSM_CAMERA_SENSOR) += msm_sensor_init.o msm_sensor_driver.o msm_sensor.o
obj-$(CONFIG_S5K3L1YX) += s5k3l1yx.o
obj-$(CONFIG_IMX135) += imx135.o
obj-$(CONFIG_IMX132) += imx132.o
Loading