-1
drivers/gpu/drm/drm_fb_helper.c
-1
drivers/gpu/drm/drm_fb_helper.c
+2
-1
drivers/gpu/drm/nouveau/nouveau_fence.c
+2
-1
drivers/gpu/drm/nouveau/nouveau_fence.c
+5
-2
drivers/gpu/drm/nouveau/nouveau_sgdma.c
+5
-2
drivers/gpu/drm/nouveau/nouveau_sgdma.c
···
37
37
return -ENOMEM;
38
38
39
39
nvbe->ttm_alloced = kmalloc(sizeof(bool) * num_pages, GFP_KERNEL);
40
-
if (!nvbe->ttm_alloced)
40
+
if (!nvbe->ttm_alloced) {
41
+
kfree(nvbe->pages);
42
+
nvbe->pages = NULL;
41
43
return -ENOMEM;
44
+
}
42
45
43
46
nvbe->nr_pages = 0;
44
47
while (num_pages--) {
···
129
126
130
127
for (j = 0; j < PAGE_SIZE / NV_CTXDMA_PAGE_SIZE; j++, pte++) {
131
128
nv_wo32(gpuobj, (pte * 4) + 0, offset_l | 3);
132
-
dma_offset += NV_CTXDMA_PAGE_SIZE;
129
+
offset_l += NV_CTXDMA_PAGE_SIZE;
133
130
}
134
131
}
135
132
+13
-2
drivers/gpu/drm/nouveau/nv04_crtc.c
+13
-2
drivers/gpu/drm/nouveau/nv04_crtc.c
···
781
781
struct drm_device *dev = crtc->dev;
782
782
struct drm_nouveau_private *dev_priv = dev->dev_private;
783
783
struct nv04_crtc_reg *regp = &dev_priv->mode_reg.crtc_reg[nv_crtc->index];
784
-
struct drm_framebuffer *drm_fb = nv_crtc->base.fb;
785
-
struct nouveau_framebuffer *fb = nouveau_framebuffer(drm_fb);
784
+
struct drm_framebuffer *drm_fb;
785
+
struct nouveau_framebuffer *fb;
786
786
int arb_burst, arb_lwm;
787
787
int ret;
788
+
789
+
NV_DEBUG_KMS(dev, "index %d\n", nv_crtc->index);
790
+
791
+
/* no fb bound */
792
+
if (!atomic && !crtc->fb) {
793
+
NV_DEBUG_KMS(dev, "No FB bound\n");
794
+
return 0;
795
+
}
796
+
788
797
789
798
/* If atomic, we want to switch to the fb we were passed, so
790
799
* now we update pointers to do that. (We don't pin; just
···
803
794
drm_fb = passed_fb;
804
795
fb = nouveau_framebuffer(passed_fb);
805
796
} else {
797
+
drm_fb = crtc->fb;
798
+
fb = nouveau_framebuffer(crtc->fb);
806
799
/* If not atomic, we can go ahead and pin, and unpin the
807
800
* old fb we were passed.
808
801
*/
+10
-2
drivers/gpu/drm/nouveau/nv50_crtc.c
+10
-2
drivers/gpu/drm/nouveau/nv50_crtc.c
···
519
519
struct drm_device *dev = nv_crtc->base.dev;
520
520
struct drm_nouveau_private *dev_priv = dev->dev_private;
521
521
struct nouveau_channel *evo = nv50_display(dev)->master;
522
-
struct drm_framebuffer *drm_fb = nv_crtc->base.fb;
523
-
struct nouveau_framebuffer *fb = nouveau_framebuffer(drm_fb);
522
+
struct drm_framebuffer *drm_fb;
523
+
struct nouveau_framebuffer *fb;
524
524
int ret;
525
525
526
526
NV_DEBUG_KMS(dev, "index %d\n", nv_crtc->index);
527
+
528
+
/* no fb bound */
529
+
if (!atomic && !crtc->fb) {
530
+
NV_DEBUG_KMS(dev, "No FB bound\n");
531
+
return 0;
532
+
}
527
533
528
534
/* If atomic, we want to switch to the fb we were passed, so
529
535
* now we update pointers to do that. (We don't pin; just
···
539
533
drm_fb = passed_fb;
540
534
fb = nouveau_framebuffer(passed_fb);
541
535
} else {
536
+
drm_fb = crtc->fb;
537
+
fb = nouveau_framebuffer(crtc->fb);
542
538
/* If not atomic, we can go ahead and pin, and unpin the
543
539
* old fb we were passed.
544
540
*/
+24
-13
drivers/gpu/drm/radeon/radeon_connectors.c
+24
-13
drivers/gpu/drm/radeon/radeon_connectors.c
···
1297
1297
if (!radeon_dig_connector->edp_on)
1298
1298
atombios_set_edp_panel_power(connector,
1299
1299
ATOM_TRANSMITTER_ACTION_POWER_OFF);
1300
-
} else {
1301
-
/* need to setup ddc on the bridge */
1302
-
if (radeon_connector_encoder_is_dp_bridge(connector)) {
1300
+
} else if (radeon_connector_encoder_is_dp_bridge(connector)) {
1301
+
/* DP bridges are always DP */
1302
+
radeon_dig_connector->dp_sink_type = CONNECTOR_OBJECT_ID_DISPLAYPORT;
1303
+
/* get the DPCD from the bridge */
1304
+
radeon_dp_getdpcd(radeon_connector);
1305
+
1306
+
if (radeon_hpd_sense(rdev, radeon_connector->hpd.hpd))
1307
+
ret = connector_status_connected;
1308
+
else {
1309
+
/* need to setup ddc on the bridge */
1303
1310
if (encoder)
1304
1311
radeon_atom_ext_encoder_setup_ddc(encoder);
1312
+
if (radeon_ddc_probe(radeon_connector,
1313
+
radeon_connector->requires_extended_probe))
1314
+
ret = connector_status_connected;
1305
1315
}
1316
+
1317
+
if ((ret == connector_status_disconnected) &&
1318
+
radeon_connector->dac_load_detect) {
1319
+
struct drm_encoder *encoder = radeon_best_single_encoder(connector);
1320
+
struct drm_encoder_helper_funcs *encoder_funcs;
1321
+
if (encoder) {
1322
+
encoder_funcs = encoder->helper_private;
1323
+
ret = encoder_funcs->detect(encoder, connector);
1324
+
}
1325
+
}
1326
+
} else {
1306
1327
radeon_dig_connector->dp_sink_type = radeon_dp_getsinktype(radeon_connector);
1307
1328
if (radeon_hpd_sense(rdev, radeon_connector->hpd.hpd)) {
1308
1329
ret = connector_status_connected;
···
1337
1316
if (radeon_ddc_probe(radeon_connector,
1338
1317
radeon_connector->requires_extended_probe))
1339
1318
ret = connector_status_connected;
1340
-
}
1341
-
}
1342
-
1343
-
if ((ret == connector_status_disconnected) &&
1344
-
radeon_connector->dac_load_detect) {
1345
-
struct drm_encoder *encoder = radeon_best_single_encoder(connector);
1346
-
struct drm_encoder_helper_funcs *encoder_funcs;
1347
-
if (encoder) {
1348
-
encoder_funcs = encoder->helper_private;
1349
-
ret = encoder_funcs->detect(encoder, connector);
1350
1319
}
1351
1320
}
1352
1321
}
+12
-7
drivers/gpu/drm/radeon/radeon_display.c
+12
-7
drivers/gpu/drm/radeon/radeon_display.c
···
707
707
radeon_router_select_ddc_port(radeon_connector);
708
708
709
709
if ((radeon_connector->base.connector_type == DRM_MODE_CONNECTOR_DisplayPort) ||
710
-
(radeon_connector->base.connector_type == DRM_MODE_CONNECTOR_eDP)) {
710
+
(radeon_connector->base.connector_type == DRM_MODE_CONNECTOR_eDP) ||
711
+
radeon_connector_encoder_is_dp_bridge(&radeon_connector->base)) {
711
712
struct radeon_connector_atom_dig *dig = radeon_connector->con_priv;
713
+
712
714
if ((dig->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT ||
713
715
dig->dp_sink_type == CONNECTOR_OBJECT_ID_eDP) && dig->dp_i2c_bus)
714
-
radeon_connector->edid = drm_get_edid(&radeon_connector->base, &dig->dp_i2c_bus->adapter);
715
-
}
716
-
if (!radeon_connector->ddc_bus)
717
-
return -1;
718
-
if (!radeon_connector->edid) {
719
-
radeon_connector->edid = drm_get_edid(&radeon_connector->base, &radeon_connector->ddc_bus->adapter);
716
+
radeon_connector->edid = drm_get_edid(&radeon_connector->base,
717
+
&dig->dp_i2c_bus->adapter);
718
+
else if (radeon_connector->ddc_bus && !radeon_connector->edid)
719
+
radeon_connector->edid = drm_get_edid(&radeon_connector->base,
720
+
&radeon_connector->ddc_bus->adapter);
721
+
} else {
722
+
if (radeon_connector->ddc_bus && !radeon_connector->edid)
723
+
radeon_connector->edid = drm_get_edid(&radeon_connector->base,
724
+
&radeon_connector->ddc_bus->adapter);
720
725
}
721
726
722
727
if (!radeon_connector->edid) {