xref: /linux/drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_2.h (revision 4a57e0913e8c7fff407e97909f4ae48caa84d612)
1*855e3e19SSonny Jiang /*
2*855e3e19SSonny Jiang  * Copyright 2025-2026 Advanced Micro Devices, Inc.
3*855e3e19SSonny Jiang  *
4*855e3e19SSonny Jiang  * Permission is hereby granted, free of charge, to any person obtaining a
5*855e3e19SSonny Jiang  * copy of this software and associated documentation files (the "Software"),
6*855e3e19SSonny Jiang  * to deal in the Software without restriction, including without limitation
7*855e3e19SSonny Jiang  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8*855e3e19SSonny Jiang  * and/or sell copies of the Software, and to permit persons to whom the
9*855e3e19SSonny Jiang  * Software is furnished to do so, subject to the following conditions:
10*855e3e19SSonny Jiang  *
11*855e3e19SSonny Jiang  * The above copyright notice and this permission notice shall be included in
12*855e3e19SSonny Jiang  * all copies or substantial portions of the Software.
13*855e3e19SSonny Jiang  *
14*855e3e19SSonny Jiang  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15*855e3e19SSonny Jiang  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16*855e3e19SSonny Jiang  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
17*855e3e19SSonny Jiang  * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
18*855e3e19SSonny Jiang  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19*855e3e19SSonny Jiang  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
20*855e3e19SSonny Jiang  * OTHER DEALINGS IN THE SOFTWARE.
21*855e3e19SSonny Jiang  *
22*855e3e19SSonny Jiang  */
23*855e3e19SSonny Jiang 
24*855e3e19SSonny Jiang #ifndef __JPEG_V5_0_2_H__
25*855e3e19SSonny Jiang #define __JPEG_V5_0_2_H__
26*855e3e19SSonny Jiang 
27*855e3e19SSonny Jiang extern const struct amdgpu_ip_block_version jpeg_v5_0_2_ip_block;
28*855e3e19SSonny Jiang 
29*855e3e19SSonny Jiang #define regUVD_JRBC0_UVD_JRBC_SCRATCH0_INTERNAL_OFFSET			0x4094
30*855e3e19SSonny Jiang #define regUVD_JRBC_EXTERNAL_MCM_ADDR_INTERNAL_OFFSET			0x1bffe
31*855e3e19SSonny Jiang 
32*855e3e19SSonny Jiang #define regUVD_JRBC0_UVD_JRBC_RB_WPTR                                                         0x0640
33*855e3e19SSonny Jiang #define regUVD_JRBC0_UVD_JRBC_RB_WPTR_BASE_IDX                                                1
34*855e3e19SSonny Jiang #define regUVD_JRBC0_UVD_JRBC_STATUS                                                          0x0649
35*855e3e19SSonny Jiang #define regUVD_JRBC0_UVD_JRBC_STATUS_BASE_IDX                                                 1
36*855e3e19SSonny Jiang #define regUVD_JRBC0_UVD_JRBC_RB_RPTR                                                         0x064a
37*855e3e19SSonny Jiang #define regUVD_JRBC0_UVD_JRBC_RB_RPTR_BASE_IDX                                                1
38*855e3e19SSonny Jiang #define regUVD_JRBC1_UVD_JRBC_RB_WPTR                                                         0x0000
39*855e3e19SSonny Jiang #define regUVD_JRBC1_UVD_JRBC_RB_WPTR_BASE_IDX                                                0
40*855e3e19SSonny Jiang #define regUVD_JRBC1_UVD_JRBC_STATUS                                                          0x0009
41*855e3e19SSonny Jiang #define regUVD_JRBC1_UVD_JRBC_STATUS_BASE_IDX                                                 0
42*855e3e19SSonny Jiang #define regUVD_JRBC1_UVD_JRBC_RB_RPTR                                                         0x000a
43*855e3e19SSonny Jiang #define regUVD_JRBC1_UVD_JRBC_RB_RPTR_BASE_IDX                                                0
44*855e3e19SSonny Jiang #define regUVD_JRBC2_UVD_JRBC_RB_WPTR                                                         0x0040
45*855e3e19SSonny Jiang #define regUVD_JRBC2_UVD_JRBC_RB_WPTR_BASE_IDX                                                0
46*855e3e19SSonny Jiang #define regUVD_JRBC2_UVD_JRBC_STATUS                                                          0x0049
47*855e3e19SSonny Jiang #define regUVD_JRBC2_UVD_JRBC_STATUS_BASE_IDX                                                 0
48*855e3e19SSonny Jiang #define regUVD_JRBC2_UVD_JRBC_RB_RPTR                                                         0x004a
49*855e3e19SSonny Jiang #define regUVD_JRBC2_UVD_JRBC_RB_RPTR_BASE_IDX                                                0
50*855e3e19SSonny Jiang #define regUVD_JRBC3_UVD_JRBC_RB_WPTR                                                         0x0080
51*855e3e19SSonny Jiang #define regUVD_JRBC3_UVD_JRBC_RB_WPTR_BASE_IDX                                                0
52*855e3e19SSonny Jiang #define regUVD_JRBC3_UVD_JRBC_STATUS                                                          0x0089
53*855e3e19SSonny Jiang #define regUVD_JRBC3_UVD_JRBC_STATUS_BASE_IDX                                                 0
54*855e3e19SSonny Jiang #define regUVD_JRBC3_UVD_JRBC_RB_RPTR                                                         0x008a
55*855e3e19SSonny Jiang #define regUVD_JRBC3_UVD_JRBC_RB_RPTR_BASE_IDX                                                0
56*855e3e19SSonny Jiang #define regUVD_JRBC4_UVD_JRBC_RB_WPTR                                                         0x00c0
57*855e3e19SSonny Jiang #define regUVD_JRBC4_UVD_JRBC_RB_WPTR_BASE_IDX                                                0
58*855e3e19SSonny Jiang #define regUVD_JRBC4_UVD_JRBC_STATUS                                                          0x00c9
59*855e3e19SSonny Jiang #define regUVD_JRBC4_UVD_JRBC_STATUS_BASE_IDX                                                 0
60*855e3e19SSonny Jiang #define regUVD_JRBC4_UVD_JRBC_RB_RPTR                                                         0x00ca
61*855e3e19SSonny Jiang #define regUVD_JRBC4_UVD_JRBC_RB_RPTR_BASE_IDX                                                0
62*855e3e19SSonny Jiang #define regUVD_JRBC5_UVD_JRBC_RB_WPTR                                                         0x0100
63*855e3e19SSonny Jiang #define regUVD_JRBC5_UVD_JRBC_RB_WPTR_BASE_IDX                                                0
64*855e3e19SSonny Jiang #define regUVD_JRBC5_UVD_JRBC_STATUS                                                          0x0109
65*855e3e19SSonny Jiang #define regUVD_JRBC5_UVD_JRBC_STATUS_BASE_IDX                                                 0
66*855e3e19SSonny Jiang #define regUVD_JRBC5_UVD_JRBC_RB_RPTR                                                         0x010a
67*855e3e19SSonny Jiang #define regUVD_JRBC5_UVD_JRBC_RB_RPTR_BASE_IDX                                                0
68*855e3e19SSonny Jiang #define regUVD_JRBC6_UVD_JRBC_RB_WPTR                                                         0x0140
69*855e3e19SSonny Jiang #define regUVD_JRBC6_UVD_JRBC_RB_WPTR_BASE_IDX                                                0
70*855e3e19SSonny Jiang #define regUVD_JRBC6_UVD_JRBC_STATUS                                                          0x0149
71*855e3e19SSonny Jiang #define regUVD_JRBC6_UVD_JRBC_STATUS_BASE_IDX                                                 0
72*855e3e19SSonny Jiang #define regUVD_JRBC6_UVD_JRBC_RB_RPTR                                                         0x014a
73*855e3e19SSonny Jiang #define regUVD_JRBC6_UVD_JRBC_RB_RPTR_BASE_IDX                                                0
74*855e3e19SSonny Jiang #define regUVD_JRBC7_UVD_JRBC_RB_WPTR                                                         0x0180
75*855e3e19SSonny Jiang #define regUVD_JRBC7_UVD_JRBC_RB_WPTR_BASE_IDX                                                0
76*855e3e19SSonny Jiang #define regUVD_JRBC7_UVD_JRBC_STATUS                                                          0x0189
77*855e3e19SSonny Jiang #define regUVD_JRBC7_UVD_JRBC_STATUS_BASE_IDX                                                 0
78*855e3e19SSonny Jiang #define regUVD_JRBC7_UVD_JRBC_RB_RPTR                                                         0x018a
79*855e3e19SSonny Jiang #define regUVD_JRBC7_UVD_JRBC_RB_RPTR_BASE_IDX                                                0
80*855e3e19SSonny Jiang #define regUVD_JRBC8_UVD_JRBC_RB_WPTR                                                         0x01c0
81*855e3e19SSonny Jiang #define regUVD_JRBC8_UVD_JRBC_RB_WPTR_BASE_IDX                                                0
82*855e3e19SSonny Jiang #define regUVD_JRBC8_UVD_JRBC_STATUS                                                          0x01c9
83*855e3e19SSonny Jiang #define regUVD_JRBC8_UVD_JRBC_STATUS_BASE_IDX                                                 0
84*855e3e19SSonny Jiang #define regUVD_JRBC8_UVD_JRBC_RB_RPTR                                                         0x01ca
85*855e3e19SSonny Jiang #define regUVD_JRBC8_UVD_JRBC_RB_RPTR_BASE_IDX                                                0
86*855e3e19SSonny Jiang #define regUVD_JRBC9_UVD_JRBC_RB_WPTR                                                         0x0440
87*855e3e19SSonny Jiang #define regUVD_JRBC9_UVD_JRBC_RB_WPTR_BASE_IDX                                                1
88*855e3e19SSonny Jiang #define regUVD_JRBC9_UVD_JRBC_STATUS                                                          0x0449
89*855e3e19SSonny Jiang #define regUVD_JRBC9_UVD_JRBC_STATUS_BASE_IDX                                                 1
90*855e3e19SSonny Jiang #define regUVD_JRBC9_UVD_JRBC_RB_RPTR                                                         0x044a
91*855e3e19SSonny Jiang #define regUVD_JRBC9_UVD_JRBC_RB_RPTR_BASE_IDX                                                1
92*855e3e19SSonny Jiang #define regUVD_JMI0_JPEG_LMI_DROP                                                             0x0663
93*855e3e19SSonny Jiang #define regUVD_JMI0_JPEG_LMI_DROP_BASE_IDX                                                    1
94*855e3e19SSonny Jiang #define regUVD_JMI0_UVD_JMI_CLIENT_STALL                                                      0x067a
95*855e3e19SSonny Jiang #define regUVD_JMI0_UVD_JMI_CLIENT_STALL_BASE_IDX                                             1
96*855e3e19SSonny Jiang #define regUVD_JMI0_UVD_JMI_CLIENT_CLEAN_STATUS                                               0x067b
97*855e3e19SSonny Jiang #define regUVD_JMI0_UVD_JMI_CLIENT_CLEAN_STATUS_BASE_IDX                                      1
98*855e3e19SSonny Jiang #define regJPEG_CORE_RST_CTRL                                                                 0x072e
99*855e3e19SSonny Jiang #define regJPEG_CORE_RST_CTRL_BASE_IDX                                                        1
100*855e3e19SSonny Jiang 
101*855e3e19SSonny Jiang #define regVCN_RRMT_CNTL                          0x0940
102*855e3e19SSonny Jiang #define regVCN_RRMT_CNTL_BASE_IDX                 1
103*855e3e19SSonny Jiang 
104*855e3e19SSonny Jiang enum amdgpu_jpeg_v5_0_2_sub_block {
105*855e3e19SSonny Jiang 	AMDGPU_JPEG_V5_0_2_JPEG0 = 0,
106*855e3e19SSonny Jiang 	AMDGPU_JPEG_V5_0_2_JPEG1,
107*855e3e19SSonny Jiang 
108*855e3e19SSonny Jiang 	AMDGPU_JPEG_V5_0_2_MAX_SUB_BLOCK,
109*855e3e19SSonny Jiang };
110*855e3e19SSonny Jiang 
111*855e3e19SSonny Jiang #endif /* __JPEG_V5_0_2_H__ */
112