diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/video/da8xx-fb.h | 3 | ||||
| -rw-r--r-- | include/video/omapdss.h | 51 | ||||
| -rw-r--r-- | include/video/sh_mobile_lcdc.h | 7 | ||||
| -rw-r--r-- | include/video/sh_mobile_meram.h | 67 | 
4 files changed, 85 insertions, 43 deletions
| diff --git a/include/video/da8xx-fb.h b/include/video/da8xx-fb.h index 89d43b3d4cb9..5a0e4f9efb53 100644 --- a/include/video/da8xx-fb.h +++ b/include/video/da8xx-fb.h @@ -82,6 +82,9 @@ struct lcd_ctrl_config {  	/* Raster Data Order Select: 1=Most-to-least 0=Least-to-most */  	unsigned char raster_order; + +	/* DMA FIFO threshold */ +	int fifo_th;  };  struct lcd_sync_arg { diff --git a/include/video/omapdss.h b/include/video/omapdss.h index c8e59b4a3364..a6267a2d292b 100644 --- a/include/video/omapdss.h +++ b/include/video/omapdss.h @@ -48,6 +48,10 @@  #define DISPC_IRQ_FRAMEDONEWB		(1 << 23)  #define DISPC_IRQ_FRAMEDONETV		(1 << 24)  #define DISPC_IRQ_WBBUFFEROVERFLOW	(1 << 25) +#define DISPC_IRQ_FRAMEDONE3		(1 << 26) +#define DISPC_IRQ_VSYNC3		(1 << 27) +#define DISPC_IRQ_ACBIAS_COUNT_STAT3	(1 << 28) +#define DISPC_IRQ_SYNC_LOST3		(1 << 29)  struct omap_dss_device;  struct omap_overlay_manager; @@ -75,6 +79,7 @@ enum omap_channel {  	OMAP_DSS_CHANNEL_LCD	= 0,  	OMAP_DSS_CHANNEL_DIGIT	= 1,  	OMAP_DSS_CHANNEL_LCD2	= 2, +	OMAP_DSS_CHANNEL_LCD3	= 3,  };  enum omap_color_mode { @@ -99,11 +104,6 @@ enum omap_color_mode {  	OMAP_DSS_COLOR_XRGB16_1555	= 1 << 18, /* xRGB16 - 1555 */  }; -enum omap_lcd_display_type { -	OMAP_DSS_LCD_DISPLAY_STN, -	OMAP_DSS_LCD_DISPLAY_TFT, -}; -  enum omap_dss_load_mode {  	OMAP_DSS_LOAD_CLUT_AND_FRAME	= 0,  	OMAP_DSS_LOAD_CLUT_ONLY		= 1, @@ -121,15 +121,15 @@ enum omap_rfbi_te_mode {  	OMAP_DSS_RFBI_TE_MODE_2 = 2,  }; -enum omap_panel_config { -	OMAP_DSS_LCD_IVS		= 1<<0, -	OMAP_DSS_LCD_IHS		= 1<<1, -	OMAP_DSS_LCD_IPC		= 1<<2, -	OMAP_DSS_LCD_IEO		= 1<<3, -	OMAP_DSS_LCD_RF			= 1<<4, -	OMAP_DSS_LCD_ONOFF		= 1<<5, +enum omap_dss_signal_level { +	OMAPDSS_SIG_ACTIVE_HIGH	= 0, +	OMAPDSS_SIG_ACTIVE_LOW	= 1, +}; -	OMAP_DSS_LCD_TFT		= 1<<20, +enum omap_dss_signal_edge { +	OMAPDSS_DRIVE_SIG_OPPOSITE_EDGES, +	OMAPDSS_DRIVE_SIG_RISING_EDGE, +	OMAPDSS_DRIVE_SIG_FALLING_EDGE,  };  enum omap_dss_venc_type { @@ -167,13 +167,6 @@ enum omap_dss_audio_state {  	OMAP_DSS_AUDIO_PLAYING,  }; -/* XXX perhaps this should be removed */ -enum omap_dss_overlay_managers { -	OMAP_DSS_OVL_MGR_LCD, -	OMAP_DSS_OVL_MGR_TV, -	OMAP_DSS_OVL_MGR_LCD2, -}; -  enum omap_dss_rotation_type {  	OMAP_DSS_ROT_DMA	= 1 << 0,  	OMAP_DSS_ROT_VRFB	= 1 << 1, @@ -268,9 +261,6 @@ struct omap_dss_dsi_videomode_data {  	int hfp_blanking_mode;  	/* Video port sync events */ -	int vp_de_pol; -	int vp_hsync_pol; -	int vp_vsync_pol;  	bool vp_vsync_end;  	bool vp_hsync_end; @@ -346,6 +336,19 @@ struct omap_video_timings {  	u16 vfp;	/* Vertical front porch */  	/* Unit: line clocks */  	u16 vbp;	/* Vertical back porch */ + +	/* Vsync logic level */ +	enum omap_dss_signal_level vsync_level; +	/* Hsync logic level */ +	enum omap_dss_signal_level hsync_level; +	/* Interlaced or Progressive timings */ +	bool interlace; +	/* Pixel clock edge to drive LCD data */ +	enum omap_dss_signal_edge data_pclk_edge; +	/* Data enable logic level */ +	enum omap_dss_signal_level de_level; +	/* Pixel clock edges to drive HSYNC and VSYNC signals */ +	enum omap_dss_signal_edge sync_pclk_edge;  };  #ifdef CONFIG_OMAP2_DSS_VENC @@ -559,8 +562,6 @@ struct omap_dss_device {  		/* Unit: line clocks */  		int acb;	/* ac-bias pin frequency */ -		enum omap_panel_config config; -  		enum omap_dss_dsi_pixel_format dsi_pix_fmt;  		enum omap_dss_dsi_mode dsi_mode;  		struct omap_dss_dsi_videomode_data dsi_vm_data; diff --git a/include/video/sh_mobile_lcdc.h b/include/video/sh_mobile_lcdc.h index 7571b27a0ba1..ff43ffc1aab2 100644 --- a/include/video/sh_mobile_lcdc.h +++ b/include/video/sh_mobile_lcdc.h @@ -166,6 +166,12 @@ struct sh_mobile_lcdc_bl_info {  	int (*get_brightness)(void);  }; +struct sh_mobile_lcdc_overlay_cfg { +	int fourcc; +	unsigned int max_xres; +	unsigned int max_yres; +}; +  struct sh_mobile_lcdc_chan_cfg {  	int chan;  	int fourcc; @@ -186,6 +192,7 @@ struct sh_mobile_lcdc_chan_cfg {  struct sh_mobile_lcdc_info {  	int clock_source;  	struct sh_mobile_lcdc_chan_cfg ch[2]; +	struct sh_mobile_lcdc_overlay_cfg overlays[4];  	struct sh_mobile_meram_info *meram_dev;  }; diff --git a/include/video/sh_mobile_meram.h b/include/video/sh_mobile_meram.h index 29b2fd3b147e..062e6e7f955c 100644 --- a/include/video/sh_mobile_meram.h +++ b/include/video/sh_mobile_meram.h @@ -15,7 +15,6 @@ enum {  struct sh_mobile_meram_priv; -struct sh_mobile_meram_ops;  /*   * struct sh_mobile_meram_info - MERAM platform data @@ -24,7 +23,6 @@ struct sh_mobile_meram_ops;  struct sh_mobile_meram_info {  	int				addr_mode;  	u32				reserved_icbs; -	struct sh_mobile_meram_ops	*ops;  	struct sh_mobile_meram_priv	*priv;  	struct platform_device		*pdev;  }; @@ -38,26 +36,59 @@ struct sh_mobile_meram_cfg {  	struct sh_mobile_meram_icb_cfg icb[2];  }; -struct module; -struct sh_mobile_meram_ops { -	struct module	*module; -	/* register usage of meram */ -	void *(*meram_register)(struct sh_mobile_meram_info *meram_dev, -				const struct sh_mobile_meram_cfg *cfg, -				unsigned int xres, unsigned int yres, -				unsigned int pixelformat, -				unsigned int *pitch); +#if defined(CONFIG_FB_SH_MOBILE_MERAM) || \ +    defined(CONFIG_FB_SH_MOBILE_MERAM_MODULE) +unsigned long sh_mobile_meram_alloc(struct sh_mobile_meram_info *meram_dev, +				    size_t size); +void sh_mobile_meram_free(struct sh_mobile_meram_info *meram_dev, +			  unsigned long mem, size_t size); +void *sh_mobile_meram_cache_alloc(struct sh_mobile_meram_info *dev, +				  const struct sh_mobile_meram_cfg *cfg, +				  unsigned int xres, unsigned int yres, +				  unsigned int pixelformat, +				  unsigned int *pitch); +void sh_mobile_meram_cache_free(struct sh_mobile_meram_info *dev, void *data); +void sh_mobile_meram_cache_update(struct sh_mobile_meram_info *dev, void *data, +				  unsigned long base_addr_y, +				  unsigned long base_addr_c, +				  unsigned long *icb_addr_y, +				  unsigned long *icb_addr_c); +#else +static inline unsigned long +sh_mobile_meram_alloc(struct sh_mobile_meram_info *meram_dev, size_t size) +{ +	return 0; +} -	/* unregister usage of meram */ -	void (*meram_unregister)(struct sh_mobile_meram_info *meram_dev, -				 void *data); +static inline void +sh_mobile_meram_free(struct sh_mobile_meram_info *meram_dev, +		     unsigned long mem, size_t size) +{ +} -	/* update meram settings */ -	void (*meram_update)(struct sh_mobile_meram_info *meram_dev, void *data, +static inline void * +sh_mobile_meram_cache_alloc(struct sh_mobile_meram_info *dev, +			    const struct sh_mobile_meram_cfg *cfg, +			    unsigned int xres, unsigned int yres, +			    unsigned int pixelformat, +			    unsigned int *pitch) +{ +	return ERR_PTR(-ENODEV); +} + +static inline void +sh_mobile_meram_cache_free(struct sh_mobile_meram_info *dev, void *data) +{ +} + +static inline void +sh_mobile_meram_cache_update(struct sh_mobile_meram_info *dev, void *data,  			     unsigned long base_addr_y,  			     unsigned long base_addr_c,  			     unsigned long *icb_addr_y, -			     unsigned long *icb_addr_c); -}; +			     unsigned long *icb_addr_c) +{ +} +#endif  #endif /* __VIDEO_SH_MOBILE_MERAM_H__  */ | 
