diff options
author | Ben Skeggs <bskeggs@redhat.com> | 2023-09-19 17:56:32 -0400 |
---|---|---|
committer | Lyude Paul <lyude@redhat.com> | 2023-09-19 18:22:24 -0400 |
commit | cb3ec8cbd00edb3a32d114da4874cda090766c76 (patch) | |
tree | 0ecaaea9f3bcbc65c0ea3667f2c006211aa296b8 /drivers/gpu/drm/nouveau/nvkm/engine/disp/base.c | |
parent | 62b0eef237a39446b8c71fd7271ade858acff1a7 (diff) | |
download | linux-cb3ec8cbd00edb3a32d114da4874cda090766c76.tar.gz linux-cb3ec8cbd00edb3a32d114da4874cda090766c76.tar.bz2 linux-cb3ec8cbd00edb3a32d114da4874cda090766c76.zip |
drm/nouveau/disp: move outp init/fini paths to chipset code
- pre-nv5x doesn't use any of this
- preparation for GSP-RM
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
Acked-by: Danilo Krummrich <me@dakr.org>
Signed-off-by: Lyude Paul <lyude@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230919220442.202488-38-lyude@redhat.com
Diffstat (limited to 'drivers/gpu/drm/nouveau/nvkm/engine/disp/base.c')
-rw-r--r-- | drivers/gpu/drm/nouveau/nvkm/engine/disp/base.c | 31 |
1 files changed, 4 insertions, 27 deletions
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/base.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/base.c index 1dbe68f9a0e0..39f7e7ce9f4a 100644 --- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/base.c +++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/base.c @@ -102,18 +102,14 @@ static int nvkm_disp_fini(struct nvkm_engine *engine, bool suspend) { struct nvkm_disp *disp = nvkm_disp(engine); - struct nvkm_conn *conn; struct nvkm_outp *outp; if (disp->func->fini) disp->func->fini(disp); list_for_each_entry(outp, &disp->outps, head) { - nvkm_outp_fini(outp); - } - - list_for_each_entry(conn, &disp->conns, head) { - nvkm_conn_fini(conn); + if (outp->func->fini) + outp->func->fini(outp); } return 0; @@ -123,16 +119,12 @@ static int nvkm_disp_init(struct nvkm_engine *engine) { struct nvkm_disp *disp = nvkm_disp(engine); - struct nvkm_conn *conn; struct nvkm_outp *outp; struct nvkm_ior *ior; - list_for_each_entry(conn, &disp->conns, head) { - nvkm_conn_init(conn); - } - list_for_each_entry(outp, &disp->outps, head) { - nvkm_outp_init(outp); + if (outp->func->init) + outp->func->init(outp); } if (disp->func->init) { @@ -156,9 +148,7 @@ nvkm_disp_oneinit(struct nvkm_engine *engine) { struct nvkm_disp *disp = nvkm_disp(engine); struct nvkm_subdev *subdev = &disp->engine.subdev; - struct nvkm_outp *outp; struct nvkm_head *head; - struct nvkm_ior *ior; int ret, i; if (disp->func->oneinit) { @@ -167,19 +157,6 @@ nvkm_disp_oneinit(struct nvkm_engine *engine) return ret; } - /* Enforce identity-mapped SOR assignment for panels, which have - * certain bits (ie. backlight controls) wired to a specific SOR. - */ - list_for_each_entry(outp, &disp->outps, head) { - if (outp->conn->info.type == DCB_CONNECTOR_LVDS || - outp->conn->info.type == DCB_CONNECTOR_eDP) { - ior = nvkm_ior_find(disp, SOR, ffs(outp->info.or) - 1); - if (!WARN_ON(!ior)) - ior->identity = true; - outp->identity = true; - } - } - i = 0; list_for_each_entry(head, &disp->heads, head) i = max(i, head->id + 1); |