drm/nouveau: Get rid of the remaining VGA CRTC locking.
authorFrancisco Jerez <currojerez@riseup.net>
Sat, 24 Jul 2010 15:41:48 +0000 (17:41 +0200)
committerBen Skeggs <bskeggs@redhat.com>
Mon, 26 Jul 2010 01:43:43 +0000 (11:43 +1000)
Signed-off-by: Francisco Jerez <currojerez@riseup.net>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/nouveau_bios.c
drivers/gpu/drm/nouveau/nouveau_i2c.c

index aae29cc0cd806f67dd36cab1753085ee02df06f7..40231cea465e67a5c9db52ea1fe867432bcc42af 100644 (file)
@@ -6550,11 +6550,8 @@ nouveau_run_vbios_init(struct drm_device *dev)
        struct nvbios *bios = &dev_priv->vbios;
        int i, ret = 0;
 
-       NVLockVgaCrtcs(dev, false);
-       if (nv_two_heads(dev)) {
-               bios->state.crtchead = 0;
-               NVSetOwner(dev, 0);
-       }
+       /* Reset the BIOS head to 0. */
+       bios->state.crtchead = 0;
 
        if (bios->major_version < 5)    /* BMP only */
                load_nv17_hw_sequencer_ucode(dev, bios);
@@ -6587,8 +6584,6 @@ nouveau_run_vbios_init(struct drm_device *dev)
                }
        }
 
-       NVLockVgaCrtcs(dev, true);
-
        return ret;
 }
 
@@ -6618,13 +6613,11 @@ nouveau_bios_posted(struct drm_device *dev)
                return true;
        }
 
-       NVLockVgaCrtcs(dev, false);
        htotal  = NVReadVgaCrtc(dev, 0, 0x06);
        htotal |= (NVReadVgaCrtc(dev, 0, 0x07) & 0x01) << 8;
        htotal |= (NVReadVgaCrtc(dev, 0, 0x07) & 0x20) << 4;
        htotal |= (NVReadVgaCrtc(dev, 0, 0x25) & 0x01) << 10;
        htotal |= (NVReadVgaCrtc(dev, 0, 0x41) & 0x01) << 11;
-       NVLockVgaCrtcs(dev, true);
 
        return (htotal != 0);
 }
@@ -6668,14 +6661,12 @@ nouveau_bios_init(struct drm_device *dev)
                return ret;
 
        /* feature_byte on BMP is poor, but init always sets CR4B */
-       NVLockVgaCrtcs(dev, false);
        if (bios->major_version < 5)
                bios->is_mobile = NVReadVgaCrtc(dev, 0, NV_CIO_CRE_4B) & 0x40;
 
        /* all BIT systems need p_f_m_t for digital_min_front_porch */
        if (bios->is_mobile || bios->major_version >= 5)
                ret = parse_fp_mode_table(dev, bios);
-       NVLockVgaCrtcs(dev, true);
 
        /* allow subsequent scripts to execute */
        bios->execute = true;
index 5588e66dd9fc9cc86933d3fa38306b8c132338b7..cb0cb34440c6e835246136cd7f6ade3f29e71d21 100644 (file)
@@ -305,21 +305,18 @@ nouveau_i2c_identify(struct drm_device *dev, const char *what,
                     struct i2c_board_info *info, int 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);
 
        for (i = 0; info[i].addr; i++) {
                if (nouveau_probe_i2c_addr(i2c, info[i].addr)) {
                        NV_INFO(dev, "Detected %s: %s\n", what, info[i].type);
-                       goto out;
+                       return i;
                }
        }
 
        NV_DEBUG(dev, "No devices found.\n");
-out:
-       NVLockVgaCrtcs(dev, was_locked);
 
-       return info[i].addr ? i : -ENODEV;
+       return -ENODEV;
 }