SmartAudio/lichee/linux-4.9/drivers/char/sunxi_g2d/g2d_regs.h

209 lines
6.9 KiB
C

/* g2d_regs.h
*
* Copyright (c) 2011 Allwinnertech Co., Ltd.
* 2011 Yupu Tang
*
* G2D driver
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
* GNU General Public License for more details.
*/
#ifndef __G2D_MIXER_REGS_H
#define __G2D_MIXER_REGS_H
/*
*Graphics 2D General Registers
*/
#define G2D_BASE_ADDR (0x01e80000)/* Base Address */
#define G2D_CONTROL_REG (0x00) /* Control register */
#define G2D_STATUS_REG (0x04) /* Status register */
/* DMA scan order control register */
#define G2D_SCAN_ORDER_REG (0x08)
/*
* Graphics 2D Input Address Parameter Setting Registers
*/
/* Input DMA high 4 bits start addr register */
#define G2D_DMA_HADDR_REG (0x0c)
/* Input DMA0 low 32 bits start addr register */
#define G2D_DMA0_LADDR_REG (0x10)
/* Input DMA1 low 32 bits start addr register */
#define G2D_DMA1_LADDR_REG (0x14)
/* Input DMA2 low 32 bits start addr register */
#define G2D_DMA2_LADDR_REG (0x18)
/* Input DMA3 low 32 bits start addr register */
#define G2D_DMA3_LADDR_REG (0x1c)
/*
* Graphics 2D Input Linewidth Buffer Parameter Setting Registers
*/
/* Input DMA0 line stride register */
#define G2D_DMA0_STRIDE_REG (0x20)
/* Input DMA1 line stride register */
#define G2D_DMA1_STRIDE_REG (0x24)
/* Input DMA2 line stride register */
#define G2D_DMA2_STRIDE_REG (0x28)
/* Input DMA3 line stride register */
#define G2D_DMA3_STRIDE_REG (0x2c)
/* Input DMA0 memory block size register */
#define G2D_DMA0_SIZE_REG (0x30)
/* Input DMA1 memory block size register */
#define G2D_DMA1_SIZE_REG (0x34)
/* Input DMA2 memory block size register */
#define G2D_DMA2_SIZE_REG (0x38)
/* Input DMA3 memory block size register */
#define G2D_DMA3_SIZE_REG (0x3c)
/* Input DMA0 memory block coordinate register */
#define G2D_DMA0_COOR_REG (0x40)
/* Input DMA1 memory block coordinate register */
#define G2D_DMA1_COOR_REG (0x44)
/* Input DMA2 memory block coordinate register */
#define G2D_DMA2_COOR_REG (0x48)
/* Input DMA3 memory block coordinate register */
#define G2D_DMA3_COOR_REG (0x4c)
/* Input DMA0 control register */
#define G2D_DMA0_CONTROL_REG (0x50)
/* Input DMA1 control register */
#define G2D_DMA1_CONTROL_REG (0x54)
/* Input DMA2 control register */
#define G2D_DMA2_CONTROL_REG (0x58)
/* Input DMA3 control register */
#define G2D_DMA3_CONTROL_REG (0x5c)
/* Input DMA0 fillcolor register */
#define G2D_DMA0_FILLCOLOR_REG (0x60)
/* Input DMA1 fillcolor register */
#define G2D_DMA1_FILLCOLOR_REG (0x64)
/* Input DMA2 fillcolor register */
#define G2D_DMA2_FILLCOLOR_REG (0x68)
/* Input DMA3 fillcolor register */
#define G2D_DMA3_FILLCOLOR_REG (0x6c)
/* Color space converter0 control register */
#define G2D_CSC0_CONTROL_REG (0x74)
/* Color space converter1 control register */
#define G2D_CSC1_CONTROL_REG (0x78)
/* Scaler control register */
#define G2D_SCALER_CONTROL_REG (0x80)
/* Scaler output size control register */
#define G2D_SCALER_SIZE_REG (0x84)
/* Scaler horizontal scaling factor register */
#define G2D_SCALER_HFACTOR_REG (0x88)
/* Scaler vertical scaling factor register */
#define G2D_SCALER_VFACTOR_REG (0x8c)
/* Scaler horizontal start phase register */
#define G2D_SCALER_HPHASE_REG (0x90)
/* Scaler vertical start phase register */
#define G2D_SCALER_VPHASE_REG (0x94)
/* Rop control register */
#define G2D_ROP_CONTROL_REG (0xb0)
/* Rop index0 control table setting register */
#define G2D_ROP_INDEX0_REG (0xb8)
/* Rop index1 control table setting register */
#define G2D_ROP_INDEX1_REG (0xbc)
/* Colorkey/alpha control register */
#define G2D_CK_CONTROL_REG (0xc0)
/* Colorkey min color control register */
#define G2D_CK_MINCOLOR_REG (0xc4)
/* Colorkey max color control register */
#define G2D_CK_MAXCOLOR_REG (0xc8)
/* Rop output fillcolor setting register */
#define G2D_ROP_FILLCOLOR_REG (0xcc)
/* Color space converter2 control register */
#define G2D_CSC2_CONTROL_REG (0xd0)
/* Output control register */
#define G2D_OUTPUT_CONTROL_REG (0xe0)
/* Output size register */
#define G2D_OUTPUT_SIZE_REG (0xe8)
/* Output high 4 bits address control register */
#define G2D_OUTPUT_HADDR_REG (0xec)
/* Output low 32 bits address control register */
#define G2D_OUTPUT0_LADDR_REG (0xf0)
/* Output low 32 bits address control register */
#define G2D_OUTPUT1_LADDR_REG (0xf4)
/* Output low 32 bits address control register */
#define G2D_OUTPUT2_LADDR_REG (0xf8)
/* Output channel0 line stride control register */
#define G2D_OUTPUT0_STRIDE_REG (0x100)
/* Output channel1 line stride control register */
#define G2D_OUTPUT1_STRIDE_REG (0x104)
/* Output channel2 line stride control register */
#define G2D_OUTPUT2_STRIDE_REG (0x108)
/* Output alpha control register */
#define G2D_OALPHA_CONTROL_REG (0x120)
/* Input DMA0 micro block control register */
#define G2D_DMA0_MBCTL_REG (0x130)
/* Input DMA1 micro block control register */
#define G2D_DMA1_MBCTL_REG (0x134)
/* Input DMA2 micro block control register */
#define G2D_DMA2_MBCTL_REG (0x138)
/* Input DMA3 micro block control register */
#define G2D_DMA3_MBCTL_REG (0x13c)
/* command queue control register */
#define G2D_CMDQ_CTL_REG (0x140)
/* command queue status register */
#define G2D_CMDQ_STS_REG (0x144)
/* command queue storage start address register */
#define G2D_CMDQ_ADDR_REG (0x148)
/* CSC0/1 coefficient/constant start addr register(0x180-0x1ac) */
#define G2D_CSC01_ADDR_REG (0x180)
/* CSC2 coefficient/constant start addr register(0x1c0-0x1ec) */
#define G2D_CSC2_ADDR_REG (0x1c0)
/* Scaling horizontal filtering coefficient ram block register(0x200-0x27c) */
#define G2D_SCALER_HFILTER_REG (0x200)
/* Scaling vertical filtering coefficient ram block register(0x280-0x2fc) */
#define G2D_SCALER_VFILTER_REG (0x280)
/* Scaling horizontal filtering coefficient ram block register(0x400-0x7fc) */
#define G2D_PALETTE_TAB_REG (0x400)
/* Input DMA setting */
#define G2D_FILL_ENABLE (1<<16)
#define G2D_FILL_DISABLE (0<<16)
/* Work Mode Select */
#define G2D_IDMA_ENABLE (1<<0)
#define G2D_IDMA_DISABLE (0<<0)
/* Scaler Control Select */
#define G2D_SCALER_DISABLE (0<<0)
#define G2D_SCALER_ENABLE (1<<0)
#define G2D_SCALER_4TAP4 (0<<4)
/* byte input */
#define get_bvalue(n) (*((volatile __u8 *)(n)))
/* byte output */
#define put_bvalue(n, c) (*((volatile __u8 *)(n)) = (c))
/* half word input */
#define get_hvalue(n) (*((volatile __u16 *)(n)))
/* half word output */
#define put_hvalue(n, c) (*((volatile __u16 *)(n)) = (c))
/* word input */
#define get_wvalue(n) (*((volatile __u32 *)(n)))
/* word output */
#define put_wvalue(n, c) (*((volatile __u32 *)(n)) = (c))
#endif /* __G2D_MIXER_REGS_H */