diff options
Diffstat (limited to 'drivers/gpu/drm/drm_crtc.c')
-rw-r--r-- | drivers/gpu/drm/drm_crtc.c | 77 |
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 | */ |
69 | static struct drm_prop_enum_list drm_scaling_mode_enum_list[] = | 69 | static 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 | ||
77 | static struct drm_prop_enum_list drm_dithering_mode_enum_list[] = | 77 | static 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 | ||
113 | DRM_ENUM_NAME_FN(drm_get_tv_select_name, drm_tv_select_enum_list) | 114 | DRM_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 | ||
123 | DRM_ENUM_NAME_FN(drm_get_tv_subconnector_name, | 125 | DRM_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 | ||
151 | static struct drm_prop_enum_list drm_encoder_enum_list[] = | 154 | static 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 | } |
171 | EXPORT_SYMBOL(drm_get_encoder_name); | ||
168 | 172 | ||
169 | char *drm_get_connector_name(struct drm_connector *connector) | 173 | char *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 | } |
704 | EXPORT_SYMBOL(drm_mode_create_tv_properties); | 744 | EXPORT_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 | ||
1133 | out: | 1173 | out: |
@@ -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 | } |