Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 //
0003 // Ingenic JZ47xx IPU - Register definitions and private API
0004 //
0005 // Copyright (C) 2020, Paul Cercueil <paul@crapouillou.net>
0006 
0007 #ifndef DRIVERS_GPU_DRM_INGENIC_INGENIC_IPU_H
0008 #define DRIVERS_GPU_DRM_INGENIC_INGENIC_IPU_H
0009 
0010 #include <linux/bitops.h>
0011 
0012 #define JZ_REG_IPU_CTRL         0x00
0013 #define JZ_REG_IPU_STATUS       0x04
0014 #define JZ_REG_IPU_D_FMT        0x08
0015 #define JZ_REG_IPU_Y_ADDR       0x0c
0016 #define JZ_REG_IPU_U_ADDR       0x10
0017 #define JZ_REG_IPU_V_ADDR       0x14
0018 #define JZ_REG_IPU_IN_GS        0x18
0019 #define JZ_REG_IPU_Y_STRIDE     0x1c
0020 #define JZ_REG_IPU_UV_STRIDE        0x20
0021 #define JZ_REG_IPU_OUT_ADDR     0x24
0022 #define JZ_REG_IPU_OUT_GS       0x28
0023 #define JZ_REG_IPU_OUT_STRIDE       0x2c
0024 #define JZ_REG_IPU_RSZ_COEF_INDEX   0x30
0025 #define JZ_REG_IPU_CSC_C0_COEF      0x34
0026 #define JZ_REG_IPU_CSC_C1_COEF      0x38
0027 #define JZ_REG_IPU_CSC_C2_COEF      0x3c
0028 #define JZ_REG_IPU_CSC_C3_COEF      0x40
0029 #define JZ_REG_IPU_CSC_C4_COEF      0x44
0030 #define JZ_REG_IPU_HRSZ_COEF_LUT    0x48
0031 #define JZ_REG_IPU_VRSZ_COEF_LUT    0x4c
0032 #define JZ_REG_IPU_CSC_OFFSET       0x50
0033 #define JZ_REG_IPU_Y_PHY_T_ADDR     0x54
0034 #define JZ_REG_IPU_U_PHY_T_ADDR     0x58
0035 #define JZ_REG_IPU_V_PHY_T_ADDR     0x5c
0036 #define JZ_REG_IPU_OUT_PHY_T_ADDR   0x60
0037 
0038 #define JZ_IPU_CTRL_ADDR_SEL        BIT(20)
0039 #define JZ_IPU_CTRL_ZOOM_SEL        BIT(18)
0040 #define JZ_IPU_CTRL_DFIX_SEL        BIT(17)
0041 #define JZ_IPU_CTRL_LCDC_SEL        BIT(11)
0042 #define JZ_IPU_CTRL_SPKG_SEL        BIT(10)
0043 #define JZ_IPU_CTRL_VSCALE      BIT(9)
0044 #define JZ_IPU_CTRL_HSCALE      BIT(8)
0045 #define JZ_IPU_CTRL_STOP        BIT(7)
0046 #define JZ_IPU_CTRL_RST         BIT(6)
0047 #define JZ_IPU_CTRL_FM_IRQ_EN       BIT(5)
0048 #define JZ_IPU_CTRL_CSC_EN      BIT(4)
0049 #define JZ_IPU_CTRL_VRSZ_EN     BIT(3)
0050 #define JZ_IPU_CTRL_HRSZ_EN     BIT(2)
0051 #define JZ_IPU_CTRL_RUN         BIT(1)
0052 #define JZ_IPU_CTRL_CHIP_EN     BIT(0)
0053 
0054 #define JZ_IPU_STATUS_OUT_END       BIT(0)
0055 
0056 #define JZ_IPU_IN_GS_H_LSB      0x0
0057 #define JZ_IPU_IN_GS_W_LSB      0x10
0058 #define JZ_IPU_OUT_GS_H_LSB     0x0
0059 #define JZ_IPU_OUT_GS_W_LSB     0x10
0060 
0061 #define JZ_IPU_Y_STRIDE_Y_LSB       0
0062 #define JZ_IPU_UV_STRIDE_U_LSB      16
0063 #define JZ_IPU_UV_STRIDE_V_LSB      0
0064 
0065 #define JZ_IPU_D_FMT_IN_FMT_LSB     0
0066 #define JZ_IPU_D_FMT_IN_FMT_RGB555  (0x0 << JZ_IPU_D_FMT_IN_FMT_LSB)
0067 #define JZ_IPU_D_FMT_IN_FMT_YUV420  (0x0 << JZ_IPU_D_FMT_IN_FMT_LSB)
0068 #define JZ_IPU_D_FMT_IN_FMT_YUV422  (0x1 << JZ_IPU_D_FMT_IN_FMT_LSB)
0069 #define JZ_IPU_D_FMT_IN_FMT_RGB888  (0x2 << JZ_IPU_D_FMT_IN_FMT_LSB)
0070 #define JZ_IPU_D_FMT_IN_FMT_YUV444  (0x2 << JZ_IPU_D_FMT_IN_FMT_LSB)
0071 #define JZ_IPU_D_FMT_IN_FMT_RGB565  (0x3 << JZ_IPU_D_FMT_IN_FMT_LSB)
0072 
0073 #define JZ_IPU_D_FMT_YUV_FMT_LSB    2
0074 #define JZ_IPU_D_FMT_YUV_Y1UY0V     (0x0 << JZ_IPU_D_FMT_YUV_FMT_LSB)
0075 #define JZ_IPU_D_FMT_YUV_Y1VY0U     (0x1 << JZ_IPU_D_FMT_YUV_FMT_LSB)
0076 #define JZ_IPU_D_FMT_YUV_UY1VY0     (0x2 << JZ_IPU_D_FMT_YUV_FMT_LSB)
0077 #define JZ_IPU_D_FMT_YUV_VY1UY0     (0x3 << JZ_IPU_D_FMT_YUV_FMT_LSB)
0078 #define JZ_IPU_D_FMT_IN_FMT_YUV411  (0x3 << JZ_IPU_D_FMT_IN_FMT_LSB)
0079 
0080 #define JZ_IPU_D_FMT_OUT_FMT_LSB    19
0081 #define JZ_IPU_D_FMT_OUT_FMT_RGB555 (0x0 << JZ_IPU_D_FMT_OUT_FMT_LSB)
0082 #define JZ_IPU_D_FMT_OUT_FMT_RGB565 (0x1 << JZ_IPU_D_FMT_OUT_FMT_LSB)
0083 #define JZ_IPU_D_FMT_OUT_FMT_RGB888 (0x2 << JZ_IPU_D_FMT_OUT_FMT_LSB)
0084 #define JZ_IPU_D_FMT_OUT_FMT_YUV422 (0x3 << JZ_IPU_D_FMT_OUT_FMT_LSB)
0085 #define JZ_IPU_D_FMT_OUT_FMT_RGBAAA (0x4 << JZ_IPU_D_FMT_OUT_FMT_LSB)
0086 
0087 #define JZ_IPU_D_FMT_RGB_OUT_OFT_LSB    22
0088 #define JZ_IPU_D_FMT_RGB_OUT_OFT_RGB    (0x0 << JZ_IPU_D_FMT_RGB_OUT_OFT_LSB)
0089 #define JZ_IPU_D_FMT_RGB_OUT_OFT_RBG    (0x1 << JZ_IPU_D_FMT_RGB_OUT_OFT_LSB)
0090 #define JZ_IPU_D_FMT_RGB_OUT_OFT_GBR    (0x2 << JZ_IPU_D_FMT_RGB_OUT_OFT_LSB)
0091 #define JZ_IPU_D_FMT_RGB_OUT_OFT_GRB    (0x3 << JZ_IPU_D_FMT_RGB_OUT_OFT_LSB)
0092 #define JZ_IPU_D_FMT_RGB_OUT_OFT_BRG    (0x4 << JZ_IPU_D_FMT_RGB_OUT_OFT_LSB)
0093 #define JZ_IPU_D_FMT_RGB_OUT_OFT_BGR    (0x5 << JZ_IPU_D_FMT_RGB_OUT_OFT_LSB)
0094 
0095 #define JZ4725B_IPU_RSZ_LUT_COEF_LSB    2
0096 #define JZ4725B_IPU_RSZ_LUT_COEF_MASK   0x7ff
0097 #define JZ4725B_IPU_RSZ_LUT_IN_EN   BIT(1)
0098 #define JZ4725B_IPU_RSZ_LUT_OUT_EN  BIT(0)
0099 
0100 #define JZ4760_IPU_RSZ_COEF20_LSB   6
0101 #define JZ4760_IPU_RSZ_COEF31_LSB   17
0102 #define JZ4760_IPU_RSZ_COEF_MASK    0x7ff
0103 #define JZ4760_IPU_RSZ_OFFSET_LSB   1
0104 #define JZ4760_IPU_RSZ_OFFSET_MASK  0x1f
0105 
0106 #define JZ_IPU_CSC_OFFSET_CHROMA_LSB    16
0107 #define JZ_IPU_CSC_OFFSET_LUMA_LSB  16
0108 
0109 #endif /* DRIVERS_GPU_DRM_INGENIC_INGENIC_IPU_H */