Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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

parent c88c2e06
Loading
Loading
Loading
Loading
+2 −11
Original line number Diff line number Diff line
@@ -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)) {
	/* Reset the BIOS head to 0. */
	bios->state.crtchead = 0;
		NVSetOwner(dev, 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;
+3 −6
Original line number Diff line number Diff line
@@ -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;
}