drm/i915: stop including i915_irq.h from i915_trace.h
[linux-block.git] / drivers / gpu / drm / i915 / display / intel_lpe_audio.c
index 4970bf146c4a8a933987c499e528de9f5f881f18..a482e94ba07897b9547cea0297f207eaf13711a2 100644 (file)
 #include <drm/intel_lpe_audio.h>
 
 #include "i915_drv.h"
+#include "i915_irq.h"
+#include "i915_reg.h"
 #include "intel_de.h"
 #include "intel_lpe_audio.h"
+#include "intel_pci_config.h"
 
-#define HAS_LPE_AUDIO(dev_priv) ((dev_priv)->audio.lpe.platdev != NULL)
+#define HAS_LPE_AUDIO(dev_priv) ((dev_priv)->display.audio.lpe.platdev != NULL)
 
 static struct platform_device *
 lpe_audio_platdev_create(struct drm_i915_private *dev_priv)
 {
-       struct drm_device *dev = &dev_priv->drm;
-       struct pci_dev *pdev = to_pci_dev(dev->dev);
+       struct pci_dev *pdev = to_pci_dev(dev_priv->drm.dev);
        struct platform_device_info pinfo = {};
        struct resource *rsc;
        struct platform_device *platdev;
@@ -96,18 +98,18 @@ lpe_audio_platdev_create(struct drm_i915_private *dev_priv)
                return ERR_PTR(-ENOMEM);
        }
 
-       rsc[0].start    = rsc[0].end = dev_priv->audio.lpe.irq;
+       rsc[0].start    = rsc[0].end = dev_priv->display.audio.lpe.irq;
        rsc[0].flags    = IORESOURCE_IRQ;
        rsc[0].name     = "hdmi-lpe-audio-irq";
 
-       rsc[1].start    = pci_resource_start(pdev, 0) +
+       rsc[1].start    = pci_resource_start(pdev, GTTMMADR_BAR) +
                I915_HDMI_LPE_AUDIO_BASE;
-       rsc[1].end      = pci_resource_start(pdev, 0) +
+       rsc[1].end      = pci_resource_start(pdev, GTTMMADR_BAR) +
                I915_HDMI_LPE_AUDIO_BASE + I915_HDMI_LPE_AUDIO_SIZE - 1;
        rsc[1].flags    = IORESOURCE_MEM;
        rsc[1].name     = "hdmi-lpe-audio-mmio";
 
-       pinfo.parent = dev->dev;
+       pinfo.parent = dev_priv->drm.dev;
        pinfo.name = "hdmi-lpe-audio";
        pinfo.id = -1;
        pinfo.res = rsc;
@@ -148,7 +150,7 @@ static void lpe_audio_platdev_destroy(struct drm_i915_private *dev_priv)
         * than us fiddle with its internals.
         */
 
-       platform_device_unregister(dev_priv->audio.lpe.platdev);
+       platform_device_unregister(dev_priv->display.audio.lpe.platdev);
 }
 
 static void lpe_audio_irq_unmask(struct irq_data *d)
