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

Commit 56bc911a authored by Sylwester Nawrocki's avatar Sylwester Nawrocki Committed by Mauro Carvalho Chehab
Browse files

[media] s5p-fimc: Redefine platform data structure for fimc-is



Newer Exynos4 SoC are equipped with a local camera ISP that
controls external raw image sensor directly. Such sensors
can be connected through FIMC-LITEn (and MIPI-CSISn) IPs to
the ISP, which then feeds image data to the FIMCn IP. Thus
there can be two busses associated with an image source
(sensor). Rename struct s5p_fimc_isp_info describing external
image sensor (video decoder) to struct fimc_source_info to
avoid confusion. bus_type is split into fimc_bus_type and
sensor_bus_type. The bus type enumeration is extended to
include both FIMC Writeback input types.
The bus_type enumeration and the data structure name in the
board files are modified according to the above changes.

Signed-off-by: default avatarSylwester Nawrocki <s.nawrocki@samsung.com>
Signed-off-by: default avatarKyungmin Park <kyungmin.park@samsung.com>
Acked-by: default avatarKukjin Kim <kgene.kim@samsung.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent b84ef24e
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -1209,25 +1209,25 @@ static struct i2c_board_info m5mols_board_info = {
	.platform_data	= &m5mols_platdata,
};

static struct s5p_fimc_isp_info nuri_camera_sensors[] = {
static struct fimc_source_info nuri_camera_sensors[] = {
	{
		.flags		= V4L2_MBUS_PCLK_SAMPLE_RISING |
				  V4L2_MBUS_VSYNC_ACTIVE_LOW,
		.bus_type	= FIMC_ITU_601,
		.fimc_bus_type	= FIMC_BUS_TYPE_ITU_601,
		.board_info	= &s5k6aa_board_info,
		.clk_frequency	= 24000000UL,
		.i2c_bus_num	= 6,
	}, {
		.flags		= V4L2_MBUS_PCLK_SAMPLE_FALLING |
				  V4L2_MBUS_VSYNC_ACTIVE_LOW,
		.bus_type	= FIMC_MIPI_CSI2,
		.fimc_bus_type	= FIMC_BUS_TYPE_MIPI_CSI2,
		.board_info	= &m5mols_board_info,
		.clk_frequency	= 24000000UL,
	},
};

static struct s5p_platform_fimc fimc_md_platdata = {
	.isp_info	= nuri_camera_sensors,
	.source_info	= nuri_camera_sensors,
	.num_clients	= ARRAY_SIZE(nuri_camera_sensors),
};

+4 −4
Original line number Diff line number Diff line
@@ -988,12 +988,12 @@ static struct i2c_board_info m5mols_board_info = {
	.platform_data = &m5mols_platdata,
};

static struct s5p_fimc_isp_info universal_camera_sensors[] = {
static struct fimc_source_info universal_camera_sensors[] = {
	{
		.mux_id		= 0,
		.flags		= V4L2_MBUS_PCLK_SAMPLE_FALLING |
				  V4L2_MBUS_VSYNC_ACTIVE_LOW,
		.bus_type	= FIMC_ITU_601,
		.fimc_bus_type	= FIMC_BUS_TYPE_ITU_601,
		.board_info	= &s5k6aa_board_info,
		.i2c_bus_num	= 0,
		.clk_frequency	= 24000000UL,
@@ -1001,7 +1001,7 @@ static struct s5p_fimc_isp_info universal_camera_sensors[] = {
		.mux_id		= 0,
		.flags		= V4L2_MBUS_PCLK_SAMPLE_FALLING |
				  V4L2_MBUS_VSYNC_ACTIVE_LOW,
		.bus_type	= FIMC_MIPI_CSI2,
		.fimc_bus_type	= FIMC_BUS_TYPE_MIPI_CSI2,
		.board_info	= &m5mols_board_info,
		.i2c_bus_num	= 0,
		.clk_frequency	= 24000000UL,
@@ -1009,7 +1009,7 @@ static struct s5p_fimc_isp_info universal_camera_sensors[] = {
};

static struct s5p_platform_fimc fimc_md_platdata = {
	.isp_info	= universal_camera_sensors,
	.source_info	= universal_camera_sensors,
	.num_clients	= ARRAY_SIZE(universal_camera_sensors),
};

+3 −3
Original line number Diff line number Diff line
@@ -841,12 +841,12 @@ static struct i2c_board_info noon010pc30_board_info = {
	.platform_data = &noon010pc30_pldata,
};

static struct s5p_fimc_isp_info goni_camera_sensors[] = {
static struct fimc_source_info goni_camera_sensors[] = {
	{
		.mux_id		= 0,
		.flags		= V4L2_MBUS_PCLK_SAMPLE_FALLING |
				  V4L2_MBUS_VSYNC_ACTIVE_LOW,
		.bus_type	= FIMC_ITU_601,
		.bus_type	= FIMC_BUS_TYPE_ITU_601,
		.board_info	= &noon010pc30_board_info,
		.i2c_bus_num	= 0,
		.clk_frequency	= 16000000UL,
@@ -854,7 +854,7 @@ static struct s5p_fimc_isp_info goni_camera_sensors[] = {
};

static struct s5p_platform_fimc goni_fimc_md_platdata __initdata = {
	.isp_info	= goni_camera_sensors,
	.source_info	= goni_camera_sensors,
	.num_clients	= ARRAY_SIZE(goni_camera_sensors),
};

+4 −4
Original line number Diff line number Diff line
@@ -187,12 +187,12 @@ static void flite_hw_set_camera_port(struct fimc_lite *dev, int id)

/* Select serial or parallel bus, camera port (A,B) and set signals polarity */
void flite_hw_set_camera_bus(struct fimc_lite *dev,
			     struct s5p_fimc_isp_info *s_info)
			     struct fimc_source_info *si)
{
	u32 cfg = readl(dev->regs + FLITE_REG_CIGCTRL);
	unsigned int flags = s_info->flags;
	unsigned int flags = si->flags;

	if (s_info->bus_type != FIMC_MIPI_CSI2) {
	if (si->sensor_bus_type != FIMC_BUS_TYPE_MIPI_CSI2) {
		cfg &= ~(FLITE_REG_CIGCTRL_SELCAM_MIPI |
			 FLITE_REG_CIGCTRL_INVPOLPCLK |
			 FLITE_REG_CIGCTRL_INVPOLVSYNC |
@@ -212,7 +212,7 @@ void flite_hw_set_camera_bus(struct fimc_lite *dev,

	writel(cfg, dev->regs + FLITE_REG_CIGCTRL);

	flite_hw_set_camera_port(dev, s_info->mux_id);
	flite_hw_set_camera_port(dev, si->mux_id);
}

static void flite_hw_set_out_order(struct fimc_lite *dev, struct flite_frame *f)
+2 −2
Original line number Diff line number Diff line
@@ -131,9 +131,9 @@ void flite_hw_set_interrupt_mask(struct fimc_lite *dev);
void flite_hw_capture_start(struct fimc_lite *dev);
void flite_hw_capture_stop(struct fimc_lite *dev);
void flite_hw_set_camera_bus(struct fimc_lite *dev,
			     struct s5p_fimc_isp_info *s_info);
			     struct fimc_source_info *s_info);
void flite_hw_set_camera_polarity(struct fimc_lite *dev,
				  struct s5p_fimc_isp_info *cam);
				  struct fimc_source_info *cam);
void flite_hw_set_window_offset(struct fimc_lite *dev, struct flite_frame *f);
void flite_hw_set_source_format(struct fimc_lite *dev, struct flite_frame *f);

Loading