From 9370bb92b2d16684ee45cf24e879c93c509162da Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Thu, 19 Dec 2024 01:47:39 +0000
Subject: [PATCH] add wifi6 8852be driver

---
 kernel/drivers/video/rockchip/rga/rga.h |  977 ++++++++++++++++++++++++++++----------------------------
 1 files changed, 488 insertions(+), 489 deletions(-)

diff --git a/kernel/drivers/video/rockchip/rga/rga.h b/kernel/drivers/video/rockchip/rga/rga.h
index e54a6ef..0735a74 100644
--- a/kernel/drivers/video/rockchip/rga/rga.h
+++ b/kernel/drivers/video/rockchip/rga/rga.h
@@ -1,508 +1,507 @@
 /* SPDX-License-Identifier: GPL-2.0 */
-#ifndef _RGA_DRIVER_H_
-#define _RGA_DRIVER_H_
-
-#include <linux/mutex.h>
-#include <linux/scatterlist.h>
-
-
-#define RGA_BLIT_SYNC	0x5017
-#define RGA_BLIT_ASYNC  0x5018
-#define RGA_FLUSH       0x5019
-#define RGA_GET_RESULT  0x501a
-#define RGA_GET_VERSION 0x501b
-
-
-#define RGA_REG_CTRL_LEN    0x8    /* 8  */
-#define RGA_REG_CMD_LEN     0x20   /* 32 */
-#define RGA_CMD_BUF_SIZE    0x700  /* 16*28*4 */
-
-#define RGA_OUT_OF_RESOURCES    -10
-#define RGA_MALLOC_ERROR        -11
-
+#ifndef _RGA_DRIVER_H_
+#define _RGA_DRIVER_H_
+
+#include <linux/mutex.h>
+#include <linux/scatterlist.h>
+
+
+#define RGA_BLIT_SYNC	0x5017
+#define RGA_BLIT_ASYNC  0x5018
+#define RGA_FLUSH       0x5019
+#define RGA_GET_RESULT  0x501a
+#define RGA_GET_VERSION 0x501b
+
+
+#define RGA_REG_CTRL_LEN    0x8    /* 8  */
+#define RGA_REG_CMD_LEN     0x20   /* 32 */
+#define RGA_CMD_BUF_SIZE    0x700  /* 16*28*4 */
+
+#define RGA_OUT_OF_RESOURCES    -10
+#define RGA_MALLOC_ERROR        -11
+
 #define RGA_BUF_GEM_TYPE_MASK	0xC0
-
-#define rgaIS_ERROR(status)			(status < 0)
-#define rgaNO_ERROR(status)			(status >= 0)
-#define rgaIS_SUCCESS(status)		(status == 0)
-
+
+#define rgaIS_ERROR(status)			(status < 0)
+#define rgaNO_ERROR(status)			(status >= 0)
+#define rgaIS_SUCCESS(status)		(status == 0)
+
 #define RGA_DEBUGFS 1
