drm: add backwards compatibility support for drm_kms_helper.edid_firmware
Add drm_kms_helper.edid_firmware module parameter with param ops hooks to set drm.edid_firmware instead, for backwards compatibility. Suggested-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Cc: Abdiel Janulgue <abdiel.janulgue@linux.intel.com> Cc: Daniel Vetter <daniel.vetter@ffwll.ch> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Acked-by: Dave Airlie <airlied@gmail.com> Signed-off-by: Jani Nikula <jani.nikula@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20170918182003.22238-2-jani.nikula@intel.com
This commit is contained in:
parent
53fd40a90f
commit
ac6c35a4d8
3 changed files with 46 additions and 0 deletions
|
@ -31,6 +31,22 @@ module_param_string(edid_firmware, edid_firmware, sizeof(edid_firmware), 0644);
|
|||
MODULE_PARM_DESC(edid_firmware, "Do not probe monitor, use specified EDID blob "
|
||||
"from built-in data or /lib/firmware instead. ");
|
||||
|
||||
/* Use only for backward compatibility with drm_kms_helper.edid_firmware */
|
||||
int __drm_set_edid_firmware_path(const char *path)
|
||||
{
|
||||
scnprintf(edid_firmware, sizeof(edid_firmware), "%s", path);
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(__drm_set_edid_firmware_path);
|
||||
|
||||
/* Use only for backward compatibility with drm_kms_helper.edid_firmware */
|
||||
int __drm_get_edid_firmware_path(char *buf, size_t bufsize)
|
||||
{
|
||||
return scnprintf(buf, bufsize, "%s", edid_firmware);
|
||||
}
|
||||
EXPORT_SYMBOL(__drm_get_edid_firmware_path);
|
||||
|
||||
#define GENERIC_EDIDS 6
|
||||
static const char * const generic_edid_name[GENERIC_EDIDS] = {
|
||||
"edid/800x600.bin",
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
*/
|
||||
|
||||
#include <linux/module.h>
|
||||
#include <drm/drmP.h>
|
||||
|
||||
#include "drm_crtc_helper_internal.h"
|
||||
|
||||
|
@ -33,6 +34,33 @@ MODULE_AUTHOR("David Airlie, Jesse Barnes");
|
|||
MODULE_DESCRIPTION("DRM KMS helper");
|
||||
MODULE_LICENSE("GPL and additional rights");
|
||||
|
||||
#if IS_ENABLED(CONFIG_DRM_LOAD_EDID_FIRMWARE)
|
||||
|
||||
/* Backward compatibility for drm_kms_helper.edid_firmware */
|
||||
static int edid_firmware_set(const char *val, const struct kernel_param *kp)
|
||||
{
|
||||
DRM_NOTE("drm_kms_firmware.edid_firmware is deprecated, please use drm.edid_firmware intead.\n");
|
||||
|
||||
return __drm_set_edid_firmware_path(val);
|
||||
}
|
||||
|
||||
static int edid_firmware_get(char *buffer, const struct kernel_param *kp)
|
||||
{
|
||||
return __drm_get_edid_firmware_path(buffer, PAGE_SIZE);
|
||||
}
|
||||
|
||||
static const struct kernel_param_ops edid_firmware_ops = {
|
||||
.set = edid_firmware_set,
|
||||
.get = edid_firmware_get,
|
||||
};
|
||||
|
||||
module_param_cb(edid_firmware, &edid_firmware_ops, NULL, 0644);
|
||||
__MODULE_PARM_TYPE(edid_firmware, "charp");
|
||||
MODULE_PARM_DESC(edid_firmware,
|
||||
"DEPRECATED. Use drm.edid_firmware module parameter instead.");
|
||||
|
||||
#endif
|
||||
|
||||
static int __init drm_kms_helper_init(void)
|
||||
{
|
||||
int ret;
|
||||
|
|
|
@ -341,6 +341,8 @@ int drm_av_sync_delay(struct drm_connector *connector,
|
|||
|
||||
#ifdef CONFIG_DRM_LOAD_EDID_FIRMWARE
|
||||
struct edid *drm_load_edid_firmware(struct drm_connector *connector);
|
||||
int __drm_set_edid_firmware_path(const char *path);
|
||||
int __drm_get_edid_firmware_path(char *buf, size_t bufsize);
|
||||
#else
|
||||
static inline struct edid *
|
||||
drm_load_edid_firmware(struct drm_connector *connector)
|
||||
|
|
Loading…
Reference in a new issue