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 | |
| 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>
| -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; |
