summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/drm_modes.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c
index b0369e690f36..3d10425f6b18 100644
--- a/drivers/gpu/drm/drm_modes.c
+++ b/drivers/gpu/drm/drm_modes.c
@@ -1454,6 +1454,7 @@ static int drm_mode_parse_cmdline_refresh(const char *str, char **end_ptr,
1454} 1454}
1455 1455
1456static int drm_mode_parse_cmdline_extra(const char *str, int length, 1456static int drm_mode_parse_cmdline_extra(const char *str, int length,
1457 bool freestanding,
1457 const struct drm_connector *connector, 1458 const struct drm_connector *connector,
1458 struct drm_cmdline_mode *mode) 1459 struct drm_cmdline_mode *mode)
1459{ 1460{
@@ -1462,9 +1463,15 @@ static int drm_mode_parse_cmdline_extra(const char *str, int length,
1462 for (i = 0; i < length; i++) { 1463 for (i = 0; i < length; i++) {
1463 switch (str[i]) { 1464 switch (str[i]) {
1464 case 'i': 1465 case 'i':
1466 if (freestanding)
1467 return -EINVAL;
1468
1465 mode->interlace = true; 1469 mode->interlace = true;
1466 break; 1470 break;
1467 case 'm': 1471 case 'm':
1472 if (freestanding)
1473 return -EINVAL;
1474
1468 mode->margins = true; 1475 mode->margins = true;
1469 break; 1476 break;
1470 case 'D': 1477 case 'D':
@@ -1542,6 +1549,7 @@ static int drm_mode_parse_cmdline_res_mode(const char *str, unsigned int length,
1542 if (extras) { 1549 if (extras) {
1543 int ret = drm_mode_parse_cmdline_extra(end_ptr + i, 1550 int ret = drm_mode_parse_cmdline_extra(end_ptr + i,
1544 1, 1551 1,
1552 false,
1545 connector, 1553 connector,
1546 mode); 1554 mode);
1547 if (ret) 1555 if (ret)
@@ -1811,7 +1819,7 @@ bool drm_mode_parse_command_line_for_connector(const char *mode_option,
1811 extra_ptr != options_ptr) { 1819 extra_ptr != options_ptr) {
1812 int len = strlen(name) - (extra_ptr - name); 1820 int len = strlen(name) - (extra_ptr - name);
1813 1821
1814 ret = drm_mode_parse_cmdline_extra(extra_ptr, len, 1822 ret = drm_mode_parse_cmdline_extra(extra_ptr, len, false,
1815 connector, mode); 1823 connector, mode);
1816 if (ret) 1824 if (ret)
1817 return false; 1825 return false;