These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / drivers / gpu / drm / nouveau / nvkm / subdev / bios / dcb.c
index 8d78140..8304b80 100644 (file)
 #include <subdev/bios.h>
 #include <subdev/bios/dcb.h>
 
-#include <core/device.h>
-
 u16
 dcb_table(struct nvkm_bios *bios, u8 *ver, u8 *hdr, u8 *cnt, u8 *len)
 {
-       struct nvkm_device *device = nv_device(bios);
+       struct nvkm_subdev *subdev = &bios->subdev;
+       struct nvkm_device *device = subdev->device;
        u16 dcb = 0x0000;
 
        if (device->card_type > NV_04)
-               dcb = nv_ro16(bios, 0x36);
+               dcb = nvbios_rd16(bios, 0x36);
        if (!dcb) {
-               nv_warn(bios, "DCB table not found\n");
+               nvkm_warn(subdev, "DCB table not found\n");
                return dcb;
        }
 
-       *ver = nv_ro08(bios, dcb);
+       *ver = nvbios_rd08(bios, dcb);
 
        if (*ver >= 0x42) {
-               nv_warn(bios, "DCB version 0x%02x unknown\n", *ver);
+               nvkm_warn(subdev, "DCB version 0x%02x unknown\n", *ver);
                return 0x0000;
        } else
        if (*ver >= 0x30) {
-               if (nv_ro32(bios, dcb + 6) == 0x4edcbdcb) {
-                       *hdr = nv_ro08(bios, dcb + 1);
-                       *cnt = nv_ro08(bios, dcb + 2);
-                       *len = nv_ro08(bios, dcb + 3);
+               if (nvbios_rd32(bios, dcb + 6) == 0x4edcbdcb) {
+                       *hdr = nvbios_rd08(bios, dcb + 1);
+                       *cnt = nvbios_rd08(bios, dcb + 2);
+                       *len = nvbios_rd08(bios, dcb + 3);
                        return dcb;
                }
        } else
        if (*ver >= 0x20) {
-               if (nv_ro32(bios, dcb + 4) == 0x4edcbdcb) {
-                       u16 i2c = nv_ro16(bios, dcb + 2);
+               if (nvbios_rd32(bios, dcb + 4) == 0x4edcbdcb) {
+                       u16 i2c = nvbios_rd16(bios, dcb + 2);
                        *hdr = 8;
                        *cnt = (i2c - dcb) / 8;
                        *len = 8;
@@ -63,8 +62,8 @@ dcb_table(struct nvkm_bios *bios, u8 *ver, u8 *hdr, u8 *cnt, u8 *len)
                }
        } else
        if (*ver >= 0x15) {
-               if (!nv_memcmp(bios, dcb - 7, "DEV_REC", 7)) {
-                       u16 i2c = nv_ro16(bios, dcb + 2);
+               if (!nvbios_memcmp(bios, dcb - 7, "DEV_REC", 7)) {
+                       u16 i2c = nvbios_rd16(bios, dcb + 2);
                        *hdr = 4;
                        *cnt = (i2c - dcb) / 10;
                        *len = 10;
@@ -88,11 +87,11 @@ dcb_table(struct nvkm_bios *bios, u8 *ver, u8 *hdr, u8 *cnt, u8 *len)
                 *
                 * v1.1 (NV5+, maybe some NV4) is entirely unhelpful
                 */
-               nv_warn(bios, "DCB contains no useful data\n");
+               nvkm_debug(subdev, "DCB contains no useful data\n");
                return 0x0000;
        }
 
-       nv_warn(bios, "DCB header validation failed\n");
+       nvkm_warn(subdev, "DCB header validation failed\n");
        return 0x0000;
 }
 
@@ -126,7 +125,7 @@ dcb_outp_parse(struct nvkm_bios *bios, u8 idx, u8 *ver, u8 *len,
        memset(outp, 0x00, sizeof(*outp));
        if (dcb) {
                if (*ver >= 0x20) {
-                       u32 conn = nv_ro32(bios, dcb + 0x00);
+                       u32 conn = nvbios_rd32(bios, dcb + 0x00);
                        outp->or        = (conn & 0x0f000000) >> 24;
                        outp->location  = (conn & 0x00300000) >> 20;
                        outp->bus       = (conn & 0x000f0000) >> 16;
@@ -140,7 +139,7 @@ dcb_outp_parse(struct nvkm_bios *bios, u8 idx, u8 *ver, u8 *len,
                }
 
                if (*ver >= 0x40) {
-                       u32 conf = nv_ro32(bios, dcb + 0x04);
+                       u32 conf = nvbios_rd32(bios, dcb + 0x04);
                        switch (outp->type) {
                        case DCB_OUTPUT_DP:
                                switch (conf & 0x00e00000) {
@@ -156,20 +155,19 @@ dcb_outp_parse(struct nvkm_bios *bios, u8 idx, u8 *ver, u8 *len,
                                        break;
                                }
 
-                               outp->dpconf.link_nr = (conf & 0x0f000000) >> 24;
-                               if (*ver < 0x41) {
-                                       switch (outp->dpconf.link_nr) {
-                                       case 0x0f:
-                                               outp->dpconf.link_nr = 4;
-                                               break;
-                                       case 0x03:
-                                               outp->dpconf.link_nr = 2;
-                                               break;
-                                       case 0x01:
-                                       default:
-                                               outp->dpconf.link_nr = 1;
-                                               break;
-                                       }
+                               switch ((conf & 0x0f000000) >> 24) {
+                               case 0xf:
+                               case 0x4:
+                                       outp->dpconf.link_nr = 4;
+                                       break;
+                               case 0x3:
+                               case 0x2:
+                                       outp->dpconf.link_nr = 2;
+                                       break;
+                               case 0x1:
+                               default:
+                                       outp->dpconf.link_nr = 1;
+                                       break;
                                }
 
                                /* fall-through... */
@@ -215,14 +213,14 @@ dcb_outp_foreach(struct nvkm_bios *bios, void *data,
        u16 outp;
 
        while ((outp = dcb_outp(bios, ++idx, &ver, &len))) {
-               if (nv_ro32(bios, outp) == 0x00000000)
+               if (nvbios_rd32(bios, outp) == 0x00000000)
                        break; /* seen on an NV11 with DCB v1.5 */
-               if (nv_ro32(bios, outp) == 0xffffffff)
+               if (nvbios_rd32(bios, outp) == 0xffffffff)
                        break; /* seen on an NV17 with DCB v2.0 */
 
-               if (nv_ro08(bios, outp) == DCB_OUTPUT_UNUSED)
+               if (nvbios_rd08(bios, outp) == DCB_OUTPUT_UNUSED)
                        continue;
-               if (nv_ro08(bios, outp) == DCB_OUTPUT_EOL)
+               if (nvbios_rd08(bios, outp) == DCB_OUTPUT_EOL)
                        break;
 
                ret = exec(bios, data, idx, outp);