-
-/* RGA process mode enum */
-enum
-{
-    bitblt_mode               = 0x0,
-    color_palette_mode        = 0x1,
-    color_fill_mode           = 0x2,
-    line_point_drawing_mode   = 0x3,
-    blur_sharp_filter_mode    = 0x4,
-    pre_scaling_mode          = 0x5,
-    update_palette_table_mode = 0x6,
-    update_patten_buff_mode   = 0x7,
-};
-
-
-enum
-{
-    rop_enable_mask          = 0x2,
-    dither_enable_mask       = 0x8,
-    fading_enable_mask       = 0x10,
-    PD_enbale_mask           = 0x20,
-};
-
-enum
-{
-    yuv2rgb_mode0            = 0x0,     /* BT.601 MPEG */
-    yuv2rgb_mode1            = 0x1,     /* BT.601 JPEG */
-    yuv2rgb_mode2            = 0x2,     /* BT.709      */
-};
-
-
-/* RGA rotate mode */
-enum
-{
-    rotate_mode0             = 0x0,     /* no rotate */
-    rotate_mode1             = 0x1,     /* rotate    */
-    rotate_mode2             = 0x2,     /* x_mirror  */
-    rotate_mode3             = 0x3,     /* y_mirror  */
-};
-
-enum
-{
-    color_palette_mode0      = 0x0,     /* 1K */
-    color_palette_mode1      = 0x1,     /* 2K */
-    color_palette_mode2      = 0x2,     /* 4K */
-    color_palette_mode3      = 0x3,     /* 8K */
-};
-
-
-
-/*
-//          Alpha    Red     Green   Blue
-{  4, 32, {{32,24,   8, 0,  16, 8,  24,16 }}, GGL_RGBA },   // RK_FORMAT_RGBA_8888
-{  4, 24, {{ 0, 0,   8, 0,  16, 8,  24,16 }}, GGL_RGB  },   // RK_FORMAT_RGBX_8888
-{  3, 24, {{ 0, 0,   8, 0,  16, 8,  24,16 }}, GGL_RGB  },   // RK_FORMAT_RGB_888
-{  4, 32, {{32,24,  24,16,  16, 8,   8, 0 }}, GGL_BGRA },   // RK_FORMAT_BGRA_8888
-{  2, 16, {{ 0, 0,  16,11,  11, 5,   5, 0 }}, GGL_RGB  },   // RK_FORMAT_RGB_565
-{  2, 16, {{ 1, 0,  16,11,  11, 6,   6, 1 }}, GGL_RGBA },   // RK_FORMAT_RGBA_5551
-{  2, 16, {{ 4, 0,  16,12,  12, 8,   8, 4 }}, GGL_RGBA },   // RK_FORMAT_RGBA_4444
-{  3, 24, {{ 0, 0,  24,16,  16, 8,   8, 0 }}, GGL_BGR  },   // RK_FORMAT_BGB_888
-
-*/
-enum
-{
-	RK_FORMAT_RGBA_8888    = 0x0,
-    RK_FORMAT_RGBX_8888    = 0x1,
-    RK_FORMAT_RGB_888      = 0x2,
-    RK_FORMAT_BGRA_8888    = 0x3,
-    RK_FORMAT_RGB_565      = 0x4,
-    RK_FORMAT_RGBA_5551    = 0x5,
-    RK_FORMAT_RGBA_4444    = 0x6,
-    RK_FORMAT_BGR_888      = 0x7,
-
-    RK_FORMAT_YCbCr_422_SP = 0x8,
-    RK_FORMAT_YCbCr_422_P  = 0x9,
-    RK_FORMAT_YCbCr_420_SP = 0xa,
-    RK_FORMAT_YCbCr_420_P  = 0xb,
-
-    RK_FORMAT_YCrCb_422_SP = 0xc,
-    RK_FORMAT_YCrCb_422_P  = 0xd,
-    RK_FORMAT_YCrCb_420_SP = 0xe,
-    RK_FORMAT_YCrCb_420_P  = 0xf,
-
-    RK_FORMAT_BPP1         = 0x10,
-    RK_FORMAT_BPP2         = 0x11,
-    RK_FORMAT_BPP4         = 0x12,
-    RK_FORMAT_BPP8         = 0x13,
-    RK_FORMAT_YCbCr_420_SP_10B = 0x20,
-    RK_FORMAT_YCrCb_420_SP_10B = 0x21,
-};
-
-
-typedef struct rga_img_info_t
-{
-    unsigned long yrgb_addr;      /* yrgb    mem addr         */
-    unsigned long uv_addr;        /* cb/cr   mem addr         */
-    unsigned long v_addr;         /* cr      mem addr         */
-    unsigned int format;         //definition by RK_FORMAT
-
-    unsigned short act_w;
-    unsigned short act_h;
-    unsigned short x_offset;
-    unsigned short y_offset;
-
-    unsigned short vir_w;
-    unsigned short vir_h;
-
-    unsigned short endian_mode; //for BPP
-    unsigned short alpha_swap;
-}
-rga_img_info_t;
-
-
-typedef struct mdp_img_act
-{
-    unsigned short w;         // width
-    unsigned short h;         // height
-    short x_off;     // x offset for the vir
-    short y_off;     // y offset for the vir
-}
-mdp_img_act;
-
-
-
-typedef struct RANGE
-{
-    unsigned short min;
-    unsigned short max;
-}
-RANGE;
-
-typedef struct POINT
-{
-    unsigned short x;
-    unsigned short y;
-}
-POINT;
-
-typedef struct RECT
-{
-    unsigned short xmin;
-    unsigned short xmax; // width - 1
-    unsigned short ymin;
-    unsigned short ymax; // height - 1
-} RECT;
-
-typedef struct RGB
-{
-    unsigned char r;
-    unsigned char g;
-    unsigned char b;
-    unsigned char res;
-}RGB;
-
-
-typedef struct MMU
-{
-    unsigned char mmu_en;
-    unsigned long base_addr;
+
+/* RGA process mode enum */
+enum
+{
+    bitblt_mode               = 0x0,
+    color_palette_mode        = 0x1,
+    color_fill_mode           = 0x2,
+    line_point_drawing_mode   = 0x3,
+    blur_sharp_filter_mode    = 0x4,
+    pre_scaling_mode          = 0x5,
+    update_palette_table_mode = 0x6,
+    update_patten_buff_mode   = 0x7,
+};
+
+
+enum
+{
+    rop_enable_mask          = 0x2,
+    dither_enable_mask       = 0x8,
+    fading_enable_mask       = 0x10,
+    PD_enbale_mask           = 0x20,
+};
+
+enum
+{
+    yuv2rgb_mode0            = 0x0,     /* BT.601 MPEG */
+    yuv2rgb_mode1            = 0x1,     /* BT.601 JPEG */
+    yuv2rgb_mode2            = 0x2,     /* BT.709      */
+};
+
+
+/* RGA rotate mode */
+enum
+{
+    rotate_mode0             = 0x0,     /* no rotate */
+    rotate_mode1             = 0x1,     /* rotate    */
+    rotate_mode2             = 0x2,     /* x_mirror  */
+    rotate_mode3             = 0x3,     /* y_mirror  */
+};
+
+enum
+{
+    color_palette_mode0      = 0x0,     /* 1K */
+    color_palette_mode1      = 0x1,     /* 2K */
+    color_palette_mode2      = 0x2,     /* 4K */
+    color_palette_mode3      = 0x3,     /* 8K */
+};
+
+
+
+/*
+//          Alpha    Red     Green   Blue
+{  4, 32, {{32,24,   8, 0,  16, 8,  24,16 }}, GGL_RGBA },   // RK_FORMAT_RGBA_8888
+{  4, 24, {{ 0, 0,   8, 0,  16, 8,  24,16 }}, GGL_RGB  },   // RK_FORMAT_RGBX_8888
+{  3, 24, {{ 0, 0,   8, 0,  16, 8,  24,16 }}, GGL_RGB  },   // RK_FORMAT_RGB_888
+{  4, 32, {{32,24,  24,16,  16, 8,   8, 0 }}, GGL_BGRA },   // RK_FORMAT_BGRA_8888
+{  2, 16, {{ 0, 0,  16,11,  11, 5,   5, 0 }}, GGL_RGB  },   // RK_FORMAT_RGB_565
+{  2, 16, {{ 1, 0,  16,11,  11, 6,   6, 1 }}, GGL_RGBA },   // RK_FORMAT_RGBA_5551
+{  2, 16, {{ 4, 0,  16,12,  12, 8,   8, 4 }}, GGL_RGBA },   // RK_FORMAT_RGBA_4444
+{  3, 24, {{ 0, 0,  24,16,  16, 8,   8, 0 }}, GGL_BGR  },   // RK_FORMAT_BGB_888
+
+*/
+enum
+{
+	RK_FORMAT_RGBA_8888    = 0x0,
+    RK_FORMAT_RGBX_8888    = 0x1,
+    RK_FORMAT_RGB_888      = 0x2,
+    RK_FORMAT_BGRA_8888    = 0x3,
+    RK_FORMAT_RGB_565      = 0x4,
+    RK_FORMAT_RGBA_5551    = 0x5,
+    RK_FORMAT_RGBA_4444    = 0x6,
+    RK_FORMAT_BGR_888      = 0x7,
+
+    RK_FORMAT_YCbCr_422_SP = 0x8,
+    RK_FORMAT_YCbCr_422_P  = 0x9,
+    RK_FORMAT_YCbCr_420_SP = 0xa,
+    RK_FORMAT_YCbCr_420_P  = 0xb,
+
+    RK_FORMAT_YCrCb_422_SP = 0xc,
+    RK_FORMAT_YCrCb_422_P  = 0xd,
+    RK_FORMAT_YCrCb_420_SP = 0xe,
+    RK_FORMAT_YCrCb_420_P  = 0xf,
+
+    RK_FORMAT_BPP1         = 0x10,
+    RK_FORMAT_BPP2         = 0x11,
+    RK_FORMAT_BPP4         = 0x12,
+    RK_FORMAT_BPP8         = 0x13,
+    RK_FORMAT_YCbCr_420_SP_10B = 0x20,
+    RK_FORMAT_YCrCb_420_SP_10B = 0x21,
+};
+
+
+typedef struct rga_img_info_t
+{
+    unsigned long yrgb_addr;      /* yrgb    mem addr         */
+    unsigned long uv_addr;        /* cb/cr   mem addr         */
+    unsigned long v_addr;         /* cr      mem addr         */
+    unsigned int format;         //definition by RK_FORMAT
+
+    unsigned short act_w;
+    unsigned short act_h;
+    unsigned short x_offset;
+    unsigned short y_offset;
+
+    unsigned short vir_w;
+    unsigned short vir_h;
+
+    unsigned short endian_mode; //for BPP
+    unsigned short alpha_swap;
+}
+rga_img_info_t;
+
+
+typedef struct mdp_img_act
+{
+    unsigned short w;         // width
+    unsigned short h;         // height
+    short x_off;     // x offset for the vir
+    short y_off;     // y offset for the vir
+}
+mdp_img_act;
+
+
+
+typedef struct RANGE
+{
+    unsigned short min;
+    unsigned short max;
+}
+RANGE;
+
+typedef struct POINT
+{
+    unsigned short x;
+    unsigned short y;
+}
+POINT;
+
+typedef struct RECT
+{
+    unsigned short xmin;
+    unsigned short xmax; // width - 1
+    unsigned short ymin;
+    unsigned short ymax; // height - 1
+} RECT;
+
+typedef struct RGB
+{
+    unsigned char r;
+    unsigned char g;
+    unsigned char b;
+    unsigned char res;
+}RGB;
+
+
+typedef struct MMU
+{
+    unsigned char mmu_en;
+    unsigned long base_addr;
 	uint32_t mmu_flag;
-} MMU;
-
-
-
-
-typedef struct COLOR_FILL
-{
-    short gr_x_a;
-    short gr_y_a;
-    short gr_x_b;
-    short gr_y_b;
-    short gr_x_g;
-    short gr_y_g;
-    short gr_x_r;
-    short gr_y_r;
-
-    //u8  cp_gr_saturation;
-}
-COLOR_FILL;
-
-typedef struct FADING
-{
-    uint8_t b;
-    uint8_t g;
-    uint8_t r;
-    uint8_t res;
-}
-FADING;
-
-
-typedef struct line_draw_t
-{
-    POINT start_point;              /* LineDraw_start_point                */
-    POINT end_point;                /* LineDraw_end_point                  */
-    uint32_t   color;               /* LineDraw_color                      */
-    uint32_t   flag;                /* (enum) LineDrawing mode sel         */
-    uint32_t   line_width;          /* range 1~16 */
-}
-line_draw_t;
-
-
-
-struct rga_req {
-    uint8_t render_mode;            /* (enum) process mode sel */
-
-    rga_img_info_t src;             /* src image info */
-    rga_img_info_t dst;             /* dst image info */
-    rga_img_info_t pat;             /* patten image info */
-
-    unsigned long rop_mask_addr;         /* rop4 mask addr */
-    unsigned long LUT_addr;              /* LUT addr */
-
-    RECT clip;                      /* dst clip window default value is dst_vir */
-                                    /* value from [0, w-1] / [0, h-1]*/
-
-    int32_t sina;                   /* dst angle  default value 0  16.16 scan from table */
-    int32_t cosa;                   /* dst angle  default value 0  16.16 scan from table */
-
-    uint16_t alpha_rop_flag;        /* alpha rop process flag           */
-                                    /* ([0] = 1 alpha_rop_enable)       */
-                                    /* ([1] = 1 rop enable)             */
-                                    /* ([2] = 1 fading_enable)          */
-                                    /* ([3] = 1 PD_enable)              */
-                                    /* ([4] = 1 alpha cal_mode_sel)     */
-                                    /* ([5] = 1 dither_enable)          */
-                                    /* ([6] = 1 gradient fill mode sel) */
-                                    /* ([7] = 1 AA_enable)              */
-
-    uint8_t  scale_mode;            /* 0 nearst / 1 bilnear / 2 bicubic */
-
-    uint32_t color_key_max;         /* color key max */
-    uint32_t color_key_min;         /* color key min */
-
-    uint32_t fg_color;              /* foreground color */
-    uint32_t bg_color;              /* background color */
-
-    COLOR_FILL gr_color;            /* color fill use gradient */
-
-    line_draw_t line_draw_info;
-
-    FADING fading;
-
-    uint8_t PD_mode;                /* porter duff alpha mode sel */
-
-    uint8_t alpha_global_value;     /* global alpha value */
-
-    uint16_t rop_code;              /* rop2/3/4 code  scan from rop code table*/
-
-    uint8_t bsfilter_flag;          /* [2] 0 blur 1 sharp / [1:0] filter_type*/
-
-    uint8_t palette_mode;           /* (enum) color palatte  0/1bpp, 1/2bpp 2/4bpp 3/8bpp*/
-
-    uint8_t yuv2rgb_mode;           /* (enum) BT.601 MPEG / BT.601 JPEG / BT.709  */
-
-    uint8_t endian_mode;            /* 0/big endian 1/little endian*/
-
-    uint8_t rotate_mode;            /* (enum) rotate mode  */
-                                    /* 0x0,     no rotate  */
-                                    /* 0x1,     rotate     */
-                                    /* 0x2,     x_mirror   */
-                                    /* 0x3,     y_mirror   */
-
-    uint8_t color_fill_mode;        /* 0 solid color / 1 patten color */
-
-    MMU mmu_info;                   /* mmu information */
-
-    uint8_t  alpha_rop_mode;        /* ([0~1] alpha mode)       */
-                                    /* ([2~3] rop   mode)       */
-                                    /* ([4]   zero  mode en)    */
-                                    /* ([5]   dst   alpha mode) */
-
-    uint8_t  src_trans_mode;
-
-    struct sg_table *sg_src;
+} MMU;
+
+
+
+
+typedef struct COLOR_FILL
+{
+    short gr_x_a;
+    short gr_y_a;
+    short gr_x_b;
+    short gr_y_b;
+    short gr_x_g;
+    short gr_y_g;
+    short gr_x_r;
+    short gr_y_r;
+
+    //u8  cp_gr_saturation;
+}
+COLOR_FILL;
+
+typedef struct FADING
+{
+    uint8_t b;
+    uint8_t g;
+    uint8_t r;
+    uint8_t res;
+}
+FADING;
+
+
+typedef struct line_draw_t
+{
+    POINT start_point;              /* LineDraw_start_point                */
+    POINT end_point;                /* LineDraw_end_point                  */
+    uint32_t   color;               /* LineDraw_color                      */
+    uint32_t   flag;                /* (enum) LineDrawing mode sel         */
+    uint32_t   line_width;          /* range 1~16 */
+}
+line_draw_t;
+
+
+
+struct rga_req {
+    uint8_t render_mode;            /* (enum) process mode sel */
+
+    rga_img_info_t src;             /* src image info */
+    rga_img_info_t dst;             /* dst image info */
+    rga_img_info_t pat;             /* patten image info */
+
+    unsigned long rop_mask_addr;         /* rop4 mask addr */
+    unsigned long LUT_addr;              /* LUT addr */
+
+    RECT clip;                      /* dst clip window default value is dst_vir */
+                                    /* value from [0, w-1] / [0, h-1]*/
+
+    int32_t sina;                   /* dst angle  default value 0  16.16 scan from table */
+    int32_t cosa;                   /* dst angle  default value 0  16.16 scan from table */
+
+    uint16_t alpha_rop_flag;        /* alpha rop process flag           */
+                                    /* ([0] = 1 alpha_rop_enable)       */
+                                    /* ([1] = 1 rop enable)             */
+                                    /* ([2] = 1 fading_enable)          */
+                                    /* ([3] = 1 PD_enable)              */
+                                    /* ([4] = 1 alpha cal_mode_sel)     */
+                                    /* ([5] = 1 dither_enable)          */
+                                    /* ([6] = 1 gradient fill mode sel) */
+                                    /* ([7] = 1 AA_enable)              */
+
+    uint8_t  scale_mode;            /* 0 nearst / 1 bilnear / 2 bicubic */
+
+    uint32_t color_key_max;         /* color key max */
+    uint32_t color_key_min;         /* color key min */
+
+    uint32_t fg_color;              /* foreground color */
+    uint32_t bg_color;              /* background color */
+
+    COLOR_FILL gr_color;            /* color fill use gradient */
+
+    line_draw_t line_draw_info;
+
+    FADING fading;
+
+    uint8_t PD_mode;                /* porter duff alpha mode sel */
+
+    uint8_t alpha_global_value;     /* global alpha value */
+
+    uint16_t rop_code;              /* rop2/3/4 code  scan from rop code table*/
+
+    uint8_t bsfilter_flag;          /* [2] 0 blur 1 sharp / [1:0] filter_type*/
+
+    uint8_t palette_mode;           /* (enum) color palatte  0/1bpp, 1/2bpp 2/4bpp 3/8bpp*/
+
+    uint8_t yuv2rgb_mode;           /* (enum) BT.601 MPEG / BT.601 JPEG / BT.709  */
+
+    uint8_t endian_mode;            /* 0/big endian 1/little endian*/
+
+    uint8_t rotate_mode;            /* (enum) rotate mode  */
+                                    /* 0x0,     no rotate  */
+                                    /* 0x1,     rotate     */
+                                    /* 0x2,     x_mirror   */
+                                    /* 0x3,     y_mirror   */
+
+    uint8_t color_fill_mode;        /* 0 solid color / 1 patten color */
+
+    MMU mmu_info;                   /* mmu information */
+
+    uint8_t  alpha_rop_mode;        /* ([0~1] alpha mode)       */
+                                    /* ([2~3] rop   mode)       */
+                                    /* ([4]   zero  mode en)    */
+                                    /* ([5]   dst   alpha mode) */
+
+    uint8_t  src_trans_mode;
+
+    struct sg_table *sg_src;
 	struct sg_table *sg_dst;
 	struct dma_buf_attachment *attach_src;
 	struct dma_buf_attachment *attach_dst;
-};
-
-
-typedef struct TILE_INFO
-{
-    int64_t matrix[4];
-
-    uint16_t tile_x_num;     /* x axis tile num / tile size is 8x8 pixel */
-    uint16_t tile_y_num;     /* y axis tile num */
-
-    int16_t dst_x_tmp;      /* dst pos x = (xstart - xoff) default value 0 */
-    int16_t dst_y_tmp;      /* dst pos y = (ystart - yoff) default value 0 */
-
-    uint16_t tile_w;
-    uint16_t tile_h;
-    int16_t tile_start_x_coor;
-    int16_t tile_start_y_coor;
-    int32_t tile_xoff;
-    int32_t tile_yoff;
-
-    int32_t tile_temp_xstart;
-    int32_t tile_temp_ystart;
-
-    /* src tile incr */
-    int32_t x_dx;
-    int32_t x_dy;
-    int32_t y_dx;
-    int32_t y_dy;
-
-    mdp_img_act dst_ctrl;
-
-}
-TILE_INFO;
-
-struct rga_mmu_buf_t {
-    int32_t front;
-    int32_t back;
-    int32_t size;
-    int32_t curr;
-    unsigned int *buf;
-    unsigned int *buf_virtual;
-
-    struct page **pages;
-};
-
-/**
- * struct for process session which connect to rga
- *
- * @author ZhangShengqin (2012-2-15)
- */
-typedef struct rga_session {
-	/* a linked list of data so we can access them for debugging */
-	struct list_head    list_session;
-	/* a linked list of register data waiting for process */
-	struct list_head    waiting;
-	/* a linked list of register data in processing */
-	struct list_head    running;
-	/* all coommand this thread done */
-    atomic_t            done;
-	wait_queue_head_t   wait;
-	pid_t           pid;
-	atomic_t        task_running;
-    atomic_t        num_done;
-} rga_session;
-
-struct rga_reg {
-    rga_session 		*session;
-	struct list_head	session_link;		/* link to rga service session */
-	struct list_head	status_link;		/* link to register set list */
-	uint32_t  sys_reg[RGA_REG_CTRL_LEN];
-    uint32_t  cmd_reg[RGA_REG_CMD_LEN];
-
-    uint32_t *MMU_base;
-    uint32_t MMU_len;
-    //atomic_t int_enable;
-
-    //struct rga_req      req;
+};
+
+
+typedef struct TILE_INFO
+{
+    int64_t matrix[4];
+
+    uint16_t tile_x_num;     /* x axis tile num / tile size is 8x8 pixel */
+    uint16_t tile_y_num;     /* y axis tile num */
+
+    int16_t dst_x_tmp;      /* dst pos x = (xstart - xoff) default value 0 */
+    int16_t dst_y_tmp;      /* dst pos y = (ystart - yoff) default value 0 */
+
+    uint16_t tile_w;
+    uint16_t tile_h;
+    int16_t tile_start_x_coor;
+    int16_t tile_start_y_coor;
+    int32_t tile_xoff;
+    int32_t tile_yoff;
+
+    int32_t tile_temp_xstart;
+    int32_t tile_temp_ystart;
+
+    /* src tile incr */
+    int32_t x_dx;
+    int32_t x_dy;
+    int32_t y_dx;
+    int32_t y_dy;
+
+    mdp_img_act dst_ctrl;
+
+}
+TILE_INFO;
+
+struct rga_mmu_buf_t {
+    int32_t front;
+    int32_t back;
+    int32_t size;
+    int32_t curr;
+    unsigned int *buf;
+    unsigned int *buf_virtual;
+
+    struct page **pages;
+};
+
+/**
+ * struct for process session which connect to rga
+ *
+ * @author ZhangShengqin (2012-2-15)
+ */
+typedef struct rga_session {
+	/* a linked list of data so we can access them for debugging */
+	struct list_head    list_session;
+	/* a linked list of register data waiting for process */
+	struct list_head    waiting;
+	/* a linked list of register data in processing */
+	struct list_head    running;
+	/* all coommand this thread done */
+    atomic_t            done;
+	wait_queue_head_t   wait;
+	pid_t           pid;
+	atomic_t        task_running;
+    atomic_t        num_done;
+} rga_session;
+
+struct rga_reg {
+    rga_session 		*session;
+	struct list_head	session_link;		/* link to rga service session */
+	struct list_head	status_link;		/* link to register set list */
+	uint32_t  sys_reg[RGA_REG_CTRL_LEN];
+    uint32_t  cmd_reg[RGA_REG_CMD_LEN];
+
+    uint32_t *MMU_base;
+    uint32_t MMU_len;
+    //atomic_t int_enable;
+
+    //struct rga_req      req;
 
 	struct sg_table *sg_src;
 	struct sg_table *sg_dst;
 
 	struct dma_buf_attachment *attach_src;
 	struct dma_buf_attachment *attach_dst;
-};
-
-
-
-typedef struct rga_service_info {
-    struct mutex	lock;
-    struct timer_list	timer;			/* timer for power off */
-    struct list_head	waiting;		/* link to link_reg in struct vpu_reg */
-    struct list_head	running;		/* link to link_reg in struct vpu_reg */
-    struct list_head	done;			/* link to link_reg in struct vpu_reg */
-    struct list_head	session;		/* link to list_session in struct vpu_session */
-    atomic_t		total_running;
-
-    struct rga_reg        *reg;
-
-    uint32_t            cmd_buff[28*8];/* cmd_buff for rga */
-    uint32_t            *pre_scale_buf;
-    unsigned long       *pre_scale_buf_virtual;
+};
+
+
+
+typedef struct rga_service_info {
+    struct mutex	lock;
+    struct timer_list	timer;			/* timer for power off */
+    struct list_head	waiting;		/* link to link_reg in struct vpu_reg */
+    struct list_head	running;		/* link to link_reg in struct vpu_reg */
+    struct list_head	done;			/* link to link_reg in struct vpu_reg */
+    struct list_head	session;		/* link to list_session in struct vpu_session */
+    atomic_t		total_running;
+
+    struct rga_reg        *reg;
+
+    uint32_t            cmd_buff[28*8];/* cmd_buff for rga */
+    uint32_t            *pre_scale_buf;
 	atomic_t            int_disable;     /* 0 int enable 1 int disable  */
-    atomic_t            cmd_num;
+    atomic_t            cmd_num;
 	atomic_t src_format_swt;
 	int last_prc_src_format;
 	atomic_t            rga_working;
-    bool                enable;
+    bool                enable;
 	u32 dev_mode;
-
-    //struct rga_req      req[10];
-
-    struct mutex	mutex;	// mutex
-} rga_service_info;
-
-
-
-#if defined(CONFIG_ARCH_RK2928) || defined(CONFIG_ARCH_RK3026) || defined(CONFIG_ARCH_RK312x)
-#define RGA_BASE                 0x1010c000
-#elif defined(CONFIG_ARCH_RK30)
-#define RGA_BASE                 0x10114000
-#endif
-
-//General Registers
-#define RGA_SYS_CTRL             0x000
-#define RGA_CMD_CTRL             0x004
-#define RGA_CMD_ADDR             0x008
-#define RGA_STATUS               0x00c
-#define RGA_INT                  0x010
-#define RGA_AXI_ID               0x014
-#define RGA_MMU_STA_CTRL         0x018
-#define RGA_MMU_STA              0x01c
+
+    //struct rga_req      req[10];
+
+    struct mutex	mutex;	// mutex
+} rga_service_info;
+
+
+
+#if defined(CONFIG_ARCH_RK2928) || defined(CONFIG_ARCH_RK3026) || defined(CONFIG_ARCH_RK312x)
+#define RGA_BASE                 0x1010c000
+#elif defined(CONFIG_ARCH_RK30)
+#define RGA_BASE                 0x10114000
+#endif
+
+//General Registers
+#define RGA_SYS_CTRL             0x000
+#define RGA_CMD_CTRL             0x004
+#define RGA_CMD_ADDR             0x008
+#define RGA_STATUS               0x00c
+#define RGA_INT                  0x010
+#define RGA_AXI_ID               0x014
+#define RGA_MMU_STA_CTRL         0x018
+#define RGA_MMU_STA              0x01c
 #define RGA_VERSION              0x028
