49 if (
desc.outp_type == 2 &&
65 if ((ctx->
outp[0] & 0x0000000f) != ctx->
desc.outp_type)
72 if ((desc & 0x00000000000000f0) >= 0x20) {
75 if ((ctx->
outp[0] & 0x0f000000) != (link & 0x0f) << 24)
79 link = (link & 0x30) >> 4;
80 if ((link & ((ctx->
outp[1] & 0x00000030) >> 4)) !=
link)
90 if (ctx->
desc.outp_type == 6 && ctx->
desc.conn_type == 6 &&
112 nv_debug(mxm,
"disable %d: 0x%08x 0x%08x\n",
114 ctx.
outp[0] |= 0x0000000f;
124 i2cidx = (i2cidx & 0x0f) << 4;
126 i2cidx = (i2cidx & 0xf0);
128 if (i2cidx != 0xf0) {
129 ctx.
outp[0] &= ~0x000000f0;
130 ctx.
outp[0] |= i2cidx;
134 switch (ctx.
desc.outp_type) {
140 ctx.
outp[1] &= ~0x00000030;
153 conn +=
dcb_conn(bios, (ctx.
outp[0] & 0x0000f000) >> 12, &ver, &len);
155 switch (ctx.
desc.conn_type) {
157 ctx.
outp[1] |= 0x00000004;
167 ctx.
outp[1] |= 0x00010000;
169 ctx.
outp[1] |= 0x00000004;
183 mxm_show_unmatched(
struct nouveau_mxm *mxm,
u8 *data,
void *info)
186 if ((desc & 0xf0) != 0xf0)
187 nv_info(mxm,
"unmatched output device 0x%016llx\n", desc);
197 if (dcb == 0x0000 || ver != 0x40) {
198 nv_debug(mxm,
"unsupported DCB version\n");
215 *pobject = nv_object(priv);
220 mxm_dcb_sanitise(&priv->
base);
228 .ctor = nv50_mxm_ctor,