aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/platform
diff options
context:
space:
mode:
authorJacek Anaszewski <j.anaszewski@samsung.com>2013-12-18 07:32:50 -0500
committerMauro Carvalho Chehab <m.chehab@samsung.com>2013-12-18 08:40:03 -0500
commit9f7b62d9f961e0a839de7dc5547db0f5a612cfd4 (patch)
tree2b6af75c7ef1447136a63a36d27b8685b9120f04 /drivers/media/platform
parent5313ba662b8eacec4a42abc9dd3df1cd0bf9c9ac (diff)
[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>
Diffstat (limited to 'drivers/media/platform')
-rw-r--r--drivers/media/platform/s5p-jpeg/Makefile2
-rw-r--r--drivers/media/platform/s5p-jpeg/jpeg-core.c99
-rw-r--r--drivers/media/platform/s5p-jpeg/jpeg-core.h5
-rw-r--r--drivers/media/platform/s5p-jpeg/jpeg-hw-s5p.c (renamed from drivers/media/platform/s5p-jpeg/jpeg-hw.h)82
-rw-r--r--drivers/media/platform/s5p-jpeg/jpeg-hw-s5p.h63
5 files changed, 154 insertions, 97 deletions
diff --git a/drivers/media/platform/s5p-jpeg/Makefile b/drivers/media/platform/s5p-jpeg/Makefile
index d18cb5edd2d5..faf6398d4693 100644
--- a/drivers/media/platform/s5p-jpeg/Makefile
+++ b/drivers/media/platform/s5p-jpeg/Makefile
@@ -1,2 +1,2 @@
1s5p-jpeg-objs := jpeg-core.o 1s5p-jpeg-objs := jpeg-core.o jpeg-hw-s5p.o
2obj-$(CONFIG_VIDEO_SAMSUNG_S5P_JPEG) += s5p-jpeg.o 2obj-$(CONFIG_VIDEO_SAMSUNG_S5P_JPEG) += s5p-jpeg.o
diff --git a/drivers/media/platform/s5p-jpeg/jpeg-core.c b/drivers/media/platform/s5p-jpeg/jpeg-core.c
index 447022f7d9ff..65922d9126bb 100644
--- a/drivers/media/platform/s5p-jpeg/jpeg-core.c
+++ b/drivers/media/platform/s5p-jpeg/jpeg-core.c
@@ -29,7 +29,7 @@
29#include <media/videobuf2-dma-contig.h> 29#include <media/videobuf2-dma-contig.h>
30 30
31#include "jpeg-core.h" 31#include "jpeg-core.h"
32#include "jpeg-hw.h" 32#include "jpeg-hw-s5p.h"
33 33
34static struct s5p_jpeg_fmt formats_enc[] = { 34static struct s5p_jpeg_fmt formats_enc[] = {
35 { 35 {
@@ -951,34 +951,36 @@ static void s5p_jpeg_device_run(void *priv)
951 src_addr = vb2_dma_contig_plane_dma_addr(src_buf, 0); 951 src_addr = vb2_dma_contig_plane_dma_addr(src_buf, 0);
952 dst_addr = vb2_dma_contig_plane_dma_addr(dst_buf, 0); 952 dst_addr = vb2_dma_contig_plane_dma_addr(dst_buf, 0);
953 953
954 jpeg_reset(jpeg->regs); 954 s5p_jpeg_reset(jpeg->regs);
955 jpeg_poweron(jpeg->regs); 955 s5p_jpeg_poweron(jpeg->regs);
956 jpeg_proc_mode(jpeg->regs, ctx->mode); 956 s5p_jpeg_proc_mode(jpeg->regs, ctx->mode);
957 if (ctx->mode == S5P_JPEG_ENCODE) { 957 if (ctx->mode == S5P_JPEG_ENCODE) {
958 if (ctx->out_q.fmt->fourcc == V4L2_PIX_FMT_RGB565) 958 if (ctx->out_q.fmt->fourcc == V4L2_PIX_FMT_RGB565)
959 jpeg_input_raw_mode(jpeg->regs, S5P_JPEG_RAW_IN_565); 959 s5p_jpeg_input_raw_mode(jpeg->regs,
960 S5P_JPEG_RAW_IN_565);
960 else 961 else
961 jpeg_input_raw_mode(jpeg->regs, S5P_JPEG_RAW_IN_422); 962 s5p_jpeg_input_raw_mode(jpeg->regs,
962 jpeg_subsampling_mode(jpeg->regs, ctx->subsampling); 963 S5P_JPEG_RAW_IN_422);
963 jpeg_dri(jpeg->regs, ctx->restart_interval); 964 s5p_jpeg_subsampling_mode(jpeg->regs, ctx->subsampling);
964 jpeg_x(jpeg->regs, ctx->out_q.w); 965 s5p_jpeg_dri(jpeg->regs, ctx->restart_interval);
965 jpeg_y(jpeg->regs, ctx->out_q.h); 966 s5p_jpeg_x(jpeg->regs, ctx->out_q.w);
966 jpeg_imgadr(jpeg->regs, src_addr); 967 s5p_jpeg_y(jpeg->regs, ctx->out_q.h);
967 jpeg_jpgadr(jpeg->regs, dst_addr); 968 s5p_jpeg_imgadr(jpeg->regs, src_addr);
969 s5p_jpeg_jpgadr(jpeg->regs, dst_addr);
968 970
969 /* ultimately comes from sizeimage from userspace */ 971 /* ultimately comes from sizeimage from userspace */
970 jpeg_enc_stream_int(jpeg->regs, ctx->cap_q.size); 972 s5p_jpeg_enc_stream_int(jpeg->regs, ctx->cap_q.size);
971 973
972 /* JPEG RGB to YCbCr conversion matrix */ 974 /* JPEG RGB to YCbCr conversion matrix */
973 jpeg_coef(jpeg->regs, 1, 1, S5P_JPEG_COEF11); 975 s5p_jpeg_coef(jpeg->regs, 1, 1, S5P_JPEG_COEF11);
974 jpeg_coef(jpeg->regs, 1, 2, S5P_JPEG_COEF12); 976 s5p_jpeg_coef(jpeg->regs, 1, 2, S5P_JPEG_COEF12);
975 jpeg_coef(jpeg->regs, 1, 3, S5P_JPEG_COEF13); 977 s5p_jpeg_coef(jpeg->regs, 1, 3, S5P_JPEG_COEF13);
976 jpeg_coef(jpeg->regs, 2, 1, S5P_JPEG_COEF21); 978 s5p_jpeg_coef(jpeg->regs, 2, 1, S5P_JPEG_COEF21);
977 jpeg_coef(jpeg->regs, 2, 2, S5P_JPEG_COEF22); 979 s5p_jpeg_coef(jpeg->regs, 2, 2, S5P_JPEG_COEF22);
978 jpeg_coef(jpeg->regs, 2, 3, S5P_JPEG_COEF23); 980 s5p_jpeg_coef(jpeg->regs, 2, 3, S5P_JPEG_COEF23);
979 jpeg_coef(jpeg->regs, 3, 1, S5P_JPEG_COEF31); 981 s5p_jpeg_coef(jpeg->regs, 3, 1, S5P_JPEG_COEF31);
980 jpeg_coef(jpeg->regs, 3, 2, S5P_JPEG_COEF32); 982 s5p_jpeg_coef(jpeg->regs, 3, 2, S5P_JPEG_COEF32);
981 jpeg_coef(jpeg->regs, 3, 3, S5P_JPEG_COEF33); 983 s5p_jpeg_coef(jpeg->regs, 3, 3, S5P_JPEG_COEF33);
982 984
983 /* 985 /*
984 * JPEG IP allows storing 4 quantization tables 986 * JPEG IP allows storing 4 quantization tables
@@ -987,31 +989,31 @@ static void s5p_jpeg_device_run(void *priv)
987 s5p_jpeg_set_qtbl_lum(jpeg->regs, ctx->compr_quality); 989 s5p_jpeg_set_qtbl_lum(jpeg->regs, ctx->compr_quality);
988 s5p_jpeg_set_qtbl_chr(jpeg->regs, ctx->compr_quality); 990 s5p_jpeg_set_qtbl_chr(jpeg->regs, ctx->compr_quality);
989 /* use table 0 for Y */ 991 /* use table 0 for Y */
990 jpeg_qtbl(jpeg->regs, 1, 0); 992 s5p_jpeg_qtbl(jpeg->regs, 1, 0);
991 /* use table 1 for Cb and Cr*/ 993 /* use table 1 for Cb and Cr*/
992 jpeg_qtbl(jpeg->regs, 2, 1); 994 s5p_jpeg_qtbl(jpeg->regs, 2, 1);
993 jpeg_qtbl(jpeg->regs, 3, 1); 995 s5p_jpeg_qtbl(jpeg->regs, 3, 1);
994 996
995 /* Y, Cb, Cr use Huffman table 0 */ 997 /* Y, Cb, Cr use Huffman table 0 */
996 jpeg_htbl_ac(jpeg->regs, 1); 998 s5p_jpeg_htbl_ac(jpeg->regs, 1);
997 jpeg_htbl_dc(jpeg->regs, 1); 999 s5p_jpeg_htbl_dc(jpeg->regs, 1);
998 jpeg_htbl_ac(jpeg->regs, 2); 1000 s5p_jpeg_htbl_ac(jpeg->regs, 2);
999 jpeg_htbl_dc(jpeg->regs, 2); 1001 s5p_jpeg_htbl_dc(jpeg->regs, 2);
1000 jpeg_htbl_ac(jpeg->regs, 3); 1002 s5p_jpeg_htbl_ac(jpeg->regs, 3);
1001 jpeg_htbl_dc(jpeg->regs, 3); 1003 s5p_jpeg_htbl_dc(jpeg->regs, 3);
1002 } else { /* S5P_JPEG_DECODE */ 1004 } else { /* S5P_JPEG_DECODE */
1003 jpeg_rst_int_enable(jpeg->regs, true); 1005 s5p_jpeg_rst_int_enable(jpeg->regs, true);
1004 jpeg_data_num_int_enable(jpeg->regs, true); 1006 s5p_jpeg_data_num_int_enable(jpeg->regs, true);
1005 jpeg_final_mcu_num_int_enable(jpeg->regs, true); 1007 s5p_jpeg_final_mcu_num_int_enable(jpeg->regs, true);
1006 if (ctx->cap_q.fmt->fourcc == V4L2_PIX_FMT_YUYV) 1008 if (ctx->cap_q.fmt->fourcc == V4L2_PIX_FMT_YUYV)
1007 jpeg_outform_raw(jpeg->regs, S5P_JPEG_RAW_OUT_422); 1009 s5p_jpeg_outform_raw(jpeg->regs, S5P_JPEG_RAW_OUT_422);
1008 else 1010 else
1009 jpeg_outform_raw(jpeg->regs, S5P_JPEG_RAW_OUT_420); 1011 s5p_jpeg_outform_raw(jpeg->regs, S5P_JPEG_RAW_OUT_420);
1010 jpeg_jpgadr(jpeg->regs, src_addr); 1012 s5p_jpeg_jpgadr(jpeg->regs, src_addr);
1011 jpeg_imgadr(jpeg->regs, dst_addr); 1013 s5p_jpeg_imgadr(jpeg->regs, dst_addr);
1012 } 1014 }
1013 1015
1014 jpeg_start(jpeg->regs); 1016 s5p_jpeg_start(jpeg->regs);
1015 1017
1016 spin_unlock_irqrestore(&ctx->jpeg->slock, flags); 1018 spin_unlock_irqrestore(&ctx->jpeg->slock, flags);
1017} 1019}
@@ -1203,22 +1205,23 @@ static irqreturn_t s5p_jpeg_irq(int irq, void *dev_id)
1203 dst_buf = v4l2_m2m_dst_buf_remove(curr_ctx->fh.m2m_ctx); 1205 dst_buf = v4l2_m2m_dst_buf_remove(curr_ctx->fh.m2m_ctx);
1204 1206
1205 if (curr_ctx->mode == S5P_JPEG_ENCODE) 1207 if (curr_ctx->mode == S5P_JPEG_ENCODE)
1206 enc_jpeg_too_large = jpeg_enc_stream_stat(jpeg->regs); 1208 enc_jpeg_too_large = s5p_jpeg_enc_stream_stat(jpeg->regs);
1207 timer_elapsed = jpeg_timer_stat(jpeg->regs); 1209 timer_elapsed = s5p_jpeg_timer_stat(jpeg->regs);
1208 op_completed = jpeg_result_stat_ok(jpeg->regs); 1210 op_completed = s5p_jpeg_result_stat_ok(jpeg->regs);
1209 if (curr_ctx->mode == S5P_JPEG_DECODE) 1211 if (curr_ctx->mode == S5P_JPEG_DECODE)
1210 op_completed = op_completed && jpeg_stream_stat_ok(jpeg->regs); 1212 op_completed = op_completed &&
1213 s5p_jpeg_stream_stat_ok(jpeg->regs);
1211 1214
1212 if (enc_jpeg_too_large) { 1215 if (enc_jpeg_too_large) {
1213 state = VB2_BUF_STATE_ERROR; 1216 state = VB2_BUF_STATE_ERROR;
1214 jpeg_clear_enc_stream_stat(jpeg->regs); 1217 s5p_jpeg_clear_enc_stream_stat(jpeg->regs);
1215 } else if (timer_elapsed) { 1218 } else if (timer_elapsed) {
1216 state = VB2_BUF_STATE_ERROR; 1219 state = VB2_BUF_STATE_ERROR;
1217 jpeg_clear_timer_stat(jpeg->regs); 1220 s5p_jpeg_clear_timer_stat(jpeg->regs);
1218 } else if (!op_completed) { 1221 } else if (!op_completed) {
1219 state = VB2_BUF_STATE_ERROR; 1222 state = VB2_BUF_STATE_ERROR;
1220 } else { 1223 } else {
1221 payload_size = jpeg_compressed_size(jpeg->regs); 1224 payload_size = s5p_jpeg_compressed_size(jpeg->regs);
1222 } 1225 }
1223 1226
1224 dst_buf->v4l2_buf.timecode = src_buf->v4l2_buf.timecode; 1227 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)
1230 v4l2_m2m_buf_done(dst_buf, state); 1233 v4l2_m2m_buf_done(dst_buf, state);
1231 v4l2_m2m_job_finish(jpeg->m2m_dev, curr_ctx->fh.m2m_ctx); 1234 v4l2_m2m_job_finish(jpeg->m2m_dev, curr_ctx->fh.m2m_ctx);
1232 1235
1233 curr_ctx->subsampling = jpeg_get_subsampling_mode(jpeg->regs); 1236 curr_ctx->subsampling = s5p_jpeg_get_subsampling_mode(jpeg->regs);
1234 spin_unlock(&jpeg->slock); 1237 spin_unlock(&jpeg->slock);
1235 1238
1236 jpeg_clear_int(jpeg->regs); 1239 s5p_jpeg_clear_int(jpeg->regs);
1237 1240
1238 return IRQ_HANDLED; 1241 return IRQ_HANDLED;
1239} 1242}
diff --git a/drivers/media/platform/s5p-jpeg/jpeg-core.h b/drivers/media/platform/s5p-jpeg/jpeg-core.h
index 4a4776b7e1d4..7baadf395e90 100644
--- a/drivers/media/platform/s5p-jpeg/jpeg-core.h
+++ b/drivers/media/platform/s5p-jpeg/jpeg-core.h
@@ -42,10 +42,15 @@
42#define EOI 0xd9 42#define EOI 0xd9
43#define DHP 0xde 43#define DHP 0xde
44 44
45#define S5P_JPEG_ENCODE 0
46#define S5P_JPEG_DECODE 1
47
45/* Flags that indicate a format can be used for capture/output */ 48/* Flags that indicate a format can be used for capture/output */
46#define MEM2MEM_CAPTURE (1 << 0) 49#define MEM2MEM_CAPTURE (1 << 0)
47#define MEM2MEM_OUTPUT (1 << 1) 50#define MEM2MEM_OUTPUT (1 << 1)
48 51
52
53
49/** 54/**
50 * struct s5p_jpeg - JPEG IP abstraction 55 * struct s5p_jpeg - JPEG IP abstraction
51 * @lock: the mutex protecting this structure 56 * @lock: the mutex protecting this structure
diff --git a/drivers/media/platform/s5p-jpeg/jpeg-hw.h b/drivers/media/platform/s5p-jpeg/jpeg-hw-s5p.c
index b47e887b6138..52407d790726 100644
--- a/drivers/media/platform/s5p-jpeg/jpeg-hw.h
+++ b/drivers/media/platform/s5p-jpeg/jpeg-hw-s5p.c
@@ -9,27 +9,15 @@
9 * it under the terms of the GNU General Public License version 2 as 9 * it under the terms of the GNU General Public License version 2 as
10 * published by the Free Software Foundation. 10 * published by the Free Software Foundation.
11 */ 11 */
12#ifndef JPEG_HW_H_
13#define JPEG_HW_H_
14 12
15#include <linux/io.h> 13#include <linux/io.h>
16#include <linux/videodev2.h> 14#include <linux/videodev2.h>
17 15
18#include "jpeg-hw.h" 16#include "jpeg-core.h"
19#include "jpeg-regs.h" 17#include "jpeg-regs.h"
18#include "jpeg-hw-s5p.h"
20 19
21#define S5P_JPEG_MIN_WIDTH 32 20void s5p_jpeg_reset(void __iomem *regs)
22#define S5P_JPEG_MIN_HEIGHT 32
23#define S5P_JPEG_MAX_WIDTH 8192
24#define S5P_JPEG_MAX_HEIGHT 8192
25#define S5P_JPEG_ENCODE 0
26#define S5P_JPEG_DECODE 1
27#define S5P_JPEG_RAW_IN_565 0
28#define S5P_JPEG_RAW_IN_422 1
29#define S5P_JPEG_RAW_OUT_422 0
30#define S5P_JPEG_RAW_OUT_420 1
31
32static inline void jpeg_reset(void __iomem *regs)
33{ 21{
34 unsigned long reg; 22 unsigned long reg;
35 23
@@ -42,12 +30,12 @@ static inline void jpeg_reset(void __iomem *regs)
42 } 30 }
43} 31}
44 32
45static inline void jpeg_poweron(void __iomem *regs) 33void s5p_jpeg_poweron(void __iomem *regs)
46{ 34{
47 writel(S5P_POWER_ON, regs + S5P_JPGCLKCON); 35 writel(S5P_POWER_ON, regs + S5P_JPGCLKCON);
48} 36}
49 37
50static inline void jpeg_input_raw_mode(void __iomem *regs, unsigned long mode) 38void s5p_jpeg_input_raw_mode(void __iomem *regs, unsigned long mode)
51{ 39{
52 unsigned long reg, m; 40 unsigned long reg, m;
53 41
@@ -63,7 +51,7 @@ static inline void jpeg_input_raw_mode(void __iomem *regs, unsigned long mode)
63 writel(reg, regs + S5P_JPGCMOD); 51 writel(reg, regs + S5P_JPGCMOD);
64} 52}
65 53
66static inline void jpeg_input_raw_y16(void __iomem *regs, bool y16) 54void s5p_jpeg_input_raw_y16(void __iomem *regs, bool y16)
67{ 55{
68 unsigned long reg; 56 unsigned long reg;
69 57
@@ -75,7 +63,7 @@ static inline void jpeg_input_raw_y16(void __iomem *regs, bool y16)
75 writel(reg, regs + S5P_JPGCMOD); 63 writel(reg, regs + S5P_JPGCMOD);
76} 64}
77 65
78static inline void jpeg_proc_mode(void __iomem *regs, unsigned long mode) 66void s5p_jpeg_proc_mode(void __iomem *regs, unsigned long mode)
79{ 67{
80 unsigned long reg, m; 68 unsigned long reg, m;
81 69
@@ -90,7 +78,7 @@ static inline void jpeg_proc_mode(void __iomem *regs, unsigned long mode)
90 writel(reg, regs + S5P_JPGMOD); 78 writel(reg, regs + S5P_JPGMOD);
91} 79}
92 80
93static inline void jpeg_subsampling_mode(void __iomem *regs, unsigned int mode) 81void s5p_jpeg_subsampling_mode(void __iomem *regs, unsigned int mode)
94{ 82{
95 unsigned long reg, m; 83 unsigned long reg, m;
96 84
@@ -105,12 +93,12 @@ static inline void jpeg_subsampling_mode(void __iomem *regs, unsigned int mode)
105 writel(reg, regs + S5P_JPGMOD); 93 writel(reg, regs + S5P_JPGMOD);
106} 94}
107 95
108static inline unsigned int jpeg_get_subsampling_mode(void __iomem *regs) 96unsigned int s5p_jpeg_get_subsampling_mode(void __iomem *regs)
109{ 97{
110 return readl(regs + S5P_JPGMOD) & S5P_SUBSAMPLING_MODE_MASK; 98 return readl(regs + S5P_JPGMOD) & S5P_SUBSAMPLING_MODE_MASK;
111} 99}
112 100
113static inline void jpeg_dri(void __iomem *regs, unsigned int dri) 101void s5p_jpeg_dri(void __iomem *regs, unsigned int dri)
114{ 102{
115 unsigned long reg; 103 unsigned long reg;
116 104
@@ -125,7 +113,7 @@ static inline void jpeg_dri(void __iomem *regs, unsigned int dri)
125 writel(reg, regs + S5P_JPGDRI_L); 113 writel(reg, regs + S5P_JPGDRI_L);
126} 114}
127 115
128static inline void jpeg_qtbl(void __iomem *regs, unsigned int t, unsigned int n) 116void s5p_jpeg_qtbl(void __iomem *regs, unsigned int t, unsigned int n)
129{ 117{
130 unsigned long reg; 118 unsigned long reg;
131 119
@@ -135,7 +123,7 @@ static inline void jpeg_qtbl(void __iomem *regs, unsigned int t, unsigned int n)
135 writel(reg, regs + S5P_JPG_QTBL); 123 writel(reg, regs + S5P_JPG_QTBL);
136} 124}
137 125
138static inline void jpeg_htbl_ac(void __iomem *regs, unsigned int t) 126void s5p_jpeg_htbl_ac(void __iomem *regs, unsigned int t)
139{ 127{
140 unsigned long reg; 128 unsigned long reg;
141 129
@@ -146,7 +134,7 @@ static inline void jpeg_htbl_ac(void __iomem *regs, unsigned int t)
146 writel(reg, regs + S5P_JPG_HTBL); 134 writel(reg, regs + S5P_JPG_HTBL);
147} 135}
148 136
149static inline void jpeg_htbl_dc(void __iomem *regs, unsigned int t) 137void s5p_jpeg_htbl_dc(void __iomem *regs, unsigned int t)
150{ 138{
151 unsigned long reg; 139 unsigned long reg;
152 140
@@ -157,7 +145,7 @@ static inline void jpeg_htbl_dc(void __iomem *regs, unsigned int t)
157 writel(reg, regs + S5P_JPG_HTBL); 145 writel(reg, regs + S5P_JPG_HTBL);
158} 146}
159 147
160static inline void jpeg_y(void __iomem *regs, unsigned int y) 148void s5p_jpeg_y(void __iomem *regs, unsigned int y)
161{ 149{
162 unsigned long reg; 150 unsigned long reg;
163 151
@@ -172,7 +160,7 @@ static inline void jpeg_y(void __iomem *regs, unsigned int y)
172 writel(reg, regs + S5P_JPGY_L); 160 writel(reg, regs + S5P_JPGY_L);
173} 161}
174 162
175static inline void jpeg_x(void __iomem *regs, unsigned int x) 163void s5p_jpeg_x(void __iomem *regs, unsigned int x)
176{ 164{
177 unsigned long reg; 165 unsigned long reg;
178 166
@@ -187,7 +175,7 @@ static inline void jpeg_x(void __iomem *regs, unsigned int x)
187 writel(reg, regs + S5P_JPGX_L); 175 writel(reg, regs + S5P_JPGX_L);
188} 176}
189 177
190static inline void jpeg_rst_int_enable(void __iomem *regs, bool enable) 178void s5p_jpeg_rst_int_enable(void __iomem *regs, bool enable)
191{ 179{
192 unsigned long reg; 180 unsigned long reg;
193 181
@@ -198,7 +186,7 @@ static inline void jpeg_rst_int_enable(void __iomem *regs, bool enable)
198 writel(reg, regs + S5P_JPGINTSE); 186 writel(reg, regs + S5P_JPGINTSE);
199} 187}
200 188
201static inline void jpeg_data_num_int_enable(void __iomem *regs, bool enable) 189void s5p_jpeg_data_num_int_enable(void __iomem *regs, bool enable)
202{ 190{
203 unsigned long reg; 191 unsigned long reg;
204 192
@@ -209,7 +197,7 @@ static inline void jpeg_data_num_int_enable(void __iomem *regs, bool enable)
209 writel(reg, regs + S5P_JPGINTSE); 197 writel(reg, regs + S5P_JPGINTSE);
210} 198}
211 199
212static inline void jpeg_final_mcu_num_int_enable(void __iomem *regs, bool enbl) 200void s5p_jpeg_final_mcu_num_int_enable(void __iomem *regs, bool enbl)
213{ 201{
214 unsigned long reg; 202 unsigned long reg;
215 203
@@ -220,7 +208,7 @@ static inline void jpeg_final_mcu_num_int_enable(void __iomem *regs, bool enbl)
220 writel(reg, regs + S5P_JPGINTSE); 208 writel(reg, regs + S5P_JPGINTSE);
221} 209}
222 210
223static inline void jpeg_timer_enable(void __iomem *regs, unsigned long val) 211void s5p_jpeg_timer_enable(void __iomem *regs, unsigned long val)
224{ 212{
225 unsigned long reg; 213 unsigned long reg;
226 214
@@ -231,7 +219,7 @@ static inline void jpeg_timer_enable(void __iomem *regs, unsigned long val)
231 writel(reg, regs + S5P_JPG_TIMER_SE); 219 writel(reg, regs + S5P_JPG_TIMER_SE);
232} 220}
233 221
234static inline void jpeg_timer_disable(void __iomem *regs) 222void s5p_jpeg_timer_disable(void __iomem *regs)
235{ 223{
236 unsigned long reg; 224 unsigned long reg;
237 225
@@ -240,13 +228,13 @@ static inline void jpeg_timer_disable(void __iomem *regs)
240 writel(reg, regs + S5P_JPG_TIMER_SE); 228 writel(reg, regs + S5P_JPG_TIMER_SE);
241} 229}
242 230
243static inline int jpeg_timer_stat(void __iomem *regs) 231int s5p_jpeg_timer_stat(void __iomem *regs)
244{ 232{
245 return (int)((readl(regs + S5P_JPG_TIMER_ST) & S5P_TIMER_INT_STAT_MASK) 233 return (int)((readl(regs + S5P_JPG_TIMER_ST) & S5P_TIMER_INT_STAT_MASK)
246 >> S5P_TIMER_INT_STAT_SHIFT); 234 >> S5P_TIMER_INT_STAT_SHIFT);
247} 235}
248 236
249static inline void jpeg_clear_timer_stat(void __iomem *regs) 237void s5p_jpeg_clear_timer_stat(void __iomem *regs)
250{ 238{
251 unsigned long reg; 239 unsigned long reg;
252 240
@@ -255,7 +243,7 @@ static inline void jpeg_clear_timer_stat(void __iomem *regs)
255 writel(reg, regs + S5P_JPG_TIMER_SE); 243 writel(reg, regs + S5P_JPG_TIMER_SE);
256} 244}
257 245
258static inline void jpeg_enc_stream_int(void __iomem *regs, unsigned long size) 246void s5p_jpeg_enc_stream_int(void __iomem *regs, unsigned long size)
259{ 247{
260 unsigned long reg; 248 unsigned long reg;
261 249
@@ -266,13 +254,13 @@ static inline void jpeg_enc_stream_int(void __iomem *regs, unsigned long size)
266 writel(reg, regs + S5P_JPG_ENC_STREAM_INTSE); 254 writel(reg, regs + S5P_JPG_ENC_STREAM_INTSE);
267} 255}
268 256
269static inline int jpeg_enc_stream_stat(void __iomem *regs) 257int s5p_jpeg_enc_stream_stat(void __iomem *regs)
270{ 258{
271 return (int)(readl(regs + S5P_JPG_ENC_STREAM_INTST) & 259 return (int)(readl(regs + S5P_JPG_ENC_STREAM_INTST) &
272 S5P_ENC_STREAM_INT_STAT_MASK); 260 S5P_ENC_STREAM_INT_STAT_MASK);
273} 261}
274 262
275static inline void jpeg_clear_enc_stream_stat(void __iomem *regs) 263void s5p_jpeg_clear_enc_stream_stat(void __iomem *regs)
276{ 264{
277 unsigned long reg; 265 unsigned long reg;
278 266
@@ -281,7 +269,7 @@ static inline void jpeg_clear_enc_stream_stat(void __iomem *regs)
281 writel(reg, regs + S5P_JPG_ENC_STREAM_INTSE); 269 writel(reg, regs + S5P_JPG_ENC_STREAM_INTSE);
282} 270}
283 271
284static inline void jpeg_outform_raw(void __iomem *regs, unsigned long format) 272void s5p_jpeg_outform_raw(void __iomem *regs, unsigned long format)
285{ 273{
286 unsigned long reg, f; 274 unsigned long reg, f;
287 275
@@ -296,17 +284,17 @@ static inline void jpeg_outform_raw(void __iomem *regs, unsigned long format)
296 writel(reg, regs + S5P_JPG_OUTFORM); 284 writel(reg, regs + S5P_JPG_OUTFORM);
297} 285}
298 286
299static inline void jpeg_jpgadr(void __iomem *regs, unsigned long addr) 287void s5p_jpeg_jpgadr(void __iomem *regs, unsigned long addr)
300{ 288{
301 writel(addr, regs + S5P_JPG_JPGADR); 289 writel(addr, regs + S5P_JPG_JPGADR);
302} 290}
303 291
304static inline void jpeg_imgadr(void __iomem *regs, unsigned long addr) 292void s5p_jpeg_imgadr(void __iomem *regs, unsigned long addr)
305{ 293{
306 writel(addr, regs + S5P_JPG_IMGADR); 294 writel(addr, regs + S5P_JPG_IMGADR);
307} 295}
308 296
309static inline void jpeg_coef(void __iomem *regs, unsigned int i, 297void s5p_jpeg_coef(void __iomem *regs, unsigned int i,
310 unsigned int j, unsigned int coef) 298 unsigned int j, unsigned int coef)
311{ 299{
312 unsigned long reg; 300 unsigned long reg;
@@ -317,24 +305,24 @@ static inline void jpeg_coef(void __iomem *regs, unsigned int i,
317 writel(reg, regs + S5P_JPG_COEF(i)); 305 writel(reg, regs + S5P_JPG_COEF(i));
318} 306}
319 307
320static inline void jpeg_start(void __iomem *regs) 308void s5p_jpeg_start(void __iomem *regs)
321{ 309{
322 writel(1, regs + S5P_JSTART); 310 writel(1, regs + S5P_JSTART);
323} 311}
324 312
325static inline int jpeg_result_stat_ok(void __iomem *regs) 313int s5p_jpeg_result_stat_ok(void __iomem *regs)
326{ 314{
327 return (int)((readl(regs + S5P_JPGINTST) & S5P_RESULT_STAT_MASK) 315 return (int)((readl(regs + S5P_JPGINTST) & S5P_RESULT_STAT_MASK)
328 >> S5P_RESULT_STAT_SHIFT); 316 >> S5P_RESULT_STAT_SHIFT);
329} 317}
330 318
331static inline int jpeg_stream_stat_ok(void __iomem *regs) 319int s5p_jpeg_stream_stat_ok(void __iomem *regs)
332{ 320{
333 return !(int)((readl(regs + S5P_JPGINTST) & S5P_STREAM_STAT_MASK) 321 return !(int)((readl(regs + S5P_JPGINTST) & S5P_STREAM_STAT_MASK)
334 >> S5P_STREAM_STAT_SHIFT); 322 >> S5P_STREAM_STAT_SHIFT);
335} 323}
336 324
337static inline void jpeg_clear_int(void __iomem *regs) 325void s5p_jpeg_clear_int(void __iomem *regs)
338{ 326{
339 unsigned long reg; 327 unsigned long reg;
340 328
@@ -343,7 +331,7 @@ static inline void jpeg_clear_int(void __iomem *regs)
343 reg = readl(regs + S5P_JPGOPR); 331 reg = readl(regs + S5P_JPGOPR);
344} 332}
345 333
346static inline unsigned int jpeg_compressed_size(void __iomem *regs) 334unsigned int s5p_jpeg_compressed_size(void __iomem *regs)
347{ 335{
348 unsigned long jpeg_size = 0; 336 unsigned long jpeg_size = 0;
349 337
@@ -353,5 +341,3 @@ static inline unsigned int jpeg_compressed_size(void __iomem *regs)
353 341
354 return (unsigned int)jpeg_size; 342 return (unsigned int)jpeg_size;
355} 343}
356
357#endif /* JPEG_HW_H_ */
diff --git a/drivers/media/platform/s5p-jpeg/jpeg-hw-s5p.h b/drivers/media/platform/s5p-jpeg/jpeg-hw-s5p.h
new file mode 100644
index 000000000000..c11ebe86b9c9
--- /dev/null
+++ b/drivers/media/platform/s5p-jpeg/jpeg-hw-s5p.h
@@ -0,0 +1,63 @@
1/* linux/drivers/media/platform/s5p-jpeg/jpeg-hw.h
2 *
3 * Copyright (c) 2011 Samsung Electronics Co., Ltd.
4 * http://www.samsung.com
5 *
6 * Author: Andrzej Pietrasiewicz <andrzej.p@samsung.com>
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License version 2 as
10 * published by the Free Software Foundation.
11 */
12#ifndef JPEG_HW_S5P_H_
13#define JPEG_HW_S5P_H_
14
15#include <linux/io.h>
16#include <linux/videodev2.h>
17
18#include "jpeg-regs.h"
19
20#define S5P_JPEG_MIN_WIDTH 32
21#define S5P_JPEG_MIN_HEIGHT 32
22#define S5P_JPEG_MAX_WIDTH 8192
23#define S5P_JPEG_MAX_HEIGHT 8192
24#define S5P_JPEG_RAW_IN_565 0
25#define S5P_JPEG_RAW_IN_422 1
26#define S5P_JPEG_RAW_OUT_422 0
27#define S5P_JPEG_RAW_OUT_420 1
28
29void s5p_jpeg_reset(void __iomem *regs);
30void s5p_jpeg_poweron(void __iomem *regs);
31void s5p_jpeg_input_raw_mode(void __iomem *regs, unsigned long mode);
32void s5p_jpeg_input_raw_y16(void __iomem *regs, bool y16);
33void s5p_jpeg_proc_mode(void __iomem *regs, unsigned long mode);
34void s5p_jpeg_subsampling_mode(void __iomem *regs, unsigned int mode);
35unsigned int s5p_jpeg_get_subsampling_mode(void __iomem *regs);
36void s5p_jpeg_dri(void __iomem *regs, unsigned int dri);
37void s5p_jpeg_qtbl(void __iomem *regs, unsigned int t, unsigned int n);
38void s5p_jpeg_htbl_ac(void __iomem *regs, unsigned int t);
39void s5p_jpeg_htbl_dc(void __iomem *regs, unsigned int t);
40void s5p_jpeg_y(void __iomem *regs, unsigned int y);
41void s5p_jpeg_x(void __iomem *regs, unsigned int x);
42void s5p_jpeg_rst_int_enable(void __iomem *regs, bool enable);
43void s5p_jpeg_data_num_int_enable(void __iomem *regs, bool enable);
44void s5p_jpeg_final_mcu_num_int_enable(void __iomem *regs, bool enbl);
45void s5p_jpeg_timer_enable(void __iomem *regs, unsigned long val);
46void s5p_jpeg_timer_disable(void __iomem *regs);
47int s5p_jpeg_timer_stat(void __iomem *regs);
48void s5p_jpeg_clear_timer_stat(void __iomem *regs);
49void s5p_jpeg_enc_stream_int(void __iomem *regs, unsigned long size);
50int s5p_jpeg_enc_stream_stat(void __iomem *regs);
51void s5p_jpeg_clear_enc_stream_stat(void __iomem *regs);
52void s5p_jpeg_outform_raw(void __iomem *regs, unsigned long format);
53void s5p_jpeg_jpgadr(void __iomem *regs, unsigned long addr);
54void s5p_jpeg_imgadr(void __iomem *regs, unsigned long addr);
55void s5p_jpeg_coef(void __iomem *regs, unsigned int i,
56 unsigned int j, unsigned int coef);
57void s5p_jpeg_start(void __iomem *regs);
58int s5p_jpeg_result_stat_ok(void __iomem *regs);
59int s5p_jpeg_stream_stat_ok(void __iomem *regs);
60void s5p_jpeg_clear_int(void __iomem *regs);
61unsigned int s5p_jpeg_compressed_size(void __iomem *regs);
62
63#endif /* JPEG_HW_S5P_H_ */