linux/drivers/gpu/drm/sun4i/sun4i_framebuffer.c
<<
>>
Prefs
   1/*
   2 * Copyright (C) 2015 Free Electrons
   3 * Copyright (C) 2015 NextThing Co
   4 *
   5 * Maxime Ripard <maxime.ripard@free-electrons.com>
   6 *
   7 * This program is free software; you can redistribute it and/or
   8 * modify it under the terms of the GNU General Public License as
   9 * published by the Free Software Foundation; either version 2 of
  10 * the License, or (at your option) any later version.
  11 */
  12
  13#include <drm/drm_atomic_helper.h>
  14#include <drm/drm_fb_cma_helper.h>
  15#include <drm/drmP.h>
  16
  17#include "sun4i_drv.h"
  18#include "sun4i_framebuffer.h"
  19
  20static void sun4i_de_output_poll_changed(struct drm_device *drm)
  21{
  22        struct sun4i_drv *drv = drm->dev_private;
  23
  24        drm_fbdev_cma_hotplug_event(drv->fbdev);
  25}
  26
  27static const struct drm_mode_config_funcs sun4i_de_mode_config_funcs = {
  28        .output_poll_changed    = sun4i_de_output_poll_changed,
  29        .atomic_check           = drm_atomic_helper_check,
  30        .atomic_commit          = drm_atomic_helper_commit,
  31        .fb_create              = drm_fb_cma_create,
  32};
  33
  34struct drm_fbdev_cma *sun4i_framebuffer_init(struct drm_device *drm)
  35{
  36        drm_mode_config_reset(drm);
  37
  38        drm->mode_config.max_width = 8192;
  39        drm->mode_config.max_height = 8192;
  40
  41        drm->mode_config.funcs = &sun4i_de_mode_config_funcs;
  42
  43        return drm_fbdev_cma_init(drm, 32, drm->mode_config.num_connector);
  44}
  45
  46void sun4i_framebuffer_free(struct drm_device *drm)
  47{
  48        struct sun4i_drv *drv = drm->dev_private;
  49
  50        drm_fbdev_cma_fini(drv->fbdev);
  51}
  52