diff options
author | Jacek Anaszewski <j.anaszewski@samsung.com> | 2013-12-18 07:32:50 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <m.chehab@samsung.com> | 2013-12-18 08:40:03 -0500 |
commit | 9f7b62d9f961e0a839de7dc5547db0f5a612cfd4 (patch) | |
tree | 2b6af75c7ef1447136a63a36d27b8685b9120f04 /drivers/media/platform | |
parent | 5313ba662b8eacec4a42abc9dd3df1cd0bf9c9ac (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/Makefile | 2 | ||||
-rw-r--r-- | drivers/media/platform/s5p-jpeg/jpeg-core.c | 99 | ||||
-rw-r--r-- | drivers/media/platform/s5p-jpeg/jpeg-core.h | 5 | ||||
-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.h | 63 |
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 @@ | |||
1 | s5p-jpeg-objs := jpeg-core.o | 1 | s5p-jpeg-objs := jpeg-core.o jpeg-hw-s5p.o |
2 | obj-$(CONFIG_VIDEO_SAMSUNG_S5P_JPEG) += s5p-jpeg.o | 2 | obj-$(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 | ||
34 | static struct s5p_jpeg_fmt formats_enc[] = { | 34 | static 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 | 20 | void 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 | |||
32 | static 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 | ||
45 | static inline void jpeg_poweron(void __iomem *regs) | 33 | void 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 | ||
50 | static inline void jpeg_input_raw_mode(void __iomem *regs, unsigned long mode) | 38 | void 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 | ||
66 | static inline void jpeg_input_raw_y16(void __iomem *regs, bool y16) | 54 | void 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 | ||
78 | static inline void jpeg_proc_mode(void __iomem *regs, unsigned long mode) | 66 | void 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 | ||
93 | static inline void jpeg_subsampling_mode(void __iomem *regs, unsigned int mode) | 81 | void 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 | ||
108 | static inline unsigned int jpeg_get_subsampling_mode(void __iomem *regs) | 96 | unsigned 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 | ||
113 | static inline void jpeg_dri(void __iomem *regs, unsigned int dri) | 101 | void 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 | ||
128 | static inline void jpeg_qtbl(void __iomem *regs, unsigned int t, unsigned int n) | 116 | void 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 | ||
138 | static inline void jpeg_htbl_ac(void __iomem *regs, unsigned int t) | 126 | void 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 | ||
149 | static inline void jpeg_htbl_dc(void __iomem *regs, unsigned int t) | 137 | void 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 | ||
160 | static inline void jpeg_y(void __iomem *regs, unsigned int y) | 148 | void 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 | ||
175 | static inline void jpeg_x(void __iomem *regs, unsigned int x) | 163 | void 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 | ||
190 | static inline void jpeg_rst_int_enable(void __iomem *regs, bool enable) | 178 | void 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 | ||
201 | static inline void jpeg_data_num_int_enable(void __iomem *regs, bool enable) | 189 | void 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 | ||
212 | static inline void jpeg_final_mcu_num_int_enable(void __iomem *regs, bool enbl) | 200 | void 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 | ||
223 | static inline void jpeg_timer_enable(void __iomem *regs, unsigned long val) | 211 | void 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 | ||
234 | static inline void jpeg_timer_disable(void __iomem *regs) | 222 | void 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 | ||
243 | static inline int jpeg_timer_stat(void __iomem *regs) | 231 | int 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 | ||
249 | static inline void jpeg_clear_timer_stat(void __iomem *regs) | 237 | void 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 | ||
258 | static inline void jpeg_enc_stream_int(void __iomem *regs, unsigned long size) | 246 | void 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 | ||
269 | static inline int jpeg_enc_stream_stat(void __iomem *regs) | 257 | int 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 | ||
275 | static inline void jpeg_clear_enc_stream_stat(void __iomem *regs) | 263 | void 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 | ||
284 | static inline void jpeg_outform_raw(void __iomem *regs, unsigned long format) | 272 | void 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 | ||
299 | static inline void jpeg_jpgadr(void __iomem *regs, unsigned long addr) | 287 | void 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 | ||
304 | static inline void jpeg_imgadr(void __iomem *regs, unsigned long addr) | 292 | void 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 | ||
309 | static inline void jpeg_coef(void __iomem *regs, unsigned int i, | 297 | void 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 | ||
320 | static inline void jpeg_start(void __iomem *regs) | 308 | void s5p_jpeg_start(void __iomem *regs) |
321 | { | 309 | { |
322 | writel(1, regs + S5P_JSTART); | 310 | writel(1, regs + S5P_JSTART); |
323 | } | 311 | } |
324 | 312 | ||
325 | static inline int jpeg_result_stat_ok(void __iomem *regs) | 313 | int 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 | ||
331 | static inline int jpeg_stream_stat_ok(void __iomem *regs) | 319 | int 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 | ||
337 | static inline void jpeg_clear_int(void __iomem *regs) | 325 | void 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 | ||
346 | static inline unsigned int jpeg_compressed_size(void __iomem *regs) | 334 | unsigned 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 | |||
29 | void s5p_jpeg_reset(void __iomem *regs); | ||
30 | void s5p_jpeg_poweron(void __iomem *regs); | ||
31 | void s5p_jpeg_input_raw_mode(void __iomem *regs, unsigned long mode); | ||
32 | void s5p_jpeg_input_raw_y16(void __iomem *regs, bool y16); | ||
33 | void s5p_jpeg_proc_mode(void __iomem *regs, unsigned long mode); | ||
34 | void s5p_jpeg_subsampling_mode(void __iomem *regs, unsigned int mode); | ||
35 | unsigned int s5p_jpeg_get_subsampling_mode(void __iomem *regs); | ||
36 | void s5p_jpeg_dri(void __iomem *regs, unsigned int dri); | ||
37 | void s5p_jpeg_qtbl(void __iomem *regs, unsigned int t, unsigned int n); | ||
38 | void s5p_jpeg_htbl_ac(void __iomem *regs, unsigned int t); | ||
39 | void s5p_jpeg_htbl_dc(void __iomem *regs, unsigned int t); | ||
40 | void s5p_jpeg_y(void __iomem *regs, unsigned int y); | ||
41 | void s5p_jpeg_x(void __iomem *regs, unsigned int x); | ||
42 | void s5p_jpeg_rst_int_enable(void __iomem *regs, bool enable); | ||
43 | void s5p_jpeg_data_num_int_enable(void __iomem *regs, bool enable); | ||
44 | void s5p_jpeg_final_mcu_num_int_enable(void __iomem *regs, bool enbl); | ||
45 | void s5p_jpeg_timer_enable(void __iomem *regs, unsigned long val); | ||
46 | void s5p_jpeg_timer_disable(void __iomem *regs); | ||
47 | int s5p_jpeg_timer_stat(void __iomem *regs); | ||
48 | void s5p_jpeg_clear_timer_stat(void __iomem *regs); | ||
49 | void s5p_jpeg_enc_stream_int(void __iomem *regs, unsigned long size); | ||
50 | int s5p_jpeg_enc_stream_stat(void __iomem *regs); | ||
51 | void s5p_jpeg_clear_enc_stream_stat(void __iomem *regs); | ||
52 | void s5p_jpeg_outform_raw(void __iomem *regs, unsigned long format); | ||
53 | void s5p_jpeg_jpgadr(void __iomem *regs, unsigned long addr); | ||
54 | void s5p_jpeg_imgadr(void __iomem *regs, unsigned long addr); | ||
55 | void s5p_jpeg_coef(void __iomem *regs, unsigned int i, | ||
56 | unsigned int j, unsigned int coef); | ||
57 | void s5p_jpeg_start(void __iomem *regs); | ||
58 | int s5p_jpeg_result_stat_ok(void __iomem *regs); | ||
59 | int s5p_jpeg_stream_stat_ok(void __iomem *regs); | ||
60 | void s5p_jpeg_clear_int(void __iomem *regs); | ||
61 | unsigned int s5p_jpeg_compressed_size(void __iomem *regs); | ||
62 | |||
63 | #endif /* JPEG_HW_S5P_H_ */ | ||