-
-//Command code start
-#define RGA_MODE_CTRL            0x100
-
-//Source Image Registers
-#define RGA_SRC_Y_MST            0x104
-#define RGA_SRC_CB_MST           0x108
-#define RGA_MASK_READ_MST        0x108  //repeat
-#define RGA_SRC_CR_MST           0x10c
-#define RGA_SRC_VIR_INFO         0x110
-#define RGA_SRC_ACT_INFO         0x114
-#define RGA_SRC_X_PARA           0x118
-#define RGA_SRC_Y_PARA           0x11c
-#define RGA_SRC_TILE_XINFO       0x120
-#define RGA_SRC_TILE_YINFO       0x124
-#define RGA_SRC_TILE_H_INCR      0x128
-#define RGA_SRC_TILE_V_INCR      0x12c
-#define RGA_SRC_TILE_OFFSETX     0x130
-#define RGA_SRC_TILE_OFFSETY     0x134
-#define RGA_SRC_BG_COLOR         0x138
-#define RGA_SRC_FG_COLOR         0x13c
-#define RGA_LINE_DRAWING_COLOR   0x13c  //repeat
-#define RGA_SRC_TR_COLOR0        0x140
-#define RGA_CP_GR_A              0x140  //repeat
-#define RGA_SRC_TR_COLOR1        0x144
-#define RGA_CP_GR_B              0x144  //repeat
-
-#define RGA_LINE_DRAW            0x148
-#define RGA_PAT_START_POINT      0x148  //repeat
-
-//Destination Image Registers
-#define RGA_DST_MST              0x14c
-#define RGA_LUT_MST              0x14c  //repeat
-#define RGA_PAT_MST              0x14c  //repeat
-#define RGA_LINE_DRAWING_MST     0x14c  //repeat
-
-#define RGA_DST_VIR_INFO         0x150
-
-#define RGA_DST_CTR_INFO         0x154
-#define RGA_LINE_DRAW_XY_INFO    0x154  //repeat
-
-//Alpha/ROP Registers
-#define RGA_ALPHA_CON            0x158
-
-#define RGA_PAT_CON              0x15c
-#define RGA_DST_VIR_WIDTH_PIX    0x15c  //repeat
-
-#define RGA_ROP_CON0             0x160
-#define RGA_CP_GR_G              0x160  //repeat
-#define RGA_PRESCL_CB_MST        0x160  //repeat
-
-#define RGA_ROP_CON1             0x164
-#define RGA_CP_GR_R              0x164  //repeat
-#define RGA_PRESCL_CR_MST        0x164  //repeat
-
-//MMU Register
-#define RGA_FADING_CON           0x168
-#define RGA_MMU_CTRL             0x168  //repeat
-
-#define RGA_MMU_TBL              0x16c  //repeat
-
-#define RGA_YUV_OUT_CFG          0x170
-#define RGA_DST_UV_MST           0x174
-
-
-#define RGA_BLIT_COMPLETE_EVENT 1
-
-long rga_ioctl_kernel(struct rga_req *req);
-
-#endif /*_RK29_IPP_DRIVER_H_*/
+
+//Command code start
+#define RGA_MODE_CTRL            0x100
+
+//Source Image Registers
+#define RGA_SRC_Y_MST            0x104
+#define RGA_SRC_CB_MST           0x108
+#define RGA_MASK_READ_MST        0x108  //repeat
+#define RGA_SRC_CR_MST           0x10c
+#define RGA_SRC_VIR_INFO         0x110
+#define RGA_SRC_ACT_INFO         0x114
+#define RGA_SRC_X_PARA           0x118
+#define RGA_SRC_Y_PARA           0x11c
+#define RGA_SRC_TILE_XINFO       0x120
+#define RGA_SRC_TILE_YINFO       0x124
+#define RGA_SRC_TILE_H_INCR      0x128
+#define RGA_SRC_TILE_V_INCR      0x12c
+#define RGA_SRC_TILE_OFFSETX     0x130
+#define RGA_SRC_TILE_OFFSETY     0x134
+#define RGA_SRC_BG_COLOR         0x138
+#define RGA_SRC_FG_COLOR         0x13c
+#define RGA_LINE_DRAWING_COLOR   0x13c  //repeat
+#define RGA_SRC_TR_COLOR0        0x140
+#define RGA_CP_GR_A              0x140  //repeat
+#define RGA_SRC_TR_COLOR1        0x144
+#define RGA_CP_GR_B              0x144  //repeat
+
+#define RGA_LINE_DRAW            0x148
+#define RGA_PAT_START_POINT      0x148  //repeat
+
+//Destination Image Registers
+#define RGA_DST_MST              0x14c
+#define RGA_LUT_MST              0x14c  //repeat
+#define RGA_PAT_MST              0x14c  //repeat
+#define RGA_LINE_DRAWING_MST     0x14c  //repeat
+
+#define RGA_DST_VIR_INFO         0x150
+
+#define RGA_DST_CTR_INFO         0x154
+#define RGA_LINE_DRAW_XY_INFO    0x154  //repeat
+
+//Alpha/ROP Registers
+#define RGA_ALPHA_CON            0x158
+
+#define RGA_PAT_CON              0x15c
+#define RGA_DST_VIR_WIDTH_PIX    0x15c  //repeat
+
+#define RGA_ROP_CON0             0x160
+#define RGA_CP_GR_G              0x160  //repeat
+#define RGA_PRESCL_CB_MST        0x160  //repeat
+
+#define RGA_ROP_CON1             0x164
+#define RGA_CP_GR_R              0x164  //repeat
+#define RGA_PRESCL_CR_MST        0x164  //repeat
+
+//MMU Register
+#define RGA_FADING_CON           0x168
+#define RGA_MMU_CTRL             0x168  //repeat
+
+#define RGA_MMU_TBL              0x16c  //repeat
+
+#define RGA_YUV_OUT_CFG          0x170
+#define RGA_DST_UV_MST           0x174
+
+
+#define RGA_BLIT_COMPLETE_EVENT 1
+
+long rga_ioctl_kernel(struct rga_req *req);
+
+#endif /*_RK29_IPP_DRIVER_H_*/

--
Gitblit v1.6.2