Rev 5354 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 5354 | Rev 6084 | ||
---|---|---|---|
Line 78... | Line 78... | ||
78 | #define BDB_MODE_SUPPORT_LIST 4 |
78 | #define BDB_MODE_SUPPORT_LIST 4 |
79 | #define BDB_GENERIC_MODE_TABLE 5 |
79 | #define BDB_GENERIC_MODE_TABLE 5 |
80 | #define BDB_EXT_MMIO_REGS 6 |
80 | #define BDB_EXT_MMIO_REGS 6 |
81 | #define BDB_SWF_IO 7 |
81 | #define BDB_SWF_IO 7 |
82 | #define BDB_SWF_MMIO 8 |
82 | #define BDB_SWF_MMIO 8 |
83 | #define BDB_DOT_CLOCK_TABLE 9 |
83 | #define BDB_PSR 9 |
84 | #define BDB_MODE_REMOVAL_TABLE 10 |
84 | #define BDB_MODE_REMOVAL_TABLE 10 |
85 | #define BDB_CHILD_DEVICE_TABLE 11 |
85 | #define BDB_CHILD_DEVICE_TABLE 11 |
86 | #define BDB_DRIVER_FEATURES 12 |
86 | #define BDB_DRIVER_FEATURES 12 |
87 | #define BDB_DRIVER_PERSISTENCE 13 |
87 | #define BDB_DRIVER_PERSISTENCE 13 |
88 | #define BDB_EXT_TABLE_PTRS 14 |
88 | #define BDB_EXT_TABLE_PTRS 14 |
Line 201... | Line 201... | ||
201 | 201 | ||
202 | #define DEVICE_PORT_DVOA 0x00 /* none on 845+ */ |
202 | #define DEVICE_PORT_DVOA 0x00 /* none on 845+ */ |
203 | #define DEVICE_PORT_DVOB 0x01 |
203 | #define DEVICE_PORT_DVOB 0x01 |
Line -... | Line 204... | ||
- | 204 | #define DEVICE_PORT_DVOC 0x02 |
|
204 | #define DEVICE_PORT_DVOC 0x02 |
205 | |
205 | 206 | /* |
|
- | 207 | * We used to keep this struct but without any version control. We should avoid |
|
206 | /* We used to keep this struct but without any version control. We should avoid |
208 | * using it in the future, but it should be safe to keep using it in the old |
207 | * using it in the future, but it should be safe to keep using it in the old |
209 | * code. Do not change; we rely on its size. |
208 | * code. */ |
210 | */ |
209 | struct old_child_dev_config { |
211 | struct old_child_dev_config { |
210 | u16 handle; |
212 | u16 handle; |
211 | u16 device_type; |
213 | u16 device_type; |
Line 229... | Line 231... | ||
229 | } __packed; |
231 | } __packed; |
Line 230... | Line 232... | ||
230 | 232 | ||
231 | /* This one contains field offsets that are known to be common for all BDB |
233 | /* This one contains field offsets that are known to be common for all BDB |
232 | * versions. Notice that the meaning of the contents contents may still change, |
234 | * versions. Notice that the meaning of the contents contents may still change, |
- | 235 | * but at least the offsets are consistent. */ |
|
- | 236 | ||
- | 237 | /* Definitions for flags_1 */ |
|
- | 238 | #define IBOOST_ENABLE (1<<3) |
|
233 | * but at least the offsets are consistent. */ |
239 | |
234 | struct common_child_dev_config { |
240 | struct common_child_dev_config { |
235 | u16 handle; |
241 | u16 handle; |
236 | u16 device_type; |
242 | u16 device_type; |
237 | u8 not_common1[12]; |
243 | u8 not_common1[12]; |
238 | u8 dvo_port; |
244 | u8 dvo_port; |
239 | u8 not_common2[2]; |
245 | u8 not_common2[2]; |
240 | u8 ddc_pin; |
246 | u8 ddc_pin; |
- | 247 | u16 edid_ptr; |
|
- | 248 | u8 obsolete; |
|
- | 249 | u8 flags_1; |
|
- | 250 | u8 not_common3[13]; |
|
241 | u16 edid_ptr; |
251 | u8 iboost_level; |
Line -... | Line 252... | ||
- | 252 | } __packed; |
|
242 | } __packed; |
253 | |
243 | 254 | ||
244 | /* This field changes depending on the BDB version, so the most reliable way to |
255 | /* This field changes depending on the BDB version, so the most reliable way to |
245 | * read it is by checking the BDB version and reading the raw pointer. */ |
256 | * read it is by checking the BDB version and reading the raw pointer. */ |
246 | union child_device_config { |
257 | union child_device_config { |
Line 275... | Line 286... | ||
275 | * On some platforms the number of device is 6. But could be as few as |
286 | * On some platforms the number of device is 6. But could be as few as |
276 | * 4 if both TV and LVDS are missing. |
287 | * 4 if both TV and LVDS are missing. |
277 | * And the device num is related with the size of general definition |
288 | * And the device num is related with the size of general definition |
278 | * block. It is obtained by using the following formula: |
289 | * block. It is obtained by using the following formula: |
279 | * number = (block_size - sizeof(bdb_general_definitions))/ |
290 | * number = (block_size - sizeof(bdb_general_definitions))/ |
280 | * sizeof(child_device_config); |
291 | * defs->child_dev_size; |
281 | */ |
292 | */ |
282 | union child_device_config devices[0]; |
293 | uint8_t devices[0]; |
283 | } __packed; |
294 | } __packed; |
Line 284... | Line 295... | ||
284 | 295 | ||
285 | /* Mask for DRRS / Panel Channel / SSC / BLT control bits extraction */ |
296 | /* Mask for DRRS / Panel Channel / SSC / BLT control bits extraction */ |
Line 552... | Line 563... | ||
552 | u32 sdrrs_msa_timing_delay; |
563 | u32 sdrrs_msa_timing_delay; |
Line 553... | Line 564... | ||
553 | 564 | ||
554 | /* ith bit indicates enabled/disabled for (i+1)th panel */ |
565 | /* ith bit indicates enabled/disabled for (i+1)th panel */ |
555 | u16 edp_s3d_feature; |
566 | u16 edp_s3d_feature; |
- | 567 | u16 edp_t3_optimization; |
|
- | 568 | u64 edp_vswing_preemph; /* v173 */ |
|
- | 569 | } __packed; |
|
- | 570 | ||
- | 571 | struct psr_table { |
|
- | 572 | /* Feature bits */ |
|
- | 573 | u8 full_link:1; |
|
- | 574 | u8 require_aux_to_wakeup:1; |
|
- | 575 | u8 feature_bits_rsvd:6; |
|
- | 576 | ||
- | 577 | /* Wait times */ |
|
- | 578 | u8 idle_frames:4; |
|
- | 579 | u8 lines_to_wait:3; |
|
- | 580 | u8 wait_times_rsvd:1; |
|
- | 581 | ||
- | 582 | /* TP wake up time in multiple of 100 */ |
|
- | 583 | u16 tp1_wakeup_time; |
|
- | 584 | u16 tp2_tp3_wakeup_time; |
|
- | 585 | } __packed; |
|
- | 586 | ||
- | 587 | struct bdb_psr { |
|
556 | u16 edp_t3_optimization; |
588 | struct psr_table psr_table[16]; |
Line 557... | Line -... | ||
557 | } __packed; |
- | |
558 | 589 | } __packed; |
|
Line 559... | Line 590... | ||
559 | void intel_setup_bios(struct drm_device *dev); |
590 | |
560 | int intel_parse_bios(struct drm_device *dev); |
591 | int intel_parse_bios(struct drm_device *dev); |
561 | 592 | ||
Line 708... | Line 739... | ||
708 | * Depending on the system, the other bits may or may not |
739 | * Depending on the system, the other bits may or may not |
709 | * be set for eDP outputs. |
740 | * be set for eDP outputs. |
710 | */ |
741 | */ |
711 | #define DEVICE_TYPE_eDP_BITS \ |
742 | #define DEVICE_TYPE_eDP_BITS \ |
712 | (DEVICE_TYPE_INTERNAL_CONNECTOR | \ |
743 | (DEVICE_TYPE_INTERNAL_CONNECTOR | \ |
713 | DEVICE_TYPE_NOT_HDMI_OUTPUT | \ |
- | |
714 | DEVICE_TYPE_MIPI_OUTPUT | \ |
744 | DEVICE_TYPE_MIPI_OUTPUT | \ |
715 | DEVICE_TYPE_COMPOSITE_OUTPUT | \ |
745 | DEVICE_TYPE_COMPOSITE_OUTPUT | \ |
716 | DEVICE_TYPE_DUAL_CHANNEL | \ |
746 | DEVICE_TYPE_DUAL_CHANNEL | \ |
717 | DEVICE_TYPE_LVDS_SINGALING | \ |
747 | DEVICE_TYPE_LVDS_SINGALING | \ |
718 | DEVICE_TYPE_TMDS_DVI_SIGNALING | \ |
748 | DEVICE_TYPE_TMDS_DVI_SIGNALING | \ |
719 | DEVICE_TYPE_VIDEO_SIGNALING | \ |
749 | DEVICE_TYPE_VIDEO_SIGNALING | \ |
720 | DEVICE_TYPE_DISPLAYPORT_OUTPUT | \ |
750 | DEVICE_TYPE_DISPLAYPORT_OUTPUT | \ |
721 | DEVICE_TYPE_DIGITAL_OUTPUT | \ |
- | |
722 | DEVICE_TYPE_ANALOG_OUTPUT) |
751 | DEVICE_TYPE_ANALOG_OUTPUT) |
Line 723... | Line 752... | ||
723 | 752 | ||
724 | /* define the DVO port for HDMI output type */ |
753 | /* define the DVO port for HDMI output type */ |
725 | #define DVO_B 1 |
754 | #define DVO_B 1 |
726 | #define DVO_C 2 |
755 | #define DVO_C 2 |
Line 727... | Line -... | ||
727 | #define DVO_D 3 |
- | |
728 | - | ||
729 | /* define the PORT for DP output type */ |
- | |
730 | #define PORT_IDPB 7 |
- | |
731 | #define PORT_IDPC 8 |
- | |
732 | #define PORT_IDPD 9 |
756 | #define DVO_D 3 |
733 | 757 | ||
734 | /* Possible values for the "DVO Port" field for versions >= 155: */ |
758 | /* Possible values for the "DVO Port" field for versions >= 155: */ |
735 | #define DVO_PORT_HDMIA 0 |
759 | #define DVO_PORT_HDMIA 0 |
736 | #define DVO_PORT_HDMIB 1 |
760 | #define DVO_PORT_HDMIB 1 |
Line 741... | Line 765... | ||
741 | #define DVO_PORT_CRT 6 |
765 | #define DVO_PORT_CRT 6 |
742 | #define DVO_PORT_DPB 7 |
766 | #define DVO_PORT_DPB 7 |
743 | #define DVO_PORT_DPC 8 |
767 | #define DVO_PORT_DPC 8 |
744 | #define DVO_PORT_DPD 9 |
768 | #define DVO_PORT_DPD 9 |
745 | #define DVO_PORT_DPA 10 |
769 | #define DVO_PORT_DPA 10 |
- | 770 | #define DVO_PORT_DPE 11 |
|
- | 771 | #define DVO_PORT_HDMIE 12 |
|
746 | #define DVO_PORT_MIPIA 21 |
772 | #define DVO_PORT_MIPIA 21 |
747 | #define DVO_PORT_MIPIB 22 |
773 | #define DVO_PORT_MIPIB 22 |
748 | #define DVO_PORT_MIPIC 23 |
774 | #define DVO_PORT_MIPIC 23 |
749 | #define DVO_PORT_MIPID 24 |
775 | #define DVO_PORT_MIPID 24 |
Line 755... | Line 781... | ||
755 | #define MAX_MIPI_CONFIGURATIONS 6 |
781 | #define MAX_MIPI_CONFIGURATIONS 6 |
Line 756... | Line 782... | ||
756 | 782 | ||
757 | #define MIPI_DSI_UNDEFINED_PANEL_ID 0 |
783 | #define MIPI_DSI_UNDEFINED_PANEL_ID 0 |
Line -... | Line 784... | ||
- | 784 | #define MIPI_DSI_GENERIC_PANEL_ID 1 |
|
- | 785 | ||
- | 786 | /* |
|
- | 787 | * PMIC vs SoC Backlight support specified in pwm_blc |
|
- | 788 | * field in mipi_config block below. |
|
- | 789 | */ |
|
- | 790 | #define PPS_BLC_PMIC 0 |
|
758 | #define MIPI_DSI_GENERIC_PANEL_ID 1 |
791 | #define PPS_BLC_SOC 1 |
759 | 792 | ||
Line 760... | Line 793... | ||
760 | struct mipi_config { |
793 | struct mipi_config { |
761 | u16 panel_id; |
794 | u16 panel_id; |
Line 796... | Line 829... | ||
796 | #define DUAL_LINK_NOT_SUPPORTED 0 |
829 | #define DUAL_LINK_NOT_SUPPORTED 0 |
797 | #define DUAL_LINK_FRONT_BACK 1 |
830 | #define DUAL_LINK_FRONT_BACK 1 |
798 | #define DUAL_LINK_PIXEL_ALT 2 |
831 | #define DUAL_LINK_PIXEL_ALT 2 |
799 | u16 dual_link:2; |
832 | u16 dual_link:2; |
800 | u16 lane_cnt:2; |
833 | u16 lane_cnt:2; |
- | 834 | u16 pixel_overlap:3; |
|
801 | u16 rsvd3:12; |
835 | u16 rsvd3:9; |
Line 802... | Line 836... | ||
802 | 836 | ||
Line 803... | Line 837... | ||
803 | u16 rsvd4; |
837 | u16 rsvd4; |
804 | 838 |