2009-11-03 11:23:50 +02:00
/*
* linux / drivers / video / omap2 / dss / dss . h
*
* Copyright ( C ) 2009 Nokia Corporation
* Author : Tomi Valkeinen < tomi . valkeinen @ nokia . com >
*
* Some code and ideas taken from drivers / video / omap / driver
* by Imre Deak .
*
* 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 __OMAP2_DSS_H
# define __OMAP2_DSS_H
# ifdef CONFIG_OMAP2_DSS_DEBUG_SUPPORT
# define DEBUG
# endif
# ifdef DEBUG
extern unsigned int dss_debug ;
# ifdef DSS_SUBSYS_NAME
# define DSSDBG(format, ...) \
if ( dss_debug ) \
printk ( KERN_DEBUG " omapdss " DSS_SUBSYS_NAME " : " format , \
# # __VA_ARGS__)
# else
# define DSSDBG(format, ...) \
if ( dss_debug ) \
printk ( KERN_DEBUG " omapdss: " format , # # __VA_ARGS__ )
# endif
# ifdef DSS_SUBSYS_NAME
# define DSSDBGF(format, ...) \
if ( dss_debug ) \
printk ( KERN_DEBUG " omapdss " DSS_SUBSYS_NAME \
" : %s( " format " ) \n " , \
__func__ , \
# # __VA_ARGS__)
# else
# define DSSDBGF(format, ...) \
if ( dss_debug ) \
printk ( KERN_DEBUG " omapdss: " \
" : %s( " format " ) \n " , \
__func__ , \
# # __VA_ARGS__)
# endif
# else /* DEBUG */
# define DSSDBG(format, ...)
# define DSSDBGF(format, ...)
# endif
# ifdef DSS_SUBSYS_NAME
# define DSSERR(format, ...) \
printk ( KERN_ERR " omapdss " DSS_SUBSYS_NAME " error: " format , \
# # __VA_ARGS__)
# else
# define DSSERR(format, ...) \
printk ( KERN_ERR " omapdss error: " format , # # __VA_ARGS__ )
# endif
# ifdef DSS_SUBSYS_NAME
# define DSSINFO(format, ...) \
printk ( KERN_INFO " omapdss " DSS_SUBSYS_NAME " : " format , \
# # __VA_ARGS__)
# else
# define DSSINFO(format, ...) \
printk ( KERN_INFO " omapdss: " format , # # __VA_ARGS__ )
# endif
# ifdef DSS_SUBSYS_NAME
# define DSSWARN(format, ...) \
printk ( KERN_WARNING " omapdss " DSS_SUBSYS_NAME " : " format , \
# # __VA_ARGS__)
# else
# define DSSWARN(format, ...) \
printk ( KERN_WARNING " omapdss: " format , # # __VA_ARGS__ )
# endif
/* OMAP TRM gives bitfields as start:end, where start is the higher bit
number . For example 7 : 0 */
# define FLD_MASK(start, end) (((1 << ((start) - (end) + 1)) - 1) << (end))
# define FLD_VAL(val, start, end) (((val) << (end)) & FLD_MASK(start, end))
# define FLD_GET(val, start, end) (((val) & FLD_MASK(start, end)) >> (end))
# define FLD_MOD(orig, val, start, end) \
( ( ( orig ) & ~ FLD_MASK ( start , end ) ) | FLD_VAL ( val , start , end ) )
enum omap_burst_size {
OMAP_DSS_BURST_4x32 = 0 ,
OMAP_DSS_BURST_8x32 = 1 ,
OMAP_DSS_BURST_16x32 = 2 ,
} ;
enum omap_parallel_interface_mode {
OMAP_DSS_PARALLELMODE_BYPASS , /* MIPI DPI */
OMAP_DSS_PARALLELMODE_RFBI , /* MIPI DBI */
OMAP_DSS_PARALLELMODE_DSI ,
} ;
enum dss_clock {
2011-01-31 16:27:44 +00:00
DSS_CLK_ICK = 1 < < 0 , /* DSS_L3_ICLK and DSS_L4_ICLK */
DSS_CLK_FCK = 1 < < 1 , /* DSS1_ALWON_FCLK */
DSS_CLK_SYSCK = 1 < < 2 , /* DSS2_ALWON_FCLK */
DSS_CLK_TVFCK = 1 < < 3 , /* DSS_TV_FCLK */
DSS_CLK_VIDFCK = 1 < < 4 , /* DSS_96M_FCLK*/
2009-11-03 11:23:50 +02:00
} ;
2011-03-09 16:31:38 +05:30
enum dss_hdmi_venc_clk_source_select {
DSS_VENC_TV_CLK = 0 ,
DSS_HDMI_M_PCLK = 1 ,
} ;
2009-11-03 11:23:50 +02:00
struct dss_clock_info {
/* rates that we get with dividers below */
unsigned long fck ;
/* dividers */
u16 fck_div ;
} ;
struct dispc_clock_info {
/* rates that we get with dividers below */
unsigned long lck ;
unsigned long pck ;
/* dividers */
u16 lck_div ;
u16 pck_div ;
} ;
struct dsi_clock_info {
/* rates that we get with dividers below */
unsigned long fint ;
unsigned long clkin4ddr ;
unsigned long clkin ;
2011-03-08 05:50:35 -06:00
unsigned long dsi_pll_hsdiv_dispc_clk ; /* OMAP3: DSI1_PLL_CLK
* OMAP4 : PLLx_CLK1 */
unsigned long dsi_pll_hsdiv_dsi_clk ; /* OMAP3: DSI2_PLL_CLK
* OMAP4 : PLLx_CLK2 */
2009-11-03 11:23:50 +02:00
unsigned long lp_clk ;
/* dividers */
u16 regn ;
u16 regm ;
2011-03-08 05:50:35 -06:00
u16 regm_dispc ; /* OMAP3: REGM3
* OMAP4 : REGM4 */
u16 regm_dsi ; /* OMAP3: REGM4
* OMAP4 : REGM5 */
2009-11-03 11:23:50 +02:00
u16 lp_clk_div ;
u8 highfreq ;
2011-02-24 14:17:30 +05:30
bool use_sys_clk ;
2009-11-03 11:23:50 +02:00
} ;
2011-03-12 12:04:27 +05:30
/* HDMI PLL structure */
struct hdmi_pll_info {
u16 regn ;
u16 regm ;
u32 regmf ;
u16 regm2 ;
u16 regsd ;
u16 dcofreq ;
} ;
2009-11-03 11:23:50 +02:00
struct seq_file ;
struct platform_device ;
/* core */
struct bus_type * dss_get_bus ( void ) ;
2010-02-04 17:03:41 +02:00
struct regulator * dss_get_vdds_dsi ( void ) ;
struct regulator * dss_get_vdds_sdi ( void ) ;
2009-11-03 11:23:50 +02:00
/* display */
int dss_suspend_all_devices ( void ) ;
int dss_resume_all_devices ( void ) ;
void dss_disable_all_devices ( void ) ;
void dss_init_device ( struct platform_device * pdev ,
struct omap_dss_device * dssdev ) ;
void dss_uninit_device ( struct platform_device * pdev ,
struct omap_dss_device * dssdev ) ;
bool dss_use_replication ( struct omap_dss_device * dssdev ,
enum omap_color_mode mode ) ;
void default_get_overlay_fifo_thresholds ( enum omap_plane plane ,
u32 fifo_size , enum omap_burst_size * burst_size ,
u32 * fifo_low , u32 * fifo_high ) ;
/* manager */
int dss_init_overlay_managers ( struct platform_device * pdev ) ;
void dss_uninit_overlay_managers ( struct platform_device * pdev ) ;
int dss_mgr_wait_for_go_ovl ( struct omap_overlay * ovl ) ;
void dss_setup_partial_planes ( struct omap_dss_device * dssdev ,
2010-06-09 15:31:34 +03:00
u16 * x , u16 * y , u16 * w , u16 * h ,
bool enlarge_update_area ) ;
2009-11-03 11:23:50 +02:00
void dss_start_update ( struct omap_dss_device * dssdev ) ;
/* overlay */
void dss_init_overlays ( struct platform_device * pdev ) ;
void dss_uninit_overlays ( struct platform_device * pdev ) ;
int dss_check_overlay ( struct omap_overlay * ovl , struct omap_dss_device * dssdev ) ;
void dss_overlay_setup_dispc_manager ( struct omap_overlay_manager * mgr ) ;
# ifdef L4_EXAMPLE
void dss_overlay_setup_l4_manager ( struct omap_overlay_manager * mgr ) ;
# endif
void dss_recheck_connections ( struct omap_dss_device * dssdev , bool force ) ;
/* DSS */
2011-01-24 06:21:57 +00:00
int dss_init_platform_driver ( void ) ;
void dss_uninit_platform_driver ( void ) ;
2009-11-03 11:23:50 +02:00
2011-03-09 16:31:38 +05:30
void dss_select_hdmi_venc_clk_source ( enum dss_hdmi_venc_clk_source_select ) ;
2009-11-03 11:23:50 +02:00
void dss_save_context ( void ) ;
void dss_restore_context ( void ) ;
2011-01-24 06:21:58 +00:00
void dss_clk_enable ( enum dss_clock clks ) ;
void dss_clk_disable ( enum dss_clock clks ) ;
unsigned long dss_clk_get_rate ( enum dss_clock clk ) ;
int dss_need_ctx_restore ( void ) ;
2011-04-12 13:52:23 +05:30
const char * dss_get_generic_clk_source_name ( enum omap_dss_clk_source clk_src ) ;
2011-01-24 06:21:58 +00:00
void dss_dump_clocks ( struct seq_file * s ) ;
2009-11-03 11:23:50 +02:00
void dss_dump_regs ( struct seq_file * s ) ;
2011-01-24 06:21:58 +00:00
# if defined(CONFIG_DEBUG_FS) && defined(CONFIG_OMAP2_DSS_DEBUG_SUPPORT)
void dss_debug_dump_clocks ( struct seq_file * s ) ;
# endif
2009-11-03 11:23:50 +02:00
void dss_sdi_init ( u8 datapairs ) ;
int dss_sdi_enable ( void ) ;
void dss_sdi_disable ( void ) ;
2011-04-12 13:52:23 +05:30
void dss_select_dispc_clk_source ( enum omap_dss_clk_source clk_src ) ;
void dss_select_dsi_clk_source ( enum omap_dss_clk_source clk_src ) ;
2011-03-08 05:50:35 -06:00
void dss_select_lcd_clk_source ( enum omap_channel channel ,
2011-04-12 13:52:23 +05:30
enum omap_dss_clk_source clk_src ) ;
enum omap_dss_clk_source dss_get_dispc_clk_source ( void ) ;
enum omap_dss_clk_source dss_get_dsi_clk_source ( void ) ;
enum omap_dss_clk_source dss_get_lcd_clk_source ( enum omap_channel channel ) ;
2010-01-08 18:00:36 +02:00
2009-11-03 11:23:50 +02:00
void dss_set_venc_output ( enum omap_dss_venc_type type ) ;
void dss_set_dac_pwrdn_bgz ( bool enable ) ;
unsigned long dss_get_dpll4_rate ( void ) ;
int dss_calc_clock_rates ( struct dss_clock_info * cinfo ) ;
int dss_set_clock_div ( struct dss_clock_info * cinfo ) ;
int dss_get_clock_div ( struct dss_clock_info * cinfo ) ;
int dss_calc_clock_div ( bool is_tft , unsigned long req_pck ,
struct dss_clock_info * dss_cinfo ,
struct dispc_clock_info * dispc_cinfo ) ;
/* SDI */
2010-05-07 11:58:41 +02:00
# ifdef CONFIG_OMAP2_DSS_SDI
2011-03-02 12:29:27 +02:00
int sdi_init ( void ) ;
2009-11-03 11:23:50 +02:00
void sdi_exit ( void ) ;
int sdi_init_display ( struct omap_dss_device * display ) ;
2010-05-07 11:58:41 +02:00
# else
2011-03-02 12:29:27 +02:00
static inline int sdi_init ( void )
2010-05-07 11:58:41 +02:00
{
return 0 ;
}
static inline void sdi_exit ( void )
{
}
# endif
2009-11-03 11:23:50 +02:00
/* DSI */
2010-05-07 11:58:41 +02:00
# ifdef CONFIG_OMAP2_DSS_DSI
2011-01-24 06:22:02 +00:00
int dsi_init_platform_driver ( void ) ;
void dsi_uninit_platform_driver ( void ) ;
2009-11-03 11:23:50 +02:00
void dsi_dump_clocks ( struct seq_file * s ) ;
2009-12-17 14:35:21 +02:00
void dsi_dump_irqs ( struct seq_file * s ) ;
2009-11-03 11:23:50 +02:00
void dsi_dump_regs ( struct seq_file * s ) ;
void dsi_save_context ( void ) ;
void dsi_restore_context ( void ) ;
int dsi_init_display ( struct omap_dss_device * display ) ;
void dsi_irq_handler ( void ) ;
2011-05-12 17:26:26 +05:30
unsigned long dsi_get_pll_hsdiv_dispc_rate ( struct platform_device * dsidev ) ;
int dsi_pll_set_clock_div ( struct platform_device * dsidev ,
struct dsi_clock_info * cinfo ) ;
int dsi_pll_calc_clock_div_pck ( struct platform_device * dsidev , bool is_tft ,
unsigned long req_pck , struct dsi_clock_info * cinfo ,
2009-11-03 11:23:50 +02:00
struct dispc_clock_info * dispc_cinfo ) ;
2011-05-12 17:26:26 +05:30
int dsi_pll_init ( struct platform_device * dsidev , bool enable_hsclk ,
bool enable_hsdiv ) ;
void dsi_pll_uninit ( struct platform_device * dsidev , bool disconnect_lanes ) ;
2009-11-03 11:23:50 +02:00
void dsi_get_overlay_fifo_thresholds ( enum omap_plane plane ,
u32 fifo_size , enum omap_burst_size * burst_size ,
u32 * fifo_low , u32 * fifo_high ) ;
2011-05-12 17:26:26 +05:30
void dsi_wait_pll_hsdiv_dispc_active ( struct platform_device * dsidev ) ;
void dsi_wait_pll_hsdiv_dsi_active ( struct platform_device * dsidev ) ;
struct platform_device * dsi_get_dsidev_from_id ( int module ) ;
2010-05-07 11:58:41 +02:00
# else
2011-01-24 06:22:02 +00:00
static inline int dsi_init_platform_driver ( void )
2010-05-07 11:58:41 +02:00
{
return 0 ;
}
2011-01-24 06:22:02 +00:00
static inline void dsi_uninit_platform_driver ( void )
2010-05-07 11:58:41 +02:00
{
}
2011-05-12 17:26:26 +05:30
static inline unsigned long dsi_get_pll_hsdiv_dispc_rate ( struct platform_device * dsidev )
2011-03-08 05:50:34 -06:00
{
WARN ( " %s: DSI not compiled in, returning rate as 0 \n " , __func__ ) ;
return 0 ;
}
2011-05-12 17:26:26 +05:30
static inline void dsi_wait_pll_hsdiv_dispc_active ( struct platform_device * dsidev )
2010-06-09 15:28:12 +03:00
{
}
2011-05-12 17:26:26 +05:30
static inline void dsi_wait_pll_hsdiv_dsi_active ( struct platform_device * dsidev )
2010-06-09 15:28:12 +03:00
{
}
2011-05-12 17:26:26 +05:30
static inline struct platform_device * dsi_get_dsidev_from_id ( int module )
{
WARN ( " %s: DSI not compiled in, returning platform device as NULL \n " ,
__func__ ) ;
return NULL ;
}
2010-05-07 11:58:41 +02:00
# endif
2009-11-03 11:23:50 +02:00
/* DPI */
2010-05-07 11:58:41 +02:00
# ifdef CONFIG_OMAP2_DSS_DPI
2011-03-02 12:32:48 +02:00
int dpi_init ( void ) ;
2009-11-03 11:23:50 +02:00
void dpi_exit ( void ) ;
int dpi_init_display ( struct omap_dss_device * dssdev ) ;
2010-05-07 11:58:41 +02:00
# else
2011-03-02 12:32:48 +02:00
static inline int dpi_init ( void )
2010-05-07 11:58:41 +02:00
{
return 0 ;
}
static inline void dpi_exit ( void )
{
}
# endif
2009-11-03 11:23:50 +02:00
/* DISPC */
2011-01-24 06:22:00 +00:00
int dispc_init_platform_driver ( void ) ;
void dispc_uninit_platform_driver ( void ) ;
2009-11-03 11:23:50 +02:00
void dispc_dump_clocks ( struct seq_file * s ) ;
2009-12-17 14:35:21 +02:00
void dispc_dump_irqs ( struct seq_file * s ) ;
2009-11-03 11:23:50 +02:00
void dispc_dump_regs ( struct seq_file * s ) ;
void dispc_irq_handler ( void ) ;
void dispc_fake_vsync_irq ( void ) ;
void dispc_save_context ( void ) ;
void dispc_restore_context ( void ) ;
void dispc_enable_sidle ( void ) ;
void dispc_disable_sidle ( void ) ;
void dispc_lcd_enable_signal_polarity ( bool act_high ) ;
void dispc_lcd_enable_signal ( bool enable ) ;
void dispc_pck_free_enable ( bool enable ) ;
2010-12-02 11:27:10 +00:00
void dispc_enable_fifohandcheck ( enum omap_channel channel , bool enable ) ;
2009-11-03 11:23:50 +02:00
2010-12-02 11:27:10 +00:00
void dispc_set_lcd_size ( enum omap_channel channel , u16 width , u16 height ) ;
2009-11-03 11:23:50 +02:00
void dispc_set_digit_size ( u16 width , u16 height ) ;
u32 dispc_get_plane_fifo_size ( enum omap_plane plane ) ;
void dispc_setup_plane_fifo ( enum omap_plane plane , u32 low , u32 high ) ;
void dispc_enable_fifomerge ( bool enable ) ;
void dispc_set_burst_size ( enum omap_plane plane ,
enum omap_burst_size burst_size ) ;
void dispc_set_plane_ba0 ( enum omap_plane plane , u32 paddr ) ;
void dispc_set_plane_ba1 ( enum omap_plane plane , u32 paddr ) ;
void dispc_set_plane_pos ( enum omap_plane plane , u16 x , u16 y ) ;
void dispc_set_plane_size ( enum omap_plane plane , u16 width , u16 height ) ;
void dispc_set_channel_out ( enum omap_plane plane ,
enum omap_channel channel_out ) ;
2011-03-11 18:02:49 +05:30
void dispc_enable_gamma_table ( bool enable ) ;
2009-11-03 11:23:50 +02:00
int dispc_setup_plane ( enum omap_plane plane ,
u32 paddr , u16 screen_width ,
u16 pos_x , u16 pos_y ,
u16 width , u16 height ,
u16 out_width , u16 out_height ,
enum omap_color_mode color_mode ,
bool ilace ,
enum omap_dss_rotation_type rotation_type ,
u8 rotation , bool mirror ,
2010-12-02 11:27:14 +00:00
u8 global_alpha , u8 pre_mult_alpha ,
enum omap_channel channel ) ;
2009-11-03 11:23:50 +02:00
bool dispc_go_busy ( enum omap_channel channel ) ;
void dispc_go ( enum omap_channel channel ) ;
2010-01-08 17:14:53 +02:00
void dispc_enable_channel ( enum omap_channel channel , bool enable ) ;
bool dispc_is_channel_enabled ( enum omap_channel channel ) ;
2009-11-03 11:23:50 +02:00
int dispc_enable_plane ( enum omap_plane plane , bool enable ) ;
void dispc_enable_replication ( enum omap_plane plane , bool enable ) ;
2010-12-02 11:27:10 +00:00
void dispc_set_parallel_interface_mode ( enum omap_channel channel ,
enum omap_parallel_interface_mode mode ) ;
void dispc_set_tft_data_lines ( enum omap_channel channel , u8 data_lines ) ;
void dispc_set_lcd_display_type ( enum omap_channel channel ,
enum omap_lcd_display_type type ) ;
2009-11-03 11:23:50 +02:00
void dispc_set_loadmode ( enum omap_dss_load_mode mode ) ;
void dispc_set_default_color ( enum omap_channel channel , u32 color ) ;
u32 dispc_get_default_color ( enum omap_channel channel ) ;
void dispc_set_trans_key ( enum omap_channel ch ,
enum omap_dss_trans_key_type type ,
u32 trans_key ) ;
void dispc_get_trans_key ( enum omap_channel ch ,
enum omap_dss_trans_key_type * type ,
u32 * trans_key ) ;
void dispc_enable_trans_key ( enum omap_channel ch , bool enable ) ;
void dispc_enable_alpha_blending ( enum omap_channel ch , bool enable ) ;
bool dispc_trans_key_enabled ( enum omap_channel ch ) ;
bool dispc_alpha_blending_enabled ( enum omap_channel ch ) ;
bool dispc_lcd_timings_ok ( struct omap_video_timings * timings ) ;
2010-12-02 11:27:10 +00:00
void dispc_set_lcd_timings ( enum omap_channel channel ,
struct omap_video_timings * timings ) ;
2009-11-03 11:23:50 +02:00
unsigned long dispc_fclk_rate ( void ) ;
2010-12-02 11:27:11 +00:00
unsigned long dispc_lclk_rate ( enum omap_channel channel ) ;
unsigned long dispc_pclk_rate ( enum omap_channel channel ) ;
void dispc_set_pol_freq ( enum omap_channel channel ,
enum omap_panel_config config , u8 acbi , u8 acb ) ;
2009-11-03 11:23:50 +02:00
void dispc_find_clk_divs ( bool is_tft , unsigned long req_pck , unsigned long fck ,
struct dispc_clock_info * cinfo ) ;
int dispc_calc_clock_rates ( unsigned long dispc_fclk_rate ,
struct dispc_clock_info * cinfo ) ;
2010-12-02 11:27:11 +00:00
int dispc_set_clock_div ( enum omap_channel channel ,
struct dispc_clock_info * cinfo ) ;
int dispc_get_clock_div ( enum omap_channel channel ,
struct dispc_clock_info * cinfo ) ;
2009-11-03 11:23:50 +02:00
/* VENC */
2010-05-07 11:58:41 +02:00
# ifdef CONFIG_OMAP2_DSS_VENC
2011-01-24 06:22:01 +00:00
int venc_init_platform_driver ( void ) ;
void venc_uninit_platform_driver ( void ) ;
2009-11-03 11:23:50 +02:00
void venc_dump_regs ( struct seq_file * s ) ;
int venc_init_display ( struct omap_dss_device * display ) ;
2010-05-07 11:58:41 +02:00
# else
2011-01-24 06:22:01 +00:00
static inline int venc_init_platform_driver ( void )
2010-05-07 11:58:41 +02:00
{
return 0 ;
}
2011-01-24 06:22:01 +00:00
static inline void venc_uninit_platform_driver ( void )
2010-05-07 11:58:41 +02:00
{
}
# endif
2009-11-03 11:23:50 +02:00
2011-03-12 12:04:27 +05:30
/* HDMI */
# ifdef CONFIG_OMAP4_DSS_HDMI
int hdmi_init_platform_driver ( void ) ;
void hdmi_uninit_platform_driver ( void ) ;
int hdmi_init_display ( struct omap_dss_device * dssdev ) ;
# else
static inline int hdmi_init_display ( struct omap_dss_device * dssdev )
{
return 0 ;
}
static inline int hdmi_init_platform_driver ( void )
{
return 0 ;
}
static inline void hdmi_uninit_platform_driver ( void )
{
}
# endif
int omapdss_hdmi_display_enable ( struct omap_dss_device * dssdev ) ;
void omapdss_hdmi_display_disable ( struct omap_dss_device * dssdev ) ;
void omapdss_hdmi_display_set_timing ( struct omap_dss_device * dssdev ) ;
int omapdss_hdmi_display_check_timing ( struct omap_dss_device * dssdev ,
struct omap_video_timings * timings ) ;
2011-03-10 15:48:48 +05:30
int hdmi_panel_init ( void ) ;
void hdmi_panel_exit ( void ) ;
2011-03-12 12:04:27 +05:30
2009-11-03 11:23:50 +02:00
/* RFBI */
2010-05-07 11:58:41 +02:00
# ifdef CONFIG_OMAP2_DSS_RFBI
2011-01-24 06:21:59 +00:00
int rfbi_init_platform_driver ( void ) ;
void rfbi_uninit_platform_driver ( void ) ;
2009-11-03 11:23:50 +02:00
void rfbi_dump_regs ( struct seq_file * s ) ;
int rfbi_configure ( int rfbi_module , int bpp , int lines ) ;
void rfbi_enable_rfbi ( bool enable ) ;
2010-12-02 11:27:10 +00:00
void rfbi_transfer_area ( struct omap_dss_device * dssdev , u16 width ,
u16 height , void ( callback ) ( void * data ) , void * data ) ;
2009-11-03 11:23:50 +02:00
void rfbi_set_timings ( int rfbi_module , struct rfbi_timings * t ) ;
unsigned long rfbi_get_max_tx_rate ( void ) ;
int rfbi_init_display ( struct omap_dss_device * display ) ;
2010-05-07 11:58:41 +02:00
# else
2011-01-24 06:21:59 +00:00
static inline int rfbi_init_platform_driver ( void )
2010-05-07 11:58:41 +02:00
{
return 0 ;
}
2011-01-24 06:21:59 +00:00
static inline void rfbi_uninit_platform_driver ( void )
2010-05-07 11:58:41 +02:00
{
}
# endif
2009-11-03 11:23:50 +02:00
2009-12-17 14:35:21 +02:00
# ifdef CONFIG_OMAP2_DSS_COLLECT_IRQ_STATS
static inline void dss_collect_irq_stats ( u32 irqstatus , unsigned * irq_arr )
{
int b ;
for ( b = 0 ; b < 32 ; + + b ) {
if ( irqstatus & ( 1 < < b ) )
irq_arr [ b ] + + ;
}
}
# endif
2009-11-03 11:23:50 +02:00
# endif