diff options
author | yakui_zhao <yakui.zhao@intel.com> | 2009-05-31 05:16:22 -0400 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2009-06-05 10:13:02 -0400 |
commit | 59a036cfbd29aadf40d2b754cfebee2a96268752 (patch) | |
tree | c81888ad247f2600e1e90085e2e8455f8362bba6 /drivers/gpu | |
parent | 040d87f15a0129242463d3ed7c48381505f596e2 (diff) |
drm/i915: Add the structure of child_device_config in video BIOS tables.
Signed-off-by: Zhao Yakui <yakui.zhao@intel.com>
Signed-off-by: Eric Anholt <eric@anholt.net>
Diffstat (limited to 'drivers/gpu')
-rw-r--r-- | drivers/gpu/drm/i915/intel_bios.h | 101 |
1 files changed, 93 insertions, 8 deletions
diff --git a/drivers/gpu/drm/i915/intel_bios.h b/drivers/gpu/drm/i915/intel_bios.h index 8ca2cde15804..fe72e1c225d8 100644 --- a/drivers/gpu/drm/i915/intel_bios.h +++ b/drivers/gpu/drm/i915/intel_bios.h | |||
@@ -135,6 +135,86 @@ struct bdb_general_features { | |||
135 | u8 rsvd11:6; /* finish byte */ | 135 | u8 rsvd11:6; /* finish byte */ |
136 | } __attribute__((packed)); | 136 | } __attribute__((packed)); |
137 | 137 | ||
138 | /* pre-915 */ | ||
139 | #define GPIO_PIN_DVI_LVDS 0x03 /* "DVI/LVDS DDC GPIO pins" */ | ||
140 | #define GPIO_PIN_ADD_I2C 0x05 /* "ADDCARD I2C GPIO pins" */ | ||
141 | #define GPIO_PIN_ADD_DDC 0x04 /* "ADDCARD DDC GPIO pins" */ | ||
142 | #define GPIO_PIN_ADD_DDC_I2C 0x06 /* "ADDCARD DDC/I2C GPIO pins" */ | ||
143 | |||
144 | /* Pre 915 */ | ||
145 | #define DEVICE_TYPE_NONE 0x00 | ||
146 | #define DEVICE_TYPE_CRT 0x01 | ||
147 | #define DEVICE_TYPE_TV 0x09 | ||
148 | #define DEVICE_TYPE_EFP 0x12 | ||
149 | #define DEVICE_TYPE_LFP 0x22 | ||
150 | /* On 915+ */ | ||
151 | #define DEVICE_TYPE_CRT_DPMS 0x6001 | ||
152 | #define DEVICE_TYPE_CRT_DPMS_HOTPLUG 0x4001 | ||
153 | #define DEVICE_TYPE_TV_COMPOSITE 0x0209 | ||
154 | #define DEVICE_TYPE_TV_MACROVISION 0x0289 | ||
155 | #define DEVICE_TYPE_TV_RF_COMPOSITE 0x020c | ||
156 | #define DEVICE_TYPE_TV_SVIDEO_COMPOSITE 0x0609 | ||
157 | #define DEVICE_TYPE_TV_SCART 0x0209 | ||
158 | #define DEVICE_TYPE_TV_CODEC_HOTPLUG_PWR 0x6009 | ||
159 | #define DEVICE_TYPE_EFP_HOTPLUG_PWR 0x6012 | ||
160 | #define DEVICE_TYPE_EFP_DVI_HOTPLUG_PWR 0x6052 | ||
161 | #define DEVICE_TYPE_EFP_DVI_I 0x6053 | ||
162 | #define DEVICE_TYPE_EFP_DVI_D_DUAL 0x6152 | ||
163 | #define DEVICE_TYPE_EFP_DVI_D_HDCP 0x60d2 | ||
164 | #define DEVICE_TYPE_OPENLDI_HOTPLUG_PWR 0x6062 | ||
165 | #define DEVICE_TYPE_OPENLDI_DUALPIX 0x6162 | ||
166 | #define DEVICE_TYPE_LFP_PANELLINK 0x5012 | ||
167 | #define DEVICE_TYPE_LFP_CMOS_PWR 0x5042 | ||
168 | #define DEVICE_TYPE_LFP_LVDS_PWR 0x5062 | ||
169 | #define DEVICE_TYPE_LFP_LVDS_DUAL 0x5162 | ||
170 | #define DEVICE_TYPE_LFP_LVDS_DUAL_HDCP 0x51e2 | ||
171 | |||
172 | #define DEVICE_CFG_NONE 0x00 | ||
173 | #define DEVICE_CFG_12BIT_DVOB 0x01 | ||
174 | #define DEVICE_CFG_12BIT_DVOC 0x02 | ||
175 | #define DEVICE_CFG_24BIT_DVOBC 0x09 | ||
176 | #define DEVICE_CFG_24BIT_DVOCB 0x0a | ||
177 | #define DEVICE_CFG_DUAL_DVOB 0x11 | ||
178 | #define DEVICE_CFG_DUAL_DVOC 0x12 | ||
179 | #define DEVICE_CFG_DUAL_DVOBC 0x13 | ||
180 | #define DEVICE_CFG_DUAL_LINK_DVOBC 0x19 | ||
181 | #define DEVICE_CFG_DUAL_LINK_DVOCB 0x1a | ||
182 | |||
183 | #define DEVICE_WIRE_NONE 0x00 | ||
184 | #define DEVICE_WIRE_DVOB 0x01 | ||
185 | #define DEVICE_WIRE_DVOC 0x02 | ||
186 | #define DEVICE_WIRE_DVOBC 0x03 | ||
187 | #define DEVICE_WIRE_DVOBB 0x05 | ||
188 | #define DEVICE_WIRE_DVOCC 0x06 | ||
189 | #define DEVICE_WIRE_DVOB_MASTER 0x0d | ||
190 | #define DEVICE_WIRE_DVOC_MASTER 0x0e | ||
191 | |||
192 | #define DEVICE_PORT_DVOA 0x00 /* none on 845+ */ | ||
193 | #define DEVICE_PORT_DVOB 0x01 | ||
194 | #define DEVICE_PORT_DVOC 0x02 | ||
195 | |||
196 | struct child_device_config { | ||
197 | u16 handle; | ||
198 | u16 device_type; | ||
199 | u8 device_id[10]; /* See DEVICE_TYPE_* above */ | ||
200 | u16 addin_offset; | ||
201 | u8 dvo_port; /* See Device_PORT_* above */ | ||
202 | u8 i2c_pin; | ||
203 | u8 slave_addr; | ||
204 | u8 ddc_pin; | ||
205 | u16 edid_ptr; | ||
206 | u8 dvo_cfg; /* See DEVICE_CFG_* above */ | ||
207 | u8 dvo2_port; | ||
208 | u8 i2c2_pin; | ||
209 | u8 slave2_addr; | ||
210 | u8 ddc2_pin; | ||
211 | u8 capabilities; | ||
212 | u8 dvo_wiring;/* See DEVICE_WIRE_* above */ | ||
213 | u8 dvo2_wiring; | ||
214 | u16 extended_type; | ||
215 | u8 dvo_function; | ||
216 | } __attribute__((packed)); | ||
217 | |||
138 | struct bdb_general_definitions { | 218 | struct bdb_general_definitions { |
139 | /* DDC GPIO */ | 219 | /* DDC GPIO */ |
140 | u8 crt_ddc_gmbus_pin; | 220 | u8 crt_ddc_gmbus_pin; |
@@ -149,14 +229,19 @@ struct bdb_general_definitions { | |||
149 | u8 boot_display[2]; | 229 | u8 boot_display[2]; |
150 | u8 child_dev_size; | 230 | u8 child_dev_size; |
151 | 231 | ||
152 | /* device info */ | 232 | /* |
153 | u8 tv_or_lvds_info[33]; | 233 | * Device info: |
154 | u8 dev1[33]; | 234 | * If TV is present, it'll be at devices[0]. |
155 | u8 dev2[33]; | 235 | * LVDS will be next, either devices[0] or [1], if present. |
156 | u8 dev3[33]; | 236 | * On some platforms the number of device is 6. But could be as few as |
157 | u8 dev4[33]; | 237 | * 4 if both TV and LVDS are missing. |
158 | /* may be another device block here on some platforms */ | 238 | * And the device num is related with the size of general definition |
159 | }; | 239 | * block. It is obtained by using the following formula: |
240 | * number = (block_size - sizeof(bdb_general_definitions))/ | ||
241 | * sizeof(child_device_config); | ||
242 | */ | ||
243 | struct child_device_config devices[0]; | ||
244 | } __attribute__((packed)); | ||
160 | 245 | ||
161 | struct bdb_lvds_options { | 246 | struct bdb_lvds_options { |
162 | u8 panel_type; | 247 | u8 panel_type; |