drm/nouveau/bios/init: add or/link args separate from output path
As of DCB 4.1, these are not the same thing. Compatibility temporarily in place until callers have been updated. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
parent
ca9c2d5b28
commit
b88afa4396
|
@ -7,6 +7,8 @@ struct nvbios_init {
|
|||
u32 offset;
|
||||
|
||||
struct dcb_output *outp;
|
||||
int or;
|
||||
int link;
|
||||
union {
|
||||
int head;
|
||||
int crtc;
|
||||
|
|
|
@ -87,8 +87,8 @@ static inline int
|
|||
init_or(struct nvbios_init *init)
|
||||
{
|
||||
if (init_exec(init)) {
|
||||
if (init->outp)
|
||||
return ffs(init->outp->or) - 1;
|
||||
if (init->or >= 0)
|
||||
return init->or;
|
||||
error("script needs OR!!\n");
|
||||
}
|
||||
return 0;
|
||||
|
@ -98,8 +98,8 @@ static inline int
|
|||
init_link(struct nvbios_init *init)
|
||||
{
|
||||
if (init_exec(init)) {
|
||||
if (init->outp)
|
||||
return !(init->outp->sorconf.link & 1);
|
||||
if (init->link)
|
||||
return init->link == 2;
|
||||
error("script needs OR link\n");
|
||||
}
|
||||
return 0;
|
||||
|
@ -2277,6 +2277,12 @@ int
|
|||
nvbios_exec(struct nvbios_init *init)
|
||||
{
|
||||
struct nvkm_bios *bios = init->subdev->device->bios;
|
||||
|
||||
if (init->bios) {
|
||||
init->or = init->outp ? ffs(init->outp->or) - 1 : -1;
|
||||
init->link = init->outp ? init->outp->sorconf.link : 0;
|
||||
}
|
||||
|
||||
init->nested++;
|
||||
while (init->offset) {
|
||||
u8 opcode = nvbios_rd08(bios, init->offset);
|
||||
|
|
Loading…
Reference in New Issue