Commit 87d9862b authored by Dave Airlie's avatar Dave Airlie
Browse files

Merge tag 'drm-misc-fixes-2022-09-15' of git://anongit.freedesktop.org/drm/drm-misc into drm-fixes



Short summary of fixes pull:

 * gma500: Locking and IRQ fixes
 * meson: OSD1 display fixes
 * panel-edp: Fix Innolux timings
 * rockchip: DP/HDMI fixes

Signed-off-by: default avatarDave Airlie <airlied@redhat.com>

From: Thomas Zimmermann <tzimmermann@suse.de>
Link: https://patchwork.freedesktop.org/patch/msgid/YyMUpP1w21CPXq+I@linux-uq9g
parents e2111ae2 b0b9408f
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -581,11 +581,9 @@ static const struct psb_offset cdv_regmap[2] = {
static int cdv_chip_setup(struct drm_device *dev)
{
	struct drm_psb_private *dev_priv = to_drm_psb_private(dev);
	struct pci_dev *pdev = to_pci_dev(dev->dev);
	INIT_WORK(&dev_priv->hotplug_work, cdv_hotplug_work_func);

	if (pci_enable_msi(pdev))
		dev_warn(dev->dev, "Enabling MSI failed!\n");
	dev_priv->use_msi = true;
	dev_priv->regmap = cdv_regmap;
	gma_get_core_freq(dev);
	psb_intel_opregion_init(dev);
+2 −2
Original line number Diff line number Diff line
@@ -112,12 +112,12 @@ static void psb_gem_free_object(struct drm_gem_object *obj)
{
	struct psb_gem_object *pobj = to_psb_gem_object(obj);

	drm_gem_object_release(obj);

	/* Undo the mmap pin if we are destroying the object */
	if (pobj->mmapping)
		psb_gem_unpin(pobj);

	drm_gem_object_release(obj);

	WARN_ON(pobj->in_gart && !pobj->stolen);

	release_resource(&pobj->resource);
+7 −4
Original line number Diff line number Diff line
@@ -532,15 +532,18 @@ int gma_crtc_page_flip(struct drm_crtc *crtc,
		WARN_ON(drm_crtc_vblank_get(crtc) != 0);

		gma_crtc->page_flip_event = event;
		spin_unlock_irqrestore(&dev->event_lock, flags);

		/* Call this locked if we want an event at vblank interrupt. */
		ret = crtc_funcs->mode_set_base(crtc, crtc->x, crtc->y, old_fb);
		if (ret) {
			spin_lock_irqsave(&dev->event_lock, flags);
			if (gma_crtc->page_flip_event) {
				gma_crtc->page_flip_event = NULL;
				drm_crtc_vblank_put(crtc);
			}

			spin_unlock_irqrestore(&dev->event_lock, flags);
		}
	} else {
		ret = crtc_funcs->mode_set_base(crtc, crtc->x, crtc->y, old_fb);
	}
+1 −4
Original line number Diff line number Diff line
@@ -501,12 +501,9 @@ static const struct psb_offset oaktrail_regmap[2] = {
static int oaktrail_chip_setup(struct drm_device *dev)
{
	struct drm_psb_private *dev_priv = to_drm_psb_private(dev);
	struct pci_dev *pdev = to_pci_dev(dev->dev);
	int ret;

	if (pci_enable_msi(pdev))
		dev_warn(dev->dev, "Enabling MSI failed!\n");

	dev_priv->use_msi = true;
	dev_priv->regmap = oaktrail_regmap;

	ret = mid_chip_setup(dev);
+1 −7
Original line number Diff line number Diff line
@@ -139,8 +139,6 @@ static void gma_suspend_pci(struct pci_dev *pdev)
	dev_priv->regs.saveBSM = bsm;
	pci_read_config_dword(pdev, 0xFC, &vbt);
	dev_priv->regs.saveVBT = vbt;
	pci_read_config_dword(pdev, PSB_PCIx_MSI_ADDR_LOC, &dev_priv->msi_addr);
	pci_read_config_dword(pdev, PSB_PCIx_MSI_DATA_LOC, &dev_priv->msi_data);

	pci_disable_device(pdev);
	pci_set_power_state(pdev, PCI_D3hot);
@@ -168,9 +166,6 @@ static bool gma_resume_pci(struct pci_dev *pdev)
	pci_restore_state(pdev);
	pci_write_config_dword(pdev, 0x5c, dev_priv->regs.saveBSM);
	pci_write_config_dword(pdev, 0xFC, dev_priv->regs.saveVBT);
	/* restoring MSI address and data in PCIx space */
	pci_write_config_dword(pdev, PSB_PCIx_MSI_ADDR_LOC, dev_priv->msi_addr);
	pci_write_config_dword(pdev, PSB_PCIx_MSI_DATA_LOC, dev_priv->msi_data);
	ret = pci_enable_device(pdev);

	if (ret != 0)
@@ -223,8 +218,7 @@ int gma_power_resume(struct device *_dev)
	mutex_lock(&power_mutex);
	gma_resume_pci(pdev);
	gma_resume_display(pdev);
	gma_irq_preinstall(dev);
	gma_irq_postinstall(dev);
	gma_irq_install(dev);
	mutex_unlock(&power_mutex);
	return 0;
}
Loading