cregit-Linux how code gets into the kernel

Release 4.11 drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.h

/*
 * Copyright (C) 2014 Traphandler
 * Copyright (C) 2014 Free Electrons
 * Copyright (C) 2014 Atmel
 *
 * Author: Jean-Jacques Hiblot <jjhiblot@traphandler.com>
 * Author: Boris BREZILLON <boris.brezillon@free-electrons.com>
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 as published by
 * the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
 * more details.
 *
 * You should have received a copy of the GNU General Public License along with
 * this program.  If not, see <http://www.gnu.org/licenses/>.
 */

#ifndef DRM_ATMEL_HLCDC_H

#define DRM_ATMEL_HLCDC_H

#include <linux/clk.h>
#include <linux/irqdomain.h>
#include <linux/pwm.h>

#include <drm/drm_atomic.h>
#include <drm/drm_atomic_helper.h>
#include <drm/drm_crtc.h>
#include <drm/drm_crtc_helper.h>
#include <drm/drm_fb_cma_helper.h>
#include <drm/drm_gem_cma_helper.h>
#include <drm/drm_panel.h>
#include <drm/drm_plane_helper.h>
#include <drm/drmP.h>

#include "atmel_hlcdc_layer.h"


#define ATMEL_HLCDC_MAX_LAYERS		5

/**
 * Atmel HLCDC Display Controller description structure.
 *
 * This structure describe the HLCDC IP capabilities and depends on the
 * HLCDC IP version (or Atmel SoC family).
 *
 * @min_width: minimum width supported by the Display Controller
 * @min_height: minimum height supported by the Display Controller
 * @max_width: maximum width supported by the Display Controller
 * @max_height: maximum height supported by the Display Controller
 * @max_spw: maximum vertical/horizontal pulse width
 * @max_vpw: maximum vertical back/front porch width
 * @max_hpw: maximum horizontal back/front porch width
 * @conflicting_output_formats: true if RGBXXX output formats conflict with
 *                              each other.
 * @layers: a layer description table describing available layers
 * @nlayers: layer description table size
 */

struct atmel_hlcdc_dc_desc {
	
int min_width;
	
int min_height;
	
int max_width;
	
int max_height;
	
int max_spw;
	
int max_vpw;
	
int max_hpw;
	
bool conflicting_output_formats;
	
const struct atmel_hlcdc_layer_desc *layers;
	
int nlayers;
};

/**
 * Atmel HLCDC Plane properties.
 *
 * This structure stores plane property definitions.
 *
 * @alpha: alpha blending (or transparency) property
 * @rotation: rotation property
 */

struct atmel_hlcdc_plane_properties {
	
struct drm_property *alpha;
};

/**
 * Atmel HLCDC Plane.
 *
 * @base: base DRM plane structure
 * @layer: HLCDC layer structure
 * @properties: pointer to the property definitions structure
 * @rotation: current rotation status
 */

struct atmel_hlcdc_plane {
	
struct drm_plane base;
	
struct atmel_hlcdc_layer layer;
	
struct atmel_hlcdc_plane_properties *properties;
};


static inline struct atmel_hlcdc_plane * drm_plane_to_atmel_hlcdc_plane(struct drm_plane *p) { return container_of(p, struct atmel_hlcdc_plane, base); }

Contributors

PersonTokensPropCommitsCommitProp
Boris Brezillon25100.00%1100.00%
Total25100.00%1100.00%


static inline struct atmel_hlcdc_plane * atmel_hlcdc_layer_to_plane(struct atmel_hlcdc_layer *l) { return container_of(l, struct atmel_hlcdc_plane, layer); }

Contributors

PersonTokensPropCommitsCommitProp
Boris Brezillon25100.00%1100.00%
Total25100.00%1100.00%

/** * Atmel HLCDC Planes. * * This structure stores the instantiated HLCDC Planes and can be accessed by * the HLCDC Display Controller or the HLCDC CRTC. * * @primary: primary plane * @cursor: hardware cursor plane * @overlays: overlay plane table * @noverlays: number of overlay planes */ struct atmel_hlcdc_planes { struct atmel_hlcdc_plane *primary; struct atmel_hlcdc_plane *cursor; struct atmel_hlcdc_plane **overlays; int noverlays; }; /** * Atmel HLCDC Display Controller. * * @desc: HLCDC Display Controller description * @hlcdc: pointer to the atmel_hlcdc structure provided by the MFD device * @fbdev: framebuffer device attached to the Display Controller * @crtc: CRTC provided by the display controller * @planes: instantiated planes * @layers: active HLCDC layer * @wq: display controller workqueue * @commit: used for async commit handling */ struct atmel_hlcdc_dc { const struct atmel_hlcdc_dc_desc *desc; struct atmel_hlcdc *hlcdc; struct drm_fbdev_cma *fbdev; struct drm_crtc *crtc; struct atmel_hlcdc_planes *planes; struct atmel_hlcdc_layer *layers[ATMEL_HLCDC_MAX_LAYERS]; struct workqueue_struct *wq; struct { wait_queue_head_t wait; bool pending; } commit; }; extern struct atmel_hlcdc_formats atmel_hlcdc_plane_rgb_formats; extern struct atmel_hlcdc_formats atmel_hlcdc_plane_rgb_and_yuv_formats; int atmel_hlcdc_dc_mode_valid(struct atmel_hlcdc_dc *dc, struct drm_display_mode *mode); struct atmel_hlcdc_planes * atmel_hlcdc_create_planes(struct drm_device *dev); int atmel_hlcdc_plane_prepare_disc_area(struct drm_crtc_state *c_state); int atmel_hlcdc_plane_prepare_ahb_routing(struct drm_crtc_state *c_state); void atmel_hlcdc_crtc_irq(struct drm_crtc *c); void atmel_hlcdc_crtc_suspend(struct drm_crtc *crtc); void atmel_hlcdc_crtc_resume(struct drm_crtc *crtc); int atmel_hlcdc_crtc_create(struct drm_device *dev); int atmel_hlcdc_create_outputs(struct drm_device *dev); #endif /* DRM_ATMEL_HLCDC_H */

Overall Contributors

PersonTokensPropCommitsCommitProp
Boris Brezillon33495.16%787.50%
Sylvain Rochet174.84%112.50%
Total351100.00%8100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.