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
@ -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 "
|
MODULE_PARM_DESC(edid_firmware, "Do not probe monitor, use specified EDID blob "
|
||||||
"from built-in data or /lib/firmware instead. ");
|
"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
|
#define GENERIC_EDIDS 6
|
||||||
static const char * const generic_edid_name[GENERIC_EDIDS] = {
|
static const char * const generic_edid_name[GENERIC_EDIDS] = {
|
||||||
"edid/800x600.bin",
|
"edid/800x600.bin",
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
|
#include <drm/drmP.h>
|
||||||
|
|
||||||
#include "drm_crtc_helper_internal.h"
|
#include "drm_crtc_helper_internal.h"
|
||||||
|
|
||||||
@ -33,6 +34,33 @@ MODULE_AUTHOR("David Airlie, Jesse Barnes");
|
|||||||
MODULE_DESCRIPTION("DRM KMS helper");
|
MODULE_DESCRIPTION("DRM KMS helper");
|
||||||
MODULE_LICENSE("GPL and additional rights");
|
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)
|
static int __init drm_kms_helper_init(void)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
@ -341,6 +341,8 @@ int drm_av_sync_delay(struct drm_connector *connector,
|
|||||||
|
|
||||||
#ifdef CONFIG_DRM_LOAD_EDID_FIRMWARE
|
#ifdef CONFIG_DRM_LOAD_EDID_FIRMWARE
|
||||||
struct edid *drm_load_edid_firmware(struct drm_connector *connector);
|
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
|
#else
|
||||||
static inline struct edid *
|
static inline struct edid *
|
||||||
drm_load_edid_firmware(struct drm_connector *connector)
|
drm_load_edid_firmware(struct drm_connector *connector)
|
||||||
|
Loading…
Reference in New Issue
Block a user