diff options
| author | Sylwester Nawrocki <s.nawrocki@samsung.com> | 2012-05-02 05:14:49 -0400 |
|---|---|---|
| committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2012-05-20 08:19:32 -0400 |
| commit | c83a1ff063eb7cd8eb2025c08194f6bcb49334f1 (patch) | |
| tree | 043924c0ccedb6b0f467d74e6db0cb2a0bd26330 | |
| parent | 693f5c40825e91632478624bf0366e6ebf862a25 (diff) | |
[media] s5p-fimc: Refactor the register interface functions
Simplify the register API and use FIMC_REG_ prefix for all register
definitions for consistency with FIMC-LITE. The unused image effect
defines are removed.
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
| -rw-r--r-- | drivers/media/video/s5p-fimc/fimc-capture.c | 1 | ||||
| -rw-r--r-- | drivers/media/video/s5p-fimc/fimc-core.c | 21 | ||||
| -rw-r--r-- | drivers/media/video/s5p-fimc/fimc-core.h | 118 | ||||
| -rw-r--r-- | drivers/media/video/s5p-fimc/fimc-m2m.c | 1 | ||||
| -rw-r--r-- | drivers/media/video/s5p-fimc/fimc-reg.c | 554 | ||||
| -rw-r--r-- | drivers/media/video/s5p-fimc/fimc-reg.h | 326 | ||||
| -rw-r--r-- | drivers/media/video/s5p-fimc/regs-fimc.h | 301 |
7 files changed, 641 insertions, 681 deletions
diff --git a/drivers/media/video/s5p-fimc/fimc-capture.c b/drivers/media/video/s5p-fimc/fimc-capture.c index b45da2780213..52a5fb469b45 100644 --- a/drivers/media/video/s5p-fimc/fimc-capture.c +++ b/drivers/media/video/s5p-fimc/fimc-capture.c | |||
| @@ -29,6 +29,7 @@ | |||
| 29 | 29 | ||
| 30 | #include "fimc-mdevice.h" | 30 | #include "fimc-mdevice.h" |
| 31 | #include "fimc-core.h" | 31 | #include "fimc-core.h" |
| 32 | #include "fimc-reg.h" | ||
| 32 | 33 | ||
| 33 | static int fimc_init_capture(struct fimc_dev *fimc) | 34 | static int fimc_init_capture(struct fimc_dev *fimc) |
| 34 | { | 35 | { |
diff --git a/drivers/media/video/s5p-fimc/fimc-core.c b/drivers/media/video/s5p-fimc/fimc-core.c index add24cd373a5..afd69e3d44c2 100644 --- a/drivers/media/video/s5p-fimc/fimc-core.c +++ b/drivers/media/video/s5p-fimc/fimc-core.c | |||
| @@ -28,6 +28,7 @@ | |||
| 28 | #include <media/videobuf2-dma-contig.h> | 28 | #include <media/videobuf2-dma-contig.h> |
| 29 | 29 | ||
| 30 | #include "fimc-core.h" | 30 | #include "fimc-core.h" |
| 31 | #include "fimc-reg.h" | ||
| 31 | #include "fimc-mdevice.h" | 32 | #include "fimc-mdevice.h" |
| 32 | 33 | ||
| 33 | static char *fimc_clocks[MAX_FIMC_CLOCKS] = { | 34 | static char *fimc_clocks[MAX_FIMC_CLOCKS] = { |
| @@ -388,40 +389,40 @@ int fimc_prepare_addr(struct fimc_ctx *ctx, struct vb2_buffer *vb, | |||
| 388 | void fimc_set_yuv_order(struct fimc_ctx *ctx) | 389 | void fimc_set_yuv_order(struct fimc_ctx *ctx) |
| 389 | { | 390 | { |
| 390 | /* The one only mode supported in SoC. */ | 391 | /* The one only mode supported in SoC. */ |
| 391 | ctx->in_order_2p = S5P_FIMC_LSB_CRCB; | 392 | ctx->in_order_2p = FIMC_REG_CIOCTRL_ORDER422_2P_LSB_CRCB; |
| 392 | ctx->out_order_2p = S5P_FIMC_LSB_CRCB; | 393 | ctx->out_order_2p = FIMC_REG_CIOCTRL_ORDER422_2P_LSB_CRCB; |
| 393 | 394 | ||
| 394 | /* Set order for 1 plane input formats. */ | 395 | /* Set order for 1 plane input formats. */ |
| 395 | switch (ctx->s_frame.fmt->color) { | 396 | switch (ctx->s_frame.fmt->color) { |
| 396 | case S5P_FIMC_YCRYCB422: | 397 | case S5P_FIMC_YCRYCB422: |
| 397 | ctx->in_order_1p = S5P_MSCTRL_ORDER422_CBYCRY; | 398 | ctx->in_order_1p = FIMC_REG_MSCTRL_ORDER422_CBYCRY; |
| 398 | break; | 399 | break; |
| 399 | case S5P_FIMC_CBYCRY422: | 400 | case S5P_FIMC_CBYCRY422: |
| 400 | ctx->in_order_1p = S5P_MSCTRL_ORDER422_YCRYCB; | 401 | ctx->in_order_1p = FIMC_REG_MSCTRL_ORDER422_YCRYCB; |
| 401 | break; | 402 | break; |
| 402 | case S5P_FIMC_CRYCBY422: | 403 | case S5P_FIMC_CRYCBY422: |
| 403 | ctx->in_order_1p = S5P_MSCTRL_ORDER422_YCBYCR; | 404 | ctx->in_order_1p = FIMC_REG_MSCTRL_ORDER422_YCBYCR; |
| 404 | break; | 405 | break; |
| 405 | case S5P_FIMC_YCBYCR422: | 406 | case S5P_FIMC_YCBYCR422: |
| 406 | default: | 407 | default: |
| 407 | ctx->in_order_1p = S5P_MSCTRL_ORDER422_CRYCBY; | 408 | ctx->in_order_1p = FIMC_REG_MSCTRL_ORDER422_CRYCBY; |
| 408 | break; | 409 | break; |
| 409 | } | 410 | } |
| 410 | dbg("ctx->in_order_1p= %d", ctx->in_order_1p); | 411 | dbg("ctx->in_order_1p= %d", ctx->in_order_1p); |
| 411 | 412 | ||
| 412 | switch (ctx->d_frame.fmt->color) { | 413 | switch (ctx->d_frame.fmt->color) { |
| 413 | case S5P_FIMC_YCRYCB422: | 414 | case S5P_FIMC_YCRYCB422: |
| 414 | ctx->out_order_1p = S5P_CIOCTRL_ORDER422_CBYCRY; | 415 | ctx->out_order_1p = FIMC_REG_CIOCTRL_ORDER422_CBYCRY; |
| 415 | break; | 416 | break; |
| 416 | case S5P_FIMC_CBYCRY422: | 417 | case S5P_FIMC_CBYCRY422: |
| 417 | ctx->out_order_1p = S5P_CIOCTRL_ORDER422_YCRYCB; | 418 | ctx->out_order_1p = FIMC_REG_CIOCTRL_ORDER422_YCRYCB; |
| 418 | break; | 419 | break; |
| 419 | case S5P_FIMC_CRYCBY422: | 420 | case S5P_FIMC_CRYCBY422: |
| 420 | ctx->out_order_1p = S5P_CIOCTRL_ORDER422_YCBYCR; | 421 | ctx->out_order_1p = FIMC_REG_CIOCTRL_ORDER422_YCBYCR; |
| 421 | break; | 422 | break; |
| 422 | case S5P_FIMC_YCBYCR422: | 423 | case S5P_FIMC_YCBYCR422: |
| 423 | default: | 424 | default: |
| 424 | ctx->out_order_1p = S5P_CIOCTRL_ORDER422_CRYCBY; | 425 | ctx->out_order_1p = FIMC_REG_CIOCTRL_ORDER422_CRYCBY; |
| 425 | break; | 426 | break; |
| 426 | } | 427 | } |
| 427 | dbg("ctx->out_order_1p= %d", ctx->out_order_1p); | 428 | dbg("ctx->out_order_1p= %d", ctx->out_order_1p); |
diff --git a/drivers/media/video/s5p-fimc/fimc-core.h b/drivers/media/video/s5p-fimc/fimc-core.h index ef7c6a23ca2a..34fbba424692 100644 --- a/drivers/media/video/s5p-fimc/fimc-core.h +++ b/drivers/media/video/s5p-fimc/fimc-core.h | |||
| @@ -26,8 +26,6 @@ | |||
| 26 | #include <media/v4l2-mediabus.h> | 26 | #include <media/v4l2-mediabus.h> |
| 27 | #include <media/s5p_fimc.h> | 27 | #include <media/s5p_fimc.h> |
| 28 | 28 | ||
| 29 | #include "regs-fimc.h" | ||
| 30 | |||
| 31 | #define err(fmt, args...) \ | 29 | #define err(fmt, args...) \ |
| 32 | printk(KERN_ERR "%s:%d: " fmt "\n", __func__, __LINE__, ##args) | 30 | printk(KERN_ERR "%s:%d: " fmt "\n", __func__, __LINE__, ##args) |
| 33 | 31 | ||
| @@ -106,17 +104,6 @@ enum fimc_color_fmt { | |||
| 106 | #define IS_M2M(__strt) ((__strt) == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE || \ | 104 | #define IS_M2M(__strt) ((__strt) == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE || \ |
| 107 | __strt == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE) | 105 | __strt == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE) |
| 108 | 106 | ||
| 109 | /* Cb/Cr chrominance components order for 2 plane Y/CbCr 4:2:2 formats. */ | ||
| 110 | #define S5P_FIMC_LSB_CRCB S5P_CIOCTRL_ORDER422_2P_LSB_CRCB | ||
| 111 | |||
| 112 | /* The embedded image effect selection */ | ||
| 113 | #define S5P_FIMC_EFFECT_ORIGINAL S5P_CIIMGEFF_FIN_BYPASS | ||
| 114 | #define S5P_FIMC_EFFECT_ARBITRARY S5P_CIIMGEFF_FIN_ARBITRARY | ||
| 115 | #define S5P_FIMC_EFFECT_NEGATIVE S5P_CIIMGEFF_FIN_NEGATIVE | ||
| 116 | #define S5P_FIMC_EFFECT_ARTFREEZE S5P_CIIMGEFF_FIN_ARTFREEZE | ||
| 117 | #define S5P_FIMC_EFFECT_EMBOSSING S5P_CIIMGEFF_FIN_EMBOSSING | ||
| 118 | #define S5P_FIMC_EFFECT_SIKHOUETTE S5P_CIIMGEFF_FIN_SILHOUETTE | ||
| 119 | |||
| 120 | /* The hardware context state. */ | 107 | /* The hardware context state. */ |
| 121 | #define FIMC_PARAMS (1 << 0) | 108 | #define FIMC_PARAMS (1 << 0) |
| 122 | #define FIMC_SRC_FMT (1 << 3) | 109 | #define FIMC_SRC_FMT (1 << 3) |
| @@ -588,54 +575,6 @@ static inline int fimc_get_alpha_mask(struct fimc_fmt *fmt) | |||
| 588 | }; | 575 | }; |
| 589 | } | 576 | } |
| 590 | 577 | ||
| 591 | static inline void fimc_hw_clear_irq(struct fimc_dev *dev) | ||
| 592 | { | ||
| 593 | u32 cfg = readl(dev->regs + S5P_CIGCTRL); | ||
| 594 | cfg |= S5P_CIGCTRL_IRQ_CLR; | ||
| 595 | writel(cfg, dev->regs + S5P_CIGCTRL); | ||
| 596 | } | ||
| 597 | |||
| 598 | static inline void fimc_hw_enable_scaler(struct fimc_dev *dev, bool on) | ||
| 599 | { | ||
| 600 | u32 cfg = readl(dev->regs + S5P_CISCCTRL); | ||
| 601 | if (on) | ||
| 602 | cfg |= S5P_CISCCTRL_SCALERSTART; | ||
| 603 | else | ||
| 604 | cfg &= ~S5P_CISCCTRL_SCALERSTART; | ||
| 605 | writel(cfg, dev->regs + S5P_CISCCTRL); | ||
| 606 | } | ||
| 607 | |||
| 608 | static inline void fimc_hw_activate_input_dma(struct fimc_dev *dev, bool on) | ||
| 609 | { | ||
| 610 | u32 cfg = readl(dev->regs + S5P_MSCTRL); | ||
| 611 | if (on) | ||
| 612 | cfg |= S5P_MSCTRL_ENVID; | ||
| 613 | else | ||
| 614 | cfg &= ~S5P_MSCTRL_ENVID; | ||
| 615 | writel(cfg, dev->regs + S5P_MSCTRL); | ||
| 616 | } | ||
| 617 | |||
| 618 | static inline void fimc_hw_dis_capture(struct fimc_dev *dev) | ||
| 619 | { | ||
| 620 | u32 cfg = readl(dev->regs + S5P_CIIMGCPT); | ||
| 621 | cfg &= ~(S5P_CIIMGCPT_IMGCPTEN | S5P_CIIMGCPT_IMGCPTEN_SC); | ||
| 622 | writel(cfg, dev->regs + S5P_CIIMGCPT); | ||
| 623 | } | ||
| 624 | |||
| 625 | /** | ||
| 626 | * fimc_hw_set_dma_seq - configure output DMA buffer sequence | ||
| 627 | * @mask: each bit corresponds to one of 32 output buffer registers set | ||
| 628 | * 1 to include buffer in the sequence, 0 to disable | ||
| 629 | * | ||
| 630 | * This function mask output DMA ring buffers, i.e. it allows to configure | ||
| 631 | * which of the output buffer address registers will be used by the DMA | ||
| 632 | * engine. | ||
| 633 | */ | ||
| 634 | static inline void fimc_hw_set_dma_seq(struct fimc_dev *dev, u32 mask) | ||
| 635 | |||
