diff options
Diffstat (limited to 'drivers/gpu/drm/exynos/exynos_drm_drv.h')
| -rw-r--r-- | drivers/gpu/drm/exynos/exynos_drm_drv.h | 65 | 
1 files changed, 40 insertions, 25 deletions
diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.h b/drivers/gpu/drm/exynos/exynos_drm_drv.h index a3423103649..b9e51bc09e8 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_drv.h +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.h @@ -6,24 +6,10 @@   *	Joonyoung Shim <jy0922.shim@samsung.com>   *	Seung-Woo Kim <sw0312.kim@samsung.com>   * - * 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 - * VA LINUX SYSTEMS AND/OR ITS SUPPLIERS 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. + * This program is free software; you can redistribute  it and/or modify it + * under  the terms of  the GNU General  Public License as published by the + * Free Software Foundation;  either version 2 of the  License, or (at your + * option) any later version.   */  #ifndef _EXYNOS_DRM_DRV_H_ @@ -74,8 +60,6 @@ enum exynos_drm_output_type {   * @commit: apply hardware specific overlay data to registers.   * @enable: enable hardware specific overlay.   * @disable: disable hardware specific overlay. - * @wait_for_vblank: wait for vblank interrupt to make sure that - *	hardware overlay is disabled.   */  struct exynos_drm_overlay_ops {  	void (*mode_set)(struct device *subdrv_dev, @@ -83,7 +67,6 @@ struct exynos_drm_overlay_ops {  	void (*commit)(struct device *subdrv_dev, int zpos);  	void (*enable)(struct device *subdrv_dev, int zpos);  	void (*disable)(struct device *subdrv_dev, int zpos); -	void (*wait_for_vblank)(struct device *subdrv_dev);  };  /* @@ -110,7 +93,6 @@ struct exynos_drm_overlay_ops {   * @pixel_format: fourcc pixel format of this overlay   * @dma_addr: array of bus(accessed by dma) address to the memory region   *	      allocated for a overlay. - * @vaddr: array of virtual memory addresss to this overlay.   * @zpos: order of overlay layer(z position).   * @default_win: a window to be enabled.   * @color_key: color key on or off. @@ -142,7 +124,6 @@ struct exynos_drm_overlay {  	unsigned int pitch;  	uint32_t pixel_format;  	dma_addr_t dma_addr[MAX_FB_BUFFER]; -	void __iomem *vaddr[MAX_FB_BUFFER];  	int zpos;  	bool default_win; @@ -186,6 +167,8 @@ struct exynos_drm_display_ops {   * @commit: set current hw specific display mode to hw.   * @enable_vblank: specific driver callback for enabling vblank interrupt.   * @disable_vblank: specific driver callback for disabling vblank interrupt. + * @wait_for_vblank: wait for vblank interrupt to make sure that + *	hardware overlay is updated.   */  struct exynos_drm_manager_ops {  	void (*dpms)(struct device *subdrv_dev, int mode); @@ -200,6 +183,7 @@ struct exynos_drm_manager_ops {  	void (*commit)(struct device *subdrv_dev);  	int (*enable_vblank)(struct device *subdrv_dev);  	void (*disable_vblank)(struct device *subdrv_dev); +	void (*wait_for_vblank)(struct device *subdrv_dev);  };  /* @@ -231,16 +215,28 @@ struct exynos_drm_g2d_private {  	struct device		*dev;  	struct list_head	inuse_cmdlist;  	struct list_head	event_list; -	struct list_head	gem_list; -	unsigned int		gem_nr; +	struct list_head	userptr_list; +}; + +struct exynos_drm_ipp_private { +	struct device	*dev; +	struct list_head	event_list;  };  struct drm_exynos_file_private {  	struct exynos_drm_g2d_private	*g2d_priv; +	struct exynos_drm_ipp_private	*ipp_priv;  };  /*   * Exynos drm private structure. + * + * @da_start: start address to device address space. + *	with iommu, device address space starts from this address + *	otherwise default one. + * @da_space_size: size of device address space. + *	if 0 then default value is used for it. + * @da_space_order: order to device address space.   */  struct exynos_drm_private {  	struct drm_fb_helper *fb_helper; @@ -255,6 +251,10 @@ struct exynos_drm_private {  	struct drm_crtc *crtc[MAX_CRTC];  	struct drm_property *plane_zpos_property;  	struct drm_property *crtc_mode_property; + +	unsigned long da_start; +	unsigned long da_space_size; +	unsigned long da_space_order;  };  /* @@ -318,10 +318,25 @@ int exynos_drm_subdrv_unregister(struct exynos_drm_subdrv *drm_subdrv);  int exynos_drm_subdrv_open(struct drm_device *dev, struct drm_file *file);  void exynos_drm_subdrv_close(struct drm_device *dev, struct drm_file *file); +/* + * this function registers exynos drm hdmi platform device. It ensures only one + * instance of the device is created. + */ +extern int exynos_platform_device_hdmi_register(void); + +/* + * this function unregisters exynos drm hdmi platform device if it exists. + */ +void exynos_platform_device_hdmi_unregister(void); +  extern struct platform_driver fimd_driver;  extern struct platform_driver hdmi_driver;  extern struct platform_driver mixer_driver;  extern struct platform_driver exynos_drm_common_hdmi_driver;  extern struct platform_driver vidi_driver;  extern struct platform_driver g2d_driver; +extern struct platform_driver fimc_driver; +extern struct platform_driver rotator_driver; +extern struct platform_driver gsc_driver; +extern struct platform_driver ipp_driver;  #endif  |