aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/drm_crtc.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/drm_crtc.c')
-rw-r--r--drivers/gpu/drm/drm_crtc.c77
1 files changed, 60 insertions, 17 deletions
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
index 2f631c75f704..ba728ad77f2a 100644
--- a/drivers/gpu/drm/drm_crtc.c
+++ b/drivers/gpu/drm/drm_crtc.c
@@ -68,10 +68,10 @@ DRM_ENUM_NAME_FN(drm_get_dpms_name, drm_dpms_enum_list)
68 */ 68 */
69static struct drm_prop_enum_list drm_scaling_mode_enum_list[] = 69static struct drm_prop_enum_list drm_scaling_mode_enum_list[] =
70{ 70{
71 { DRM_MODE_SCALE_NON_GPU, "Non-GPU" }, 71 { DRM_MODE_SCALE_NONE, "None" },
72 { DRM_MODE_SCALE_FULLSCREEN, "Fullscreen" }, 72 { DRM_MODE_SCALE_FULLSCREEN, "Full" },
73 { DRM_MODE_SCALE_NO_SCALE, "No scale" }, 73 { DRM_MODE_SCALE_CENTER, "Center" },
74 { DRM_MODE_SCALE_ASPECT, "Aspect" }, 74 { DRM_MODE_SCALE_ASPECT, "Full aspect" },
75}; 75};
76 76
77static struct drm_prop_enum_list drm_dithering_mode_enum_list[] = 77static struct drm_prop_enum_list drm_dithering_mode_enum_list[] =
@@ -108,6 +108,7 @@ static struct drm_prop_enum_list drm_tv_select_enum_list[] =
108 { DRM_MODE_SUBCONNECTOR_Composite, "Composite" }, /* TV-out */ 108 { DRM_MODE_SUBCONNECTOR_Composite, "Composite" }, /* TV-out */
109 { DRM_MODE_SUBCONNECTOR_SVIDEO, "SVIDEO" }, /* TV-out */ 109 { DRM_MODE_SUBCONNECTOR_SVIDEO, "SVIDEO" }, /* TV-out */
110 { DRM_MODE_SUBCONNECTOR_Component, "Component" }, /* TV-out */ 110 { DRM_MODE_SUBCONNECTOR_Component, "Component" }, /* TV-out */
111 { DRM_MODE_SUBCONNECTOR_SCART, "SCART" }, /* TV-out */
111}; 112};
112 113
113DRM_ENUM_NAME_FN(drm_get_tv_select_name, drm_tv_select_enum_list) 114DRM_ENUM_NAME_FN(drm_get_tv_select_name, drm_tv_select_enum_list)
@@ -118,6 +119,7 @@ static struct drm_prop_enum_list drm_tv_subconnector_enum_list[] =
118 { DRM_MODE_SUBCONNECTOR_Composite, "Composite" }, /* TV-out */ 119 { DRM_MODE_SUBCONNECTOR_Composite, "Composite" }, /* TV-out */
119 { DRM_MODE_SUBCONNECTOR_SVIDEO, "SVIDEO" }, /* TV-out */ 120 { DRM_MODE_SUBCONNECTOR_SVIDEO, "SVIDEO" }, /* TV-out */
120 { DRM_MODE_SUBCONNECTOR_Component, "Component" }, /* TV-out */ 121 { DRM_MODE_SUBCONNECTOR_Component, "Component" }, /* TV-out */
122 { DRM_MODE_SUBCONNECTOR_SCART, "SCART" }, /* TV-out */
121}; 123};
122 124
123DRM_ENUM_NAME_FN(drm_get_tv_subconnector_name, 125DRM_ENUM_NAME_FN(drm_get_tv_subconnector_name,
@@ -146,6 +148,7 @@ static struct drm_conn_prop_enum_list drm_connector_enum_list[] =
146 { DRM_MODE_CONNECTOR_DisplayPort, "DisplayPort", 0 }, 148 { DRM_MODE_CONNECTOR_DisplayPort, "DisplayPort", 0 },
147 { DRM_MODE_CONNECTOR_HDMIA, "HDMI Type A", 0 }, 149 { DRM_MODE_CONNECTOR_HDMIA, "HDMI Type A", 0 },
148 { DRM_MODE_CONNECTOR_HDMIB, "HDMI Type B", 0 }, 150 { DRM_MODE_CONNECTOR_HDMIB, "HDMI Type B", 0 },
151 { DRM_MODE_CONNECTOR_TV, "TV", 0 },
149}; 152};
150 153
151static struct drm_prop_enum_list drm_encoder_enum_list[] = 154static struct drm_prop_enum_list drm_encoder_enum_list[] =
@@ -165,6 +168,7 @@ char *drm_get_encoder_name(struct drm_encoder *encoder)
165 encoder->base.id); 168 encoder->base.id);
166 return buf; 169 return buf;
167} 170}
171EXPORT_SYMBOL(drm_get_encoder_name);
168 172
169char *drm_get_connector_name(struct drm_connector *connector) 173char *drm_get_connector_name(struct drm_connector *connector)
170{ 174{
@@ -699,6 +703,42 @@ int drm_mode_create_tv_properties(struct drm_device *dev, int num_modes,
699 drm_property_add_enum(dev->mode_config.tv_mode_property, i, 703 drm_property_add_enum(dev->mode_config.tv_mode_property, i,
700 i, modes[i]); 704 i, modes[i]);
701 705
706 dev->mode_config.tv_brightness_property =
707 drm_property_create(dev, DRM_MODE_PROP_RANGE,
708 "brightness", 2);
709 dev->mode_config.tv_brightness_property->values[0] = 0;
710 dev->mode_config.tv_brightness_property->values[1] = 100;
711
712 dev->mode_config.tv_contrast_property =
713 drm_property_create(dev, DRM_MODE_PROP_RANGE,
714 "contrast", 2);
715 dev->mode_config.tv_contrast_property->values[0] = 0;
716 dev->mode_config.tv_contrast_property->values[1] = 100;
717
718 dev->mode_config.tv_flicker_reduction_property =
719 drm_property_create(dev, DRM_MODE_PROP_RANGE,
720 "flicker reduction", 2);
721 dev->mode_config.tv_flicker_reduction_property->values[0] = 0;
722 dev->mode_config.tv_flicker_reduction_property->values[1] = 100;
723
724 dev->mode_config.tv_overscan_property =
725 drm_property_create(dev, DRM_MODE_PROP_RANGE,
726 "overscan", 2);
727 dev->mode_config.tv_overscan_property->values[0] = 0;
728 dev->mode_config.tv_overscan_property->values[1] = 100;
729
730 dev->mode_config.tv_saturation_property =
731 drm_property_create(dev, DRM_MODE_PROP_RANGE,
732 "saturation", 2);
733 dev->mode_config.tv_saturation_property->values[0] = 0;
734 dev->mode_config.tv_saturation_property->values[1] = 100;
735
736 dev->mode_config.tv_hue_property =
737 drm_property_create(dev, DRM_MODE_PROP_RANGE,
738 "hue", 2);
739 dev->mode_config.tv_hue_property->values[0] = 0;
740 dev->mode_config.tv_hue_property->values[1] = 100;
741
702 return 0; 742 return 0;
703} 743}
704EXPORT_SYMBOL(drm_mode_create_tv_properties); 744EXPORT_SYMBOL(drm_mode_create_tv_properties);
@@ -1044,7 +1084,7 @@ int drm_mode_getresources(struct drm_device *dev, void *data,
1044 if (file_priv->master->minor->type == DRM_MINOR_CONTROL) { 1084 if (file_priv->master->minor->type == DRM_MINOR_CONTROL) {
1045 list_for_each_entry(crtc, &dev->mode_config.crtc_list, 1085 list_for_each_entry(crtc, &dev->mode_config.crtc_list,
1046 head) { 1086 head) {
1047 DRM_DEBUG("CRTC ID is %d\n", crtc->base.id); 1087 DRM_DEBUG_KMS("CRTC ID is %d\n", crtc->base.id);
1048 if (put_user(crtc->base.id, crtc_id + copied)) { 1088 if (put_user(crtc->base.id, crtc_id + copied)) {
1049 ret = -EFAULT; 1089 ret = -EFAULT;
1050 goto out; 1090 goto out;
@@ -1072,7 +1112,7 @@ int drm_mode_getresources(struct drm_device *dev, void *data,
1072 list_for_each_entry(encoder, 1112 list_for_each_entry(encoder,
1073 &dev->mode_config.encoder_list, 1113 &dev->mode_config.encoder_list,
1074 head) { 1114 head) {
1075 DRM_DEBUG("ENCODER ID is %d\n", 1115 DRM_DEBUG_KMS("ENCODER ID is %d\n",
1076 encoder->base.id); 1116 encoder->base.id);
1077 if (put_user(encoder->base.id, encoder_id + 1117 if (put_user(encoder->base.id, encoder_id +
1078 copied)) { 1118 copied)) {
@@ -1103,7 +1143,7 @@ int drm_mode_getresources(struct drm_device *dev, void *data,
1103 list_for_each_entry(connector, 1143 list_for_each_entry(connector,
1104 &dev->mode_config.connector_list, 1144 &dev->mode_config.connector_list,
1105 head) { 1145 head) {
1106 DRM_DEBUG("CONNECTOR ID is %d\n", 1146 DRM_DEBUG_KMS("CONNECTOR ID is %d\n",
1107 connector->base.id); 1147 connector->base.id);
1108 if (put_user(connector->base.id, 1148 if (put_user(connector->base.id,
1109 connector_id + copied)) { 1149 connector_id + copied)) {
@@ -1127,7 +1167,7 @@ int drm_mode_getresources(struct drm_device *dev, void *data,
1127 } 1167 }
1128 card_res->count_connectors = connector_count; 1168 card_res->count_connectors = connector_count;
1129 1169
1130 DRM_DEBUG("Counted %d %d %d\n", card_res->count_crtcs, 1170 DRM_DEBUG_KMS("Counted %d %d %d\n", card_res->count_crtcs,
1131 card_res->count_connectors, card_res->count_encoders); 1171 card_res->count_connectors, card_res->count_encoders);
1132 1172
1133out: 1173out:
@@ -1230,7 +1270,7 @@ int drm_mode_getconnector(struct drm_device *dev, void *data,
1230 1270
1231 memset(&u_mode, 0, sizeof(struct drm_mode_modeinfo)); 1271 memset(&u_mode, 0, sizeof(struct drm_mode_modeinfo));
1232 1272
1233 DRM_DEBUG("connector id %d:\n", out_resp->connector_id); 1273 DRM_DEBUG_KMS("connector id %d:\n", out_resp->connector_id);
1234 1274
1235 mutex_lock(&dev->mode_config.mutex); 1275 mutex_lock(&dev->mode_config.mutex);
1236 1276
@@ -1406,7 +1446,7 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
1406 obj = drm_mode_object_find(dev, crtc_req->crtc_id, 1446 obj = drm_mode_object_find(dev, crtc_req->crtc_id,
1407 DRM_MODE_OBJECT_CRTC); 1447 DRM_MODE_OBJECT_CRTC);
1408 if (!obj) { 1448 if (!obj) {
1409 DRM_DEBUG("Unknown CRTC ID %d\n", crtc_req->crtc_id); 1449 DRM_DEBUG_KMS("Unknown CRTC ID %d\n", crtc_req->crtc_id);
1410 ret = -EINVAL; 1450 ret = -EINVAL;
1411 goto out; 1451 goto out;
1412 } 1452 }
@@ -1419,7 +1459,8 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
1419 list_for_each_entry(crtcfb, 1459 list_for_each_entry(crtcfb,
1420 &dev->mode_config.crtc_list, head) { 1460 &dev->mode_config.crtc_list, head) {
1421 if (crtcfb == crtc) { 1461 if (crtcfb == crtc) {
1422 DRM_DEBUG("Using current fb for setmode\n"); 1462 DRM_DEBUG_KMS("Using current fb for "
1463 "setmode\n");
1423 fb = crtc->fb; 1464 fb = crtc->fb;
1424 } 1465 }
1425 } 1466 }
@@ -1427,7 +1468,8 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
1427 obj = drm_mode_object_find(dev, crtc_req->fb_id, 1468 obj = drm_mode_object_find(dev, crtc_req->fb_id,
1428 DRM_MODE_OBJECT_FB); 1469 DRM_MODE_OBJECT_FB);
1429 if (!obj) { 1470 if (!obj) {
1430 DRM_DEBUG("Unknown FB ID%d\n", crtc_req->fb_id); 1471 DRM_DEBUG_KMS("Unknown FB ID%d\n",
1472 crtc_req->fb_id);
1431 ret = -EINVAL; 1473 ret = -EINVAL;
1432 goto out; 1474 goto out;
1433 } 1475 }
@@ -1440,13 +1482,13 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
1440 } 1482 }
1441 1483
1442 if (crtc_req->count_connectors == 0 && mode) { 1484 if (crtc_req->count_connectors == 0 && mode) {
1443 DRM_DEBUG("Count connectors is 0 but mode set\n"); 1485 DRM_DEBUG_KMS("Count connectors is 0 but mode set\n");
1444 ret = -EINVAL; 1486 ret = -EINVAL;
1445 goto out; 1487 goto out;
1446 } 1488 }
1447 1489
1448 if (crtc_req->count_connectors > 0 && (!mode || !fb)) { 1490 if (crtc_req->count_connectors > 0 && (!mode || !fb)) {
1449 DRM_DEBUG("Count connectors is %d but no mode or fb set\n", 1491 DRM_DEBUG_KMS("Count connectors is %d but no mode or fb set\n",
1450 crtc_req->count_connectors); 1492 crtc_req->count_connectors);
1451 ret = -EINVAL; 1493 ret = -EINVAL;
1452 goto out; 1494 goto out;
@@ -1479,7 +1521,8 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
1479 obj = drm_mode_object_find(dev, out_id, 1521 obj = drm_mode_object_find(dev, out_id,
1480 DRM_MODE_OBJECT_CONNECTOR); 1522 DRM_MODE_OBJECT_CONNECTOR);
1481 if (!obj) { 1523 if (!obj) {
1482 DRM_DEBUG("Connector id %d unknown\n", out_id); 1524 DRM_DEBUG_KMS("Connector id %d unknown\n",
1525 out_id);
1483 ret = -EINVAL; 1526 ret = -EINVAL;
1484 goto out; 1527 goto out;
1485 } 1528 }
@@ -1512,7 +1555,7 @@ int drm_mode_cursor_ioctl(struct drm_device *dev,
1512 struct drm_crtc *crtc; 1555 struct drm_crtc *crtc;
1513 int ret = 0; 1556 int ret = 0;
1514 1557
1515 DRM_DEBUG("\n"); 1558 DRM_DEBUG_KMS("\n");
1516 1559
1517 if (!req->flags) { 1560 if (!req->flags) {
1518 DRM_ERROR("no operation set\n"); 1561 DRM_ERROR("no operation set\n");
@@ -1522,7 +1565,7 @@ int drm_mode_cursor_ioctl(struct drm_device *dev,
1522 mutex_lock(&dev->mode_config.mutex); 1565 mutex_lock(&dev->mode_config.mutex);
1523 obj = drm_mode_object_find(dev, req->crtc_id, DRM_MODE_OBJECT_CRTC); 1566 obj = drm_mode_object_find(dev, req->crtc_id, DRM_MODE_OBJECT_CRTC);
1524 if (!obj) { 1567 if (!obj) {
1525 DRM_DEBUG("Unknown CRTC ID %d\n", req->crtc_id); 1568 DRM_DEBUG_KMS("Unknown CRTC ID %d\n", req->crtc_id);
1526 ret = -EINVAL; 1569 ret = -EINVAL;
1527 goto out; 1570 goto out;
1528 } 1571 }