Skip to content

Commit aec3bb3

Browse files
committed
drm/amdgpu: make psp_ring_init common
All of the IP specific versions are the same now, so we can just use a common function. Acked-by: Felix Kuehling <[email protected]> Signed-off-by: Alex Deucher <[email protected]>
1 parent 54037bd commit aec3bb3

File tree

9 files changed

+26
-191
lines changed

9 files changed

+26
-191
lines changed

drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,32 @@ static int psp_load_smu_fw(struct psp_context *psp);
5252
static int psp_rap_terminate(struct psp_context *psp);
5353
static int psp_securedisplay_terminate(struct psp_context *psp);
5454

55+
static int psp_ring_init(struct psp_context *psp,
56+
enum psp_ring_type ring_type)
57+
{
58+
int ret = 0;
59+
struct psp_ring *ring;
60+
struct amdgpu_device *adev = psp->adev;
61+
62+
ring = &psp->km_ring;
63+
64+
ring->ring_type = ring_type;
65+
66+
/* allocate 4k Page of Local Frame Buffer memory for ring */
67+
ring->ring_size = 0x1000;
68+
ret = amdgpu_bo_create_kernel(adev, ring->ring_size, PAGE_SIZE,
69+
AMDGPU_GEM_DOMAIN_VRAM,
70+
&adev->firmware.rbuf,
71+
&ring->ring_mem_mc_addr,
72+
(void **)&ring->ring_mem);
73+
if (ret) {
74+
ring->ring_size = 0;
75+
return ret;
76+
}
77+
78+
return 0;
79+
}
80+
5581
/*
5682
* Due to DF Cstate management centralized to PMFW, the firmware
5783
* loading sequence will be updated as below:

drivers/gpu/drm/amd/amdgpu/amdgpu_psp.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,6 @@ struct psp_funcs
118118
int (*bootloader_load_dbg_drv)(struct psp_context *psp);
119119
int (*bootloader_load_ras_drv)(struct psp_context *psp);
120120
int (*bootloader_load_sos)(struct psp_context *psp);
121-
int (*ring_init)(struct psp_context *psp, enum psp_ring_type ring_type);
122121
int (*ring_create)(struct psp_context *psp,
123122
enum psp_ring_type ring_type);
124123
int (*ring_stop)(struct psp_context *psp,
@@ -396,7 +395,6 @@ struct amdgpu_psp_funcs {
396395
};
397396

398397

399-
#define psp_ring_init(psp, type) (psp)->funcs->ring_init((psp), (type))
400398
#define psp_ring_create(psp, type) (psp)->funcs->ring_create((psp), (type))
401399
#define psp_ring_stop(psp, type) (psp)->funcs->ring_stop((psp), (type))
402400
#define psp_ring_destroy(psp, type) ((psp)->funcs->ring_destroy((psp), (type)))

drivers/gpu/drm/amd/amdgpu/psp_v10_0.c

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -126,32 +126,6 @@ static int psp_v10_0_init_microcode(struct psp_context *psp)
126126
return err;
127127
}
128128

129-
static int psp_v10_0_ring_init(struct psp_context *psp,
130-
enum psp_ring_type ring_type)
131-
{
132-
int ret = 0;
133-
struct psp_ring *ring;
134-
struct amdgpu_device *adev = psp->adev;
135-
136-
ring = &psp->km_ring;
137-
138-
ring->ring_type = ring_type;
139-
140-
/* allocate 4k Page of Local Frame Buffer memory for ring */
141-
ring->ring_size = 0x1000;
142-
ret = amdgpu_bo_create_kernel(adev, ring->ring_size, PAGE_SIZE,
143-
AMDGPU_GEM_DOMAIN_VRAM,
144-
&adev->firmware.rbuf,
145-
&ring->ring_mem_mc_addr,
146-
(void **)&ring->ring_mem);
147-
if (ret) {
148-
ring->ring_size = 0;
149-
return ret;
150-
}
151-
152-
return 0;
153-
}
154-
155129
static int psp_v10_0_ring_create(struct psp_context *psp,
156130
enum psp_ring_type ring_type)
157131
{
@@ -245,7 +219,6 @@ static void psp_v10_0_ring_set_wptr(struct psp_context *psp, uint32_t value)
245219

246220
static const struct psp_funcs psp_v10_0_funcs = {
247221
.init_microcode = psp_v10_0_init_microcode,
248-
.ring_init = psp_v10_0_ring_init,
249222
.ring_create = psp_v10_0_ring_create,
250223
.ring_stop = psp_v10_0_ring_stop,
251224
.ring_destroy = psp_v10_0_ring_destroy,

drivers/gpu/drm/amd/amdgpu/psp_v11_0.c

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -360,32 +360,6 @@ static int psp_v11_0_bootloader_load_sos(struct psp_context *psp)
360360
return ret;
361361
}
362362

363-
static int psp_v11_0_ring_init(struct psp_context *psp,
364-
enum psp_ring_type ring_type)
365-
{
366-
int ret = 0;
367-
struct psp_ring *ring;
368-
struct amdgpu_device *adev = psp->adev;
369-
370-
ring = &psp->km_ring;
371-
372-
ring->ring_type = ring_type;
373-
374-
/* allocate 4k Page of Local Frame Buffer memory for ring */
375-
ring->ring_size = 0x1000;
376-
ret = amdgpu_bo_create_kernel(adev, ring->ring_size, PAGE_SIZE,
377-
AMDGPU_GEM_DOMAIN_VRAM,
378-
&adev->firmware.rbuf,
379-
&ring->ring_mem_mc_addr,
380-
(void **)&ring->ring_mem);
381-
if (ret) {
382-
ring->ring_size = 0;
383-
return ret;
384-
}
385-
386-
return 0;
387-
}
388-
389363
static int psp_v11_0_ring_stop(struct psp_context *psp,
390364
enum psp_ring_type ring_type)
391365
{
@@ -779,7 +753,6 @@ static const struct psp_funcs psp_v11_0_funcs = {
779753
.bootloader_load_spl = psp_v11_0_bootloader_load_spl,
780754
.bootloader_load_sysdrv = psp_v11_0_bootloader_load_sysdrv,
781755
.bootloader_load_sos = psp_v11_0_bootloader_load_sos,
782-
.ring_init = psp_v11_0_ring_init,
783756
.ring_create = psp_v11_0_ring_create,
784757
.ring_stop = psp_v11_0_ring_stop,
785758
.ring_destroy = psp_v11_0_ring_destroy,

drivers/gpu/drm/amd/amdgpu/psp_v11_0_8.c

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -28,32 +28,6 @@
2828

2929
#include "mp/mp_11_0_8_offset.h"
3030

31-
static int psp_v11_0_8_ring_init(struct psp_context *psp,
32-
enum psp_ring_type ring_type)
33-
{
34-
int ret = 0;
35-
struct psp_ring *ring;
36-
struct amdgpu_device *adev = psp->adev;
37-
38-
ring = &psp->km_ring;
39-
40-
ring->ring_type = ring_type;
41-
42-
/* allocate 4k Page of Local Frame Buffer memory for ring */
43-
ring->ring_size = 0x1000;
44-
ret = amdgpu_bo_create_kernel(adev, ring->ring_size, PAGE_SIZE,
45-
AMDGPU_GEM_DOMAIN_VRAM,
46-
&adev->firmware.rbuf,
47-
&ring->ring_mem_mc_addr,
48-
(void **)&ring->ring_mem);
49-
if (ret) {
50-
ring->ring_size = 0;
51-
return ret;
52-
}
53-
54-
return 0;
55-
}
56-
5731
static int psp_v11_0_8_ring_stop(struct psp_context *psp,
5832
enum psp_ring_type ring_type)
5933
{
@@ -194,7 +168,6 @@ static void psp_v11_0_8_ring_set_wptr(struct psp_context *psp, uint32_t value)
194168
}
195169

196170
static const struct psp_funcs psp_v11_0_8_funcs = {
197-
.ring_init = psp_v11_0_8_ring_init,
198171
.ring_create = psp_v11_0_8_ring_create,
199172
.ring_stop = psp_v11_0_8_ring_stop,
200173
.ring_destroy = psp_v11_0_8_ring_destroy,

drivers/gpu/drm/amd/amdgpu/psp_v12_0.c

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -236,32 +236,6 @@ static void psp_v12_0_reroute_ih(struct psp_context *psp)
236236
0x80000000, 0x8000FFFF, false);
237237
}
238238

239-
static int psp_v12_0_ring_init(struct psp_context *psp,
240-
enum psp_ring_type ring_type)
241-
{
242-
int ret = 0;
243-
struct psp_ring *ring;
244-
struct amdgpu_device *adev = psp->adev;
245-
246-
ring = &psp->km_ring;
247-
248-
ring->ring_type = ring_type;
249-
250-
/* allocate 4k Page of Local Frame Buffer memory for ring */
251-
ring->ring_size = 0x1000;
252-
ret = amdgpu_bo_create_kernel(adev, ring->ring_size, PAGE_SIZE,
253-
AMDGPU_GEM_DOMAIN_VRAM,
254-
&adev->firmware.rbuf,
255-
&ring->ring_mem_mc_addr,
256-
(void **)&ring->ring_mem);
257-
if (ret) {
258-
ring->ring_size = 0;
259-
return ret;
260-
}
261-
262-
return 0;
263-
}
264-
265239
static int psp_v12_0_ring_create(struct psp_context *psp,
266240
enum psp_ring_type ring_type)
267241
{
@@ -425,7 +399,6 @@ static const struct psp_funcs psp_v12_0_funcs = {
425399
.init_microcode = psp_v12_0_init_microcode,
426400
.bootloader_load_sysdrv = psp_v12_0_bootloader_load_sysdrv,
427401
.bootloader_load_sos = psp_v12_0_bootloader_load_sos,
428-
.ring_init = psp_v12_0_ring_init,
429402
.ring_create = psp_v12_0_ring_create,
430403
.ring_stop = psp_v12_0_ring_stop,
431404
.ring_destroy = psp_v12_0_ring_destroy,

drivers/gpu/drm/amd/amdgpu/psp_v13_0.c

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -268,32 +268,6 @@ static int psp_v13_0_bootloader_load_sos(struct psp_context *psp)
268268
return ret;
269269
}
270270

271-
static int psp_v13_0_ring_init(struct psp_context *psp,
272-
enum psp_ring_type ring_type)
273-
{
274-
int ret = 0;
275-
struct psp_ring *ring;
276-
struct amdgpu_device *adev = psp->adev;
277-
278-
ring = &psp->km_ring;
279-
280-
ring->ring_type = ring_type;
281-
282-
/* allocate 4k Page of Local Frame Buffer memory for ring */
283-
ring->ring_size = 0x1000;
284-
ret = amdgpu_bo_create_kernel(adev, ring->ring_size, PAGE_SIZE,
285-
AMDGPU_GEM_DOMAIN_VRAM,
286-
&adev->firmware.rbuf,
287-
&ring->ring_mem_mc_addr,
288-
(void **)&ring->ring_mem);
289-
if (ret) {
290-
ring->ring_size = 0;
291-
return ret;
292-
}
293-
294-
return 0;
295-
}
296-
297271
static int psp_v13_0_ring_stop(struct psp_context *psp,
298272
enum psp_ring_type ring_type)
299273
{
@@ -729,7 +703,6 @@ static const struct psp_funcs psp_v13_0_funcs = {
729703
.bootloader_load_dbg_drv = psp_v13_0_bootloader_load_dbg_drv,
730704
.bootloader_load_ras_drv = psp_v13_0_bootloader_load_ras_drv,
731705
.bootloader_load_sos = psp_v13_0_bootloader_load_sos,
732-
.ring_init = psp_v13_0_ring_init,
733706
.ring_create = psp_v13_0_ring_create,
734707
.ring_stop = psp_v13_0_ring_stop,
735708
.ring_destroy = psp_v13_0_ring_destroy,

drivers/gpu/drm/amd/amdgpu/psp_v13_0_4.c

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -199,32 +199,6 @@ static int psp_v13_0_4_bootloader_load_sos(struct psp_context *psp)
199199
return ret;
200200
}
201201

202-
static int psp_v13_0_4_ring_init(struct psp_context *psp,
203-
enum psp_ring_type ring_type)
204-
{
205-
int ret = 0;
206-
struct psp_ring *ring;
207-
struct amdgpu_device *adev = psp->adev;
208-
209-
ring = &psp->km_ring;
210-
211-
ring->ring_type = ring_type;
212-
213-
/* allocate 4k Page of Local Frame Buffer memory for ring */
214-
ring->ring_size = 0x1000;
215-
ret = amdgpu_bo_create_kernel(adev, ring->ring_size, PAGE_SIZE,
216-
AMDGPU_GEM_DOMAIN_VRAM,
217-
&adev->firmware.rbuf,
218-
&ring->ring_mem_mc_addr,
219-
(void **)&ring->ring_mem);
220-
if (ret) {
221-
ring->ring_size = 0;
222-
return ret;
223-
}
224-
225-
return 0;
226-
}
227-
228202
static int psp_v13_0_4_ring_stop(struct psp_context *psp,
229203
enum psp_ring_type ring_type)
230204
{
@@ -373,7 +347,6 @@ static const struct psp_funcs psp_v13_0_4_funcs = {
373347
.bootloader_load_intf_drv = psp_v13_0_4_bootloader_load_intf_drv,
374348
.bootloader_load_dbg_drv = psp_v13_0_4_bootloader_load_dbg_drv,
375349
.bootloader_load_sos = psp_v13_0_4_bootloader_load_sos,
376-
.ring_init = psp_v13_0_4_ring_init,
377350
.ring_create = psp_v13_0_4_ring_create,
378351
.ring_stop = psp_v13_0_4_ring_stop,
379352
.ring_destroy = psp_v13_0_4_ring_destroy,

drivers/gpu/drm/amd/amdgpu/psp_v3_1.c

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -160,32 +160,6 @@ static int psp_v3_1_bootloader_load_sos(struct psp_context *psp)
160160
return ret;
161161
}
162162

163-
static int psp_v3_1_ring_init(struct psp_context *psp,
164-
enum psp_ring_type ring_type)
165-
{
166-
int ret = 0;
167-
struct psp_ring *ring;
168-
struct amdgpu_device *adev = psp->adev;
169-
170-
ring = &psp->km_ring;
171-
172-
ring->ring_type = ring_type;
173-
174-
/* allocate 4k Page of Local Frame Buffer memory for ring */
175-
ring->ring_size = 0x1000;
176-
ret = amdgpu_bo_create_kernel(adev, ring->ring_size, PAGE_SIZE,
177-
AMDGPU_GEM_DOMAIN_VRAM,
178-
&adev->firmware.rbuf,
179-
&ring->ring_mem_mc_addr,
180-
(void **)&ring->ring_mem);
181-
if (ret) {
182-
ring->ring_size = 0;
183-
return ret;
184-
}
185-
186-
return 0;
187-
}
188-
189163
static void psp_v3_1_reroute_ih(struct psp_context *psp)
190164
{
191165
struct amdgpu_device *adev = psp->adev;
@@ -401,7 +375,6 @@ static const struct psp_funcs psp_v3_1_funcs = {
401375
.init_microcode = psp_v3_1_init_microcode,
402376
.bootloader_load_sysdrv = psp_v3_1_bootloader_load_sysdrv,
403377
.bootloader_load_sos = psp_v3_1_bootloader_load_sos,
404-
.ring_init = psp_v3_1_ring_init,
405378
.ring_create = psp_v3_1_ring_create,
406379
.ring_stop = psp_v3_1_ring_stop,
407380
.ring_destroy = psp_v3_1_ring_destroy,

0 commit comments

Comments
 (0)