Merge branch 'drm-nouveau-fixes' of git://git.freedesktop.org/git/nouveau/linux-2.6 into drm-fixes
* 'drm-nouveau-fixes' of git://git.freedesktop.org/git/nouveau/linux-2.6: 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
e6586240a6
|
@ -6156,11 +6156,15 @@ dcb_fake_connectors(struct nvbios *bios)
|
||||||
|
|
||||||
/* heuristic: if we ever get a non-zero connector field, assume
|
/* heuristic: if we ever get a non-zero connector field, assume
|
||||||
* that all the indices are valid and we don't need fake them.
|
* that all the indices are valid and we don't need fake them.
|
||||||
|
*
|
||||||
|
* and, as usual, a blacklist of boards with bad bios data..
|
||||||
*/
|
*/
|
||||||
|
if (!nv_match_device(bios->dev, 0x0392, 0x107d, 0x20a2)) {
|
||||||
for (i = 0; i < dcbt->entries; i++) {
|
for (i = 0; i < dcbt->entries; i++) {
|
||||||
if (dcbt->entry[i].connector)
|
if (dcbt->entry[i].connector)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* no useful connector info available, we need to make it up
|
/* no useful connector info available, we need to make it up
|
||||||
* ourselves. the rule here is: anything on the same i2c bus
|
* ourselves. the rule here is: anything on the same i2c bus
|
||||||
|
|
|
@ -32,7 +32,9 @@ static bool
|
||||||
hdmi_sor(struct drm_encoder *encoder)
|
hdmi_sor(struct drm_encoder *encoder)
|
||||||
{
|
{
|
||||||
struct drm_nouveau_private *dev_priv = encoder->dev->dev_private;
|
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 false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -65,7 +65,7 @@ nv10_gpio_drive(struct drm_device *dev, int line, int dir, int out)
|
||||||
if (line < 10) {
|
if (line < 10) {
|
||||||
line = (line - 2) * 4;
|
line = (line - 2) * 4;
|
||||||
reg = NV_PCRTC_GPIO_EXT;
|
reg = NV_PCRTC_GPIO_EXT;
|
||||||
mask = 0x00000003 << ((line - 2) * 4);
|
mask = 0x00000003;
|
||||||
data = (dir << 1) | out;
|
data = (dir << 1) | out;
|
||||||
} else
|
} else
|
||||||
if (line < 14) {
|
if (line < 14) {
|
||||||
|
|
|
@ -54,6 +54,11 @@ nvc0_mfb_isr(struct drm_device *dev)
|
||||||
nvc0_mfb_subp_isr(dev, unit, subp);
|
nvc0_mfb_subp_isr(dev, unit, subp);
|
||||||
units &= ~(1 << unit);
|
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
|
static void
|
||||||
|
|
Loading…
Reference in New Issue