mirror of
https://github.com/torvalds/linux.git
synced 2026-05-27 16:44:58 +02:00
drm/nouveau/gsp: add defines for rmapi object handles
Add header containing defines for RMAPI handles used by NVKM, and use them in place of magic values when calling RM_ALLOC. Signed-off-by: Ben Skeggs <bskeggs@nvidia.com> Reviewed-by: Dave Airlie <airlied@redhat.com> Reviewed-by: Timur Tabi <ttabi@nvidia.com> Tested-by: Timur Tabi <ttabi@nvidia.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
7c2d25f1e4
commit
38cafe9bd9
17
drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/handles.h
Normal file
17
drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/handles.h
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
/* SPDX-License-Identifier: MIT
|
||||
*
|
||||
* Copyright (c) 2025, NVIDIA CORPORATION. All rights reserved.
|
||||
*/
|
||||
#ifndef __NVKM_RM_HANDLES_H__
|
||||
#define __NVKM_RM_HANDLES_H__
|
||||
|
||||
/* RMAPI handles for various objects allocated from GSP-RM with RM_ALLOC. */
|
||||
|
||||
#define NVKM_RM_CLIENT(id) (0xc1d00000 | (id))
|
||||
#define NVKM_RM_DEVICE 0xde1d0000
|
||||
#define NVKM_RM_SUBDEVICE 0x5d1d0000
|
||||
#define NVKM_RM_DISP 0x00730000
|
||||
#define NVKM_RM_VASPACE 0x90f10000
|
||||
#define NVKM_RM_CHAN(chid) (0xf1f00000 | (chid))
|
||||
#define NVKM_RM_THREED 0x97000000
|
||||
#endif
|
||||
|
|
@ -53,7 +53,7 @@ r535_gsp_client_ctor(struct nvkm_gsp *gsp, struct nvkm_gsp_client *client)
|
|||
client->object.client = client;
|
||||
INIT_LIST_HEAD(&client->events);
|
||||
|
||||
args = nvkm_gsp_rm_alloc_get(&client->object, 0xc1d00000 | ret, NV01_ROOT, sizeof(*args),
|
||||
args = nvkm_gsp_rm_alloc_get(&client->object, NVKM_RM_CLIENT(ret), NV01_ROOT, sizeof(*args),
|
||||
&client->object);
|
||||
if (IS_ERR(args)) {
|
||||
r535_gsp_client_dtor(client);
|
||||
|
|
|
|||
|
|
@ -111,8 +111,8 @@ r535_gsp_subdevice_ctor(struct nvkm_gsp_device *device)
|
|||
{
|
||||
NV2080_ALLOC_PARAMETERS *args;
|
||||
|
||||
return nvkm_gsp_rm_alloc(&device->object, 0x5d1d0000, NV20_SUBDEVICE_0, sizeof(*args),
|
||||
&device->subdevice);
|
||||
return nvkm_gsp_rm_alloc(&device->object, NVKM_RM_SUBDEVICE, NV20_SUBDEVICE_0,
|
||||
sizeof(*args), &device->subdevice);
|
||||
}
|
||||
|
||||
static int
|
||||
|
|
@ -121,7 +121,7 @@ r535_gsp_device_ctor(struct nvkm_gsp_client *client, struct nvkm_gsp_device *dev
|
|||
NV0080_ALLOC_PARAMETERS *args;
|
||||
int ret;
|
||||
|
||||
args = nvkm_gsp_rm_alloc_get(&client->object, 0xde1d0000, NV01_DEVICE_0, sizeof(*args),
|
||||
args = nvkm_gsp_rm_alloc_get(&client->object, NVKM_RM_DEVICE, NV01_DEVICE_0, sizeof(*args),
|
||||
&device->object);
|
||||
if (IS_ERR(args))
|
||||
return PTR_ERR(args);
|
||||
|
|
|
|||
|
|
@ -1468,7 +1468,7 @@ r535_disp_oneinit(struct nvkm_disp *disp)
|
|||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = nvkm_gsp_rm_alloc(&disp->rm.device.object, 0x00730000, NV04_DISPLAY_COMMON, 0,
|
||||
ret = nvkm_gsp_rm_alloc(&disp->rm.device.object, NVKM_RM_DISP, NV04_DISPLAY_COMMON, 0,
|
||||
&disp->rm.objcom);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
|
|
|||
|
|
@ -101,7 +101,7 @@ r535_chan_ramfc_write(struct nvkm_chan *chan, u64 offset, u64 length, u32 devm,
|
|||
if (!chan->rm.mthdbuf.ptr)
|
||||
return -ENOMEM;
|
||||
|
||||
args = nvkm_gsp_rm_alloc_get(&chan->vmm->rm.device.object, 0xf1f00000 | chan->id,
|
||||
args = nvkm_gsp_rm_alloc_get(&chan->vmm->rm.device.object, NVKM_RM_CHAN(chan->id),
|
||||
fifo->func->chan.user.oclass, sizeof(*args),
|
||||
&chan->rm.object);
|
||||
if (WARN_ON(IS_ERR(args)))
|
||||
|
|
|
|||
|
|
@ -205,7 +205,7 @@ r535_gr_oneinit(struct nvkm_gr *base)
|
|||
{
|
||||
NV_CHANNELGPFIFO_ALLOCATION_PARAMETERS *args;
|
||||
|
||||
args = nvkm_gsp_rm_alloc_get(&golden.vmm->rm.device.object, 0xf1f00000,
|
||||
args = nvkm_gsp_rm_alloc_get(&golden.vmm->rm.device.object, NVKM_RM_CHAN(0),
|
||||
device->fifo->func->chan.user.oclass,
|
||||
sizeof(*args), &golden.chan);
|
||||
if (IS_ERR(args)) {
|
||||
|
|
@ -358,7 +358,7 @@ r535_gr_oneinit(struct nvkm_gr *base)
|
|||
goto done;
|
||||
|
||||
/* Allocate 3D class on channel to trigger golden context init in RM. */
|
||||
ret = nvkm_gsp_rm_alloc(&golden.chan, 0x97000000, rm->gpu->gr.class.threed, 0, &threed);
|
||||
ret = nvkm_gsp_rm_alloc(&golden.chan, NVKM_RM_THREED, rm->gpu->gr.class.threed, 0, &threed);
|
||||
if (ret)
|
||||
goto done;
|
||||
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ r535_mmu_promote_vmm(struct nvkm_vmm *vmm)
|
|||
if (ret)
|
||||
return ret;
|
||||
|
||||
args = nvkm_gsp_rm_alloc_get(&vmm->rm.device.object, 0x90f10000, FERMI_VASPACE_A,
|
||||
args = nvkm_gsp_rm_alloc_get(&vmm->rm.device.object, NVKM_RM_VASPACE, FERMI_VASPACE_A,
|
||||
sizeof(*args), &vmm->rm.object);
|
||||
if (IS_ERR(args))
|
||||
return PTR_ERR(args);
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@
|
|||
#include <subdev/gsp.h>
|
||||
#ifndef __NVKM_RM_H__
|
||||
#define __NVKM_RM_H__
|
||||
#include "handles.h"
|
||||
|
||||
struct nvkm_rm_impl {
|
||||
const struct nvkm_rm_api *api;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user