@@ -167,7 +169,7 @@ static struct irq_chip lpe_audio_irqchip = {
 
 static int lpe_audio_irq_init(struct drm_i915_private *dev_priv)
 {
-       int irq = dev_priv->audio.lpe.irq;
+       int irq = dev_priv->display.audio.lpe.irq;
 
        drm_WARN_ON(&dev_priv->drm, !intel_irqs_enabled(dev_priv));
        irq_set_chip_and_handler_name(irq,
@@ -204,15 +206,15 @@ static int lpe_audio_setup(struct drm_i915_private *dev_priv)
 {
        int ret;
 
-       dev_priv->audio.lpe.irq = irq_alloc_desc(0);
-       if (dev_priv->audio.lpe.irq < 0) {
+       dev_priv->display.audio.lpe.irq = irq_alloc_desc(0);
+       if (dev_priv->display.audio.lpe.irq < 0) {
                drm_err(&dev_priv->drm, "Failed to allocate IRQ desc: %d\n",
-                       dev_priv->audio.lpe.irq);
-               ret = dev_priv->audio.lpe.irq;
+                       dev_priv->display.audio.lpe.irq);
+               ret = dev_priv->display.audio.lpe.irq;
                goto err;
        }
 
-       drm_dbg(&dev_priv->drm, "irq = %d\n", dev_priv->audio.lpe.irq);
+       drm_dbg(&dev_priv->drm, "irq = %d\n", dev_priv->display.audio.lpe.irq);
 
        ret = lpe_audio_irq_init(dev_priv);
 
@@ -223,10 +225,10 @@ static int lpe_audio_setup(struct drm_i915_private *dev_priv)
                goto err_free_irq;
        }
 
-       dev_priv->audio.lpe.platdev = lpe_audio_platdev_create(dev_priv);
+       dev_priv->display.audio.lpe.platdev = lpe_audio_platdev_create(dev_priv);
 
-       if (IS_ERR(dev_priv->audio.lpe.platdev)) {
-               ret = PTR_ERR(dev_priv->audio.lpe.platdev);
+       if (IS_ERR(dev_priv->display.audio.lpe.platdev)) {
+               ret = PTR_ERR(dev_priv->display.audio.lpe.platdev);
                drm_err(&dev_priv->drm,
                        "Failed to create lpe audio platform device: %d\n",
                        ret);
@@ -241,10 +243,10 @@ static int lpe_audio_setup(struct drm_i915_private *dev_priv)
 
        return 0;
 err_free_irq:
-       irq_free_desc(dev_priv->audio.lpe.irq);
+       irq_free_desc(dev_priv->display.audio.lpe.irq);
 err:
-       dev_priv->audio.lpe.irq = -1;
-       dev_priv->audio.lpe.platdev = NULL;
+       dev_priv->display.audio.lpe.irq = -1;
+       dev_priv->display.audio.lpe.platdev = NULL;
        return ret;
 }
 
@@ -262,7 +264,7 @@ void intel_lpe_audio_irq_handler(struct drm_i915_private *dev_priv)
        if (!HAS_LPE_AUDIO(dev_priv))
                return;
 
-       ret = generic_handle_irq(dev_priv->audio.lpe.irq);
+       ret = generic_handle_irq(dev_priv->display.audio.lpe.irq);
        if (ret)
                drm_err_ratelimited(&dev_priv->drm,
                                    "error handling LPE audio irq: %d\n", ret);
@@ -303,10 +305,10 @@ void intel_lpe_audio_teardown(struct drm_i915_private *dev_priv)
 
        lpe_audio_platdev_destroy(dev_priv);
 
-       irq_free_desc(dev_priv->audio.lpe.irq);
+       irq_free_desc(dev_priv->display.audio.lpe.irq);
 
-       dev_priv->audio.lpe.irq = -1;
-       dev_priv->audio.lpe.platdev = NULL;
+       dev_priv->display.audio.lpe.irq = -1;
+       dev_priv->display.audio.lpe.platdev = NULL;
 }
 
 /**
@@ -333,7 +335,7 @@ void intel_lpe_audio_notify(struct drm_i915_private *dev_priv,
        if (!HAS_LPE_AUDIO(dev_priv))
                return;
 
-       pdata = dev_get_platdata(&dev_priv->audio.lpe.platdev->dev);
+       pdata = dev_get_platdata(&dev_priv->display.audio.lpe.platdev->dev);
        ppdata = &pdata->port[port - PORT_B];
 
        spin_lock_irqsave(&pdata->lpe_audio_slock, irqflags);
@@ -361,7 +363,7 @@ void intel_lpe_audio_notify(struct drm_i915_private *dev_priv,
        }
 
        if (pdata->notify_audio_lpe)
-               pdata->notify_audio_lpe(dev_priv->audio.lpe.platdev, port - PORT_B);
+               pdata->notify_audio_lpe(dev_priv->display.audio.lpe.platdev, port - PORT_B);
 
        spin_unlock_irqrestore(&pdata->lpe_audio_slock, irqflags);
 }