Commit 946fd35f authored by Francisco Jerez's avatar Francisco Jerez Committed by Ben Skeggs

drm/nouveau: Get rid of the remaining VGA CRTC locking.

Signed-off-by: default avatarFrancisco Jerez <currojerez@riseup.net>
Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent c88c2e06
...@@ -6550,11 +6550,8 @@ nouveau_run_vbios_init(struct drm_device *dev) ...@@ -6550,11 +6550,8 @@ nouveau_run_vbios_init(struct drm_device *dev)
struct nvbios *bios = &dev_priv->vbios; struct nvbios *bios = &dev_priv->vbios;
int i, ret = 0; int i, ret = 0;
NVLockVgaCrtcs(dev, false); /* Reset the BIOS head to 0. */
if (nv_two_heads(dev)) {
bios->state.crtchead = 0; bios->state.crtchead = 0;
NVSetOwner(dev, 0);
}
if (bios->major_version < 5) /* BMP only */ if (bios->major_version < 5) /* BMP only */
load_nv17_hw_sequencer_ucode(dev, bios); load_nv17_hw_sequencer_ucode(dev, bios);
...@@ -6587,8 +6584,6 @@ nouveau_run_vbios_init(struct drm_device *dev) ...@@ -6587,8 +6584,6 @@ nouveau_run_vbios_init(struct drm_device *dev)
} }
} }
NVLockVgaCrtcs(dev, true);
return ret; return ret;
} }
...@@ -6618,13 +6613,11 @@ nouveau_bios_posted(struct drm_device *dev) ...@@ -6618,13 +6613,11 @@ nouveau_bios_posted(struct drm_device *dev)
return true; return true;
} }
NVLockVgaCrtcs(dev, false);
htotal = NVReadVgaCrtc(dev, 0, 0x06); htotal = NVReadVgaCrtc(dev, 0, 0x06);
htotal |= (NVReadVgaCrtc(dev, 0, 0x07) & 0x01) << 8; htotal |= (NVReadVgaCrtc(dev, 0, 0x07) & 0x01) << 8;
htotal |= (NVReadVgaCrtc(dev, 0, 0x07) & 0x20) << 4; htotal |= (NVReadVgaCrtc(dev, 0, 0x07) & 0x20) << 4;
htotal |= (NVReadVgaCrtc(dev, 0, 0x25) & 0x01) << 10; htotal |= (NVReadVgaCrtc(dev, 0, 0x25) & 0x01) << 10;
htotal |= (NVReadVgaCrtc(dev, 0, 0x41) & 0x01) << 11; htotal |= (NVReadVgaCrtc(dev, 0, 0x41) & 0x01) << 11;
NVLockVgaCrtcs(dev, true);
return (htotal != 0); return (htotal != 0);
} }
...@@ -6668,14 +6661,12 @@ nouveau_bios_init(struct drm_device *dev) ...@@ -6668,14 +6661,12 @@ nouveau_bios_init(struct drm_device *dev)
return ret; return ret;
/* feature_byte on BMP is poor, but init always sets CR4B */ /* feature_byte on BMP is poor, but init always sets CR4B */
NVLockVgaCrtcs(dev, false);
if (bios->major_version < 5) if (bios->major_version < 5)
bios->is_mobile = NVReadVgaCrtc(dev, 0, NV_CIO_CRE_4B) & 0x40; bios->is_mobile = NVReadVgaCrtc(dev, 0, NV_CIO_CRE_4B) & 0x40;
/* all BIT systems need p_f_m_t for digital_min_front_porch */ /* all BIT systems need p_f_m_t for digital_min_front_porch */
if (bios->is_mobile || bios->major_version >= 5) if (bios->is_mobile || bios->major_version >= 5)
ret = parse_fp_mode_table(dev, bios); ret = parse_fp_mode_table(dev, bios);
NVLockVgaCrtcs(dev, true);
/* allow subsequent scripts to execute */ /* allow subsequent scripts to execute */
bios->execute = true; bios->execute = true;
......
...@@ -305,21 +305,18 @@ nouveau_i2c_identify(struct drm_device *dev, const char *what, ...@@ -305,21 +305,18 @@ nouveau_i2c_identify(struct drm_device *dev, const char *what,
struct i2c_board_info *info, int index) struct i2c_board_info *info, int index)
{ {
struct nouveau_i2c_chan *i2c = nouveau_i2c_find(dev, index); struct nouveau_i2c_chan *i2c = nouveau_i2c_find(dev, index);
int was_locked, i; int i;
was_locked = NVLockVgaCrtcs(dev, false);
NV_DEBUG(dev, "Probing %ss on I2C bus: %d\n", what, index); NV_DEBUG(dev, "Probing %ss on I2C bus: %d\n", what, index);
for (i = 0; info[i].addr; i++) { for (i = 0; info[i].addr; i++) {
if (nouveau_probe_i2c_addr(i2c, info[i].addr)) { if (nouveau_probe_i2c_addr(i2c, info[i].addr)) {
NV_INFO(dev, "Detected %s: %s\n", what, info[i].type); NV_INFO(dev, "Detected %s: %s\n", what, info[i].type);
goto out; return i;
} }
} }
NV_DEBUG(dev, "No devices found.\n"); NV_DEBUG(dev, "No devices found.\n");
out:
NVLockVgaCrtcs(dev, was_locked);
return info[i].addr ? i : -ENODEV; return -ENODEV;
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment