[media] s5p-jpeg: Split jpeg-hw.h to jpeg-hw-s5p.c and jpeg-hw-s5p.c

Move function definitions from jpeg-hw.h to jpeg-hw-s5p.c,
add "s5p" prefix and put function declarations in the jpeg-hw-s5p.h.

Signed-off-by: Jacek Anaszewski <j.anaszewski@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
This commit is contained in:
Jacek Anaszewski 2013-12-18 09:32:50 -03:00 committed by Mauro Carvalho Chehab
parent 5313ba662b
commit 9f7b62d9f9
5 changed files with 154 additions and 97 deletions

View file

@ -1,2 +1,2 @@
s5p-jpeg-objs := jpeg-core.o
s5p-jpeg-objs := jpeg-core.o jpeg-hw-s5p.o
obj-$(CONFIG_VIDEO_SAMSUNG_S5P_JPEG) += s5p-jpeg.o

View file

@ -29,7 +29,7 @@
#include <media/videobuf2-dma-contig.h>
#include "jpeg-core.h"
#include "jpeg-hw.h"
#include "jpeg-hw-s5p.h"
static struct s5p_jpeg_fmt formats_enc[] = {
{
@ -951,34 +951,36 @@ static void s5p_jpeg_device_run(void *priv)
src_addr = vb2_dma_contig_plane_dma_addr(src_buf, 0);
dst_addr = vb2_dma_contig_plane_dma_addr(dst_buf, 0);
jpeg_reset(jpeg->regs);
jpeg_poweron(jpeg->regs);
jpeg_proc_mode(jpeg->regs, ctx->mode);
s5p_jpeg_reset(jpeg->regs);
s5p_jpeg_poweron(jpeg->regs);
s5p_jpeg_proc_mode(jpeg->regs, ctx->mode);
if (ctx->mode == S5P_JPEG_ENCODE) {
if (ctx->out_q.fmt->fourcc == V4L2_PIX_FMT_RGB565)
jpeg_input_raw_mode(jpeg->regs, S5P_JPEG_RAW_IN_565);
s5p_jpeg_input_raw_mode(jpeg->regs,
S5P_JPEG_RAW_IN_565);
else
jpeg_input_raw_mode(jpeg->regs, S5P_JPEG_RAW_IN_422);
jpeg_subsampling_mode(jpeg->regs, ctx->subsampling);
jpeg_dri(jpeg->regs, ctx->restart_interval);
jpeg_x(jpeg->regs, ctx->out_q.w);
jpeg_y(jpeg->regs, ctx->out_q.h);
jpeg_imgadr(jpeg->regs, src_addr);
jpeg_jpgadr(jpeg->regs, dst_addr);
s5p_jpeg_input_raw_mode(jpeg->regs,
S5P_JPEG_RAW_IN_422);
s5p_jpeg_subsampling_mode(jpeg->regs, ctx->subsampling);
s5p_jpeg_dri(jpeg->regs, ctx->restart_interval);
s5p_jpeg_x(jpeg->regs, ctx->out_q.w);
s5p_jpeg_y(jpeg->regs, ctx->out_q.h);
s5p_jpeg_imgadr(jpeg->regs, src_addr);
s5p_jpeg_jpgadr(jpeg->regs, dst_addr);
/* ultimately comes from sizeimage from userspace */
jpeg_enc_stream_int(jpeg->regs, ctx->cap_q.size);
s5p_jpeg_enc_stream_int(jpeg->regs, ctx->cap_q.size);
/* JPEG RGB to YCbCr conversion matrix */
jpeg_coef(jpeg->regs, 1, 1, S5P_JPEG_COEF11);
jpeg_coef(jpeg->regs, 1, 2, S5P_JPEG_COEF12);
jpeg_coef(jpeg->regs, 1, 3, S5P_JPEG_COEF13);
jpeg_coef(jpeg->regs, 2, 1, S5P_JPEG_COEF21);
jpeg_coef(jpeg->regs, 2, 2, S5P_JPEG_COEF22);
jpeg_coef(jpeg->regs, 2, 3, S5P_JPEG_COEF23);
jpeg_coef(jpeg->regs, 3, 1, S5P_JPEG_COEF31);
jpeg_coef(jpeg->regs, 3, 2, S5P_JPEG_COEF32);
jpeg_coef(jpeg->regs, 3, 3, S5P_JPEG_COEF33);
s5p_jpeg_coef(jpeg->regs, 1, 1, S5P_JPEG_COEF11);
s5p_jpeg_coef(jpeg->regs, 1, 2, S5P_JPEG_COEF12);
s5p_jpeg_coef(jpeg->regs, 1, 3, S5P_JPEG_COEF13);
s5p_jpeg_coef(jpeg->regs, 2, 1, S5P_JPEG_COEF21);
s5p_jpeg_coef(jpeg->regs, 2, 2, S5P_JPEG_COEF22);
s5p_jpeg_coef(jpeg->regs, 2, 3, S5P_JPEG_COEF23);
s5p_jpeg_coef(jpeg->regs, 3, 1, S5P_JPEG_COEF31);
s5p_jpeg_coef(jpeg->regs, 3, 2, S5P_JPEG_COEF32);
s5p_jpeg_coef(jpeg->regs, 3, 3, S5P_JPEG_COEF33);
/*
* JPEG IP allows storing 4 quantization tables
@ -987,31 +989,31 @@ static void s5p_jpeg_device_run(void *priv)
s5p_jpeg_set_qtbl_lum(jpeg->regs, ctx->compr_quality);
s5p_jpeg_set_qtbl_chr(jpeg->regs, ctx->compr_quality);
/* use table 0 for Y */
jpeg_qtbl(jpeg->regs, 1, 0);
s5p_jpeg_qtbl(jpeg->regs, 1, 0);
/* use table 1 for Cb and Cr*/
jpeg_qtbl(jpeg->regs, 2, 1);
jpeg_qtbl(jpeg->regs, 3, 1);
s5p_jpeg_qtbl(jpeg->regs, 2, 1);
s5p_jpeg_qtbl(jpeg->regs, 3, 1);
/* Y, Cb, Cr use Huffman table 0 */
jpeg_htbl_ac(jpeg->regs, 1);
jpeg_htbl_dc(jpeg->regs, 1);
jpeg_htbl_ac(jpeg->regs, 2);
jpeg_htbl_dc(jpeg->regs, 2);
jpeg_htbl_ac(jpeg->regs, 3);
jpeg_htbl_dc(jpeg->regs, 3);
s5p_jpeg_htbl_ac(jpeg->regs, 1);
s5p_jpeg_htbl_dc(jpeg->regs, 1);
s5p_jpeg_htbl_ac(jpeg->regs, 2);
s5p_jpeg_htbl_dc(jpeg->regs, 2);
s5p_jpeg_htbl_ac(jpeg->regs, 3);
s5p_jpeg_htbl_dc(jpeg->regs, 3);
} else { /* S5P_JPEG_DECODE */
jpeg_rst_int_enable(jpeg->regs, true);
jpeg_data_num_int_enable(jpeg->regs, true);
jpeg_final_mcu_num_int_enable(jpeg->regs, true);
s5p_jpeg_rst_int_enable(jpeg->regs, true);
s5p_jpeg_data_num_int_enable(jpeg->regs, true);
s5p_jpeg_final_mcu_num_int_enable(jpeg->regs, true);
if (ctx->cap_q.fmt->fourcc == V4L2_PIX_FMT_YUYV)
jpeg_outform_raw(jpeg->regs, S5P_JPEG_RAW_OUT_422);
s5p_jpeg_outform_raw(jpeg->regs, S5P_JPEG_RAW_OUT_422);
else
jpeg_outform_raw(jpeg->regs, S5P_JPEG_RAW_OUT_420);
jpeg_jpgadr(jpeg->regs, src_addr);
jpeg_imgadr(jpeg->regs, dst_addr);
s5p_jpeg_outform_raw(jpeg->regs, S5P_JPEG_RAW_OUT_420);
s5p_jpeg_jpgadr(jpeg->regs, src_addr);
s5p_jpeg_imgadr(jpeg->regs, dst_addr);
}
jpeg_start(jpeg->regs);
s5p_jpeg_start(jpeg->regs);
spin_unlock_irqrestore(&ctx->jpeg->slock, flags);
}
@ -1203,22 +1205,23 @@ static irqreturn_t s5p_jpeg_irq(int irq, void *dev_id)
dst_buf = v4l2_m2m_dst_buf_remove(curr_ctx->fh.m2m_ctx);
if (curr_ctx->mode == S5P_JPEG_ENCODE)
enc_jpeg_too_large = jpeg_enc_stream_stat(jpeg->regs);
timer_elapsed = jpeg_timer_stat(jpeg->regs);
op_completed = jpeg_result_stat_ok(jpeg->regs);
enc_jpeg_too_large = s5p_jpeg_enc_stream_stat(jpeg->regs);
timer_elapsed = s5p_jpeg_timer_stat(jpeg->regs);
op_completed = s5p_jpeg_result_stat_ok(jpeg->regs);
if (curr_ctx->mode == S5P_JPEG_DECODE)
op_completed = op_completed && jpeg_stream_stat_ok(jpeg->regs);
op_completed = op_completed &&
s5p_jpeg_stream_stat_ok(jpeg->regs);
if (enc_jpeg_too_large) {
state = VB2_BUF_STATE_ERROR;
jpeg_clear_enc_stream_stat(jpeg->regs);
s5p_jpeg_clear_enc_stream_stat(jpeg->regs);
} else if (timer_elapsed) {
state = VB2_BUF_STATE_ERROR;
jpeg_clear_timer_stat(jpeg->regs);
s5p_jpeg_clear_timer_stat(jpeg->regs);
} else if (!op_completed) {
state = VB2_BUF_STATE_ERROR;
} else {
payload_size = jpeg_compressed_size(jpeg->regs);
payload_size = s5p_jpeg_compressed_size(jpeg->regs);
}
dst_buf->v4l2_buf.timecode = src_buf->v4l2_buf.timecode;
@ -1230,10 +1233,10 @@ static irqreturn_t s5p_jpeg_irq(int irq, void *dev_id)
v4l2_m2m_buf_done(dst_buf, state);
v4l2_m2m_job_finish(jpeg->m2m_dev, curr_ctx->fh.m2m_ctx);
curr_ctx->subsampling = jpeg_get_subsampling_mode(jpeg->regs);
curr_ctx->subsampling = s5p_jpeg_get_subsampling_mode(jpeg->regs);
spin_unlock(&jpeg->slock);
jpeg_clear_int(jpeg->regs);
s5p_jpeg_clear_int(jpeg->regs);
return IRQ_HANDLED;
}

View file

@ -42,10 +42,15 @@
#define EOI 0xd9
#define DHP 0xde
#define S5P_JPEG_ENCODE 0
#define S5P_JPEG_DECODE 1
/* Flags that indicate a format can be used for capture/output */
#define MEM2MEM_CAPTURE (1 << 0)
#define MEM2MEM_OUTPUT (1 << 1)
/**
* struct s5p_jpeg - JPEG IP abstraction
* @lock: the mutex protecting this structure

View file

@ -9,27 +9,15 @@
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#ifndef JPEG_HW_H_
#define JPEG_HW_H_
#include <linux/io.h>
#include <linux/videodev2.h>
#include "jpeg-hw.h"
#include "jpeg-core.h"
#include "jpeg-regs.h"
#include "jpeg-hw-s5p.h"
#define S5P_JPEG_MIN_WIDTH 32
#define S5P_JPEG_MIN_HEIGHT 32
#define S5P_JPEG_MAX_WIDTH 8192
#define S5P_JPEG_MAX_HEIGHT 8192
#define S5P_JPEG_ENCODE 0
#define S5P_JPEG_DECODE 1
#define S5P_JPEG_RAW_IN_565 0
#define S5P_JPEG_RAW_IN_422 1
#define S5P_JPEG_RAW_OUT_422 0
#define S5P_JPEG_RAW_OUT_420 1
static inline void jpeg_reset(void __iomem *regs)
void s5p_jpeg_reset(void __iomem *regs)
{
unsigned long reg;
@ -42,12 +30,12 @@ static inline void jpeg_reset(void __iomem *regs)
}
}
static inline void jpeg_poweron(void __iomem *regs)
void s5p_jpeg_poweron(void __iomem *regs)
{
writel(S5P_POWER_ON, regs + S5P_JPGCLKCON);
}
static inline void jpeg_input_raw_mode(void __iomem *regs, unsigned long mode)
void s5p_jpeg_input_raw_mode(void __iomem *regs, unsigned long mode)
{
unsigned long reg, m;
@ -63,7 +51,7 @@ static inline void jpeg_input_raw_mode(void __iomem *regs, unsigned long mode)
writel(reg, regs + S5P_JPGCMOD);
}
static inline void jpeg_input_raw_y16(void __iomem *regs, bool y16)
void s5p_jpeg_input_raw_y16(void __iomem *regs, bool y16)
{
unsigned long reg;
@ -75,7 +63,7 @@ static inline void jpeg_input_raw_y16(void __iomem *regs, bool y16)
writel(reg, regs + S5P_JPGCMOD);
}
static inline void jpeg_proc_mode(void __iomem *regs, unsigned long mode)
void s5p_jpeg_proc_mode(void __iomem *regs, unsigned long mode)
{
unsigned long reg, m;
@ -90,7 +78,7 @@ static inline void jpeg_proc_mode(void __iomem *regs, unsigned long mode)
writel(reg, regs + S5P_JPGMOD);
}
static inline void jpeg_subsampling_mode(void __iomem *regs, unsigned int mode)
void s5p_jpeg_subsampling_mode(void __iomem *regs, unsigned int mode)
{
unsigned long reg, m;
@ -105,12 +93,12 @@ static inline void jpeg_subsampling_mode(void __iomem *regs, unsigned int mode)
writel(reg, regs + S5P_JPGMOD);
}
static inline unsigned int jpeg_get_subsampling_mode(void __iomem *regs)
unsigned int s5p_jpeg_get_subsampling_mode(void __iomem *regs)
{
return readl(regs + S5P_JPGMOD) & S5P_SUBSAMPLING_MODE_MASK;
}
static inline void jpeg_dri(void __iomem *regs, unsigned int dri)
void s5p_jpeg_dri(void __iomem *regs, unsigned int dri)
{
unsigned long reg;
@ -125,7 +113,7 @@ static inline void jpeg_dri(void __iomem *regs, unsigned int dri)
writel(reg, regs + S5P_JPGDRI_L);
}
static inline void jpeg_qtbl(void __iomem *regs, unsigned int t, unsigned int n)
void s5p_jpeg_qtbl(void __iomem *regs, unsigned int t, unsigned int n)
{
unsigned long reg;
@ -135,7 +123,7 @@ static inline void jpeg_qtbl(void __iomem *regs, unsigned int t, unsigned int n)
writel(reg, regs + S5P_JPG_QTBL);
}
static inline void jpeg_htbl_ac(void __iomem *regs, unsigned int t)
void s5p_jpeg_htbl_ac(void __iomem *regs, unsigned int t)
{
unsigned long reg;
@ -146,7 +134,7 @@ static inline void jpeg_htbl_ac(void __iomem *regs, unsigned int t)
writel(reg, regs + S5P_JPG_HTBL);
}
static inline void jpeg_htbl_dc(void __iomem *regs, unsigned int t)
void s5p_jpeg_htbl_dc(void __iomem *regs, unsigned int t)
{
unsigned long reg;
@ -157,7 +145,7 @@ static inline void jpeg_htbl_dc(void __iomem *regs, unsigned int t)
writel(reg, regs + S5P_JPG_HTBL);
}
static inline void jpeg_y(void __iomem *regs, unsigned int y)
void s5p_jpeg_y(void __iomem *regs, unsigned int y)
{
unsigned long reg;
@ -172,7 +160,7 @@ static inline void jpeg_y(void __iomem *regs, unsigned int y)
writel(reg, regs + S5P_JPGY_L);
}
static inline void jpeg_x(void __iomem *regs, unsigned int x)
void s5p_jpeg_x(void __iomem *regs, unsigned int x)
{
unsigned long reg;
@ -187,7 +175,7 @@ static inline void jpeg_x(void __iomem *regs, unsigned int x)
writel(reg, regs + S5P_JPGX_L);
}
static inline void jpeg_rst_int_enable(void __iomem *regs, bool enable)
void s5p_jpeg_rst_int_enable(void __iomem *regs, bool enable)
{
unsigned long reg;
@ -198,7 +186,7 @@ static inline void jpeg_rst_int_enable(void __iomem *regs, bool enable)
writel(reg, regs + S5P_JPGINTSE);
}
static inline void jpeg_data_num_int_enable(void __iomem *regs, bool enable)
void s5p_jpeg_data_num_int_enable(void __iomem *regs, bool enable)
{
unsigned long reg;
@ -209,7 +197,7 @@ static inline void jpeg_data_num_int_enable(void __iomem *regs, bool enable)
writel(reg, regs + S5P_JPGINTSE);
}
static inline void jpeg_final_mcu_num_int_enable(void __iomem *regs, bool enbl)
void s5p_jpeg_final_mcu_num_int_enable(void __iomem *regs, bool enbl)
{
unsigned long reg;
@ -220,7 +208,7 @@ static inline void jpeg_final_mcu_num_int_enable(void __iomem *regs, bool enbl)
writel(reg, regs + S5P_JPGINTSE);
}
static inline void jpeg_timer_enable(void __iomem *regs, unsigned long val)
void s5p_jpeg_timer_enable(void __iomem *regs, unsigned long val)
{
unsigned long reg;
@ -231,7 +219,7 @@ static inline void jpeg_timer_enable(void __iomem *regs, unsigned long val)
writel(reg, regs + S5P_JPG_TIMER_SE);
}
static inline void jpeg_timer_disable(void __iomem *regs)
void s5p_jpeg_timer_disable(void __iomem *regs)
{
unsigned long reg;
@ -240,13 +228,13 @@ static inline void jpeg_timer_disable(void __iomem *regs)
writel(reg, regs + S5P_JPG_TIMER_SE);
}
static inline int jpeg_timer_stat(void __iomem *regs)
int s5p_jpeg_timer_stat(void __iomem *regs)
{
return (int)((readl(regs + S5P_JPG_TIMER_ST) & S5P_TIMER_INT_STAT_MASK)
>> S5P_TIMER_INT_STAT_SHIFT);
}
static inline void jpeg_clear_timer_stat(void __iomem *regs)
void s5p_jpeg_clear_timer_stat(void __iomem *regs)
{
unsigned long reg;
@ -255,7 +243,7 @@ static inline void jpeg_clear_timer_stat(void __iomem *regs)
writel(reg, regs + S5P_JPG_TIMER_SE);
}
static inline void jpeg_enc_stream_int(void __iomem *regs, unsigned long size)
void s5p_jpeg_enc_stream_int(void __iomem *regs, unsigned long size)
{
unsigned long reg;
@ -266,13 +254,13 @@ static inline void jpeg_enc_stream_int(void __iomem *regs, unsigned long size)
writel(reg, regs + S5P_JPG_ENC_STREAM_INTSE);
}
static inline int jpeg_enc_stream_stat(void __iomem *regs)
int s5p_jpeg_enc_stream_stat(void __iomem *regs)
{
return (int)(readl(regs + S5P_JPG_ENC_STREAM_INTST) &
S5P_ENC_STREAM_INT_STAT_MASK);
}
static inline void jpeg_clear_enc_stream_stat(void __iomem *regs)
void s5p_jpeg_clear_enc_stream_stat(void __iomem *regs)
{
unsigned long reg;
@ -281,7 +269,7 @@ static inline void jpeg_clear_enc_stream_stat(void __iomem *regs)
writel(reg, regs + S5P_JPG_ENC_STREAM_INTSE);
}
static inline void jpeg_outform_raw(void __iomem *regs, unsigned long format)
void s5p_jpeg_outform_raw(void __iomem *regs, unsigned long format)
{
unsigned long reg, f;
@ -296,17 +284,17 @@ static inline void jpeg_outform_raw(void __iomem *regs, unsigned long format)
writel(reg, regs + S5P_JPG_OUTFORM);
}
static inline void jpeg_jpgadr(void __iomem *regs, unsigned long addr)
void s5p_jpeg_jpgadr(void __iomem *regs, unsigned long addr)
{
writel(addr, regs + S5P_JPG_JPGADR);
}
static inline void jpeg_imgadr(void __iomem *regs, unsigned long addr)
void s5p_jpeg_imgadr(void __iomem *regs, unsigned long addr)
{
writel(addr, regs + S5P_JPG_IMGADR);
}
static inline void jpeg_coef(void __iomem *regs, unsigned int i,
void s5p_jpeg_coef(void __iomem *regs, unsigned int i,
unsigned int j, unsigned int coef)
{
unsigned long reg;
@ -317,24 +305,24 @@ static inline void jpeg_coef(void __iomem *regs, unsigned int i,
writel(reg, regs + S5P_JPG_COEF(i));
}
static inline void jpeg_start(void __iomem *regs)
void s5p_jpeg_start(void __iomem *regs)
{
writel(1, regs + S5P_JSTART);
}
static inline int jpeg_result_stat_ok(void __iomem *regs)
int s5p_jpeg_result_stat_ok(void __iomem *regs)
{
return (int)((readl(regs + S5P_JPGINTST) & S5P_RESULT_STAT_MASK)
>> S5P_RESULT_STAT_SHIFT);
}
static inline int jpeg_stream_stat_ok(void __iomem *regs)
int s5p_jpeg_stream_stat_ok(void __iomem *regs)
{
return !(int)((readl(regs + S5P_JPGINTST) & S5P_STREAM_STAT_MASK)
>> S5P_STREAM_STAT_SHIFT);
}
static inline void jpeg_clear_int(void __iomem *regs)
void s5p_jpeg_clear_int(void __iomem *regs)
{
unsigned long reg;
@ -343,7 +331,7 @@ static inline void jpeg_clear_int(void __iomem *regs)
reg = readl(regs + S5P_JPGOPR);
}
static inline unsigned int jpeg_compressed_size(void __iomem *regs)
unsigned int s5p_jpeg_compressed_size(void __iomem *regs)
{
unsigned long jpeg_size = 0;
@ -353,5 +341,3 @@ static inline unsigned int jpeg_compressed_size(void __iomem *regs)
return (unsigned int)jpeg_size;
}
#endif /* JPEG_HW_H_ */

View file

@ -0,0 +1,63 @@
/* linux/drivers/media/platform/s5p-jpeg/jpeg-hw.h
*
* Copyright (c) 2011 Samsung Electronics Co., Ltd.
* http://www.samsung.com
*
* Author: Andrzej Pietrasiewicz <andrzej.p@samsung.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#ifndef JPEG_HW_S5P_H_
#define JPEG_HW_S5P_H_
#include <linux/io.h>
#include <linux/videodev2.h>
#include "jpeg-regs.h"
#define S5P_JPEG_MIN_WIDTH 32
#define S5P_JPEG_MIN_HEIGHT 32
#define S5P_JPEG_MAX_WIDTH 8192
#define S5P_JPEG_MAX_HEIGHT 8192
#define S5P_JPEG_RAW_IN_565 0
#define S5P_JPEG_RAW_IN_422 1
#define S5P_JPEG_RAW_OUT_422 0
#define S5P_JPEG_RAW_OUT_420 1
void s5p_jpeg_reset(void __iomem *regs);
void s5p_jpeg_poweron(void __iomem *regs);
void s5p_jpeg_input_raw_mode(void __iomem *regs, unsigned long mode);
void s5p_jpeg_input_raw_y16(void __iomem *regs, bool y16);
void s5p_jpeg_proc_mode(void __iomem *regs, unsigned long mode);
void s5p_jpeg_subsampling_mode(void __iomem *regs, unsigned int mode);
unsigned int s5p_jpeg_get_subsampling_mode(void __iomem *regs);
void s5p_jpeg_dri(void __iomem *regs, unsigned int dri);
void s5p_jpeg_qtbl(void __iomem *regs, unsigned int t, unsigned int n);
void s5p_jpeg_htbl_ac(void __iomem *regs, unsigned int t);
void s5p_jpeg_htbl_dc(void __iomem *regs, unsigned int t);
void s5p_jpeg_y(void __iomem *regs, unsigned int y);
void s5p_jpeg_x(void __iomem *regs, unsigned int x);
void s5p_jpeg_rst_int_enable(void __iomem *regs, bool enable);
void s5p_jpeg_data_num_int_enable(void __iomem *regs, bool enable);
void s5p_jpeg_final_mcu_num_int_enable(void __iomem *regs, bool enbl);
void s5p_jpeg_timer_enable(void __iomem *regs, unsigned long val);
void s5p_jpeg_timer_disable(void __iomem *regs);
int s5p_jpeg_timer_stat(void __iomem *regs);
void s5p_jpeg_clear_timer_stat(void __iomem *regs);
void s5p_jpeg_enc_stream_int(void __iomem *regs, unsigned long size);
int s5p_jpeg_enc_stream_stat(void __iomem *regs);
void s5p_jpeg_clear_enc_stream_stat(void __iomem *regs);
void s5p_jpeg_outform_raw(void __iomem *regs, unsigned long format);
void s5p_jpeg_jpgadr(void __iomem *regs, unsigned long addr);
void s5p_jpeg_imgadr(void __iomem *regs, unsigned long addr);
void s5p_jpeg_coef(void __iomem *regs, unsigned int i,
unsigned int j, unsigned int coef);
void s5p_jpeg_start(void __iomem *regs);
int s5p_jpeg_result_stat_ok(void __iomem *regs);
int s5p_jpeg_stream_stat_ok(void __iomem *regs);
void s5p_jpeg_clear_int(void __iomem *regs);
unsigned int s5p_jpeg_compressed_size(void __iomem *regs);
#endif /* JPEG_HW_S5P_H_ */