Skip to content
  • Rafael Antognolli's avatar
    drm/dp: Add a drm_aux-dev module for reading/writing dpcd registers. · e94cb37b
    Rafael Antognolli authored
    
    
    This module is heavily based on i2c-dev. Once loaded, it provides one
    dev node per DP AUX channel, named drm_dp_auxN, where N is an integer.
    
    It's possible to know which connector owns this aux channel by looking
    at the respective sysfs /sys/class/drm_aux_dev/drm_dp_auxN/connector, if
    the connector device pointer was correctly set in the aux helper struct.
    
    Two main operations are provided on the registers read and write. The
    address of the register to be read or written is given using lseek. The
    seek position is updated upon read or write.
    
    v2:
     - lseek is used to select the register to read/write
     - read/write are used instead of ioctl
     - no blocking_notifier is used, just a direct callback
    
    v3:
     - use drm_dp_aux_dev prefix for public functions
     - chardev is named drm_dp_auxN
     - read/write don't allocate a buffer anymore, and transfer up to 16 bytes a
       time
     - remove notifier list from the implementation
     - option on menuconfig is now a boolean
     - add inline stub functions to avoid breakage when this option is disabled
    
    v4:
     - fix build system changes - actually disable this module when not selected.
    
    v5:
     - Use kref to avoid device closing while still in use
     - Don't use list, use an idr for storing aux_dev
     - Remove "connector" attribute
     - set aux.dev to the connector drm_connector device, instead of
       drm_device
    
    v6:
     - Use atomic_t for usage count
     - Use a mutex instead of spinlock for idr lock
     - Destroy chardev immediately on unregister
     - other minor suggestions from Ville
    
    v7:
     - style fixes
     - error handling fixes
    
    v8:
     - more error handling fixes
    
    v9:
     - remove module_init and module_exit, and add drm_dp_aux_dev_init/exit
     to drm_kms_helper_init/exit.
    
    Signed-off-by: default avatarRafael Antognolli <rafael.antognolli@intel.com>
    Reviewed-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    Link: http://patchwork.freedesktop.org/patch/msgid/1453417821-2811-3-git-send-email-rafael.antognolli@intel.com
    e94cb37b