| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239 |
- #ifndef _PXP_H
- #define _PXP_H
- /*
- * PXP Registers Definitions
- */
- #define PXP_CTRL 0x000 /* PXP Control Register */
- #define PXP_STAT 0x010 /* PXP Status Register */
- #define PXP_STAT_CLR 0x018
- #define PXP_OUTBUF 0x020 /* PXP Output Frame Buffer Pointer */
- #define PXP_OUTBUF2 0x030 /* PXP Output Frame Buffer Pointer #2 */
- #define PXP_OUTSIZE 0x040 /* PXP Output Size */
- #define PXP_S0BUF 0x050 /* PXP Source 0 (video) Input Buffer Pointer */
- #define PXP_S0UBUF 0x060 /* Source 0 U/Cb or 2 Plane UV Input Buffer Pointer */
- #define PXP_S0VBUF 0x070 /* Source 0 V/Cr Input Buffer Pointer */
- #define PXP_S0PARAM 0x080 /* PXP Source 0 (video) Buffer Parameters */
- #define PXP_S0BACKGROUND 0x090 /* Source 0 Background Color */
- #define PXP_S0CROP 0x0A0 /* Source 0 Cropping Register */
- #define PXP_S0SCALE 0x0B0 /* Source 0 Scale Factor Register */
- #define PXP_S0OFFSET 0x0C0 /* Source 0 Scale Offset Register */
- #define PXP_CSCCOEFF0 0x0D0 /* Color Space Conversion Coefficient Register0 */
- #define PXP_CSCCOEFF1 0x0E0 /* Color Space Conversion Coefficient Register1 */
- #define PXP_CSCCOEFF2 0x0F0 /* Color Space Conversion Coefficient Register2 */
- #define PXP_NEXT 0x100 /* PXP Next Frame Pointer */
- #define PXP_S0CKEYL 0x180 /* PXP S0 Color Key Low */
- #define PXP_S0CKEYH 0x190 /* PXP S0 Color Key High*/
- #define PXP_OLCKEYL 0x1A0 /* PXP Overlay Color Key Low*/
- #define PXP_OLCKEYH 0x1B0 /* PXP Overlay Color Key High*/
- #define PXP_DCTRL 0x1D0 /* PXP Debug Control Register */
- #define PXP_DEBUG 0x1E0 /* PXP Debug Register */
- #define PXP_VER 0x1F0 /* ARK PXP VER */
- #define PXP_OL0BUF 0x200 /* PXP Overlay 0 Buffer Pointer */
- #define PXP_OL0SIZE 0x210 /* PXP Overlay 0 Size */
- #define PXP_OL0PARAM 0x220 /* PXP Overlay 0 Parameters */
- #define PXP_OL0PARAM2 0x230 /* PXP Overlay 0 Parameters2 */
- #define PXP_OL1BUF 0x240 /* PXP Overlay 1 Buffer Pointer */
- #define PXP_OL1SIZE 0x250 /* PXP Overlay 1 Size */
- #define PXP_OL1PARAM 0x260 /* PXP Overlay 1 Parameters */
- #define PXP_OL1PARAM2 0x270 /* PXP Overlay 1 Parameters2 */
- #define PXP_OL2BUF 0x280 /* PXP Overlay 2 Buffer Pointer */
- #define PXP_OL2SIZE 0x290 /* PXP Overlay 2 Size */
- #define PXP_OL2PARAM 0x2A0 /* PXP Overlay 2 Parameters */
- #define PXP_OL2PARAM2 0x2B0 /* PXP Overlay 2 Parameters2 */
- #define PXP_OL3BUF 0x2C0 /* PXP Overlay 3 Buffer Pointer */
- #define PXP_OL3SIZE 0x2D0 /* PXP Overlay 3 Size */
- #define PXP_OL3PARAM 0x2E0 /* PXP Overlay 3 Parameters */
- #define PXP_OL3PARAM2 0x2F0 /* PXP Overlay 3 Parameters2 */
- #define PXP_OL4BUF 0x300 /* PXP Overlay 4 Buffer Pointer */
- #define PXP_OL4SIZE 0x310 /* PXP Overlay 4 Size */
- #define PXP_OL4PARAM 0x320 /* PXP Overlay 4 Parameters */
- #define PXP_OL4PARAM2 0x330 /* PXP Overlay 4 Parameters2 */
- #define PXP_OL5BUF 0x340 /* PXP Overlay 5 Buffer Pointer */
- #define PXP_OL5SIZE 0x350 /* PXP Overlay 5 Size */
- #define PXP_OL5PARAM 0x360 /* PXP Overlay 5 Parameters */
- #define PXP_OL5PARAM2 0x370 /* PXP Overlay 5 Parameters2 */
- #define PXP_OL6BUF 0x380 /* PXP Overlay 6 Buffer Pointer */
- #define PXP_OL6SIZE 0x390 /* PXP Overlay 6 Size */
- #define PXP_OL6PARAM 0x3A0 /* PXP Overlay 6 Parameters */
- #define PXP_OL6PARAM2 0x3B0 /* PXP Overlay 6 Parameters2 */
- #define PXP_OL7BUF 0x3C0 /* PXP Overlay 7 Buffer Pointer */
- #define PXP_OL7SIZE 0x3D0 /* PXP Overlay 7 Size */
- #define PXP_OL7PARAM 0x3E0 /* PXP Overlay 7 Parameters */
- #define PXP_OL7PARAM2 0x3F0 /* PXP Overlay 7 Parameters2 */
- /*
- * PXP Control Register Bit Offset.
- */
- #define SFTRST 31
- #define CLKGATE 30
- #define INTERLACED_OUTPUT 26
- #define INTERLACED_INPUT 24
- #define BLOCK_SIZE 23
- #define ALPHA_OUTPUT 22
- #define IN_PLACE 21
- #define CROP 19
- #define SCALE 18
- #define S0_FORMAT 12
- #define VFLIP 11
- #define HFLIP 10
- #define ROTATE 8
- #define OUTBUF_FORMAT 4
- #define LCD_HANDSHAKE_EN 3
- #define NEXT_IRQ_EN 2
- #define IRQ_EN 1
- #define PXP_EN 0
- /*
- * PXP IO
- */
- #define PXP_WRITEL(val, reg) *((volatile unsigned int *)(REGS_PXP_BASE + reg)) = (val)
- #define PXP_READL(reg) *((volatile unsigned int *)(REGS_PXP_BASE + reg))
- typedef enum _PXP_BLOCK_SIZE_TYPE {
- PXP_BLOCK_SIZE_8X8,
- PXP_BLOCK_SIZE_16X16,
- PXP_BLOCK_SIZE_END
- }PXP_BLOCK_SIZE_TYPE;
- typedef enum _PXP_COLOR_SPACE_CONVERNSION_COEFFICIENT {
- PXP_CSCCOEFF_YUV2RGB,
- PXP_CSCCOEFF_YCBCR2RGB,
- PCP_CSCCOEFF_END
- }PXP_CSCOEFF;
- typedef enum _PXP_ROTATE {
- PXP_ROTATE_0,
- PXP_ROTATE_90,
- PXP_ROTATE_180,
- PXP_ROTATE_270,
- PXP_ROTATE_END,
- }PXP_ROTATE;
- typedef enum _PXP_S0_FORMAT {
- PXP_S0_FORMAT_ARGB888 = 0x0, //
- PXP_S0_FORMAT_RGB888 = 0x1, //
- PXP_S0_FORMAT_RGB565 = 0x4, //
- PXP_S0_FORMAT_RGB555 = 0x5, //
- PXP_S0_FORMAT_YUV422 = 0x8, //
- PXP_S0_FORMAT_YUV420 = 0x9, //(y,u,v store)
- PXP_S0_FORMAT_UYVY1P422 = 0xA, //
- PXP_S0_FORMAT_VYUY1P422 = 0xB, //
- PXP_S0_FORMAT_YUV2P422 = 0xC, //
- PXP_S0_FORMAT_YUV2P420 = 0xD, //s0 and out(y, uv store)
- PXP_S0_FORMAT_YVU2P422 = 0xE, //
- PXP_S0_FORMAT_END
- }PXP_S0_FORMAT;
- typedef enum _PXP_OUT_FORMAT {
- PXP_OUT_FORMAT_ARGB888 = 0x0, //
- PXP_OUT_FORMAT_RGB888 = 0x1, //
- PXP_OUT_FORMAT_RGB888P = 0x2, //
- PXP_OUT_FORMAT_ARGB1555 = 0x3, //
- PXP_OUT_FORMAT_RGB565 = 0x4, //
- PXP_OUT_FORMAT_RGB555 = 0x5, //
- PXP_OUT_FORMAT_YUV444 = 0x7, //
- PXP_OUT_FORMAT_YUV420 = 0x9, //(y,u,v store)
- PXP_OUT_FORMAT_UYVY1P422 = 0xA, //
- PXP_OUT_FORMAT_VYUY1P422 = 0xB, //
- PXP_OUT_FORMAT_YUV2P422 = 0xC, //
- PXP_OUT_FORMAT_YUV2P420 = 0xD, //(y, uv store)
- PXP_OUT_FORMAT_YVU2P422 = 0xE,
- PXP_OUT_FORMAT_YVU2P420 = 0xF,
- PXP_OUT_FORMAT_END
- }PXP_OUT_FORMAT;
- typedef enum _PXP_OVERLAY_LAYER {
- PXP_OL0,
- PXP_OL1,
- PXP_OL2,
- PXP_OL3,
- PXP_OL4,
- PXP_OL5,
- PXP_OL6,
- PXP_OL7,
- PXP_OL_COUNT
- }PXP_OL_LAYER;
- typedef enum _PXP_OVERLAY_INPUT_BUFFER_FORMAT{
- PXP_OL_FORMAT_ARGB8888 = 0,
- PXP_OL_FORMAT_RGB888 = 1,
- PXP_OL_FORMAT_ARGB1555 = 3,
- PXP_OL_FORMAT_RGB565 = 4,
- PXP_OL_FORMAT_RGB555 = 5,
- PXP_OL_FORMAT_END,
- }PXP_OL_FORMAT;
- typedef enum _PXP_OVERLAY_ALPHA_CNTL_TYPE{
- PXP_OL_ALPHA_CNTL_TYPE_EMBEDDED = 0,
- PXP_OL_ALPHA_CNTL_TYPE_OVERRIDE = 1,
- PXP_OL_ALPHA_CNTL_TYPE_MULTIPLY = 2,
- PXP_OL_ALPHA_CNTL_TYPE_ROPS = 3,
- PXP_OL_ALPHA_CNTL_TYPE_END
- }PXP_OL_ALPHA_CNTL_TYPE;
- typedef struct {
- PXP_S0_FORMAT in_format;
- PXP_OUT_FORMAT out_format;
- uint8_t in_interlace_enable;
- uint8_t out_interlace_enable;
- uint32_t in_place;
- PXP_ROTATE rotate;
- uint8_t vflip_enable;
- uint8_t hflip_enable;
- uint8_t crop_enable;
- uint8_t scale_enable;
- uint8_t alpha_out_enable;
- }pxp_param;
- /* Overlay Func */
- int pxp_overlay_set_addr(PXP_OL_LAYER layer, uint32_t addr);
- int pxp_overlay_set_size(PXP_OL_LAYER layer, uint32_t xbase, uint32_t ybase, uint32_t width, uint32_t height);
- int pxp_overlay_set_format(PXP_OL_LAYER layer, PXP_OL_FORMAT format);
- int pxp_overlay_set_rop(PXP_OL_LAYER layer, uint32_t rop);
- int pxp_overlay_set_alpha_cntl_type(PXP_OL_LAYER layer, PXP_OL_ALPHA_CNTL_TYPE type);
- int pxp_overlay_set_alpha_value(PXP_OL_LAYER layer, uint32_t value);
- int pxp_overlay_colorkey_enable(PXP_OL_LAYER layer, uint32_t enable);
- int pxp_set_overlay_color_key(uint32_t low, uint32_t high);
- int pxp_overlay_enable(PXP_OL_LAYER layer, uint32_t enable);
- /* PXP Common Func */
- int pxp_set_input_addr(uint32_t yaddr, uint32_t uaddr, uint32_t vaddr);
- int pxp_set_s0_input_size(uint32_t xoffset, uint32_t yoffset, uint32_t width, uint32_t height);
- int pxp_set_s0_cropping_size(uint32_t xbase, uint32_t ybase, uint32_t width, uint32_t height);
- int pxp_set_s0_scale_factor(uint32_t xscale, uint32_t yscale);
- int pxp_set_output_addr(uint32_t addr, uint32_t addr2);
- int pxp_set_output_size(uint32_t width, uint32_t height);
- int pxp_set_output_alpha(uint32_t alpha);
- int pxp_set_control_param(pxp_param *param);
- int pxp_start(void);
- /* PXP default value Func:
- Interface with default argument value, may be you need them.
- If you not sure, ingore them.
- */
- int pxp_set_s0_background_color(uint32_t color);
- int pxp_set_s0_color_key(uint32_t low, uint32_t high);
- int pxp_set_s0_scale_offset(uint32_t x, uint32_t y);
- int pxp_set_output_alpha(uint32_t alpha);
- int pxp_set_block_size(PXP_BLOCK_SIZE_TYPE type);
- int pxp_set_color_space_conversion_coefficient(PXP_CSCOEFF mode);
- int pxp_init(void);
- int pxp_scaler_rotate(uint32_t s0buf, uint32_t s0ubuf, uint32_t s0vbuf,
- int s0format, uint32_t s0width, uint32_t s0height,
- uint32_t outbuf, uint32_t outbuf2, int outformat,
- uint32_t outwidth, uint32_t outheight, int outangle);
- int pxp_rotate(uint32_t s0buf, uint32_t s0ubuf, uint32_t s0vbuf,
- int s0format, uint32_t s0width, uint32_t s0height,
- uint32_t outbuf, uint32_t outbuf2, int outformat,
- int outangle);
- #endif
|