1 /* arch/arm/mach-msm/include/mach/msm_fb.h
3 * Internal shared definitions for various MSM framebuffer parts.
5 * Copyright (C) 2007 Google Incorporated
7 * This software is licensed under the terms of the GNU General Public
8 * License version 2, as published by the Free Software Foundation, and
9 * may be copied, distributed, and modified under those terms.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
20 #include <linux/device.h>
25 int xres
; /* x resolution in pixels */
26 int yres
; /* y resolution in pixels */
27 int width
; /* disply width in mm */
28 int height
; /* display height in mm */
29 unsigned output_format
;
32 struct msmfb_callback
{
33 void (*func
)(struct msmfb_callback
*);
37 MSM_MDDI_PMDH_INTERFACE
,
38 MSM_MDDI_EMDH_INTERFACE
,
42 #define MSMFB_CAP_PARTIAL_UPDATES (1 << 0)
44 struct msm_panel_data
{
45 /* turns off the fb memory */
46 int (*suspend
)(struct msm_panel_data
*);
47 /* turns on the fb memory */
48 int (*resume
)(struct msm_panel_data
*);
49 /* turns off the panel */
50 int (*blank
)(struct msm_panel_data
*);
51 /* turns on the panel */
52 int (*unblank
)(struct msm_panel_data
*);
53 void (*wait_vsync
)(struct msm_panel_data
*);
54 void (*request_vsync
)(struct msm_panel_data
*, struct msmfb_callback
*);
55 void (*clear_vsync
)(struct msm_panel_data
*);
56 /* from the enum above */
57 unsigned interface_type
;
58 /* data to be passed to the fb driver */
59 struct msm_fb_data
*fb_data
;
61 /* capabilities supported by the panel */
65 struct msm_mddi_client_data
{
66 void (*suspend
)(struct msm_mddi_client_data
*);
67 void (*resume
)(struct msm_mddi_client_data
*);
68 void (*activate_link
)(struct msm_mddi_client_data
*);
69 void (*remote_write
)(struct msm_mddi_client_data
*, uint32_t val
,
71 uint32_t (*remote_read
)(struct msm_mddi_client_data
*, uint32_t reg
);
72 void (*auto_hibernate
)(struct msm_mddi_client_data
*, int);
73 /* custom data that needs to be passed from the board file to a
74 * particular client */
75 void *private_client_data
;
76 struct resource
*fb_resource
;
77 /* from the list above */
78 unsigned interface_type
;
81 struct msm_mddi_platform_data
{
82 unsigned int clk_rate
;
83 void (*power_client
)(struct msm_mddi_client_data
*, int on
);
85 /* fixup the mfr name, product id */
86 void (*fixup
)(uint16_t *mfr_name
, uint16_t *product_id
);
88 struct resource
*fb_resource
; /*optional*/
89 /* number of clients in the list that follows */
91 /* array of client information of clients */
93 unsigned product_id
; /* mfr id in top 16 bits, product id
96 char *name
; /* the device name will be the platform
97 * device name registered for the client,
98 * it should match the name of the associated
101 unsigned id
; /* id for mddi client device node, will also
102 * be used as device id of panel devices, if
103 * the client device will have multiple panels
104 * space must be left here for them
106 void *client_data
; /* required private client data */
107 unsigned int clk_rate
; /* optional: if the client requires a
108 * different mddi clk rate
110 } client_platform_data
[];
117 void (*dma
)(struct mdp_device
*mpd
, uint32_t addr
,
118 uint32_t stride
, uint32_t w
, uint32_t h
, uint32_t x
,
119 uint32_t y
, struct msmfb_callback
*callback
, int interface
);
120 void (*dma_wait
)(struct mdp_device
*mdp
);
121 int (*blit
)(struct mdp_device
*mdp
, struct fb_info
*fb
,
122 struct mdp_blit_req
*req
);
123 void (*set_grp_disp
)(struct mdp_device
*mdp
, uint32_t disp_id
);
126 struct class_interface
;
127 int register_mdp_client(struct class_interface
*class_intf
);
129 /**** private client data structs go below this line ***/
131 struct msm_mddi_bridge_platform_data
{
132 /* from board file */
133 int (*init
)(struct msm_mddi_bridge_platform_data
*,
134 struct msm_mddi_client_data
*);
135 int (*uninit
)(struct msm_mddi_bridge_platform_data
*,
136 struct msm_mddi_client_data
*);
137 /* passed to panel for use by the fb driver */
138 int (*blank
)(struct msm_mddi_bridge_platform_data
*,
139 struct msm_mddi_client_data
*);
140 int (*unblank
)(struct msm_mddi_bridge_platform_data
*,
141 struct msm_mddi_client_data
*);
142 struct msm_fb_data fb_data
;