[Intel-gfx] Intel Atom SoC Bay/Cherry Trail - HDMI Audio

poma pomidorabelisima at gmail.com
Sat Mar 19 10:05:30 UTC 2016


... meanwhile ...

$ modinfo hdmi_audio
filename:       /lib/modules/4.5.0-301.fc22.x86_64/kernel/sound/hdmi_audio/hdmi_audio.ko.xz
version:        0.01.003
license:        GPL v2
description:    Intel HDMI Audio driver
author:         Vaibhav Agarwal <vaibhav.agarwal at intel.com>
author:         Ramesh Babu K V <ramesh.babu at intel.com>
author:         Sailaja Bandarupalli <sailaja.bandarupalli at intel.com>
srcversion:     3AA3766F4433DC0AC4234C3
alias:          acpi*:HAD022A8:*
alias:          acpi*:HAD0F28:*
depends:        snd-pcm,i915,snd
intree:         Y
vermagic:       4.5.0-301.fc22.x86_64 SMP mod_unload 
parm:           hdmi_card_index:Index value for INTEL Intel HDMI Audio controller. (int)
parm:           hdmi_card_id:ID string for INTEL Intel HDMI Audio controller. (charp)

$ dmesg ...
had: ******** HAD DRIVER loading.. Ver: 0.01.003


HDMI Audio support on Atom w/o HDAUdio
w/ kernel-modules-4.5.0-301.fc22.x86_64
https://patchwork.freedesktop.org/series/4142/
https://kojipkgs.fedoraproject.org/packages/kernel/4.5.0/300.fc24/src/
---
 ...15-changes-for-non-HDAudio-HDMI-interface.patch | 27 +++++++++++-----------
 ...elated-changes-non-HDAudio-HDMI-interface.patch |  8 +++----
 ...-Atom-add-Atom-non-HDAudio-HDMI-interface.patch | 15 ++++++------
 RFC-10-15-add-dependency-on-PM_RUNTIME.patch       | 12 +++++-----
 config-generic                                     |  1 +
 5 files changed, 32 insertions(+), 31 deletions(-)

diff --git a/RFC-05-15-drm-i915-changes-for-non-HDAudio-HDMI-interface.patch b/RFC-05-15-drm-i915-changes-for-non-HDAudio-HDMI-interface.patch
index fca2f41..2446dc2 100644
--- a/RFC-05-15-drm-i915-changes-for-non-HDAudio-HDMI-interface.patch
+++ b/RFC-05-15-drm-i915-changes-for-non-HDAudio-HDMI-interface.patch
@@ -3,7 +3,7 @@ diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
 index d1a46ef..556fa80 100644
 --- a/drivers/gpu/drm/i915/i915_irq.c
 +++ b/drivers/gpu/drm/i915/i915_irq.c
-@@ -603,6 +603,31 @@ i915_disable_pipestat(struct drm_i915_private *dev_priv, enum pipe pipe,
+@@ -603,6 +603,31 @@
  	__i915_disable_pipestat(dev_priv, pipe, enable_mask, status_mask);
  }
  
