Lines Matching refs:dev_priv

80 #define HAS_LPE_AUDIO(dev_priv) ((dev_priv)->display.audio.lpe.platdev != NULL)
83 lpe_audio_platdev_create(struct drm_i915_private *dev_priv)
85 struct pci_dev *pdev = to_pci_dev(dev_priv->drm.dev);
101 rsc[0].start = rsc[0].end = dev_priv->display.audio.lpe.irq;
112 pinfo.parent = dev_priv->drm.dev;
121 pdata->num_pipes = INTEL_NUM_PIPES(dev_priv);
122 pdata->num_ports = IS_CHERRYVIEW(dev_priv) ? 3 : 2; /* B,C,D or B,C */
133 drm_err(&dev_priv->drm,
143 static void lpe_audio_platdev_destroy(struct drm_i915_private *dev_priv)
153 platform_device_unregister(dev_priv->display.audio.lpe.platdev);
170 static int lpe_audio_irq_init(struct drm_i915_private *dev_priv)
172 int irq = dev_priv->display.audio.lpe.irq;
174 drm_WARN_ON(&dev_priv->drm, !intel_irqs_enabled(dev_priv));
180 return irq_set_chip_data(irq, dev_priv);
183 static bool lpe_audio_detect(struct drm_i915_private *dev_priv)
187 if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) {
197 drm_info(&dev_priv->drm,
205 static int lpe_audio_setup(struct drm_i915_private *dev_priv)
209 dev_priv->display.audio.lpe.irq = irq_alloc_desc(0);
210 if (dev_priv->display.audio.lpe.irq < 0) {
211 drm_err(&dev_priv->drm, "Failed to allocate IRQ desc: %d\n",
212 dev_priv->display.audio.lpe.irq);
213 ret = dev_priv->display.audio.lpe.irq;
217 drm_dbg(&dev_priv->drm, "irq = %d\n", dev_priv->display.audio.lpe.irq);
219 ret = lpe_audio_irq_init(dev_priv);
222 drm_err(&dev_priv->drm,
228 dev_priv->display.audio.lpe.platdev = lpe_audio_platdev_create(dev_priv);
230 if (IS_ERR(dev_priv->display.audio.lpe.platdev)) {
231 ret = PTR_ERR(dev_priv->display.audio.lpe.platdev);
232 drm_err(&dev_priv->drm,
241 intel_de_write(dev_priv, VLV_AUD_CHICKEN_BIT_REG,
246 irq_free_desc(dev_priv->display.audio.lpe.irq);
248 dev_priv->display.audio.lpe.irq = -1;
249 dev_priv->display.audio.lpe.platdev = NULL;
255 * @dev_priv: the i915 drm device private data
260 void intel_lpe_audio_irq_handler(struct drm_i915_private *dev_priv)
264 if (!HAS_LPE_AUDIO(dev_priv))
267 ret = generic_handle_irq(dev_priv->display.audio.lpe.irq);
269 drm_err_ratelimited(&dev_priv->drm,
276 * @dev_priv: the i915 drm device private data
281 int intel_lpe_audio_init(struct drm_i915_private *dev_priv)
285 if (lpe_audio_detect(dev_priv)) {
286 ret = lpe_audio_setup(dev_priv);
288 drm_err(&dev_priv->drm,
297 * @dev_priv: the i915 drm device private data
301 void intel_lpe_audio_teardown(struct drm_i915_private *dev_priv)
303 if (!HAS_LPE_AUDIO(dev_priv))
306 lpe_audio_platdev_destroy(dev_priv);
308 irq_free_desc(dev_priv->display.audio.lpe.irq);
310 dev_priv->display.audio.lpe.irq = -1;
311 dev_priv->display.audio.lpe.platdev = NULL;
317 * @dev_priv: the i915 drm device private data
326 void intel_lpe_audio_notify(struct drm_i915_private *dev_priv,
335 if (!HAS_LPE_AUDIO(dev_priv))
338 pdata = dev_get_platdata(&dev_priv->display.audio.lpe.platdev->dev);
343 audio_enable = intel_de_read(dev_priv, VLV_AUD_PORT_EN_DBG(port));
352 intel_de_write(dev_priv, VLV_AUD_PORT_EN_DBG(port),
361 intel_de_write(dev_priv, VLV_AUD_PORT_EN_DBG(port),
366 pdata->notify_audio_lpe(dev_priv->display.audio.lpe.platdev, port - PORT_B);