Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
include
linux
platform_data
video-msm_fb.h
Go to the documentation of this file.
1
/* arch/arm/mach-msm/include/mach/msm_fb.h
2
*
3
* Internal shared definitions for various MSM framebuffer parts.
4
*
5
* Copyright (C) 2007 Google Incorporated
6
*
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.
10
*
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.
15
*/
16
17
#ifndef _MSM_FB_H_
18
#define _MSM_FB_H_
19
20
#include <linux/device.h>
21
22
struct
mddi_info
;
23
24
struct
msm_fb_data
{
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
;
30
};
31
32
struct
msmfb_callback
{
33
void
(*
func
)(
struct
msmfb_callback
*);
34
};
35
36
enum
{
37
MSM_MDDI_PMDH_INTERFACE
,
38
MSM_MDDI_EMDH_INTERFACE
,
39
MSM_EBI2_INTERFACE
,
40
};
41
42
#define MSMFB_CAP_PARTIAL_UPDATES (1 << 0)
43
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
;
60
61
/* capabilities supported by the panel */
62
uint32_t
caps
;
63
};
64
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
,
70
uint32_t
reg
);
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
;
79
};
80
81
struct
msm_mddi_platform_data
{
82
unsigned
int
clk_rate
;
83
void
(*
power_client
)(
struct
msm_mddi_client_data
*,
int
on);
84
85
/* fixup the mfr name, product id */
86
void
(*
fixup
)(
uint16_t
*mfr_name,
uint16_t
*
product_id
);
87
88
struct
resource
*
fb_resource
;
/*optional*/
89
/* number of clients in the list that follows */
90
int
num_clients
;
91
/* array of client information of clients */
92
struct
{
93
unsigned
product_id
;
/* mfr id in top 16 bits, product id
94
* in lower 16 bits
95
*/
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
99
* driver
100
*/
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
105
*/
106
void
*
client_data
;
/* required private client data */
107
unsigned
int
clk_rate
;
/* optional: if the client requires a
108
* different mddi clk rate
109
*/
110
}
client_platform_data
[];
111
};
112
113
struct
mdp_blit_req
;
114
struct
fb_info
;
115
struct
mdp_device
{
116
struct
device
dev
;
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);
124
};
125
126
struct
class_interface
;
127
int
register_mdp_client
(
struct
class_interface
*class_intf);
128
129
/**** private client data structs go below this line ***/
130
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
;
143
};
144
145
146
147
#endif
Generated on Thu Jan 10 2013 14:52:21 for Linux Kernel by
1.8.2