blob: beb192ba6c9c319091b6ffcb5d1fd9dc5976625b [file] [log] [blame]
/* Copyright (c) 2014-2015, 2018, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* 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 __MSM_FD_REGS_H__
#define __MSM_FD_REGS_H__
/* FD core registers */
#define MSM_FD_CONTROL (0x00)
#define MSM_FD_CONTROL_SRST (1 << 0)
#define MSM_FD_CONTROL_RUN (1 << 1)
#define MSM_FD_CONTROL_FINISH (1 << 2)
#define MSM_FD_RESULT_CNT (0x04)
#define MSM_FD_RESULT_CNT_MASK (0x3F)
#define MSM_FD_CONDT (0x08)
#define MSM_FD_CONDT_MIN_MASK (0x03)
#define MSM_FD_CONDT_MIN_SHIFT (0x00)
#define MSM_FD_CONDT_DIR_MAX (0x08)
#define MSM_FD_CONDT_DIR_MASK (0x3C)
#define MSM_FD_CONDT_DIR_SHIFT (0x02)
#define MSM_FD_START_X (0x0C)
#define MSM_FD_START_X_MASK (0x3FF)
#define MSM_FD_START_Y (0x10)
#define MSM_FD_START_Y_MASK (0x1FF)
#define MSM_FD_SIZE_X (0x14)
#define MSM_FD_SIZE_X_MASK (0x3FF)
#define MSM_FD_SIZE_Y (0x18)
#define MSM_FD_SIZE_Y_MASK (0x1FF)
#define MSM_FD_DHINT (0x1C)
#define MSM_FD_DHINT_MASK (0xF)
#define MSM_FD_IMAGE_ADDR (0x24)
#define MSM_FD_IMAGE_ADDR_ALIGN (0x8)
#define MSM_FD_WORK_ADDR (0x28)
#define MSM_FD_WORK_ADDR_ALIGN (0x8)
#define MSM_FD_IMAGE_SIZE (0x2C)
#define MSM_FD_IMAGE_SIZE_QVGA (0x0)
#define MSM_FD_IMAGE_SIZE_VGA (0x1)
#define MSM_FD_IMAGE_SIZE_WQVGA (0x2)
#define MSM_FD_IMAGE_SIZE_WVGA (0x3)
#define MSM_FD_LINE_BYTES (0x30)
#define MSM_FD_LINE_BYTES_MASK (0x1FFF)
#define MSM_FD_LINE_BYTES_ALIGN (0x8)
#define MSM_FD_RESULT_CENTER_X(x) (0x400 + (0x10 * (x)))
#define MSM_FD_RESULT_CENTER_Y(x) (0x404 + (0x10 * (x)))
#define MSM_FD_RESULT_CONF_SIZE(x) (0x408 + (0x10 * (x)))
#define MSM_FD_RESULT_SIZE_MASK (0x1FF)
#define MSM_FD_RESULT_SIZE_SHIFT (0x000)
#define MSM_FD_RESULT_CONF_MASK (0xF)
#define MSM_FD_RESULT_CONF_SHIFT (0x9)
#define MSM_FD_RESULT_ANGLE_POSE(x) (0x40C + (0x10 * (x)))
#define MSM_FD_RESULT_ANGLE_MASK (0x1FF)
#define MSM_FD_RESULT_ANGLE_SHIFT (0x000)
#define MSM_FD_RESULT_POSE_MASK (0x7)
#define MSM_FD_RESULT_POSE_SHIFT (0x9)
#define MSM_FD_RESULT_POSE_FRONT (0x1)
#define MSM_FD_RESULT_POSE_RIGHT_DIAGONAL (0x2)
#define MSM_FD_RESULT_POSE_RIGHT (0x3)
#define MSM_FD_RESULT_POSE_LEFT_DIAGONAL (0x4)
#define MSM_FD_RESULT_POSE_LEFT (0x5)
/* FD misc registers */
#define MSM_FD_MISC_HW_VERSION (0x00)
#define MSM_FD_MISC_CGC_DISABLE (0x04)
#define MSM_FD_HW_STOP (0x08)
#define MSM_FD_MISC_SW_RESET (0x10)
#define MSM_FD_MISC_SW_RESET_SET (1 << 0)
#define MSM_FD_MISC_FIFO_STATUS (0x14)
#define MSM_FD_MISC_FIFO_STATUS_RFIFO_DCNT_MAST (0x1F)
#define MSM_FD_MISC_FIFO_STATUS_RFIFO_DCNT_SHIFT (0)
#define MSM_FD_MISC_FIFO_STATUS_RFIFO_FULL (1 << 13)
#define MSM_FD_MISC_FIFO_STATUS_RFIFO_EMPTY (1 << 14)
#define MSM_FD_MISC_FIFO_STATUS_WFIFO_DCNT_MAST (0x1F)
#define MSM_FD_MISC_FIFO_STATUS_WFIFO_DCNT_SHIFT (16)
#define MSM_FD_MISC_FIFO_STATUS_WFIFO_EMPTY (1 << 29)
#define MSM_FD_MISC_FIFO_STATUS_WFIFO_FULL (1 << 30)
#define MSM_FD_MISC_DATA_ENDIAN (0x18)
#define MSM_FD_MISC_DATA_ENDIAN_BYTE_SWAP_SET (1 << 0)
#define MSM_FD_MISC_VBIF_REQ_PRIO (0x20)
#define MSM_FD_MISC_VBIF_REQ_PRIO_MASK (0x3)
#define MSM_FD_MISC_VBIF_PRIO_LEVEL (0x24)
#define MSM_FD_MISC_VBIF_PRIO_LEVEL_MASK (0x3)
#define MSM_FD_MISC_VBIF_MMU_PDIRECT (0x28)
#define MSM_FD_MISC_VBIF_MMU_PDIRECT_INCREMENT (1 << 0)
#define MSM_FD_MISC_VBIF_IRQ_CLR (0x30)
#define MSM_FD_MISC_VBIF_IRQ_CLR_ALL (1 << 0)
#define MSM_FD_MISC_VBIF_DONE_STATUS (0x34)
#define MSM_FD_MISC_VBIF_DONE_STATUS_WRITE (1 << 0)
#define MSM_FD_MISC_VBIF_DONE_STATUS_READ (1 << 1)
#define MSM_FD_MISC_IRQ_MASK (0x50)
#define MSM_FD_MISC_IRQ_MASK_HALT_REQ (1 << 1)
#define MSM_FD_MISC_IRQ_MASK_CORE_IRQ (1 << 0)
#define MSM_FD_MISC_IRQ_STATUS (0x54)
#define MSM_FD_MISC_IRQ_STATUS_HALT_REQ (1 << 1)
#define MSM_FD_MISC_IRQ_STATUS_CORE_IRQ (1 << 0)
#define MSM_FD_MISC_IRQ_CLEAR (0x58)
#define MSM_FD_MISC_IRQ_CLEAR_HALT (1 << 1)
#define MSM_FD_MISC_IRQ_CLEAR_CORE (1 << 0)
#define MSM_FD_MISC_TEST_BUS_SEL (0x40)
#define MSM_FD_MISC_TEST_BUS_SEL_TEST_MODE_MASK (0xF)
#define MSM_FD_MISC_TEST_BUS_SEL_TEST_MODE_SHIFT (0)
#define MSM_FD_MISC_TEST_BUS_SEL_7_0_MASK (0x3)
#define MSM_FD_MISC_TEST_BUS_SEL_7_0_SHIFT (16)
#define MSM_FD_MISC_TEST_BUS_SEL_15_8_MASK (0x3)
#define MSM_FD_MISC_TEST_BUS_SEL_15_8_SHIFT (18)
#define MSM_FD_MISC_TEST_BUS_SEL_23_16_MASK (0x3)
#define MSM_FD_MISC_TEST_BUS_SEL_23_16_SHIFT (20)
#define MSM_FD_MISC_TEST_BUS_SEL_31_24_MASK (0x3)
#define MSM_FD_MISC_TEST_BUS_SEL_31_24_SHIFT (22)
#define MSM_FD_MISC_AHB_TEST_EN (0x44)
#define MSM_FD_MISC_AHB_TEST_EN_MASK (0x3)
#define MSM_FD_MISC_FD2VBIF_INT_TEST_SEL (0x48)
#define MSM_FD_MISC_FD2VBIF_INT_TEST_MASK (0xF)
#define MSM_FD_MISC_TEST_BUS (0x4C)
/* FD vbif registers */
#define MSM_FD_VBIF_CLKON (0x04)
#define MSM_FD_VBIF_QOS_OVERRIDE_EN (0x10)
#define MSM_FD_VBIF_QOS_OVERRIDE_REQPRI (0x18)
#define MSM_FD_VBIF_QOS_OVERRIDE_PRILVL (0x1C)
#define MSM_FD_VBIF_IN_RD_LIM_CONF0 (0xB0)
#define MSM_FD_VBIF_IN_WR_LIM_CONF0 (0xC0)
#define MSM_FD_VBIF_OUT_RD_LIM_CONF0 (0xD0)
#define MSM_FD_VBIF_OUT_WR_LIM_CONF0 (0xD4)
#define MSM_FD_VBIF_DDR_OUT_MAX_BURST (0xD8)
#define MSM_FD_VBIF_ARB_CTL (0xF0)
#define MSM_FD_VBIF_OUT_AXI_AMEMTYPE_CONF0 (0x160)
#define MSM_FD_VBIF_OUT_AXI_AOOO_EN (0x178)
#define MSM_FD_VBIF_OUT_AXI_AOOO (0x17c)
#define MSM_FD_VBIF_ROUND_ROBIN_QOS_ARB (0x124)
#endif /* __MSM_FD_REGS_H__ */