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

Commit c6c01f97 authored by Sakari Ailus's avatar Sakari Ailus Committed by Mauro Carvalho Chehab
Browse files

[media] omap3isp: Use external rate instead of vpcfg



Access pipe->external_rate instead of isp_ccdc.vpcfg.pixelclk. Also remove
means to set the value for isp_ccdc_vpcfg.pixelclk.

Signed-off-by: default avatarSakari Ailus <sakari.ailus@iki.fi>
Acked-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent ccddd916
Loading
Loading
Loading
Loading
+0 −14
Original line number Diff line number Diff line
@@ -329,19 +329,6 @@ void omap3isp_configure_bridge(struct isp_device *isp,
	isp_reg_writel(isp, ispctrl_val, OMAP3_ISP_IOMEM_MAIN, ISP_CTRL);
}

/**
 * isp_set_pixel_clock - Configures the ISP pixel clock
 * @isp: OMAP3 ISP device
 * @pixelclk: Average pixel clock in Hz
 *
 * Set the average pixel clock required by the sensor. The ISP will use the
 * lowest possible memory bandwidth settings compatible with the clock.
 **/
static void isp_set_pixel_clock(struct isp_device *isp, unsigned int pixelclk)
{
	isp->isp_ccdc.vpcfg.pixelclk = pixelclk;
}

void omap3isp_hist_dma_done(struct isp_device *isp)
{
	if (omap3isp_ccdc_busy(&isp->isp_ccdc) ||
@@ -2077,7 +2064,6 @@ static int __devinit isp_probe(struct platform_device *pdev)

	isp->autoidle = autoidle;
	isp->platform_cb.set_xclk = isp_set_xclk;
	isp->platform_cb.set_pixel_clock = isp_set_pixel_clock;

	mutex_init(&isp->isp_mutex);
	spin_lock_init(&isp->stat_lock);
+0 −1
Original line number Diff line number Diff line
@@ -129,7 +129,6 @@ struct isp_platform_callback {
	int (*csiphy_config)(struct isp_csiphy *phy,
			     struct isp_csiphy_dphy_cfg *dphy,
			     struct isp_csiphy_lanes_cfg *lanes);
	void (*set_pixel_clock)(struct isp_device *isp, unsigned int pixelclk);
};

/*
+2 −4
Original line number Diff line number Diff line
@@ -839,8 +839,8 @@ static void ccdc_config_vp(struct isp_ccdc_device *ccdc)

	if (pipe->input)
		div = DIV_ROUND_UP(l3_ick, pipe->max_rate);
	else if (ccdc->vpcfg.pixelclk)
		div = l3_ick / ccdc->vpcfg.pixelclk;
	else if (pipe->external_rate)
		div = l3_ick / pipe->external_rate;

	div = clamp(div, 2U, max_div);
	fmtcfg_vp |= (div - 2) << ISPCCDC_FMTCFG_VPIF_FRQ_SHIFT;
@@ -2433,8 +2433,6 @@ int omap3isp_ccdc_init(struct isp_device *isp)
	ccdc->clamp.oblen = 0;
	ccdc->clamp.dcsubval = 0;

	ccdc->vpcfg.pixelclk = 0;

	ccdc->update = OMAP3ISP_CCDC_BLCLAMP;
	ccdc_apply_controls(ccdc);

+0 −10
Original line number Diff line number Diff line
@@ -80,14 +80,6 @@ struct ispccdc_syncif {
	u8 bt_r656_en;
};

/*
 * struct ispccdc_vp - Structure for Video Port parameters
 * @pixelclk: Input pixel clock in Hz
 */
struct ispccdc_vp {
	unsigned int pixelclk;
};

enum ispccdc_lsc_state {
	LSC_STATE_STOPPED = 0,
	LSC_STATE_STOPPING = 1,
@@ -162,7 +154,6 @@ struct ispccdc_lsc {
 * @update: Bitmask of controls to update during the next interrupt
 * @shadow_update: Controls update in progress by userspace
 * @syncif: Interface synchronization configuration
 * @vpcfg: Video port configuration
 * @underrun: A buffer underrun occurred and a new buffer has been queued
 * @state: Streaming state
 * @lock: Serializes shadow_update with interrupt handler
@@ -192,7 +183,6 @@ struct isp_ccdc_device {
	unsigned int shadow_update;

	struct ispccdc_syncif syncif;
	struct ispccdc_vp vpcfg;

	unsigned int underrun:1;
	enum isp_pipeline_stream_state state;
+1 −1
Original line number Diff line number Diff line
@@ -352,7 +352,7 @@ static int isp_video_validate_pipeline(struct isp_pipeline *pipe)
			unsigned int rate = UINT_MAX;

			omap3isp_ccdc_max_rate(&isp->isp_ccdc, &rate);
			if (isp->isp_ccdc.vpcfg.pixelclk > rate)
			if (pipe->external_rate > rate)
				return -ENOSPC;
		}