Merge drm/drm-next into drm-intel-next-queued
[sfrench/cifs-2.6.git] / drivers / gpu / drm / i915 / display / intel_sdvo.c
index ceda03e5a3d4e0e50de7850fa155f13c7b464d34..3fe8eaef6bd89ab8ef8253526ff32e92f3a799b5 100644 (file)
@@ -274,130 +274,145 @@ static bool intel_sdvo_read_byte(struct intel_sdvo *intel_sdvo, u8 addr, u8 *ch)
        return false;
 }
 
-#define SDVO_CMD_NAME_ENTRY(cmd) {cmd, #cmd}
+#define SDVO_CMD_NAME_ENTRY(cmd_) { .cmd = SDVO_CMD_ ## cmd_, .name = #cmd_ }
+
 /** Mapping of command numbers to names, for debug output */
-static const struct _sdvo_cmd_name {
+static const struct {
        u8 cmd;
        const char *name;
 } __attribute__ ((packed)) sdvo_cmd_names[] = {
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_RESET),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_DEVICE_CAPS),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_FIRMWARE_REV),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_TRAINED_INPUTS),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_ACTIVE_OUTPUTS),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_ACTIVE_OUTPUTS),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_IN_OUT_MAP),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_IN_OUT_MAP),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_ATTACHED_DISPLAYS),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_HOT_PLUG_SUPPORT),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_ACTIVE_HOT_PLUG),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_ACTIVE_HOT_PLUG),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_INTERRUPT_EVENT_SOURCE),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_TARGET_INPUT),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_TARGET_OUTPUT),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_INPUT_TIMINGS_PART1),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_INPUT_TIMINGS_PART2),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_INPUT_TIMINGS_PART1),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_INPUT_TIMINGS_PART2),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_INPUT_TIMINGS_PART1),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_OUTPUT_TIMINGS_PART1),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_OUTPUT_TIMINGS_PART2),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_OUTPUT_TIMINGS_PART1),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_OUTPUT_TIMINGS_PART2),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_CREATE_PREFERRED_INPUT_TIMING),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_PREFERRED_INPUT_TIMING_PART1),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_PREFERRED_INPUT_TIMING_PART2),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_INPUT_PIXEL_CLOCK_RANGE),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_OUTPUT_PIXEL_CLOCK_RANGE),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_SUPPORTED_CLOCK_RATE_MULTS),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_CLOCK_RATE_MULT),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_CLOCK_RATE_MULT),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_SUPPORTED_TV_FORMATS),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_TV_FORMAT),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_TV_FORMAT),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_SUPPORTED_POWER_STATES),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_POWER_STATE),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_ENCODER_POWER_STATE),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_DISPLAY_POWER_STATE),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_CONTROL_BUS_SWITCH),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_SDTV_RESOLUTION_SUPPORT),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_SCALED_HDTV_RESOLUTION_SUPPORT),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_SUPPORTED_ENHANCEMENTS),
+       SDVO_CMD_NAME_ENTRY(RESET),
+       SDVO_CMD_NAME_ENTRY(GET_DEVICE_CAPS),
+       SDVO_CMD_NAME_ENTRY(GET_FIRMWARE_REV),
+       SDVO_CMD_NAME_ENTRY(GET_TRAINED_INPUTS),
+       SDVO_CMD_NAME_ENTRY(GET_ACTIVE_OUTPUTS),
+       SDVO_CMD_NAME_ENTRY(SET_ACTIVE_OUTPUTS),
+       SDVO_CMD_NAME_ENTRY(GET_IN_OUT_MAP),
+       SDVO_CMD_NAME_ENTRY(SET_IN_OUT_MAP),
+       SDVO_CMD_NAME_ENTRY(GET_ATTACHED_DISPLAYS),
+       SDVO_CMD_NAME_ENTRY(GET_HOT_PLUG_SUPPORT),
+       SDVO_CMD_NAME_ENTRY(SET_ACTIVE_HOT_PLUG),
+       SDVO_CMD_NAME_ENTRY(GET_ACTIVE_HOT_PLUG),
+       SDVO_CMD_NAME_ENTRY(GET_INTERRUPT_EVENT_SOURCE),
+       SDVO_CMD_NAME_ENTRY(SET_TARGET_INPUT),
+       SDVO_CMD_NAME_ENTRY(SET_TARGET_OUTPUT),
+       SDVO_CMD_NAME_ENTRY(GET_INPUT_TIMINGS_PART1),
+       SDVO_CMD_NAME_ENTRY(GET_INPUT_TIMINGS_PART2),
+       SDVO_CMD_NAME_ENTRY(SET_INPUT_TIMINGS_PART1),
+       SDVO_CMD_NAME_ENTRY(SET_INPUT_TIMINGS_PART2),
+       SDVO_CMD_NAME_ENTRY(SET_OUTPUT_TIMINGS_PART1),
+       SDVO_CMD_NAME_ENTRY(SET_OUTPUT_TIMINGS_PART2),
+       SDVO_CMD_NAME_ENTRY(GET_OUTPUT_TIMINGS_PART1),
+       SDVO_CMD_NAME_ENTRY(GET_OUTPUT_TIMINGS_PART2),
+       SDVO_CMD_NAME_ENTRY(CREATE_PREFERRED_INPUT_TIMING),
+       SDVO_CMD_NAME_ENTRY(GET_PREFERRED_INPUT_TIMING_PART1),
+       SDVO_CMD_NAME_ENTRY(GET_PREFERRED_INPUT_TIMING_PART2),
+       SDVO_CMD_NAME_ENTRY(GET_INPUT_PIXEL_CLOCK_RANGE),
+       SDVO_CMD_NAME_ENTRY(GET_OUTPUT_PIXEL_CLOCK_RANGE),
+       SDVO_CMD_NAME_ENTRY(GET_SUPPORTED_CLOCK_RATE_MULTS),
+       SDVO_CMD_NAME_ENTRY(GET_CLOCK_RATE_MULT),
+       SDVO_CMD_NAME_ENTRY(SET_CLOCK_RATE_MULT),
+       SDVO_CMD_NAME_ENTRY(GET_SUPPORTED_TV_FORMATS),
+       SDVO_CMD_NAME_ENTRY(GET_TV_FORMAT),
+       SDVO_CMD_NAME_ENTRY(SET_TV_FORMAT),
+       SDVO_CMD_NAME_ENTRY(GET_SUPPORTED_POWER_STATES),
+       SDVO_CMD_NAME_ENTRY(GET_POWER_STATE),
+       SDVO_CMD_NAME_ENTRY(SET_ENCODER_POWER_STATE),
+       SDVO_CMD_NAME_ENTRY(SET_DISPLAY_POWER_STATE),
+       SDVO_CMD_NAME_ENTRY(SET_CONTROL_BUS_SWITCH),
+       SDVO_CMD_NAME_ENTRY(GET_SDTV_RESOLUTION_SUPPORT),
+       SDVO_CMD_NAME_ENTRY(GET_SCALED_HDTV_RESOLUTION_SUPPORT),
+       SDVO_CMD_NAME_ENTRY(GET_SUPPORTED_ENHANCEMENTS),
 
        /* Add the op code for SDVO enhancements */
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_MAX_HPOS),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_HPOS),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_HPOS),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_MAX_VPOS),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_VPOS),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_VPOS),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_MAX_SATURATION),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_SATURATION),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_SATURATION),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_MAX_HUE),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_HUE),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_HUE),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_MAX_CONTRAST),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_CONTRAST),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_CONTRAST),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_MAX_BRIGHTNESS),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_BRIGHTNESS),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_BRIGHTNESS),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_MAX_OVERSCAN_H),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_OVERSCAN_H),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_OVERSCAN_H),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_MAX_OVERSCAN_V),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_OVERSCAN_V),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_OVERSCAN_V),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_MAX_FLICKER_FILTER),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_FLICKER_FILTER),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_FLICKER_FILTER),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_MAX_FLICKER_FILTER_ADAPTIVE),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_FLICKER_FILTER_ADAPTIVE),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_FLICKER_FILTER_ADAPTIVE),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_MAX_FLICKER_FILTER_2D),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_FLICKER_FILTER_2D),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_FLICKER_FILTER_2D),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_MAX_SHARPNESS),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_SHARPNESS),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_SHARPNESS),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_DOT_CRAWL),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_DOT_CRAWL),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_MAX_TV_CHROMA_FILTER),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_TV_CHROMA_FILTER),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_TV_CHROMA_FILTER),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_MAX_TV_LUMA_FILTER),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_TV_LUMA_FILTER),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_TV_LUMA_FILTER),
+       SDVO_CMD_NAME_ENTRY(GET_MAX_HPOS),
+       SDVO_CMD_NAME_ENTRY(GET_HPOS),
+       SDVO_CMD_NAME_ENTRY(SET_HPOS),
+       SDVO_CMD_NAME_ENTRY(GET_MAX_VPOS),
+       SDVO_CMD_NAME_ENTRY(GET_VPOS),
+       SDVO_CMD_NAME_ENTRY(SET_VPOS),
+       SDVO_CMD_NAME_ENTRY(GET_MAX_SATURATION),
+       SDVO_CMD_NAME_ENTRY(GET_SATURATION),
+       SDVO_CMD_NAME_ENTRY(SET_SATURATION),
+       SDVO_CMD_NAME_ENTRY(GET_MAX_HUE),
+       SDVO_CMD_NAME_ENTRY(GET_HUE),
+       SDVO_CMD_NAME_ENTRY(SET_HUE),
+       SDVO_CMD_NAME_ENTRY(GET_MAX_CONTRAST),
+       SDVO_CMD_NAME_ENTRY(GET_CONTRAST),
+       SDVO_CMD_NAME_ENTRY(SET_CONTRAST),
+       SDVO_CMD_NAME_ENTRY(GET_MAX_BRIGHTNESS),
+       SDVO_CMD_NAME_ENTRY(GET_BRIGHTNESS),
+       SDVO_CMD_NAME_ENTRY(SET_BRIGHTNESS),
+       SDVO_CMD_NAME_ENTRY(GET_MAX_OVERSCAN_H),
+       SDVO_CMD_NAME_ENTRY(GET_OVERSCAN_H),
+       SDVO_CMD_NAME_ENTRY(SET_OVERSCAN_H),
+       SDVO_CMD_NAME_ENTRY(GET_MAX_OVERSCAN_V),
+       SDVO_CMD_NAME_ENTRY(GET_OVERSCAN_V),
+       SDVO_CMD_NAME_ENTRY(SET_OVERSCAN_V),
+       SDVO_CMD_NAME_ENTRY(GET_MAX_FLICKER_FILTER),
+       SDVO_CMD_NAME_ENTRY(GET_FLICKER_FILTER),
+       SDVO_CMD_NAME_ENTRY(SET_FLICKER_FILTER),
+       SDVO_CMD_NAME_ENTRY(GET_MAX_FLICKER_FILTER_ADAPTIVE),
+       SDVO_CMD_NAME_ENTRY(GET_FLICKER_FILTER_ADAPTIVE),
+       SDVO_CMD_NAME_ENTRY(SET_FLICKER_FILTER_ADAPTIVE),
+       SDVO_CMD_NAME_ENTRY(GET_MAX_FLICKER_FILTER_2D),
+       SDVO_CMD_NAME_ENTRY(GET_FLICKER_FILTER_2D),
+       SDVO_CMD_NAME_ENTRY(SET_FLICKER_FILTER_2D),
+       SDVO_CMD_NAME_ENTRY(GET_MAX_SHARPNESS),
+       SDVO_CMD_NAME_ENTRY(GET_SHARPNESS),
+       SDVO_CMD_NAME_ENTRY(SET_SHARPNESS),
+       SDVO_CMD_NAME_ENTRY(GET_DOT_CRAWL),
+       SDVO_CMD_NAME_ENTRY(SET_DOT_CRAWL),
+       SDVO_CMD_NAME_ENTRY(GET_MAX_TV_CHROMA_FILTER),
+       SDVO_CMD_NAME_ENTRY(GET_TV_CHROMA_FILTER),
+       SDVO_CMD_NAME_ENTRY(SET_TV_CHROMA_FILTER),
+       SDVO_CMD_NAME_ENTRY(GET_MAX_TV_LUMA_FILTER),
+       SDVO_CMD_NAME_ENTRY(GET_TV_LUMA_FILTER),
+       SDVO_CMD_NAME_ENTRY(SET_TV_LUMA_FILTER),
 
        /* HDMI op code */
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_SUPP_ENCODE),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_ENCODE),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_ENCODE),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_PIXEL_REPLI),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_PIXEL_REPLI),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_COLORIMETRY_CAP),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_COLORIMETRY),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_COLORIMETRY),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_AUDIO_ENCRYPT_PREFER),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_AUDIO_STAT),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_AUDIO_STAT),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_HBUF_INDEX),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_HBUF_INDEX),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_HBUF_INFO),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_HBUF_AV_SPLIT),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_HBUF_AV_SPLIT),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_HBUF_TXRATE),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_HBUF_TXRATE),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_HBUF_DATA),
-       SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_HBUF_DATA),
+       SDVO_CMD_NAME_ENTRY(GET_SUPP_ENCODE),
+       SDVO_CMD_NAME_ENTRY(GET_ENCODE),
+       SDVO_CMD_NAME_ENTRY(SET_ENCODE),
+       SDVO_CMD_NAME_ENTRY(SET_PIXEL_REPLI),
+       SDVO_CMD_NAME_ENTRY(GET_PIXEL_REPLI),
+       SDVO_CMD_NAME_ENTRY(GET_COLORIMETRY_CAP),
+       SDVO_CMD_NAME_ENTRY(SET_COLORIMETRY),
+       SDVO_CMD_NAME_ENTRY(GET_COLORIMETRY),
+       SDVO_CMD_NAME_ENTRY(GET_AUDIO_ENCRYPT_PREFER),
+       SDVO_CMD_NAME_ENTRY(SET_AUDIO_STAT),
+       SDVO_CMD_NAME_ENTRY(GET_AUDIO_STAT),
+       SDVO_CMD_NAME_ENTRY(GET_HBUF_INDEX),
+       SDVO_CMD_NAME_ENTRY(SET_HBUF_INDEX),
+       SDVO_CMD_NAME_ENTRY(GET_HBUF_INFO),
+       SDVO_CMD_NAME_ENTRY(GET_HBUF_AV_SPLIT),
+       SDVO_CMD_NAME_ENTRY(SET_HBUF_AV_SPLIT),
+       SDVO_CMD_NAME_ENTRY(GET_HBUF_TXRATE),
+       SDVO_CMD_NAME_ENTRY(SET_HBUF_TXRATE),
+       SDVO_CMD_NAME_ENTRY(SET_HBUF_DATA),
+       SDVO_CMD_NAME_ENTRY(GET_HBUF_DATA),
 };
 
