/**
 * hp3a_enable_histogram - Enables histogram harware.
 *
 * No return value.
 **/
void hp3a_enable_histogram(void)
{
	struct hp3a_internal_buffer *ibuffer;

	if (unlikely(g_tc.hist_hw_configured == 0))
		return;

	if (hp3a_dequeue(&g_tc.hist_stat_queue, &ibuffer) == 0) {
		if (g_tc.hist_hw_enable == 0) {
			/* Write histogram hardware registers. */
			hp3a_write_ispregs(isp_hist_regs);
			omap_writel(IRQ0STATUS_HIST_DONE_IRQ,
				ISP_IRQ0STATUS);
			/* Enable histogram hardware. */
			omap_writel(omap_readl(ISPHIST_PCR) | \
				(ISPHIST_PCR_EN), ISPHIST_PCR);

			g_tc.hist_hw_enable = 1;
			g_tc.hist_done = 0;
		}

		ibuffer->type = HISTOGRAM;
		hp3a_enqueue(&g_tc.hist_hw_queue, &ibuffer);
		hp3a_enqueue(&g_tc.ready_stats_queue, &ibuffer);
	} else if (g_tc.hist_hw_enable == 1) {
		g_tc.hist_hw_enable = 0;
		omap_writel(omap_readl(ISPHIST_PCR) & \
			~(ISPHIST_PCR_EN), ISPHIST_PCR);
	}
}
Ejemplo n.º 2
0
/**
 * hp3a_disable_raw - Disables raw statistics collection.
 *
 * No return value.
 **/
void hp3a_disable_raw(void)
{
	if (likely(g_tc.isp_ctx_saved == 1)) {
		/* Restore ISP registers. */
		hp3a_write_ispregs(isp_raw_regs);
		g_tc.isp_ctx_saved = 0;
	}
}