forked from mirrors/linux
		
	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
	
	 Jani Nikula
						Jani Nikula