]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/nouveau/gsp: add hal for gsp.set_system_info()
authorBen Skeggs <bskeggs@nvidia.com>
Thu, 14 Nov 2024 03:02:37 +0000 (13:02 +1000)
committerDave Airlie <airlied@redhat.com>
Sun, 18 May 2025 20:29:24 +0000 (06:29 +1000)
545.23.06 has incompatible changes to GspSystemInfo.

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>
drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/gsp.c
drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/rm.c
drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/rm.h

index ec69fdb9492a38bfbb4fa62c09e61b1cbc46b691..f574a3ad2082c7955a268fe4141b9ac30d637a88 100644 (file)
@@ -871,7 +871,7 @@ r535_gsp_acpi_info(struct nvkm_gsp *gsp, ACPI_METHOD_DATA *acpi)
 }
 
 static int
-r535_gsp_rpc_set_system_info(struct nvkm_gsp *gsp)
+r535_gsp_set_system_info(struct nvkm_gsp *gsp)
 {
        struct nvkm_device *device = gsp->subdev.device;
        struct nvkm_device_pci *pdev = container_of(device, typeof(*pdev), device);
@@ -2080,6 +2080,7 @@ int
 r535_gsp_oneinit(struct nvkm_gsp *gsp)
 {
        struct nvkm_device *device = gsp->subdev.device;
+       const struct nvkm_rm_api *rmapi = gsp->rm->api;
        const u8 *data;
        u64 size;
        int ret;
@@ -2134,7 +2135,7 @@ r535_gsp_oneinit(struct nvkm_gsp *gsp)
        if (WARN_ON(ret))
                return ret;
 
-       ret = r535_gsp_rpc_set_system_info(gsp);
+       ret = rmapi->gsp->set_system_info(gsp);
        if (WARN_ON(ret))
                return ret;
 
@@ -2146,3 +2147,8 @@ r535_gsp_oneinit(struct nvkm_gsp *gsp)
        idr_init(&gsp->client_id.idr);
        return 0;
 }
+
+const struct nvkm_rm_api_gsp
+r535_gsp = {
+       .set_system_info = r535_gsp_set_system_info,
+};
index 60e8678b791341e6d4aede699ad9bc268df6a4b9..efedd387fcc53038e1823f0aecacd2139416d029 100644 (file)
@@ -22,6 +22,7 @@ r535_wpr_libos3 = {
 
 static const struct nvkm_rm_api
 r535_api = {
+       .gsp = &r535_gsp,
        .rpc = &r535_rpc,
        .ctrl = &r535_ctrl,
        .alloc = &r535_alloc,
index 1a2fec3935a41ac07a034573c1924c30f07bdc41..4a37904f7f9cc0042ea776a0bed1bf1b7c1bb00d 100644 (file)
@@ -26,6 +26,10 @@ struct nvkm_rm_wpr {
 };
 
 struct nvkm_rm_api {
+       const struct nvkm_rm_api_gsp {
+               int (*set_system_info)(struct nvkm_gsp *);
+       } *gsp;
+
        const struct nvkm_rm_api_rpc {
                void *(*get)(struct nvkm_gsp *, u32 fn, u32 argc);
                void *(*push)(struct nvkm_gsp *gsp, void *argv,
@@ -71,6 +75,7 @@ struct nvkm_rm_api {
 
 extern const struct nvkm_rm_impl r535_rm_tu102;
 extern const struct nvkm_rm_impl r535_rm_ga102;
+extern const struct nvkm_rm_api_gsp r535_gsp;
 extern const struct nvkm_rm_api_rpc r535_rpc;
 extern const struct nvkm_rm_api_ctrl r535_ctrl;
 extern const struct nvkm_rm_api_alloc r535_alloc;