mirror of https://gitee.com/openkylin/linux.git
Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux
Pull drm fixes from Dave Airlie: "Just some regression fixes from Ben along with a variable that gcc failed to spot is uninitialised." * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux: nouveau: initialise has_optimus variable. drm/nv10/gpio: fix thinko in mask for gpio lines 2-9 nvc0/fb: shut up PMFB interrupt after the first occurrence drm/nouveau/hdmi: use correct hdmi regs for nvaa/nvac drm/nouveau/bios: fix regression on some nv4x board
This commit is contained in:
commit
f5645b5959
|
@ -270,7 +270,7 @@ static bool nouveau_dsm_detect(void)
|
|||
struct acpi_buffer buffer = {sizeof(acpi_method_name), acpi_method_name};
|
||||
struct pci_dev *pdev = NULL;
|
||||
int has_dsm = 0;
|
||||
int has_optimus;
|
||||
int has_optimus = 0;
|
||||
int vga_count = 0;
|
||||
bool guid_valid;
|
||||
int retval;
|
||||
|
|
|
@ -6156,10 +6156,14 @@ dcb_fake_connectors(struct nvbios *bios)
|
|||
|
||||
/* heuristic: if we ever get a non-zero connector field, assume
|
||||
* that all the indices are valid and we don't need fake them.
|
||||
*
|
||||
* and, as usual, a blacklist of boards with bad bios data..
|
||||
*/
|
||||
for (i = 0; i < dcbt->entries; i++) {
|
||||
if (dcbt->entry[i].connector)
|
||||
return;
|
||||
if (!nv_match_device(bios->dev, 0x0392, 0x107d, 0x20a2)) {
|
||||
for (i = 0; i < dcbt->entries; i++) {
|
||||
if (dcbt->entry[i].connector)
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/* no useful connector info available, we need to make it up
|
||||
|
|
|
@ -32,7 +32,9 @@ static bool
|
|||
hdmi_sor(struct drm_encoder *encoder)
|
||||
{
|
||||
struct drm_nouveau_private *dev_priv = encoder->dev->dev_private;
|
||||
if (dev_priv->chipset < 0xa3)
|
||||
if (dev_priv->chipset < 0xa3 ||
|
||||
dev_priv->chipset == 0xaa ||
|
||||
dev_priv->chipset == 0xac)
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -65,7 +65,7 @@ nv10_gpio_drive(struct drm_device *dev, int line, int dir, int out)
|
|||
if (line < 10) {
|
||||
line = (line - 2) * 4;
|
||||
reg = NV_PCRTC_GPIO_EXT;
|
||||
mask = 0x00000003 << ((line - 2) * 4);
|
||||
mask = 0x00000003;
|
||||
data = (dir << 1) | out;
|
||||
} else
|
||||
if (line < 14) {
|
||||
|
|
|
@ -54,6 +54,11 @@ nvc0_mfb_isr(struct drm_device *dev)
|
|||
nvc0_mfb_subp_isr(dev, unit, subp);
|
||||
units &= ~(1 << unit);
|
||||
}
|
||||
|
||||
/* we do something horribly wrong and upset PMFB a lot, so mask off
|
||||
* interrupts from it after the first one until it's fixed
|
||||
*/
|
||||
nv_mask(dev, 0x000640, 0x02000000, 0x00000000);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
Loading…
Reference in New Issue