root/drivers/media/platform/st/stm32/dma2d/dma2d-regs.h
/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
 * ST stm32 Chrom-Art - 2D Graphics Accelerator Driver
 *
 * Copyright (c) 2021 Dillon Min
 * Dillon Min, <dillon.minfei@gmail.com>
 *
 * based on s5p-g2d
 *
 * Copyright (c) 2011 Samsung Electronics Co., Ltd.
 * Kamil Debski, <k.debski@samsung.com>
 */

#ifndef __DMA2D_REGS_H__
#define __DMA2D_REGS_H__

#define DMA2D_CR_REG            0x0000
#define CR_MODE_MASK            GENMASK(17, 16)
#define CR_MODE_SHIFT           16
#define CR_M2M                  0x0000
#define CR_M2M_PFC              BIT(16)
#define CR_M2M_BLEND            BIT(17)
#define CR_R2M                  (BIT(17) | BIT(16))
#define CR_CEIE                 BIT(13)
#define CR_CTCIE                BIT(12)
#define CR_CAEIE                BIT(11)
#define CR_TWIE                 BIT(10)
#define CR_TCIE                 BIT(9)
#define CR_TEIE                 BIT(8)
#define CR_ABORT                BIT(2)
#define CR_SUSP                 BIT(1)
#define CR_START                BIT(0)

#define DMA2D_ISR_REG           0x0004
#define ISR_CEIF                BIT(5)
#define ISR_CTCIF               BIT(4)
#define ISR_CAEIF               BIT(3)
#define ISR_TWIF                BIT(2)
#define ISR_TCIF                BIT(1)
#define ISR_TEIF                BIT(0)

#define DMA2D_IFCR_REG          0x0008
#define IFCR_CCEIF              BIT(5)
#define IFCR_CCTCIF             BIT(4)
#define IFCR_CAECIF             BIT(3)
#define IFCR_CTWIF              BIT(2)
#define IFCR_CTCIF              BIT(1)
#define IFCR_CTEIF              BIT(0)

#define DMA2D_FGMAR_REG         0x000c
#define DMA2D_FGOR_REG          0x0010
#define FGOR_LO_MASK            GENMASK(13, 0)

#define DMA2D_BGMAR_REG         0x0014
#define DMA2D_BGOR_REG          0x0018
#define BGOR_LO_MASK            GENMASK(13, 0)

#define DMA2D_FGPFCCR_REG       0x001c
#define FGPFCCR_ALPHA_MASK      GENMASK(31, 24)
#define FGPFCCR_AM_MASK         GENMASK(17, 16)
#define FGPFCCR_CS_MASK         GENMASK(15, 8)
#define FGPFCCR_START           BIT(5)
#define FGPFCCR_CCM_RGB888      BIT(4)
#define FGPFCCR_CM_MASK         GENMASK(3, 0)

#define DMA2D_FGCOLR_REG        0x0020
#define FGCOLR_REG_MASK         GENMASK(23, 16)
#define FGCOLR_GREEN_MASK       GENMASK(15, 8)
#define FGCOLR_BLUE_MASK        GENMASK(7, 0)

#define DMA2D_BGPFCCR_REG       0x0024
#define BGPFCCR_ALPHA_MASK      GENMASK(31, 24)
#define BGPFCCR_AM_MASK         GENMASK(17, 16)
#define BGPFCCR_CS_MASK         GENMASK(15, 8)
#define BGPFCCR_START           BIT(5)
#define BGPFCCR_CCM_RGB888      BIT(4)
#define BGPFCCR_CM_MASK         GENMASK(3, 0)

#define DMA2D_BGCOLR_REG        0x0028
#define BGCOLR_REG_MASK         GENMASK(23, 16)
#define BGCOLR_GREEN_MASK       GENMASK(15, 8)
#define BGCOLR_BLUE_MASK        GENMASK(7, 0)

#define DMA2D_OPFCCR_REG        0x0034
#define OPFCCR_CM_MASK          GENMASK(2, 0)

#define DMA2D_OCOLR_REG         0x0038
#define OCOLR_ALPHA_MASK        GENMASK(31, 24)
#define OCOLR_RED_MASK          GENMASK(23, 16)
#define OCOLR_GREEN_MASK        GENMASK(15, 8)
#define OCOLR_BLUE_MASK         GENMASK(7, 0)

#define DMA2D_OMAR_REG          0x003c

#define DMA2D_OOR_REG           0x0040
#define OOR_LO_MASK             GENMASK(13, 0)

#define DMA2D_NLR_REG           0x0044
#define NLR_PL_MASK             GENMASK(29, 16)
#define NLR_NL_MASK             GENMASK(15, 0)

/* Hardware limits */
#define MAX_WIDTH               2592
#define MAX_HEIGHT              2592

#define DEFAULT_WIDTH           240
#define DEFAULT_HEIGHT          320
#define DEFAULT_SIZE            307200

#define CM_MODE_ARGB8888        0x00
#define CM_MODE_ARGB4444        0x04
#define CM_MODE_A4              0x0a
#endif /* __DMA2D_REGS_H__ */