2016-01-22 02:10:18 +03:00
/*
* Copyright © 2015 Intel Corporation
*
* Permission is hereby granted , free of charge , to any person obtaining a
* copy of this software and associated documentation files ( the " Software " ) ,
* to deal in the Software without restriction , including without limitation
* the rights to use , copy , modify , merge , publish , distribute , sublicense ,
* and / or sell copies of the Software , and to permit persons to whom the
* Software is furnished to do so , subject to the following conditions :
*
* The above copyright notice and this permission notice ( including the next
* paragraph ) shall be included in all copies or substantial portions of the
* Software .
*
* THE SOFTWARE IS PROVIDED " AS IS " , WITHOUT WARRANTY OF ANY KIND , EXPRESS OR
* IMPLIED , INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY ,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT . IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM , DAMAGES OR OTHER
* LIABILITY , WHETHER IN AN ACTION OF CONTRACT , TORT OR OTHERWISE , ARISING
* FROM , OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
* IN THE SOFTWARE .
*
* Authors :
* Rafael Antognolli < rafael . antognolli @ intel . com >
*
*/
2017-03-08 17:12:38 +03:00
# include <linux/module.h>
2019-05-26 20:35:35 +03:00
# include <drm/drm_print.h>
2016-08-12 23:48:52 +03:00
# include "drm_crtc_helper_internal.h"
2016-01-22 02:10:18 +03:00
MODULE_AUTHOR ( " David Airlie, Jesse Barnes " ) ;
MODULE_DESCRIPTION ( " DRM KMS helper " ) ;
MODULE_LICENSE ( " GPL and additional rights " ) ;
2017-09-18 21:20:03 +03:00
# 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 )
{
2019-08-21 12:43:12 +03:00
DRM_NOTE ( " drm_kms_helper.edid_firmware is deprecated, please use drm.edid_firmware instead. \n " ) ;
2017-09-18 21:20:03 +03:00
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
2016-01-22 02:10:18 +03:00
static int __init drm_kms_helper_init ( void )
{
2016-01-22 02:10:19 +03:00
int ret ;
2016-01-22 02:10:18 +03:00
/* Call init functions from specific kms helpers here */
2016-01-22 02:10:19 +03:00
ret = drm_fb_helper_modinit ( ) ;
if ( ret < 0 )
goto out ;
ret = drm_dp_aux_dev_init ( ) ;
if ( ret < 0 )
goto out ;
out :
return ret ;
2016-01-22 02:10:18 +03:00
}
static void __exit drm_kms_helper_exit ( void )
{
/* Call exit functions from specific kms helpers here */
2016-01-22 02:10:19 +03:00
drm_dp_aux_dev_exit ( ) ;
2016-01-22 02:10:18 +03:00
}
module_init ( drm_kms_helper_init ) ;
module_exit ( drm_kms_helper_exit ) ;