mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-02 07:04:24 +00:00
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
This commit is contained in:
parent
62b0eef237
commit
cb3ec8cbd0
6 changed files with 22 additions and 56 deletions
|
@ -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);
|
||||
|
|
|
@ -29,16 +29,6 @@
|
|||
|
||||
#include <nvif/event.h>
|
||||
|
||||
void
|
||||
nvkm_conn_fini(struct nvkm_conn *conn)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
nvkm_conn_init(struct nvkm_conn *conn)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
nvkm_conn_del(struct nvkm_conn **pconn)
|
||||
{
|
||||
|
|
|
@ -19,8 +19,6 @@ struct nvkm_conn {
|
|||
int nvkm_conn_new(struct nvkm_disp *, int index, struct nvbios_connE *,
|
||||
struct nvkm_conn **);
|
||||
void nvkm_conn_del(struct nvkm_conn **);
|
||||
void nvkm_conn_init(struct nvkm_conn *);
|
||||
void nvkm_conn_fini(struct nvkm_conn *);
|
||||
|
||||
#define CONN_MSG(c,l,f,a...) do { \
|
||||
struct nvkm_conn *_conn = (c); \
|
||||
|
|
|
@ -603,6 +603,7 @@ nvkm_dp_fini(struct nvkm_outp *outp)
|
|||
static void
|
||||
nvkm_dp_init(struct nvkm_outp *outp)
|
||||
{
|
||||
nvkm_outp_init(outp);
|
||||
nvkm_dp_enable(outp, outp->dp.enabled);
|
||||
}
|
||||
|
||||
|
|
|
@ -1586,6 +1586,7 @@ nv50_disp_oneinit(struct nvkm_disp *disp)
|
|||
struct nvkm_bios *bios = device->bios;
|
||||
struct nvkm_outp *outp, *outt, *pair;
|
||||
struct nvkm_conn *conn;
|
||||
struct nvkm_ior *ior;
|
||||
int ret, i;
|
||||
u8 ver, hdr;
|
||||
u32 data;
|
||||
|
@ -1747,6 +1748,19 @@ nv50_disp_oneinit(struct nvkm_disp *disp)
|
|||
list_add_tail(&outp->conn->head, &disp->conns);
|
||||
}
|
||||
|
||||
/* 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;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -287,13 +287,6 @@ nvkm_outp_acquire(struct nvkm_outp *outp, bool hda)
|
|||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
nvkm_outp_fini(struct nvkm_outp *outp)
|
||||
{
|
||||
if (outp->func->fini)
|
||||
outp->func->fini(outp);
|
||||
}
|
||||
|
||||
struct nvkm_ior *
|
||||
nvkm_outp_inherit(struct nvkm_outp *outp)
|
||||
{
|
||||
|
@ -332,8 +325,8 @@ nvkm_outp_inherit(struct nvkm_outp *outp)
|
|||
return ior;
|
||||
}
|
||||
|
||||
static void
|
||||
nvkm_outp_init_route(struct nvkm_outp *outp)
|
||||
void
|
||||
nvkm_outp_init(struct nvkm_outp *outp)
|
||||
{
|
||||
enum nvkm_ior_proto proto;
|
||||
enum nvkm_ior_type type;
|
||||
|
@ -365,14 +358,6 @@ nvkm_outp_init_route(struct nvkm_outp *outp)
|
|||
ior->arm.outp = outp;
|
||||
}
|
||||
|
||||
void
|
||||
nvkm_outp_init(struct nvkm_outp *outp)
|
||||
{
|
||||
nvkm_outp_init_route(outp);
|
||||
if (outp->func->init)
|
||||
outp->func->init(outp);
|
||||
}
|
||||
|
||||
void
|
||||
nvkm_outp_del(struct nvkm_outp **poutp)
|
||||
{
|
||||
|
@ -420,6 +405,7 @@ nvkm_outp_new_(const struct nvkm_outp_func *func, struct nvkm_disp *disp,
|
|||
|
||||
static const struct nvkm_outp_func
|
||||
nvkm_outp = {
|
||||
.init = nvkm_outp_init,
|
||||
.detect = nvkm_outp_detect,
|
||||
.inherit = nvkm_outp_inherit,
|
||||
.acquire = nvkm_outp_acquire,
|
||||
|
|
Loading…
Reference in a new issue