Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0-or-later
0002 /*
0003  * Copyright 2015 Freescale Semiconductor, Inc.
0004  *
0005  * Freescale DCU drm device driver
0006  */
0007 
0008 #include <drm/drm_atomic_helper.h>
0009 #include <drm/drm_fb_cma_helper.h>
0010 #include <drm/drm_gem_framebuffer_helper.h>
0011 #include <drm/drm_probe_helper.h>
0012 
0013 #include "fsl_dcu_drm_crtc.h"
0014 #include "fsl_dcu_drm_drv.h"
0015 
0016 static const struct drm_mode_config_funcs fsl_dcu_drm_mode_config_funcs = {
0017     .atomic_check = drm_atomic_helper_check,
0018     .atomic_commit = drm_atomic_helper_commit,
0019     .fb_create = drm_gem_fb_create,
0020 };
0021 
0022 int fsl_dcu_drm_modeset_init(struct fsl_dcu_drm_device *fsl_dev)
0023 {
0024     int ret;
0025 
0026     drm_mode_config_init(fsl_dev->drm);
0027 
0028     fsl_dev->drm->mode_config.min_width = 0;
0029     fsl_dev->drm->mode_config.min_height = 0;
0030     fsl_dev->drm->mode_config.max_width = 2031;
0031     fsl_dev->drm->mode_config.max_height = 2047;
0032     fsl_dev->drm->mode_config.funcs = &fsl_dcu_drm_mode_config_funcs;
0033 
0034     ret = fsl_dcu_drm_crtc_create(fsl_dev);
0035     if (ret)
0036         goto err;
0037 
0038     ret = fsl_dcu_drm_encoder_create(fsl_dev, &fsl_dev->crtc);
0039     if (ret)
0040         goto err;
0041 
0042     ret = fsl_dcu_create_outputs(fsl_dev);
0043     if (ret)
0044         goto err;
0045 
0046     drm_mode_config_reset(fsl_dev->drm);
0047     drm_kms_helper_poll_init(fsl_dev->drm);
0048 
0049     return 0;
0050 
0051 err:
0052     drm_mode_config_cleanup(fsl_dev->drm);
0053     return ret;
0054 }