+#undef SDVO_CMD_NAME_ENTRY
+
+static const char *sdvo_cmd_name(u8 cmd)
+{
+       int i;
+
+       for (i = 0; i < ARRAY_SIZE(sdvo_cmd_names); i++) {
+               if (cmd == sdvo_cmd_names[i].cmd)
+                       return sdvo_cmd_names[i].name;
+       }
+
+       return NULL;
+}
+
 #define SDVO_NAME(svdo) ((svdo)->port == PORT_B ? "SDVOB" : "SDVOC")
 
 static void intel_sdvo_debug_write(struct intel_sdvo *intel_sdvo, u8 cmd,
                                   const void *args, int args_len)
 {
+       const char *cmd_name;
        int i, pos = 0;
 #define BUF_LEN 256
        char buffer[BUF_LEN];
@@ -412,15 +427,12 @@ static void intel_sdvo_debug_write(struct intel_sdvo *intel_sdvo, u8 cmd,
        for (; i < 8; i++) {
                BUF_PRINT("   ");
        }
-       for (i = 0; i < ARRAY_SIZE(sdvo_cmd_names); i++) {
-               if (cmd == sdvo_cmd_names[i].cmd) {
-                       BUF_PRINT("(%s)", sdvo_cmd_names[i].name);
-                       break;
-               }
-       }
-       if (i == ARRAY_SIZE(sdvo_cmd_names)) {
+
+       cmd_name = sdvo_cmd_name(cmd);
+       if (cmd_name)
+               BUF_PRINT("(%s)", cmd_name);
+       else
                BUF_PRINT("(%02X)", cmd);
-       }
        BUG_ON(pos >= BUF_LEN - 1);
 #undef BUF_PRINT
 #undef BUF_LEN
@@ -429,15 +441,23 @@ static void intel_sdvo_debug_write(struct intel_sdvo *intel_sdvo, u8 cmd,
 }
 
 static const char * const cmd_status_names[] = {
-       "Power on",
-       "Success",
-       "Not supported",
-       "Invalid arg",
-       "Pending",
-       "Target not specified",
-       "Scaling not supported"
+       [SDVO_CMD_STATUS_POWER_ON] = "Power on",
+       [SDVO_CMD_STATUS_SUCCESS] = "Success",
+       [SDVO_CMD_STATUS_NOTSUPP] = "Not supported",
+       [SDVO_CMD_STATUS_INVALID_ARG] = "Invalid arg",
+       [SDVO_CMD_STATUS_PENDING] = "Pending",
+       [SDVO_CMD_STATUS_TARGET_NOT_SPECIFIED] = "Target not specified",
+       [SDVO_CMD_STATUS_SCALING_NOT_SUPP] = "Scaling not supported",
 };
 
+static const char *sdvo_cmd_status(u8 status)
+{
+       if (status < ARRAY_SIZE(cmd_status_names))
+               return cmd_status_names[status];
+       else
+               return NULL;
+}
+
 static bool __intel_sdvo_write_cmd(struct intel_sdvo *intel_sdvo, u8 cmd,
                                   const void *args, int args_len,
                                   bool unlocked)
@@ -516,6 +536,7 @@ static bool intel_sdvo_write_cmd(struct intel_sdvo *intel_sdvo, u8 cmd,
 static bool intel_sdvo_read_response(struct intel_sdvo *intel_sdvo,
                                     void *response, int response_len)
 {
+       const char *cmd_status;
        u8 retry = 15; /* 5 quick checks, followed by 10 long checks */
        u8 status;
        int i, pos = 0;
@@ -562,8 +583,9 @@ static bool intel_sdvo_read_response(struct intel_sdvo *intel_sdvo,
 #define BUF_PRINT(args...) \
        pos += snprintf(buffer + pos, max_t(int, BUF_LEN - pos, 0), args)
 
-       if (status <= SDVO_CMD_STATUS_SCALING_NOT_SUPP)
-               BUF_PRINT("(%s)", cmd_status_names[status]);
+       cmd_status = sdvo_cmd_status(status);
+       if (cmd_status)
+               BUF_PRINT("(%s)", cmd_status);
        else
                BUF_PRINT("(??? %d)", status);