/* SPDX-License-Identifier: GPL-2.0+ */
/*
 * Copyright (C) 2018 BayLibre, SAS
 * Author: Maxime Jourdan <mjourdan@baylibre.com>
 */

#ifndef __MESON_VDEC_DOS_REGS_H_
#define __MESON_VDEC_DOS_REGS_H_

/* DOS registers */
#define VDEC_ASSIST_AMR1_INT8	0x00b4

#define ASSIST_MBOX1_CLR_REG	0x01d4
#define ASSIST_MBOX1_MASK	0x01d8

#define MPSR			0x0c04
#define MCPU_INTR_MSK		0x0c10
#define CPSR			0x0c84

#define IMEM_DMA_CTRL		0x0d00
#define IMEM_DMA_ADR		0x0d04
#define IMEM_DMA_COUNT		0x0d08
#define LMEM_DMA_CTRL		0x0d40

#define MC_STATUS0		0x2424
#define MC_CTRL1		0x242c

#define PSCALE_RST		0x2440
#define PSCALE_CTRL		0x2444
#define PSCALE_BMEM_ADDR	0x247c
#define PSCALE_BMEM_DAT		0x2480

#define DBLK_CTRL		0x2544
#define DBLK_STATUS		0x254c

#define GCLK_EN			0x260c
#define MDEC_PIC_DC_CTRL	0x2638
#define MDEC_PIC_DC_STATUS	0x263c
#define ANC0_CANVAS_ADDR	0x2640
#define MDEC_PIC_DC_THRESH	0x26e0

/* Firmware interface registers */
#define AV_SCRATCH_0		0x2700
#define AV_SCRATCH_1		0x2704
#define AV_SCRATCH_2		0x2708
#define AV_SCRATCH_3		0x270c
#define AV_SCRATCH_4		0x2710
#define AV_SCRATCH_5		0x2714
#define AV_SCRATCH_6		0x2718
#define AV_SCRATCH_7		0x271c
#define AV_SCRATCH_8		0x2720
#define AV_SCRATCH_9		0x2724
#define AV_SCRATCH_A		0x2728
#define AV_SCRATCH_B		0x272c
#define AV_SCRATCH_C		0x2730
#define AV_SCRATCH_D		0x2734
#define AV_SCRATCH_E		0x2738
#define AV_SCRATCH_F		0x273c
#define AV_SCRATCH_G		0x2740
#define AV_SCRATCH_H		0x2744
#define AV_SCRATCH_I		0x2748
#define AV_SCRATCH_J		0x274c
#define AV_SCRATCH_K		0x2750
#define AV_SCRATCH_L		0x2754

#define MPEG1_2_REG		0x3004
#define PIC_HEAD_INFO		0x300c
#define POWER_CTL_VLD		0x3020
#define M4_CONTROL_REG		0x30a4

/* Stream Buffer (stbuf) regs */
#define VLD_MEM_VIFIFO_START_PTR	0x3100
#define VLD_MEM_VIFIFO_CURR_PTR	0x3104
#define VLD_MEM_VIFIFO_END_PTR	0x3108
#define VLD_MEM_VIFIFO_CONTROL	0x3110
	#define MEM_FIFO_CNT_BIT	16
	#define MEM_FILL_ON_LEVEL	BIT(10)
	#define MEM_CTRL_EMPTY_EN	BIT(2)
	#define MEM_CTRL_FILL_EN	BIT(1)
#define VLD_MEM_VIFIFO_WP	0x3114
#define VLD_MEM_VIFIFO_RP	0x3118
#define VLD_MEM_VIFIFO_LEVEL	0x311c
#define VLD_MEM_VIFIFO_BUF_CNTL	0x3120
	#define MEM_BUFCTRL_MANUAL	BIT(1)
#define VLD_MEM_VIFIFO_WRAP_COUNT	0x3144

#define DCAC_DMA_CTRL		0x3848

#define DOS_SW_RESET0		0xfc00
#define DOS_GCLK_EN0		0xfc04
#define DOS_GEN_CTRL0		0xfc08
#define DOS_MEM_PD_VDEC		0xfcc0
#define DOS_MEM_PD_HEVC		0xfccc
#define DOS_SW_RESET3		0xfcd0
#define DOS_GCLK_EN3		0xfcd4
#define DOS_VDEC_MCRCC_STALL_CTRL	0xfd00

#endif