![Stepan Moskovchenko](/assets/img/avatar_default.png)
Qualcomm development of the MSM SOC framebuffer driver has diverged significantly from the driver used by Android. This is a snapshot of our current driver, in all it's agony. We are putting this in staging to help with the process of converging the two drivers. At this point, the driver has been tested only in dumb framebuffer mode. Signed-off-by: Stepan Moskovchenko <stepanm@codeaurora.org> Signed-off-by: David Brown <davidb@codeaurora.org> Signed-off-by: Abhijeet Dharmapurikar <adharmap@codeaurora.org> [dwalker@codeaurora.org: added a small compile fix and TODO.] Signed-off-by: Daniel Walker <dwalker@codeaurora.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
146 lines
4.2 KiB
C
146 lines
4.2 KiB
C
/* Copyright (c) 2008-2009, Code Aurora Forum. All rights reserved.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions are met:
|
|
* * Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
* * Redistributions in binary form must reproduce the above copyright
|
|
* notice, this list of conditions and the following disclaimer in the
|
|
* documentation and/or other materials provided with the distribution.
|
|
* * Neither the name of Code Aurora nor
|
|
* the names of its contributors may be used to endorse or promote
|
|
* products derived from this software without specific prior written
|
|
* permission.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
* IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
* NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
|
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
|
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
|
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
|
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
*
|
|
*/
|
|
|
|
#ifndef MSM_FB_PANEL_H
|
|
#define MSM_FB_PANEL_H
|
|
|
|
#include "msm_fb_def.h"
|
|
|
|
struct msm_fb_data_type;
|
|
|
|
typedef void (*msm_fb_vsync_handler_type) (void *arg);
|
|
|
|
/* panel id type */
|
|
typedef struct panel_id_s {
|
|
uint16 id;
|
|
uint16 type;
|
|
} panel_id_type;
|
|
|
|
/* panel type list */
|
|
#define NO_PANEL 0xffff /* No Panel */
|
|
#define MDDI_PANEL 1 /* MDDI */
|
|
#define EBI2_PANEL 2 /* EBI2 */
|
|
#define LCDC_PANEL 3 /* internal LCDC type */
|
|
#define EXT_MDDI_PANEL 4 /* Ext.MDDI */
|
|
#define TV_PANEL 5 /* TV */
|
|
#define HDMI_PANEL 6 /* HDMI TV */
|
|
|
|
/* panel class */
|
|
typedef enum {
|
|
DISPLAY_LCD = 0, /* lcd = ebi2/mddi */
|
|
DISPLAY_LCDC, /* lcdc */
|
|
DISPLAY_TV, /* TV Out */
|
|
DISPLAY_EXT_MDDI, /* External MDDI */
|
|
} DISP_TARGET;
|
|
|
|
/* panel device locaiton */
|
|
typedef enum {
|
|
DISPLAY_1 = 0, /* attached as first device */
|
|
DISPLAY_2, /* attached on second device */
|
|
MAX_PHYS_TARGET_NUM,
|
|
} DISP_TARGET_PHYS;
|
|
|
|
/* panel info type */
|
|
struct lcd_panel_info {
|
|
__u32 vsync_enable;
|
|
__u32 refx100;
|
|
__u32 v_back_porch;
|
|
__u32 v_front_porch;
|
|
__u32 v_pulse_width;
|
|
__u32 hw_vsync_mode;
|
|
__u32 vsync_notifier_period;
|
|
};
|
|
|
|
struct lcdc_panel_info {
|
|
__u32 h_back_porch;
|
|
__u32 h_front_porch;
|
|
__u32 h_pulse_width;
|
|
__u32 v_back_porch;
|
|
__u32 v_front_porch;
|
|
__u32 v_pulse_width;
|
|
__u32 border_clr;
|
|
__u32 underflow_clr;
|
|
__u32 hsync_skew;
|
|
};
|
|
|
|
struct mddi_panel_info {
|
|
__u32 vdopkt;
|
|
};
|
|
|
|
struct msm_panel_info {
|
|
__u32 xres;
|
|
__u32 yres;
|
|
__u32 bpp;
|
|
__u32 type;
|
|
__u32 wait_cycle;
|
|
DISP_TARGET_PHYS pdest;
|
|
__u32 bl_max;
|
|
__u32 bl_min;
|
|
__u32 fb_num;
|
|
__u32 clk_rate;
|
|
__u32 clk_min;
|
|
__u32 clk_max;
|
|
__u32 frame_count;
|
|
|
|
union {
|
|
struct mddi_panel_info mddi;
|
|
};
|
|
|
|
union {
|
|
struct lcd_panel_info lcd;
|
|
struct lcdc_panel_info lcdc;
|
|
};
|
|
};
|
|
|
|
struct msm_fb_panel_data {
|
|
struct msm_panel_info panel_info;
|
|
void (*set_rect) (int x, int y, int xres, int yres);
|
|
void (*set_vsync_notifier) (msm_fb_vsync_handler_type, void *arg);
|
|
void (*set_backlight) (struct msm_fb_data_type *);
|
|
|
|
/* function entry chain */
|
|
int (*on) (struct platform_device *pdev);
|
|
int (*off) (struct platform_device *pdev);
|
|
struct platform_device *next;
|
|
};
|
|
|
|
/*===========================================================================
|
|
FUNCTIONS PROTOTYPES
|
|
============================================================================*/
|
|
struct platform_device *msm_fb_device_alloc(struct msm_fb_panel_data *pdata,
|
|
u32 type, u32 id);
|
|
int panel_next_on(struct platform_device *pdev);
|
|
int panel_next_off(struct platform_device *pdev);
|
|
|
|
int lcdc_device_register(struct msm_panel_info *pinfo);
|
|
|
|
int mddi_toshiba_device_register(struct msm_panel_info *pinfo,
|
|
u32 channel, u32 panel);
|
|
|
|
#endif /* MSM_FB_PANEL_H */
|