diff options
author | Ben Skeggs <bskeggs@redhat.com> | 2011-10-12 02:36:42 -0400 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2011-12-21 04:01:41 -0500 |
commit | b4c26818aeb4159dd537eff6453ae5ebf7a69723 (patch) | |
tree | c88d961c30eb46da840781f5c1173c4cdcf6b8f3 /drivers/gpu/drm/nouveau/nouveau_drv.h | |
parent | befb51e9c97e783c86a1da27bdda3a638d2f02c7 (diff) |
drm/nouveau/mxm: initial implementation of dcb sanitisation
The DCB table provided by the VBIOS on most MXM chips has a number of
entries which either need to be disabled, or modified according to the
MXM-SIS Output Device Descriptors.
The x86 vbios code usually takes care of this for us, however, with the
large number of laptops now with switchable graphics or optimus, a lot
of the time nouveau is responsible for POSTing the card instead - leaving
some fun situations like, plugging in a monitor and having nouveau decide
3 connectors actually just got plugged in..
No MXM-SIS fetching methods implemented yet.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/nouveau/nouveau_drv.h')
-rw-r--r-- | drivers/gpu/drm/nouveau/nouveau_drv.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_drv.h b/drivers/gpu/drm/nouveau/nouveau_drv.h index fb126c1508b5..891c91b14886 100644 --- a/drivers/gpu/drm/nouveau/nouveau_drv.h +++ b/drivers/gpu/drm/nouveau/nouveau_drv.h | |||
@@ -793,6 +793,7 @@ struct drm_nouveau_private { | |||
793 | struct nouveau_vm *chan_vm; | 793 | struct nouveau_vm *chan_vm; |
794 | 794 | ||
795 | struct nvbios vbios; | 795 | struct nvbios vbios; |
796 | u8 *mxms; | ||
796 | struct list_head i2c_ports; | 797 | struct list_head i2c_ports; |
797 | 798 | ||
798 | struct nv04_mode_state mode_reg; | 799 | struct nv04_mode_state mode_reg; |
@@ -864,6 +865,7 @@ extern char *nouveau_perflvl; | |||
864 | extern int nouveau_perflvl_wr; | 865 | extern int nouveau_perflvl_wr; |
865 | extern int nouveau_msi; | 866 | extern int nouveau_msi; |
866 | extern int nouveau_ctxfw; | 867 | extern int nouveau_ctxfw; |
868 | extern int nouveau_mxmdcb; | ||
867 | 869 | ||
868 | extern int nouveau_pci_suspend(struct pci_dev *pdev, pm_message_t pm_state); | 870 | extern int nouveau_pci_suspend(struct pci_dev *pdev, pm_message_t pm_state); |
869 | extern int nouveau_pci_resume(struct pci_dev *pdev); | 871 | extern int nouveau_pci_resume(struct pci_dev *pdev); |
@@ -1108,6 +1110,10 @@ extern int call_lvds_script(struct drm_device *, struct dcb_entry *, int head, | |||
1108 | enum LVDS_script, int pxclk); | 1110 | enum LVDS_script, int pxclk); |
1109 | bool bios_encoder_match(struct dcb_entry *, u32 hash); | 1111 | bool bios_encoder_match(struct dcb_entry *, u32 hash); |
1110 | 1112 | ||
1113 | /* nouveau_mxm.c */ | ||
1114 | int nouveau_mxm_init(struct drm_device *dev); | ||
1115 | void nouveau_mxm_fini(struct drm_device *dev); | ||
1116 | |||
1111 | /* nouveau_ttm.c */ | 1117 | /* nouveau_ttm.c */ |
1112 | int nouveau_ttm_global_init(struct drm_nouveau_private *); | 1118 | int nouveau_ttm_global_init(struct drm_nouveau_private *); |
1113 | void nouveau_ttm_global_release(struct drm_nouveau_private *); | 1119 | void nouveau_ttm_global_release(struct drm_nouveau_private *); |