• Tomeu Vizoso's avatar
    drm: Add API for capturing frame CRCs · 9edbf1fa
    Tomeu Vizoso authored
    Adds files and directories to debugfs for controlling and reading frame
    CRCs, per CRTC:
    
    dri/0/crtc-0/crc
    dri/0/crtc-0/crc/control
    dri/0/crtc-0/crc/data
    
    Drivers can implement the set_crc_source callback() in drm_crtc_funcs to
    start and stop generating frame CRCs and can add entries to the output
    by calling drm_crtc_add_crc_entry.
    
    v2:
        - Lots of good fixes suggested by Thierry.
        - Added documentation.
        - Changed the debugfs layout.
        - Moved to allocate the entries circular queue once when frame
          generation gets enabled for the first time.
    v3:
        - Use the control file just to select the source, and start and stop
          capture when the data file is opened and closed, respectively.
        - Make variable the number of CRC values per entry, per source.
        - Allocate entries queue each time we start capturing as now there
          isn't a fixed number of CRC values per entry.
        - Store the frame counter in the data file as a 8-digit hex number.
        - For sources that cannot provide useful frame numbers, place
          XXXXXXXX in the frame field.
    
    v4:
        - Build only if CONFIG_DEBUG_FS is enabled.
        - Use memdup_user_nul.
        - Consolidate calculation of the size of an entry in a helper.
        - Add 0x prefix to hex numbers in the data file.
        - Remove unnecessary snprintf and strlen usage in read callback.
    
    v5:
        - Made the crcs array in drm_crtc_crc_entry fixed-size
        - Lots of other smaller improvements suggested by Emil Velikov
    
    v7:
        - Move definition of drm_debugfs_crtc_crc_add to drm_internal.h
    
    v8:
        - Call debugfs_remove_recursive when we fail to create the minor
          device
    
    v9:
        - Register the debugfs directory for a crtc from
          drm_crtc_register_all()
    
    v10:
        - Don't let debugfs failures interrupt CRTC registration (Emil
          Velikov)
    
    v11:
        - Remove extra brace that broke compilation. Sorry!
    Signed-off-by: default avatarTomeu Vizoso <tomeu.vizoso@collabora.com>
    Reviewed-by: default avatarEmil Velikov <emil.velikov@collabora.com>
    Acked-by: default avatarBenjamin Gaignard <benjamin.gaignard@linaro.org>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    Link: http://patchwork.freedesktop.org/patch/msgid/1475767268-14379-3-git-send-email-tomeu.vizoso@collabora.com
    9edbf1fa
drm_debugfs_crc.c 9.28 KB