@@ -35,15 +35,15 @@ index d1a46ef..556fa80 100644
  /**
   * i915_enable_asle_pipestat - enable ASLE pipestat for OpRegion
   * @dev: drm device
-@@ -1649,6 +1674,7 @@ static void valleyview_pipestat_irq_handler(struct drm_device *dev, u32 iir)
+@@ -1649,6 +1674,7 @@
  	struct drm_i915_private *dev_priv = dev->dev_private;
  	u32 pipe_stats[I915_MAX_PIPES] = { };
  	int pipe;
 +	int lpe_stream;
  
  	spin_lock(&dev_priv->irq_lock);
- 
-@@ -1719,6 +1745,24 @@ static void valleyview_pipestat_irq_handler(struct drm_device *dev, u32 iir)
+ 	for_each_pipe(dev_priv, pipe) {
+@@ -1713,6 +1739,24 @@
  			intel_cpu_fifo_underrun_irq_handler(dev_priv, pipe);
  	}
  
@@ -68,7 +68,7 @@ index d1a46ef..556fa80 100644
  	if (pipe_stats[0] & PIPE_GMBUS_INTERRUPT_STATUS)
  		gmbus_irq_handler(dev);
  }
-@@ -2804,6 +2848,43 @@ static void gen8_disable_vblank(struct drm_device *dev, unsigned int pipe)
+@@ -2790,6 +2834,43 @@
  	spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags);
  }
  
@@ -135,7 +135,7 @@ diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi
 index 1beb155..8b6c31a 100644
 --- a/drivers/gpu/drm/i915/intel_hdmi.c
 +++ b/drivers/gpu/drm/i915/intel_hdmi.c
-@@ -1391,6 +1391,124 @@ intel_hdmi_set_edid(struct drm_connector *connector, bool force)
+@@ -1386,6 +1386,124 @@
  	return connected;
  }
  
@@ -260,7 +260,7 @@ index 1beb155..8b6c31a 100644
  static enum drm_connector_status
  intel_hdmi_detect(struct drm_connector *connector, bool force)
  {
-@@ -1399,6 +1517,8 @@ intel_hdmi_detect(struct drm_connector *connector, bool force)
+@@ -1394,6 +1512,8 @@
  	struct drm_i915_private *dev_priv = to_i915(connector->dev);
  	bool live_status = false;
  	unsigned int try;
@@ -269,7 +269,7 @@ index 1beb155..8b6c31a 100644
  
  	DRM_DEBUG_KMS("[CONNECTOR:%d:%s]\n",
  		      connector->base.id, connector->name);
-@@ -1427,6 +1547,26 @@ intel_hdmi_detect(struct drm_connector *connector, bool force)
+@@ -1422,6 +1542,26 @@
  
  	intel_display_power_put(dev_priv, POWER_DOMAIN_GMBUS);
  
@@ -296,7 +296,7 @@ index 1beb155..8b6c31a 100644
  	return status;
  }
  
-@@ -1450,12 +1590,22 @@ intel_hdmi_force(struct drm_connector *connector)
+@@ -1445,12 +1585,22 @@
  static int intel_hdmi_get_modes(struct drm_connector *connector)
  {
  	struct edid *edid;
@@ -320,7 +320,7 @@ index 1beb155..8b6c31a 100644
  }
  
  static bool
-@@ -2159,6 +2309,20 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
+@@ -2149,6 +2299,20 @@
  		u32 temp = I915_READ(PEG_BAND_GAP_DATA);
  		I915_WRITE(PEG_BAND_GAP_DATA, (temp & ~0xf) | 0xd);
  	}
@@ -341,17 +341,18 @@ index 1beb155..8b6c31a 100644
  }
  
  void intel_hdmi_init(struct drm_device *dev,
-@@ -2168,6 +2332,8 @@ void intel_hdmi_init(struct drm_device *dev,
+@@ -2157,6 +2321,9 @@
  	struct intel_digital_port *intel_dig_port;
  	struct intel_encoder *intel_encoder;
  	struct intel_connector *intel_connector;
++	struct drm_i915_private *dev_priv = dev->dev_private;
 +	/* Added for HDMI Audio */
 +	struct hdmi_audio_priv *hdmi_priv;
  
  	intel_dig_port = kzalloc(sizeof(*intel_dig_port), GFP_KERNEL);
  	if (!intel_dig_port)
