blob: 183b657100d27512a583feebe83186a4f3ce44ab [file] [log] [blame]
Hariram Purushothamandc4402e2017-03-28 20:41:43 -07001/* Copyright (c) 2017, The Linux Foundation. All rights reserved.
2 *
3 * This program is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License version 2 and
5 * only version 2 as published by the Free Software Foundation.
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
11 */
12
13#ifndef _CAM_HW_CDM170_REG_H_
14#define _CAM_HW_CDM170_REG_H_
15
16#define CAM_CDM_REG_OFFSET_FIRST 0x0
17#define CAM_CDM_REG_OFFSET_LAST 0x200
18#define CAM_CDM_REGS_COUNT 0x30
19#define CAM_CDM_HWFIFO_SIZE 0x40
20
21#define CAM_CDM_OFFSET_HW_VERSION 0x0
22#define CAM_CDM_OFFSET_TITAN_VERSION 0x4
23#define CAM_CDM_OFFSET_RST_CMD 0x10
24#define CAM_CDM_OFFSET_CGC_CFG 0x14
25#define CAM_CDM_OFFSET_CORE_CFG 0x18
26#define CAM_CDM_OFFSET_CORE_EN 0x1c
27#define CAM_CDM_OFFSET_FE_CFG 0x20
28#define CAM_CDM_OFFSET_IRQ_MASK 0x30
29#define CAM_CDM_OFFSET_IRQ_CLEAR 0x34
30#define CAM_CDM_OFFSET_IRQ_CLEAR_CMD 0x38
31#define CAM_CDM_OFFSET_IRQ_SET 0x3c
32#define CAM_CDM_OFFSET_IRQ_SET_CMD 0x40
33
34#define CAM_CDM_OFFSET_IRQ_STATUS 0x44
35#define CAM_CDM_IRQ_STATUS_INFO_RST_DONE_MASK 0x1
36#define CAM_CDM_IRQ_STATUS_INFO_INLINE_IRQ_MASK 0x2
37#define CAM_CDM_IRQ_STATUS_INFO_BL_DONE_MASK 0x4
38#define CAM_CDM_IRQ_STATUS_ERROR_INV_CMD_MASK 0x10000
39#define CAM_CDM_IRQ_STATUS_ERROR_OVER_FLOW_MASK 0x20000
40#define CAM_CDM_IRQ_STATUS_ERROR_AHB_BUS_MASK 0x40000
41
42#define CAM_CDM_OFFSET_BL_FIFO_BASE_REG 0x50
43#define CAM_CDM_OFFSET_BL_FIFO_LEN_REG 0x54
44#define CAM_CDM_OFFSET_BL_FIFO_STORE_REG 0x58
45#define CAM_CDM_OFFSET_BL_FIFO_CFG 0x5c
46#define CAM_CDM_OFFSET_BL_FIFO_RB 0x60
47#define CAM_CDM_OFFSET_BL_FIFO_BASE_RB 0x64
48#define CAM_CDM_OFFSET_BL_FIFO_LEN_RB 0x68
49#define CAM_CDM_OFFSET_BL_FIFO_PENDING_REQ_RB 0x6c
50#define CAM_CDM_OFFSET_IRQ_USR_DATA 0x80
51#define CAM_CDM_OFFSET_WAIT_STATUS 0x84
52#define CAM_CDM_OFFSET_SCRATCH_0_REG 0x90
53#define CAM_CDM_OFFSET_SCRATCH_1_REG 0x94
54#define CAM_CDM_OFFSET_SCRATCH_2_REG 0x98
55#define CAM_CDM_OFFSET_SCRATCH_3_REG 0x9c
56#define CAM_CDM_OFFSET_SCRATCH_4_REG 0xa0
57#define CAM_CDM_OFFSET_SCRATCH_5_REG 0xa4
58#define CAM_CDM_OFFSET_SCRATCH_6_REG 0xa8
59#define CAM_CDM_OFFSET_SCRATCH_7_REG 0xac
60#define CAM_CDM_OFFSET_LAST_AHB_ADDR 0xd0
61#define CAM_CDM_OFFSET_LAST_AHB_DATA 0xd4
62#define CAM_CDM_OFFSET_CORE_DBUG 0xd8
63#define CAM_CDM_OFFSET_LAST_AHB_ERR_ADDR 0xe0
64#define CAM_CDM_OFFSET_LAST_AHB_ERR_DATA 0xe4
65#define CAM_CDM_OFFSET_CURRENT_BL_BASE 0xe8
66#define CAM_CDM_OFFSET_CURRENT_BL_LEN 0xec
67#define CAM_CDM_OFFSET_CURRENT_USED_AHB_BASE 0xf0
68#define CAM_CDM_OFFSET_DEBUG_STATUS 0xf4
69#define CAM_CDM_OFFSET_BUS_MISR_CFG_0 0x100
70#define CAM_CDM_OFFSET_BUS_MISR_CFG_1 0x104
71#define CAM_CDM_OFFSET_BUS_MISR_RD_VAL 0x108
72#define CAM_CDM_OFFSET_PERF_MON_CTRL 0x110
73#define CAM_CDM_OFFSET_PERF_MON_0 0x114
74#define CAM_CDM_OFFSET_PERF_MON_1 0x118
75#define CAM_CDM_OFFSET_PERF_MON_2 0x11c
76#define CAM_CDM_OFFSET_SPARE 0x200
77
78/*
79 * Always make sure below register offsets are aligned with
80 * enum cam_cdm_regs offsets
81 */
82struct cam_cdm_reg_offset cam170_cpas_cdm_register_offsets[] = {
83 { CAM_CDM_OFFSET_HW_VERSION, CAM_REG_ATTR_READ },
84 { CAM_CDM_OFFSET_TITAN_VERSION, CAM_REG_ATTR_READ },
85 { CAM_CDM_OFFSET_RST_CMD, CAM_REG_ATTR_WRITE },
86 { CAM_CDM_OFFSET_CGC_CFG, CAM_REG_ATTR_READ_WRITE },
87 { CAM_CDM_OFFSET_CORE_CFG, CAM_REG_ATTR_READ_WRITE },
88 { CAM_CDM_OFFSET_CORE_EN, CAM_REG_ATTR_READ_WRITE },
89 { CAM_CDM_OFFSET_FE_CFG, CAM_REG_ATTR_READ_WRITE },
90 { CAM_CDM_OFFSET_IRQ_MASK, CAM_REG_ATTR_READ_WRITE },
91 { CAM_CDM_OFFSET_IRQ_CLEAR, CAM_REG_ATTR_READ_WRITE },
92 { CAM_CDM_OFFSET_IRQ_CLEAR_CMD, CAM_REG_ATTR_WRITE },
93 { CAM_CDM_OFFSET_IRQ_SET, CAM_REG_ATTR_READ_WRITE },
94 { CAM_CDM_OFFSET_IRQ_SET_CMD, CAM_REG_ATTR_WRITE },
95 { CAM_CDM_OFFSET_IRQ_STATUS, CAM_REG_ATTR_READ },
96 { CAM_CDM_OFFSET_IRQ_USR_DATA, CAM_REG_ATTR_READ_WRITE },
97 { CAM_CDM_OFFSET_BL_FIFO_BASE_REG, CAM_REG_ATTR_READ_WRITE },
98 { CAM_CDM_OFFSET_BL_FIFO_LEN_REG, CAM_REG_ATTR_READ_WRITE },
99 { CAM_CDM_OFFSET_BL_FIFO_STORE_REG, CAM_REG_ATTR_WRITE },
100 { CAM_CDM_OFFSET_BL_FIFO_CFG, CAM_REG_ATTR_READ_WRITE },
101 { CAM_CDM_OFFSET_BL_FIFO_RB, CAM_REG_ATTR_READ_WRITE },
102 { CAM_CDM_OFFSET_BL_FIFO_BASE_RB, CAM_REG_ATTR_READ },
103 { CAM_CDM_OFFSET_BL_FIFO_LEN_RB, CAM_REG_ATTR_READ },
104 { CAM_CDM_OFFSET_BL_FIFO_PENDING_REQ_RB, CAM_REG_ATTR_READ },
105 { CAM_CDM_OFFSET_WAIT_STATUS, CAM_REG_ATTR_READ },
106 { CAM_CDM_OFFSET_SCRATCH_0_REG, CAM_REG_ATTR_READ_WRITE },
107 { CAM_CDM_OFFSET_SCRATCH_1_REG, CAM_REG_ATTR_READ_WRITE },
108 { CAM_CDM_OFFSET_SCRATCH_2_REG, CAM_REG_ATTR_READ_WRITE },
109 { CAM_CDM_OFFSET_SCRATCH_3_REG, CAM_REG_ATTR_READ_WRITE },
110 { CAM_CDM_OFFSET_SCRATCH_4_REG, CAM_REG_ATTR_READ_WRITE },
111 { CAM_CDM_OFFSET_SCRATCH_5_REG, CAM_REG_ATTR_READ_WRITE },
112 { CAM_CDM_OFFSET_SCRATCH_6_REG, CAM_REG_ATTR_READ_WRITE },
113 { CAM_CDM_OFFSET_SCRATCH_7_REG, CAM_REG_ATTR_READ_WRITE },
114 { CAM_CDM_OFFSET_LAST_AHB_ADDR, CAM_REG_ATTR_READ },
115 { CAM_CDM_OFFSET_LAST_AHB_DATA, CAM_REG_ATTR_READ },
116 { CAM_CDM_OFFSET_CORE_DBUG, CAM_REG_ATTR_READ_WRITE },
117 { CAM_CDM_OFFSET_LAST_AHB_ERR_ADDR, CAM_REG_ATTR_READ },
118 { CAM_CDM_OFFSET_LAST_AHB_ERR_DATA, CAM_REG_ATTR_READ },
119 { CAM_CDM_OFFSET_CURRENT_BL_BASE, CAM_REG_ATTR_READ },
120 { CAM_CDM_OFFSET_CURRENT_BL_LEN, CAM_REG_ATTR_READ },
121 { CAM_CDM_OFFSET_CURRENT_USED_AHB_BASE, CAM_REG_ATTR_READ },
122 { CAM_CDM_OFFSET_DEBUG_STATUS, CAM_REG_ATTR_READ },
123 { CAM_CDM_OFFSET_BUS_MISR_CFG_0, CAM_REG_ATTR_READ_WRITE },
124 { CAM_CDM_OFFSET_BUS_MISR_CFG_1, CAM_REG_ATTR_READ_WRITE },
125 { CAM_CDM_OFFSET_BUS_MISR_RD_VAL, CAM_REG_ATTR_READ },
126 { CAM_CDM_OFFSET_PERF_MON_CTRL, CAM_REG_ATTR_READ_WRITE },
127 { CAM_CDM_OFFSET_PERF_MON_0, CAM_REG_ATTR_READ },
128 { CAM_CDM_OFFSET_PERF_MON_1, CAM_REG_ATTR_READ },
129 { CAM_CDM_OFFSET_PERF_MON_2, CAM_REG_ATTR_READ },
130 { CAM_CDM_OFFSET_SPARE, CAM_REG_ATTR_READ_WRITE }
131};
132
133struct cam_cdm_reg_offset_table cam170_cpas_cdm_offset_table = {
134 .first_offset = 0x0,
135 .last_offset = 0x200,
136 .reg_count = 0x30,
137 .offsets = cam170_cpas_cdm_register_offsets,
138 .offset_max_size = (sizeof(cam170_cpas_cdm_register_offsets)/
139 sizeof(struct cam_cdm_reg_offset)),
140};
141
142#endif /* _CAM_HW_CDM170_REG_H_ */