-@@ -2239,4 +2405,19 @@ void intel_hdmi_init(struct drm_device *dev,
- 	intel_dig_port->max_lanes = 4;
+@@ -2226,4 +2393,19 @@
+ 	intel_dig_port->dp.output_reg = INVALID_MMIO_REG;
  
  	intel_hdmi_init_connector(intel_dig_port, intel_connector);
 +
diff --git a/RFC-06-15-drm-i915-power-related-changes-non-HDAudio-HDMI-interface.patch b/RFC-06-15-drm-i915-power-related-changes-non-HDAudio-HDMI-interface.patch
index 572ffc7..50f52b0 100644
--- a/RFC-06-15-drm-i915-power-related-changes-non-HDAudio-HDMI-interface.patch
+++ b/RFC-06-15-drm-i915-power-related-changes-non-HDAudio-HDMI-interface.patch
@@ -501,9 +501,9 @@ index d33de95..dae77d1 100644
 +#endif
 +
  /**
-  * DOC: RC6
-  *
-@@ -7098,6 +7109,7 @@ void intel_suspend_hw(struct drm_device *dev)
+  * RC6 is a special power stage which allows the GPU to enter an very
+  * low-voltage mode when idle, using down to 0V while at this stage.  This
+@@ -6964,6 +6975,7 @@
  void intel_init_pm(struct drm_device *dev)
  {
  	struct drm_i915_private *dev_priv = dev->dev_private;
@@ -511,7 +511,7 @@ index d33de95..dae77d1 100644
  
  	intel_fbc_init(dev_priv);
  
-@@ -7398,3 +7410,44 @@ void intel_pm_setup(struct drm_device *dev)
+@@ -7257,3 +7269,44 @@
  	atomic_set(&dev_priv->pm.wakeref_count, 0);
  	atomic_set(&dev_priv->pm.atomic_seq, 0);
  }
diff --git a/RFC-09-15-ALSA-Intel-Atom-add-Atom-non-HDAudio-HDMI-interface.patch b/RFC-09-15-ALSA-Intel-Atom-add-Atom-non-HDAudio-HDMI-interface.patch
index 1d22646..c5c95f6 100644
--- a/RFC-09-15-ALSA-Intel-Atom-add-Atom-non-HDAudio-HDMI-interface.patch
+++ b/RFC-09-15-ALSA-Intel-Atom-add-Atom-non-HDAudio-HDMI-interface.patch
@@ -40,23 +40,22 @@ diff --git a/sound/Kconfig b/sound/Kconfig
 index 5a240e0..75c679e 100644
 --- a/sound/Kconfig
 +++ b/sound/Kconfig
-@@ -134,3 +134,11 @@ config AC97_BUS
+@@ -134,3 +134,10 @@
  	  sound subsystem and other function drivers completely unrelated to
  	  sound although they're sharing the AC97 bus. Concerned drivers
  	  should "select" this.
 +
 +config SUPPORT_HDMI
-+        bool "SUPPORT_HDMI"
-+        depends on DRM_I915
-+        default n
-+        help
-+          Choose this option to support HDMI.
-+
++	bool "SUPPORT_HDMI"
++	depends on DRM_I915
++	default n
++	help
++	  Choose this option to support HDMI.
 diff --git a/sound/Makefile b/sound/Makefile
 index 7732070..f2c5e82 100644
 --- a/sound/Makefile
 +++ b/sound/Makefile
-@@ -8,6 +8,7 @@ obj-$(CONFIG_DMASOUND) += oss/
+@@ -8,6 +8,7 @@
  obj-$(CONFIG_SND) += core/ i2c/ drivers/ isa/ pci/ ppc/ arm/ sh/ synth/ usb/ \
  	firewire/ sparc/ spi/ parisc/ pcmcia/ mips/ soc/ atmel/ hda/
  obj-$(CONFIG_SND_AOA) += aoa/
diff --git a/RFC-10-15-add-dependency-on-PM_RUNTIME.patch b/RFC-10-15-add-dependency-on-PM_RUNTIME.patch
index d7e8e50..e0ff9aa 100644
--- a/RFC-10-15-add-dependency-on-PM_RUNTIME.patch
+++ b/RFC-10-15-add-dependency-on-PM_RUNTIME.patch
@@ -21,11 +21,11 @@ diff --git a/sound/Kconfig b/sound/Kconfig
 index 75c679e..b8b4fce 100644
 --- a/sound/Kconfig
 +++ b/sound/Kconfig
-@@ -138,6 +138,7 @@ config AC97_BUS
+@@ -138,6 +138,7 @@
  config SUPPORT_HDMI
-         bool "SUPPORT_HDMI"
-         depends on DRM_I915
+ 	bool "SUPPORT_HDMI"
+ 	depends on DRM_I915
 +	select PM_RUNTIME
-         default n
-         help
-           Choose this option to support HDMI.
+ 	default n
+ 	help
+ 	  Choose this option to support HDMI.
diff --git a/config-generic b/config-generic
index a970c65..eafd59c 100644
--- a/config-generic
+++ b/config-generic
@@ -3895,6 +3895,7 @@ CONFIG_SND_FIREWIRE_TASCAM=m
 # Open Sound System
 #
 # CONFIG_SOUND_PRIME is not set
+CONFIG_SUPPORT_HDMI=y
 
 #
 # USB support
-- 
2.4.3



More information about the Intel-gfx mailing list