Skip to contentSkip to conversation

Add Freescale ASRC driver

PATCH Superseded Nicolin Chen 6 participants 23 messages Jul 25, 2014 – Aug 1, 2014

Subsystems (5)

v3 of 6 Superseded Latest is v6 →

lore
Share & tools
lore

Nicolin Chen

author reviewer
#0 lore raw

v3 cover Add Freescale ASRC driver

This series of patches add Freescale ASRC module driver support along with the extra request in imx-sdma structure required by SDMA Device to Device script.

The previous version has been in the maillist for nearly six months without any comment and reply. So I decide to drop the SDMA part's change since this series focus on ASRC support (Later, we can send SDMA part separately.) so that ASRC driver may get upstream first.

Changelog
v3:
* PATCH-1: Added an Acked-by from Shawn Guo
* PATCH-2: Dropped THIS_MODULE as Tobias suggests
* PATCH-2: Use dma_coerce_mask_and_coherent() in fsl_asrc_dma_pcm_new()
* PATCH-2: Added substream check in fsl_asrc_dma_pcm_new()
v2:
* PATCH-1: Dropped the change to SDMA driver.
* PATCH-2: Dropped useless member in private data structures.
* PATCH-2: Refined some comments in fsl_asrc_dma.c driver.
* PATCH-2: Refined commit comments.

Nicolin Chen (2):
ARM: imx: Add the secondary request into the structure for imx-sdma
ASoC: fsl_asrc: Add ASRC ASoC CPU DAI and platform drivers

 .../devicetree/bindings/sound/fsl,asrc.txt         |   62 ++
 include/linux/platform_data/dma-imx.h              |    1 +
 sound/soc/fsl/Kconfig                              |    9 +
 sound/soc/fsl/Makefile                             |    2 +
 sound/soc/fsl/fsl_asrc.c                           | 1030 ++++++++++++++++++++
 sound/soc/fsl/fsl_asrc.h                           |  461 +++++++++
 sound/soc/fsl/fsl_asrc_dma.c                       |  386 ++++++++
 7 files changed, 1951 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/sound/fsl,asrc.txt
 create mode 100644 sound/soc/fsl/fsl_asrc.c
 create mode 100644 sound/soc/fsl/fsl_asrc.h
 create mode 100644 sound/soc/fsl/fsl_asrc_dma.c
Signature · 1 line
1.8.4
author reviewer
#1 lore raw

PATCH v3 1/2 ARM: imx: Add the secondary request into the structure for imx-sdma

SDMA supports device to device (per_2_per) scripts to handle DMA transfering between two peripheral devices. The per_2_per script, however, needs two dma requests from two sides while the current structure only defined one request.

So this patch just simply adds the secondary request so as to let SDMA and its user to add its implementation later.

[ Both change in the SDMA driver and its users like Freescale ASRC ASoC driver
should be taken along with this change in order to truly support per_2_per sciprts. However, we here make an expediency by adding this first so that we can add either side later since this patch won't break any function and meanwhile it can make merge window more smoothly: we don't need to apply the change inside dmaengine branch via ASoC tree any more. -- Nicolin ]

---
 include/linux/platform_data/dma-imx.h | 1 +
 1 file changed, 1 insertion(+)
include/linux/platform_data/dma-imx.h +1 -0
index 7aa0e89..6a1357d 100644
@@ -51,6 +51,7 @@ enum imx_dma_prio {
 
 struct imx_dma_data {
 	int dma_request; /* DMA request line */
+	int dma_request2; /* secondary DMA request line */
 	enum sdma_peripheral_type peripheral_type;
 	int priority;
 };
Signature · 1 line
1.8.4
author reviewer
#2 lore raw

PATCH v3 2/2 ASoC: fsl_asrc: Add ASRC ASoC CPU DAI and platform drivers

In reply to Nicolin Chen

The Asynchronous Sample Rate Converter (ASRC) converts the sampling rate of a signal associated with an input clock into a signal associated with a different output clock. The driver currently works as a Front End of DPCM with other Back Ends DAI links such as ESAI<->CS42888 and SSI<->WM8962 and SAI. It converts the original sample rate to a common rate supported by Back Ends for playback while converts the common rate of Back Ends to a desired rate for capture. It has 3 pairs to support three different substreams within totally 10 channels.

---
 .../devicetree/bindings/sound/fsl,asrc.txt         |   62 ++
 sound/soc/fsl/Kconfig                              |    9 +
 sound/soc/fsl/Makefile                             |    2 +
 sound/soc/fsl/fsl_asrc.c                           | 1030 ++++++++++++++++++++
 sound/soc/fsl/fsl_asrc.h                           |  461 +++++++++
 sound/soc/fsl/fsl_asrc_dma.c                       |  386 ++++++++
 6 files changed, 1950 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/sound/fsl,asrc.txt
 create mode 100644 sound/soc/fsl/fsl_asrc.c
 create mode 100644 sound/soc/fsl/fsl_asrc.h
 create mode 100644 sound/soc/fsl/fsl_asrc_dma.c
Documentation/devicetree/bindings/sound/fsl,asrc.txt new file +62 -0
new file mode 100644
index 0000000..637028c
@@ -0,0 +1,62 @@
+Freescale Asynchronous Sample Rate Converter (ASRC) Controller
+
+The Asynchronous Sample Rate Converter (ASRC) converts the sampling rate of a
+signal associated with an input clock into a signal associated with a different
+output clock. The driver currently works as a Front End of DPCM with other Back
+Ends Audio controller such as ESAI, SSI and SAI. It has three pairs to support
+three substreams within totally 10 channels.
+
+Required properties:
+
+  - compatible : Compatible list, must contain "fsl,imx35-asrc" or
+    "fsl,imx53-asrc".
+
+  - reg : Offset and length of the register set for the device.
+
+  - interrupts : Contains the spdif interrupt.
+
+  - dmas : Generic dma devicetree binding as described in
+	   Documentation/devicetree/bindings/dma/dma.txt.
+
+  - dma-names : Six dmas have to be defined: "rxa", "rxb", "rxc", "txa", "txb",
+		and "txc".
+
+  - clocks : Contains an entry for each entry in clock-names.
+
+  - clock-names : Includes the following entries:
+	"mem"		Peripheral access clock to access registers.
+	"ipg"		Peripheral clock to driver module.
+	"asrck_<0-f>"	Clock sources for input and output clock.
+
+   - big-endian : If this property is absent, the native endian mode will
+		  be in use as default, or the big endian mode will be in use
+		  for all the device registers.
+
+   - fsl,asrc-rate : Defines a mutual sample rate used by Back End DAI link.
+
+   - fsl,asrc-width : Defines a mutual sample width used by Back End DAI link.
+
+Example:
+
+asrc: asrc@02034000 {
+	compatible = "fsl,imx53-asrc";
+	reg = <0x02034000 0x4000>;
+	interrupts = <0 50 IRQ_TYPE_LEVEL_HIGH>;
+	clocks = <&clks 107>, <&clks 107>, <&clks 0>,
+	       <&clks 0>, <&clks 0>, <&clks 0>, <&clks 0>,
+	       <&clks 0>, <&clks 0>, <&clks 0>, <&clks 0>,
+	       <&clks 0>, <&clks 0>, <&clks 0>, <&clks 0>,
+	       <&clks 107>, <&clks 0>, <&clks 0>;
+	clock-names = "mem", "ipg", "asrck0",
+		"asrck_1", "asrck_2", "asrck_3", "asrck_4",
+		"asrck_5", "asrck_6", "asrck_7", "asrck_8",
+		"asrck_9", "asrck_a", "asrck_b", "asrck_c",
+		"asrck_d", "asrck_e", "asrck_f";
+	dmas = <&sdma 17 23 1>, <&sdma 18 23 1>, <&sdma 19 23 1>,
+	     <&sdma 20 23 1>, <&sdma 21 23 1>, <&sdma 22 23 1>;
+	dma-names = "rxa", "rxb", "rxc",
+		"txa", "txb", "txc";
+	fsl,asrc-rate  = <48000>;
+	fsl,asrc-width = <16>;
+	status = "okay";
+};
sound/soc/fsl/Kconfig +9 -0
index 2d60e37..e06fbfe 100644
@@ -2,6 +2,15 @@ menu "SoC Audio for Freescale CPUs"
 
 comment "Common SoC Audio options for Freescale CPUs:"
 
+config SND_SOC_FSL_ASRC
+	tristate "Asynchronous Sample Rate Converter (ASRC) module support"
+	select REGMAP_MMIO
+	help
+	  Say Y if you want to add Asynchronous Sample Rate Converter (ASRC)
+	  support for the Freescale CPUs.
+	  This option is only useful for out-of-tree drivers since
+	  in-tree drivers select it automatically.
+
 config SND_SOC_FSL_SAI
 	tristate "Synchronous Audio Interface (SAI) module support"
 	select REGMAP_MMIO
sound/soc/fsl/Makefile +2 -0
index ce49570..ff7ee2c 100644
@@ -11,6 +11,7 @@ snd-soc-p1022-rdk-objs := p1022_rdk.o
 obj-$(CONFIG_SND_SOC_P1022_RDK) += snd-soc-p1022-rdk.o
 
 # Freescale SSI/DMA/SAI/SPDIF Support
+snd-soc-fsl-asrc-objs := fsl_asrc.o fsl_asrc_dma.o
 snd-soc-fsl-sai-objs := fsl_sai.o
 snd-soc-fsl-ssi-y := fsl_ssi.o
 snd-soc-fsl-ssi-$(CONFIG_DEBUG_FS) += fsl_ssi_dbg.o
@@ -18,6 +19,7 @@ snd-soc-fsl-spdif-objs := fsl_spdif.o
 snd-soc-fsl-esai-objs := fsl_esai.o
 snd-soc-fsl-utils-objs := fsl_utils.o
 snd-soc-fsl-dma-objs := fsl_dma.o
+obj-$(CONFIG_SND_SOC_FSL_ASRC) += snd-soc-fsl-asrc.o
 obj-$(CONFIG_SND_SOC_FSL_SAI) += snd-soc-fsl-sai.o
 obj-$(CONFIG_SND_SOC_FSL_SSI) += snd-soc-fsl-ssi.o
 obj-$(CONFIG_SND_SOC_FSL_SPDIF) += snd-soc-fsl-spdif.o
sound/soc/fsl/fsl_asrc.c new file +1030 -0

1,030 lines not on this page · raw message

sound/soc/fsl/fsl_asrc.h new file +461 -0

461 lines not on this page · raw message

sound/soc/fsl/fsl_asrc_dma.c new file +386 -0

386 lines not on this page · raw message

Signature · 1 line
1.8.4
#3 lore raw

Re: [PATCH v3 2/2] ASoC: fsl_asrc: Add ASRC ASoC CPU DAI and platform drivers

Quoted 8 lines · Nicolin Chen

The Asynchronous Sample Rate Converter (ASRC) converts the sampling rate of a signal associated with an input clock into a signal associated with a different output clock. The driver currently works as a Front End of DPCM with other Back Ends DAI links such as ESAI<->CS42888 and SSI<->WM8962 and SAI. It converts the original sample rate to a common rate supported by Back Ends for playback while converts the common rate of Back Ends to a desired rate for capture. It has 3 pairs to support three different substreams within totally 10 channels.

(...)

Quoted 20 lines
Documentation/devicetree/bindings/sound/fsl,asrc.txt new file +20 -0
+Required properties:
+
+  - compatible : Compatible list, must contain "fsl,imx35-asrc" or
+    "fsl,imx53-asrc".
+
+  - reg : Offset and length of the register set for the device.
+
+  - interrupts : Contains the spdif interrupt.
+
+  - dmas : Generic dma devicetree binding as described in
+	   Documentation/devicetree/bindings/dma/dma.txt.
+
+  - dma-names : Six dmas have to be defined: "rxa", "rxb", "rxc", "txa", "txb",
+		and "txc".
+
+  - clocks : Contains an entry for each entry in clock-names.
+
+  - clock-names : Includes the following entries:
+	"mem"		Peripheral access clock to access registers.
+	"ipg"		Peripheral clock to driver module.

Documentation/devicetree/bindings/sound/fsl,asrc.txt line 38

Quoted 10 lines
Documentation/devicetree/bindings/sound/fsl,asrc.txt new file +10 -0
+	"asrck_<0-f>"	Clock sources for input and output clock.
+
+   - big-endian : If this property is absent, the native endian mode will
+		  be in use as default, or the big endian mode will be in use
+		  for all the device registers.
+
+   - fsl,asrc-rate : Defines a mutual sample rate used by Back End DAI link.
+
+   - fsl,asrc-width : Defines a mutual sample width used by Back End DAI link.
+

indentation for the properties....

- compatible : Should be "fsl,imx35-asrc" or "fsl,imx53-asrc".
- reg : Offset and length of the register set for the device.
....

(...)

Quoted 17 lines
sound/soc/fsl/fsl_asrc.c new file +17 -0
+
+static const struct platform_device_id fsl_asrc_devtype[] = {
+	{
+		.name = "imx35-asrc",
+		.driver_data = IMX35_ASRC,
+	}, {
+		.name = "imx53-asrc",
+		.driver_data = IMX53_ASRC,
+	}, {
+		/* sentinel */
+	}
+};
+MODULE_DEVICE_TABLE(platform, fsl_asrc_devtype);
+
+static const struct of_device_id fsl_asrc_ids[] = {
+	{
+		.compatible = "fsl,imx35-asrc",

sound/soc/fsl/fsl_asrc.c line 116

Quoted 10 lines
sound/soc/fsl/fsl_asrc.c new file +10 -0
+		.data = &fsl_asrc_devtype[IMX35_ASRC],
+	}, {
+		.compatible = "fsl,imx53-asrc",
+		.data = &fsl_asrc_devtype[IMX53_ASRC],
+	}, {
+		/* sentinel */
+	}
+};
+MODULE_DEVICE_TABLE(of, fsl_asrc_ids);
+

move these ids after probe/remove... every driver follows same thing...

Quoted 14 lines
sound/soc/fsl/fsl_asrc.c new file +14 -0
+static irqreturn_t fsl_asrc_isr(int irq, void *dev_id)
+{
+	struct fsl_asrc *asrc_priv = (struct fsl_asrc *)dev_id;
+	struct device *dev = &asrc_priv->pdev->dev;
+	enum asrc_pair_index index;
+	u32 status;
+
+	regmap_read(asrc_priv->regmap, REG_ASRSTR, &status);
+
+	/* Clean overload error */
+	regmap_write(asrc_priv->regmap, REG_ASRSTR, ASRSTR_AOLE);
+
+	/*
+	 * We here use dev_dbg() for all exceptions because ASRC itself does

sound/soc/fsl/fsl_asrc.c line 140

Quoted 10 lines
sound/soc/fsl/fsl_asrc.c new file +10 -0
+	 * not care if FIFO overflowed or underrun while a warning in the
+	 * interrupt would result a ridged conversion.
+	 */
+	for (index = ASRC_PAIR_A; index < ASRC_PAIR_MAX_NUM; index++) {
+		if (!asrc_priv->pair[index])
+			continue;
+
+		if (status & ASRSTR_ATQOL) {
+			asrc_priv->pair[index]->error |= ASRC_TASK_Q_OVERLOAD;
+			dev_dbg(dev, "ASRC Task Queue FIFO overload");

missed terminating new line (\n)...

sound/soc/fsl/fsl_asrc.c line 145

Quoted 5 lines
sound/soc/fsl/fsl_asrc.c new file +5 -0
+		}
+
+		if (status & ASRSTR_AOOL(index)) {
+			asrc_priv->pair[index]->error |= ASRC_OUTPUT_TASK_OVERLOAD;
+			pair_dbg("Output Task Overload");

same

sound/soc/fsl/fsl_asrc.c line 150

Quoted 5 lines
sound/soc/fsl/fsl_asrc.c new file +5 -0
+		}
+
+		if (status & ASRSTR_AIOL(index)) {
+			asrc_priv->pair[index]->error |= ASRC_INPUT_TASK_OVERLOAD;
+			pair_dbg("Input Task Overload");

same

sound/soc/fsl/fsl_asrc.c line 155

Quoted 5 lines
sound/soc/fsl/fsl_asrc.c new file +5 -0
+		}
+
+		if (status & ASRSTR_AODO(index)) {
+			asrc_priv->pair[index]->error |= ASRC_OUTPUT_BUFFER_OVERFLOW;
+			pair_dbg("Output Data Buffer has overflowed");

same

sound/soc/fsl/fsl_asrc.c line 160

Quoted 5 lines
sound/soc/fsl/fsl_asrc.c new file +5 -0
+		}
+
+		if (status & ASRSTR_AIDU(index)) {
+			asrc_priv->pair[index]->error |= ASRC_INPUT_BUFFER_UNDERRUN;
+			pair_dbg("Input Data Buffer has underflowed");

same..

Quoted 6 lines
sound/soc/fsl/fsl_asrc.c new file +6 -0
+		}
+	}
+
+	return IRQ_HANDLED;
+}
+

(...)

sound/soc/fsl/fsl_asrc.c line 240

Quoted 5 lines
sound/soc/fsl/fsl_asrc.c new file +5 -0
+/**
+ * Configure input and output thresholds
+ */
+static int fsl_asrc_set_watermarks(struct fsl_asrc_pair *pair, u32 in, u32 out)
+{

static void for function..?

Quoted 13 lines
sound/soc/fsl/fsl_asrc.c new file +13 -0
+	struct fsl_asrc *asrc_priv = pair->asrc_priv;
+	enum asrc_pair_index index = pair->index;
+
+	regmap_update_bits(asrc_priv->regmap, REG_ASRMCR(index),
+			   ASRMCRi_EXTTHRSHi_MASK |
+			   ASRMCRi_INFIFO_THRESHOLD_MASK |
+			   ASRMCRi_OUTFIFO_THRESHOLD_MASK,
+			   ASRMCRi_EXTTHRSHi |
+			   ASRMCRi_INFIFO_THRESHOLD(in) |
+			   ASRMCRi_OUTFIFO_THRESHOLD(out));
+
+	return 0;
+}

(...)

sound/soc/fsl/fsl_asrc.c line 1016

Quoted 5 lines
sound/soc/fsl/fsl_asrc.c new file +5 -0
+static const struct dev_pm_ops fsl_asrc_pm = {
+	SET_RUNTIME_PM_OPS(fsl_asrc_runtime_suspend, fsl_asrc_runtime_resume, NULL)
+	SET_SYSTEM_SLEEP_PM_OPS(fsl_asrc_suspend, fsl_asrc_resume)
+};
+

move device ids to here...

sound/soc/fsl/fsl_asrc.c line 1025

Quoted 9 lines
sound/soc/fsl/fsl_asrc.c new file +9 -0
+static struct platform_driver fsl_asrc_driver = {
+	.probe = fsl_asrc_probe,
+	.driver = {
+		.name = "fsl-asrc",
+		.of_match_table = fsl_asrc_ids,
+		.pm = &fsl_asrc_pm,
+	},
+};
+module_platform_driver(fsl_asrc_driver);

Thanks...

Signature · 2 lines
Regards,
Varka Bhadram.
#4 lore raw

Re: [PATCH v3 2/2] ASoC: fsl_asrc: Add ASRC ASoC CPU DAI and platform drivers

Hi Varka,

Quoted 172 lines · Varka Bhadram
Quoted 8 lines · Nicolin Chen

The Asynchronous Sample Rate Converter (ASRC) converts the sampling rate of a signal associated with an input clock into a signal associated with a different output clock. The driver currently works as a Front End of DPCM with other Back Ends DAI links such as ESAI<->CS42888 and SSI<->WM8962 and SAI. It converts the original sample rate to a common rate supported by Back Ends for playback while converts the common rate of Back Ends to a desired rate for capture. It has 3 pairs to support three different substreams within totally 10 channels.

(...)

Quoted 20 lines
Documentation/devicetree/bindings/sound/fsl,asrc.txt new file +20 -0
+Required properties:
+
+  - compatible : Compatible list, must contain "fsl,imx35-asrc" or
+    "fsl,imx53-asrc".
+
+  - reg : Offset and length of the register set for the device.
+
+  - interrupts : Contains the spdif interrupt.
+
+  - dmas : Generic dma devicetree binding as described in
+	   Documentation/devicetree/bindings/dma/dma.txt.
+
+  - dma-names : Six dmas have to be defined: "rxa", "rxb", "rxc", "txa", "txb",
+		and "txc".
+
+  - clocks : Contains an entry for each entry in clock-names.
+
+  - clock-names : Includes the following entries:
+	"mem"		Peripheral access clock to access registers.
+	"ipg"		Peripheral clock to driver module.

Documentation/devicetree/bindings/sound/fsl,asrc.txt line 38

Quoted 10 lines
Documentation/devicetree/bindings/sound/fsl,asrc.txt new file +10 -0
+	"asrck_<0-f>"	Clock sources for input and output clock.
+
+   - big-endian : If this property is absent, the native endian mode will
+		  be in use as default, or the big endian mode will be in use
+		  for all the device registers.
+
+   - fsl,asrc-rate : Defines a mutual sample rate used by Back End DAI link.
+
+   - fsl,asrc-width : Defines a mutual sample width used by Back End DAI link.
+

indentation for the properties....

- compatible : Should be "fsl,imx35-asrc" or "fsl,imx53-asrc".
- reg : Offset and length of the register set for the device.
....

(...)

Quoted 17 lines
sound/soc/fsl/fsl_asrc.c new file +17 -0
+
+static const struct platform_device_id fsl_asrc_devtype[] = {
+	{
+		.name = "imx35-asrc",
+		.driver_data = IMX35_ASRC,
+	}, {
+		.name = "imx53-asrc",
+		.driver_data = IMX53_ASRC,
+	}, {
+		/* sentinel */
+	}
+};
+MODULE_DEVICE_TABLE(platform, fsl_asrc_devtype);
+
+static const struct of_device_id fsl_asrc_ids[] = {
+	{
+		.compatible = "fsl,imx35-asrc",

sound/soc/fsl/fsl_asrc.c line 116

Quoted 10 lines
sound/soc/fsl/fsl_asrc.c new file +10 -0
+		.data = &fsl_asrc_devtype[IMX35_ASRC],
+	}, {
+		.compatible = "fsl,imx53-asrc",
+		.data = &fsl_asrc_devtype[IMX53_ASRC],
+	}, {
+		/* sentinel */
+	}
+};
+MODULE_DEVICE_TABLE(of, fsl_asrc_ids);
+

move these ids after probe/remove... every driver follows same thing...

Quoted 14 lines
sound/soc/fsl/fsl_asrc.c new file +14 -0
+static irqreturn_t fsl_asrc_isr(int irq, void *dev_id)
+{
+	struct fsl_asrc *asrc_priv = (struct fsl_asrc *)dev_id;
+	struct device *dev = &asrc_priv->pdev->dev;
+	enum asrc_pair_index index;
+	u32 status;
+
+	regmap_read(asrc_priv->regmap, REG_ASRSTR, &status);
+
+	/* Clean overload error */
+	regmap_write(asrc_priv->regmap, REG_ASRSTR, ASRSTR_AOLE);
+
+	/*
+	 * We here use dev_dbg() for all exceptions because ASRC itself does

sound/soc/fsl/fsl_asrc.c line 140

Quoted 10 lines
sound/soc/fsl/fsl_asrc.c new file +10 -0
+	 * not care if FIFO overflowed or underrun while a warning in the
+	 * interrupt would result a ridged conversion.
+	 */
+	for (index = ASRC_PAIR_A; index < ASRC_PAIR_MAX_NUM; index++) {
+		if (!asrc_priv->pair[index])
+			continue;
+
+		if (status & ASRSTR_ATQOL) {
+			asrc_priv->pair[index]->error |= ASRC_TASK_Q_OVERLOAD;
+			dev_dbg(dev, "ASRC Task Queue FIFO overload");

missed terminating new line (\n)...

sound/soc/fsl/fsl_asrc.c line 145

Quoted 5 lines
sound/soc/fsl/fsl_asrc.c new file +5 -0
+		}
+
+		if (status & ASRSTR_AOOL(index)) {
+			asrc_priv->pair[index]->error |= ASRC_OUTPUT_TASK_OVERLOAD;
+			pair_dbg("Output Task Overload");

same

sound/soc/fsl/fsl_asrc.c line 150

Quoted 5 lines
sound/soc/fsl/fsl_asrc.c new file +5 -0
+		}
+
+		if (status & ASRSTR_AIOL(index)) {
+			asrc_priv->pair[index]->error |= ASRC_INPUT_TASK_OVERLOAD;
+			pair_dbg("Input Task Overload");

same

sound/soc/fsl/fsl_asrc.c line 155

Quoted 5 lines
sound/soc/fsl/fsl_asrc.c new file +5 -0
+		}
+
+		if (status & ASRSTR_AODO(index)) {
+			asrc_priv->pair[index]->error |= ASRC_OUTPUT_BUFFER_OVERFLOW;
+			pair_dbg("Output Data Buffer has overflowed");

same

sound/soc/fsl/fsl_asrc.c line 160

Quoted 5 lines
sound/soc/fsl/fsl_asrc.c new file +5 -0
+		}
+
+		if (status & ASRSTR_AIDU(index)) {
+			asrc_priv->pair[index]->error |= ASRC_INPUT_BUFFER_UNDERRUN;
+			pair_dbg("Input Data Buffer has underflowed");

same..

Quoted 6 lines
sound/soc/fsl/fsl_asrc.c new file +6 -0
+		}
+	}
+
+	return IRQ_HANDLED;
+}
+

(...)

sound/soc/fsl/fsl_asrc.c line 240

Quoted 5 lines
sound/soc/fsl/fsl_asrc.c new file +5 -0
+/**
+ * Configure input and output thresholds
+ */
+static int fsl_asrc_set_watermarks(struct fsl_asrc_pair *pair, u32 in, u32 out)
+{

static void for function..?

Quoted 13 lines
sound/soc/fsl/fsl_asrc.c new file +13 -0
+	struct fsl_asrc *asrc_priv = pair->asrc_priv;
+	enum asrc_pair_index index = pair->index;
+
+	regmap_update_bits(asrc_priv->regmap, REG_ASRMCR(index),
+			   ASRMCRi_EXTTHRSHi_MASK |
+			   ASRMCRi_INFIFO_THRESHOLD_MASK |
+			   ASRMCRi_OUTFIFO_THRESHOLD_MASK,
+			   ASRMCRi_EXTTHRSHi |
+			   ASRMCRi_INFIFO_THRESHOLD(in) |
+			   ASRMCRi_OUTFIFO_THRESHOLD(out));
+
+	return 0;
+}

(...)

Quoted 7 lines

sound/soc/fsl/fsl_asrc.c line 1016

Quoted 5 lines
sound/soc/fsl/fsl_asrc.c new file +5 -0
+static const struct dev_pm_ops fsl_asrc_pm = {
+	SET_RUNTIME_PM_OPS(fsl_asrc_runtime_suspend, fsl_asrc_runtime_resume, NULL)
+	SET_SYSTEM_SLEEP_PM_OPS(fsl_asrc_suspend, fsl_asrc_resume)
+};
+

move device ids to here...

I'll fix them all in v4.

Thank you,
Nicolin

---

Quoted 17 lines

sound/soc/fsl/fsl_asrc.c line 1025

Quoted 10 lines
sound/soc/fsl/fsl_asrc.c new file +9 -0
+static struct platform_driver fsl_asrc_driver = {
+	.probe = fsl_asrc_probe,
+	.driver = {
+		.name = "fsl-asrc",
+		.of_match_table = fsl_asrc_ids,
+		.pm = &fsl_asrc_pm,
+	},
+};
+module_platform_driver(fsl_asrc_driver);

Thanks...

Signature · 2 lines
Regards,
Varka Bhadram.
#5 lore raw

Testing/Debugging alc668 with ASUS N750JK

In reply to Varka Bhadram

Hi,

What is the best way to test/debug the alc668 driver these days?

I am running kernel 3.14.1 (debian testing/sid).

The laptop is an ASUS N750JK.

Sound works for front left/right speakers but the back speakers and external lfe channel is not working on this laptop.

- I have found a couple of kernel bug reports for other ASUS models with this chipset but they are both marked resolved. Should I open a new ticket ?

https://bugzilla.kernel.org/show_bug.cgi?id=65091
https://bugzilla.kernel.org/show_bug.cgi?id=66271

- I can hear static through the front speakers (with pulseaudio test) if I set pins 0x19 and 0x1a to Line Out (Center/LFE) and Internal (Center/LFE) or vice versa with hdajackretask.

Pin 0x16 does not appear to work at all.

I see this output when I apply the config in hdajackretask.

0x12 0x90a60140
0x14 0x99130110
0x15 0x04211020
0x16 0x99134111
0x18 0x01a19840
0x19 0x01014011
0x1a 0x411111f0
0x1b 0x411111f0
0x1d 0x40c6852d
0x1e 0x014b1180
0x1f 0x411111f0
1

--
Patrick Shirkey
Boost Hardware Ltd

#18 lore raw

Re: [PATCH v3 2/2] ASoC: fsl_asrc: Add ASRC ASoC CPU DAI and platform drivers

In reply to Varka Bhadram

Hi Varka,

Regarding a point you suggested.

Quoted 24 lines · Varka Bhadram

On 07/25/2014 09:33 AM, Nicolin Chen wrote:
(...)

Quoted 21 lines
sound/soc/fsl/fsl_asrc.c new file +21 -0
+
+static const struct platform_device_id fsl_asrc_devtype[] = {
+	{
+		.name = "imx35-asrc",
+		.driver_data = IMX35_ASRC,
+	}, {
+		.name = "imx53-asrc",
+		.driver_data = IMX53_ASRC,
+	}, {
+		/* sentinel */
+	}
+};
+MODULE_DEVICE_TABLE(platform, fsl_asrc_devtype);
+
+static const struct of_device_id fsl_asrc_ids[] = {
+	{
+		.compatible = "fsl,imx35-asrc",
+		.data = &fsl_asrc_devtype[IMX35_ASRC],
+	}, {
+		.compatible = "fsl,imx53-asrc",
+		.data = &fsl_asrc_devtype[IMX53_ASRC],
Quoted 8 lines

sound/soc/fsl/fsl_asrc.c line 116

Quoted 6 lines
sound/soc/fsl/fsl_asrc.c new file +6 -0
+	}, {
+		/* sentinel */
+	}
+};
+MODULE_DEVICE_TABLE(of, fsl_asrc_ids);
+

move these ids after probe/remove... every driver follows same thing...

Hmm.. fsl_asrc_ids is called in probe(), so it's probably not a good choice to put them after probe/remove. And actually not every driver does so. For example drivers/i2c/busses/i2c-s3c2410.c

I think it should be okay to put here if it contains data.

Thank you,
Nicolin
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html

#20 lore raw

Re: [PATCH v3 2/2] ASoC: fsl_asrc: Add ASRC ASoC CPU DAI and platform drivers

In reply to Varka Bhadram
Quoted 63 lines · Varka Bhadram

Hi Nicolin,

Quoted 36 lines · Nicolin Chen

Hi Varka,

Regarding a point you suggested.

Quoted 23 lines · Varka Bhadram

On 07/25/2014 09:33 AM, Nicolin Chen wrote:
(...)

Quoted 20 lines
sound/soc/fsl/fsl_asrc.c new file +20 -0
+
+static const struct platform_device_id fsl_asrc_devtype[] = {
+	{
+		.name = "imx35-asrc",
+		.driver_data = IMX35_ASRC,
+	}, {
+		.name = "imx53-asrc",
+		.driver_data = IMX53_ASRC,
+	}, {
+		/* sentinel */
+	}
+};
+MODULE_DEVICE_TABLE(platform, fsl_asrc_devtype);
+
+static const struct of_device_id fsl_asrc_ids[] = {
+	{
+		.compatible = "fsl,imx35-asrc",
+		.data = &fsl_asrc_devtype[IMX35_ASRC],
+	}, {
+		.compatible = "fsl,imx53-asrc",
Quoted 8 lines

sound/soc/fsl/fsl_asrc.c line 116

Quoted 7 lines
sound/soc/fsl/fsl_asrc.c new file +7 -0
+		.data = &fsl_asrc_devtype[IMX53_ASRC],
+	}, {
+		/* sentinel */
+	}
+};
+MODULE_DEVICE_TABLE(of, fsl_asrc_ids);
+

move these ids after probe/remove... every driver follows same thing...

Quoted 5 lines

Hmm.. fsl_asrc_ids is called in probe(), so it's probably not a good choice to put them after probe/remove. And actually not every driver does so. For example drivers/i2c/busses/i2c-s3c2410.c

I think it should be okay to put here if it contains data.

You are using these ids in the probe .Tt should be above the probe() so we can see of_match_device() directly...
and also one more thing that the interrupt handler also would be immediately above the probe()

ex:
static irqreturn_t fsl_asrc_isr(int irq, void *dev_id) {
...
}

device ids..

your_probe()
{
...
}

Quoted 6 lines

your_remove()
{
...
}

Now every driver that is coming following this style...

I see....

Will follow this style.

Thank you!
Nicolin

---

Quoted 26 lines

If your not using device ids in probe then it would be like

static irqreturn_t fsl_asrc_isr(int irq, void *dev_id) {
...
}

your_probe()
{
...
}

your_remove()
{
...
}

device ids..

Thanks...

Signature · 2 lines
Regards,
Varka Bhadram.
#19 lore raw

Re: [PATCH v3 2/2] ASoC: fsl_asrc: Add ASRC ASoC CPU DAI and platform drivers

In reply to Nicolin Chen

Hi Nicolin,

Quoted 36 lines · Nicolin Chen

Hi Varka,

Regarding a point you suggested.

Quoted 23 lines · Varka Bhadram

On 07/25/2014 09:33 AM, Nicolin Chen wrote:
(...)

Quoted 20 lines
sound/soc/fsl/fsl_asrc.c new file +20 -0
+
+static const struct platform_device_id fsl_asrc_devtype[] = {
+	{
+		.name = "imx35-asrc",
+		.driver_data = IMX35_ASRC,
+	}, {
+		.name = "imx53-asrc",
+		.driver_data = IMX53_ASRC,
+	}, {
+		/* sentinel */
+	}
+};
+MODULE_DEVICE_TABLE(platform, fsl_asrc_devtype);
+
+static const struct of_device_id fsl_asrc_ids[] = {
+	{
+		.compatible = "fsl,imx35-asrc",
+		.data = &fsl_asrc_devtype[IMX35_ASRC],
+	}, {
+		.compatible = "fsl,imx53-asrc",
Quoted 8 lines

sound/soc/fsl/fsl_asrc.c line 116

Quoted 7 lines
sound/soc/fsl/fsl_asrc.c new file +7 -0
+		.data = &fsl_asrc_devtype[IMX53_ASRC],
+	}, {
+		/* sentinel */
+	}
+};
+MODULE_DEVICE_TABLE(of, fsl_asrc_ids);
+

move these ids after probe/remove... every driver follows same thing...

Quoted 5 lines

Hmm.. fsl_asrc_ids is called in probe(), so it's probably not a good choice to put them after probe/remove. And actually not every driver does so. For example drivers/i2c/busses/i2c-s3c2410.c

I think it should be okay to put here if it contains data.

You are using these ids in the probe .Tt should be above the probe() so we can see of_match_device() directly...
and also one more thing that the interrupt handler also would be immediately above the probe()

ex:
static irqreturn_t fsl_asrc_isr(int irq, void *dev_id) {
...
}

device ids..

your_probe()
{
...
}

your_remove()
{
...
}

Now every driver that is coming following this style...

If your not using device ids in probe then it would be like

static irqreturn_t fsl_asrc_isr(int irq, void *dev_id) {
...
}

your_probe()
{
...
}

your_remove()
{
...
}

device ids..

Thanks...

Signature · 7 lines
Regards,
Varka Bhadram.

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
#6 lore raw

Re: Testing/Debugging alc668 with ASUS N750JK

In reply to Patrick Shirkey
Quoted 9 lines

What is the best way to test/debug the alc668 driver these days?

I am running kernel 3.14.1 (debian testing/sid).

The laptop is an ASUS N750JK.

Sound works for front left/right speakers but the back speakers and external lfe channel is not working on this laptop.

You have to post output of alsa-info.sh

Do the BIOS setup all the pin default ?

How many audio jacks ?

Do it support headset or headphone ?

Do you mean there are four internal speakers ?

Do it support surround40 in windows ?

The external sonic master and headphone need two volume controls but alc668 only have three

The best way to test is using latest git version and hda jack retask to

1) four internal speaker and headphone
2) two internal speaker, headphone and external subwoofer

Once you confirm the nodes of the speakers, subwooder
You need to decide whether headphone share the volume controls with the speaker/subwoofer

Quoted 41 lines

- I have found a couple of kernel bug reports for other ASUS models with this chipset but they are both marked resolved. Should I open a new ticket ?

https://bugzilla.kernel.org/show_bug.cgi?id=65091
https://bugzilla.kernel.org/show_bug.cgi?id=66271

- I can hear static through the front speakers (with pulseaudio test) if I set pins 0x19 and 0x1a to Line Out (Center/LFE) and Internal (Center/LFE) or vice versa with hdajackretask.

Pin 0x16 does not appear to work at all.

I see this output when I apply the config in hdajackretask.

0x12 0x90a60140
0x14 0x99130110
0x15 0x04211020
0x16 0x99134111
0x18 0x01a19840
0x19 0x01014011
0x1a 0x411111f0
0x1b 0x411111f0
0x1d 0x40c6852d
0x1e 0x014b1180
0x1f 0x411111f0
1

--
Patrick Shirkey
Boost Hardware Ltd
_______________________________________________
Alsa-devel mailing list
[email protected]
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

#7 lore raw

Re: Testing/Debugging alc668 with ASUS N750JK

Quoted 12 lines · Raymond Yau
Quoted 9 lines

What is the best way to test/debug the alc668 driver these days?

I am running kernel 3.14.1 (debian testing/sid).

The laptop is an ASUS N750JK.

Sound works for front left/right speakers but the back speakers and external lfe channel is not working on this laptop.

You have to post output of alsa-info.sh

http://boosthardware.com/alsa-info-alc668-n750jk.txt

Quoted 4 lines

Do the BIOS setup all the pin default ?

How many audio jacks ?

Standard headphone/mic + yellow external lfe (sonic master). There is also hdmi but I am not testing that at the moment.

Quoted 4 lines

Do it support headset or headphone ?

Do you mean there are four internal speakers ?

There are two front speakers which produce sound through the front bottom of the case. There are also two back speakers which do not produce sound in my tests so far.

Quoted 2 lines

Do it support surround40 in windows ?

I am not running windows OS on this machine but I suspect it does.

Quoted 5 lines

The external sonic master and headphone need two volume controls but alc668 only have three

The best way to test is using latest git version and hda jack retask to

The process has changed somewhat since I last did this.

Turns out that is not such as easy process with the 3.14.1 kernel in debian sid/testing. From the looks of it I have to compile my own kernel to get all the necessary build files.

make[1]: Leaving directory '/home/patrick/code/alsa/alsa-driver/alsa' make -C /lib/modules/3.14-1-amd64/source SUBDIRS=/home/patrick/code/alsa/alsa-driver/alsa CPP="gcc -E" CC="gcc" modules
make[1]: Entering directory '/usr/src/linux-headers-3.14-1-common'

ERROR: Kernel configuration is invalid.
include/generated/autoconf.h or include/config/auto.conf are
missing.

         Run 'make oldconfig && make prepare' on kernel src to fix it.

WARNING: Symbol version dump
/usr/src/linux-headers-3.14-1-common/Module.symvers
is missing; modules will have no dependencies and modversions.

find: `/usr/src/linux-headers-3.14-1-common/alsa-kernel/': No such file or directory
find: `/usr/src/linux-headers-3.14-1-common/alsa-kernel/': No such file or directory
find: `/usr/src/linux-headers-3.14-1-common/alsa-kernel/': No such file or directory
Building modules, stage 2.
/usr/src/linux-headers-3.14-1-common/scripts/Makefile.modpost:42:
include/config/auto.conf: No such file or directory
find: `/usr/src/linux-headers-3.14-1-common/alsa-kernel/': No such file or directory
find: `/usr/src/linux-headers-3.14-1-common/alsa-kernel/': No such file or directory
find: `/usr/src/linux-headers-3.14-1-common/alsa-kernel/': No such file or directory
make[2]: *** No rule to make target 'include/config/auto.conf'. Stop. Makefile:1294: recipe for target 'modules' failed
make[1]: *** [modules] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-3.14-1-common' Makefile:167: recipe for target 'compile' failed
make: *** [compile] Error 2

Quoted 7 lines

1) four internal speaker and headphone
2) two internal speaker, headphone and external subwoofer

Once you confirm the nodes of the speakers, subwooder
You need to decide whether headphone share the volume controls with the speaker/subwoofer

Quoted 1 line

I have spent some time on this step already with 3.14.1

Is there a specific reason this process is not already scripted other than no one has taken the time to do it?

Can we not create a test script that will run through all the logical combinations and provide all the relevant info?

Quoted 18 lines
Quoted 18 lines

- I have found a couple of kernel bug reports for other ASUS models with
this chipset but they are both marked resolved. Should I open a new ticket
?

https://bugzilla.kernel.org/show_bug.cgi?id=65091
https://bugzilla.kernel.org/show_bug.cgi?id=66271

- I can hear static through the front speakers (with pulseaudio test) if
I set pins 0x19 and 0x1a to Line Out (Center/LFE) and Internal (Center/LFE) or vice versa with hdajackretask.

Pin 0x16 does not appear to work at all.

I see this output when I apply the config in hdajackretask.

Quoted 14 lines
Quoted 4 lines

0x12 0x90a60140
0x14 0x99130110
0x15 0x04211020
0x16 0x99134111

Quoted 10 lines

0x18 0x01a19840
0x19 0x01014011
0x1a 0x411111f0
0x1b 0x411111f0
0x1d 0x40c6852d
0x1e 0x014b1180
0x1f 0x411111f0
1

--
Patrick Shirkey
Boost Hardware Ltd

#8 lore raw

Re: Testing/Debugging alc668 with ASUS N750JK

Quoted 7 lines
Quoted 7 lines
Quoted 7 lines

What is the best way to test/debug the alc668 driver these days?

I am running kernel 3.14.1 (debian testing/sid).

The laptop is an ASUS N750JK.

Quoted 7 lines
Quoted 5 lines
Quoted 2 lines

Sound works for front left/right speakers but the back speakers and external lfe channel is not working on this laptop.

You have to post output of alsa-info.sh

http://boosthardware.com/alsa-info-alc668-n750jk.txt

Seem BIOS only set up the front speakers

Quoted 6 lines
Quoted 3 lines

How many audio jacks ?

Standard headphone/mic + yellow external lfe (sonic master). There is also hdmi but I am not testing that at the moment.

http://www.asus.com/Notebooks_Ultrabooks/N750JK/specifications/

Do you mean headset ?

Quoted 15 lines
Quoted 5 lines

Do it support headset or headphone ?

Do you mean there are four internal speakers ?

There are two front speakers which produce sound through the front bottom of the case. There are also two back speakers which do not produce sound in my tests so far.

Quoted 2 lines

Do it support surround40 in windows ?

I am not running windows OS on this machine but I suspect it does.

Quoted 8 lines
Quoted 5 lines

The external sonic master and headphone need two volume controls but alc668 only have three

The best way to test is using latest git version and hda jack retask to

The process has changed somewhat since I last did this.

https://git.kernel.org/cgit/linux/kernel/git/tiwai/sound.git/log/sound/pci/hda?qt=grep&q=alc668

Quoted 10 lines
Quoted 8 lines

1) four internal speaker and headphone
2) two internal speaker, headphone and external subwoofer

Once you confirm the nodes of the speakers, subwooder
You need to decide whether headphone share the volume controls with the speaker/subwoofer

Quoted 1 line

I have spent some time on this step already with 3.14.1

Did you retask the node of subwoofer as speaker or line out ?

For multi channel, the sequence number is ascending and the driver expect they have same type i.e, all speakers or all line out jacks

Did you find the node of the rear speakers in (1) ?

Did surround 4.0 work when you fix the rear speaker ?

Did you find the node of the external subwoofer in (2) ?

Did the sonic master subwoofer detected ?
hda jack sense test -a

Do the subwoofer only use right channel ?

Do surround 2.1 works ?

Quoted 3 lines

Is there a specific reason this process is not already scripted other than no one has taken the time to do it?

Do surround 4.1 or 5.1 work when you fix both speaker and subwoofer ?

Do you prefer driver create headphone volume control or subwoofer volume control ?

Quoted 4 lines

Can we not create a test script that will run through all the logical combinations and provide all the relevant info?

The driver hardcore the name of volume control to bass when there are two speaker nodes for those 2.1

Quoted 32 lines
Quoted 32 lines
Quoted 32 lines

- I have found a couple of kernel bug reports for other ASUS models with
this chipset but they are both marked resolved. Should I open a new ticket
?

https://bugzilla.kernel.org/show_bug.cgi?id=65091
https://bugzilla.kernel.org/show_bug.cgi?id=66271

- I can hear static through the front speakers (with pulseaudio test) if
I set pins 0x19 and 0x1a to Line Out (Center/LFE) and Internal (Center/LFE) or vice versa with hdajackretask.

Pin 0x16 does not appear to work at all.

I see this output when I apply the config in hdajackretask.

0x12 0x90a60140
0x14 0x99130110
0x15 0x04211020
0x16 0x99134111
0x18 0x01a19840
0x19 0x01014011
0x1a 0x411111f0
0x1b 0x411111f0
0x1d 0x40c6852d
0x1e 0x014b1180
0x1f 0x411111f0
1

#9 lore raw

Re: Testing/Debugging alc668 with ASUS N750JK

Quoted 10 lines · Raymond Yau
Quoted 10 lines
Quoted 10 lines
Quoted 9 lines

What is the best way to test/debug the alc668 driver these days?

I am running kernel 3.14.1 (debian testing/sid).

The laptop is an ASUS N750JK.

Sound works for front left/right speakers but the back speakers and external lfe channel is not working on this laptop.

Quoted 7 lines
Quoted 4 lines
Quoted 2 lines

You have to post output of alsa-info.sh

http://boosthardware.com/alsa-info-alc668-n750jk.txt

Seem BIOS only set up the front speakers

There is nothing in the bios to configure the audio device

Quoted 4 lines
Quoted 4 lines
Quoted 3 lines

How many audio jacks ?

Quoted 8 lines
Quoted 3 lines

Standard headphone/mic + yellow external lfe (sonic master). There is also
hdmi but I am not testing that at the moment.

http://www.asus.com/Notebooks_Ultrabooks/N750JK/specifications/

Do you mean headset ?

There are the following jacks:

1 x headphone
1 x mic(line in)
1 x sonic master (yellow)
1 x hdmi (intel Haswell hdmi)

Quoted 19 lines
Quoted 19 lines
Quoted 5 lines

Do it support headset or headphone ?

Do you mean there are four internal speakers ?

There are two front speakers which produce sound through the front bottom
of the case. There are also two back speakers which do not produce sound in my tests so far.

Quoted 2 lines

Do it support surround40 in windows ?

I am not running windows OS on this machine but I suspect it does.

Quoted 3 lines

The external sonic master and headphone need two volume controls but alc668 only have three

Quoted 9 lines
Quoted 6 lines
Quoted 1 line

The best way to test is using latest git version and hda jack retask

to

Quoted 1 line

The process has changed somewhat since I last did this.

https://git.kernel.org/cgit/linux/kernel/git/tiwai/sound.git/log/sound/pci/hda?qt=grep&q=alc668

That suggest not much has changed for a while?

Quoted 6 lines
Quoted 6 lines
Quoted 6 lines

1) four internal speaker and headphone
2) two internal speaker, headphone and external subwoofer

Once you confirm the nodes of the speakers, subwooder You need to decide whether headphone share the volume controls with

Quoted 8 lines
Quoted 5 lines

the

Quoted 2 lines

speaker/subwoofer

Quoted 1 line

I have spent some time on this step already with 3.14.1

Did you retask the node of subwoofer as speaker or line out ?

I have tried both but I have not been able to identify the subwoofer.

I have tried playing with: 16, 19, 1a

Quoted 5 lines

For multi channel, the sequence number is ascending and the driver expect they have same type i.e, all speakers or all line out jacks

Did you find the node of the rear speakers in (1) ?

I have not found them yet.

Quoted 2 lines

Did surround 4.0 work when you fix the rear speaker ?

Only the front speakers play audio but they don't work with 4.0 enabled

Quoted 2 lines

Did you find the node of the external subwoofer in (2) ?

Not yet.

Quoted 3 lines

Did the sonic master subwoofer detected ?
hda jack sense test -a

I have grabbed the scripts but I get this error when running hda-analyzer:

Traceback (most recent call last):
File "/dev/shm/hda-analyzer/hda_analyzer.py", line 546, in <module>
sys.exit(main(sys.argv))
File "/dev/shm/hda-analyzer/hda_analyzer.py", line 523, in main

    if read_nodes(sys.argv[1:]) == 0:
  File "/dev/shm/hda-analyzer/hda_analyzer.py", line 89, in read_nodes
    read_nodes2(c.card, i)
  File "/dev/shm/hda-analyzer/hda_analyzer.py", line 60, in read_nodes2
    c = HDACodec(card, codec)
  File "/dev/shm/hda-analyzer/hda_codec.py", line 1041, in __init__
    self.parse_proc()
  File "/dev/shm/hda-analyzer/hda_codec.py", line 1140, in parse_proc
    self.proc_codec = HDACodecProc(self.card, self.device, file)
  File "/dev/shm/hda-analyzer/hda_proc.py", line 479, in __init__
    self.parse(proc_file)
  File "/dev/shm/hda-analyzer/hda_proc.py", line 677, in parse
    node.add_digital(line[11:])

File "/dev/shm/hda-analyzer/hda_proc.py", line 296, in add_digital
self.wrongfile('unknown dig1 bit %s' % repr(b))
File "/dev/shm/hda-analyzer/hda_proc.py", line 143, in wrongfile
raise ValueError, "wrong proc file format (%s)" % msg
ValueError: wrong proc file format (unknown dig1 bit 'KAE')

Quoted 2 lines

Do the subwoofer only use right channel ?

I cannot hear the subwoofer at this point

Quoted 2 lines

Do surround 2.1 works ?

It says it is working but I do not get sound out of the sub woofer. I can hear static(whitenoise) through the front speakers (with pulseaudio test) if I set pins 0x19 and 0x1a to Line Out (Center/LFE) and Internal (Center/LFE) or vice versa with hdajackretask.

Quoted 7 lines
Quoted 4 lines

Is there a specific reason this process is not already scripted other than
no one has taken the time to do it?

Do surround 4.1 or 5.1 work when you fix both speaker and subwoofer ?

Surround 4.1/5/1 do not produce any sound from my tests so far (using PA Test)

Quoted 3 lines

Do you prefer driver create headphone volume control or subwoofer volume control ?

I would like the lfe to be sent through the yellow sonic master jack. I am not concerned with the headset jack at the moment. A cursory test shows just the right channel is working on the headset jack.

Quoted 8 lines
Quoted 4 lines

Can we not create a test script that will run through all the logical combinations and provide all the relevant info?

The driver hardcore the name of volume control to bass when there are two speaker nodes for those 2.1

I do not see any controls for the bass volume in alsamixer

Quoted 19 lines
Quoted 19 lines
Quoted 19 lines
Quoted 19 lines

- I have found a couple of kernel bug reports for other ASUS models with
this chipset but they are both marked resolved. Should I open a new ticket
?

https://bugzilla.kernel.org/show_bug.cgi?id=65091
https://bugzilla.kernel.org/show_bug.cgi?id=66271

- I can hear static through the front speakers (with pulseaudio test) if
I set pins 0x19 and 0x1a to Line Out (Center/LFE) and Internal (Center/LFE) or vice versa with hdajackretask.

Pin 0x16 does not appear to work at all.

I see this output when I apply the config in hdajackretask.

Quoted 14 lines
Quoted 5 lines
Quoted 5 lines
Quoted 5 lines

0x12 0x90a60140
0x14 0x99130110
0x15 0x04211020
0x16 0x99134111
0x18 0x01a19840

Quoted 8 lines
Quoted 8 lines
Quoted 8 lines

0x19 0x01014011
0x1a 0x411111f0
0x1b 0x411111f0
0x1d 0x40c6852d
0x1e 0x014b1180
0x1f 0x411111f0
1

--
Patrick Shirkey
Boost Hardware Ltd

#21 lore raw

Re: [PATCH v3 2/2] ASoC: fsl_asrc: Add ASRC ASoC CPU DAI and platform drivers

In reply to Nicolin Chen

Documentation/devicetree/bindings/sound/fsl,asrc.txt line 33

Quoted 3 lines
Documentation/devicetree/bindings/sound/fsl,asrc.txt new file +3 -0
+   - big-endian : If this property is absent, the native endian mode will
+                 be in use as default, or the big endian mode will be in use
+                 for all the device registers.

Native endian is meaningless. If a CPU supports both BE and LE, there is no native endianness. The endianness of the kernel is dynamic while the endianness of registers in HW is fixed.

Just choose an endianness to assume by default (presumably little). That way this describes the HW and always works with a kernel of arbitrary endianness.

Thanks,
Mark.
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html

#22 lore raw

Re: [PATCH v3 2/2] ASoC: fsl_asrc: Add ASRC ASoC CPU DAI and platform drivers

Quoted 11 lines · Mark Rutland

Documentation/devicetree/bindings/sound/fsl,asrc.txt line 33

Quoted 3 lines
Documentation/devicetree/bindings/sound/fsl,asrc.txt new file +3 -0
+   - big-endian : If this property is absent, the native endian mode will
+                 be in use as default, or the big endian mode will be in use
+                 for all the device registers.

Native endian is meaningless. If a CPU supports both BE and LE, there is no native endianness. The endianness of the kernel is dynamic while the endianness of registers in HW is fixed.

Just choose an endianness to assume by default (presumably little). That way this describes the HW and always works with a kernel of arbitrary endianness.

Thank you for the comments.

I just revised it by using 'little endian as default' and sent the patch v6.

Please take a look at the new version.

Thanks again,
Nicolin

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html

#10 lore raw

Re: Testing/Debugging alc668 with ASUS N750JK

In reply to Patrick Shirkey
Quoted 29 lines
Quoted 10 lines
Quoted 10 lines
Quoted 10 lines
Quoted 9 lines

What is the best way to test/debug the alc668 driver these days?

I am running kernel 3.14.1 (debian testing/sid).

The laptop is an ASUS N750JK.

Sound works for front left/right speakers but the back speakers and external lfe channel is not working on this laptop.

Quoted 7 lines
Quoted 4 lines
Quoted 2 lines

You have to post output of alsa-info.sh

http://boosthardware.com/alsa-info-alc668-n750jk.txt

Seem BIOS only set up the front speakers

There is nothing in the bios to configure the audio device

Quoted 8 lines
Quoted 7 lines
Quoted 3 lines

How many audio jacks ?

Standard headphone/mic + yellow external lfe (sonic master). There is also
hdmi but I am not testing that at the moment.

Quoted 8 lines
Quoted 4 lines

http://www.asus.com/Notebooks_Ultrabooks/N750JK/specifications/

Do you mean headset ?

There are the following jacks:

1 x headphone

Do you mean no optical spdif ?

Quoted 1 line

1 x mic(line in)

Switching Mic Jack to line in can be performed by mic Jack mode switch using hint add_jack_modes=true

https://git.kernel.org/cgit/linux/kernel/git/tiwai/sound.git/tree/Documentation/sound/alsa/HD-Audio.txt

Quoted 13 lines

1 x sonic master (yellow)
1 x hdmi (intel Haswell hdmi)

Quoted 9 lines
Quoted 9 lines
Quoted 5 lines

Do it support headset or headphone ?

Do you mean there are four internal speakers ?

There are two front speakers which produce sound through the front bottom
of the case. There are also two back speakers which do not produce

sound

Quoted 47 lines
Quoted 20 lines
Quoted 20 lines

in my tests so far.

Quoted 2 lines

Do it support surround40 in windows ?

I am not running windows OS on this machine but I suspect it does.

Quoted 4 lines

The external sonic master and headphone need two volume controls but alc668 only have three

The best way to test is using latest git version and hda jack retask

to

Quoted 8 lines

1) four internal speaker and headphone
2) two internal speaker, headphone and external subwoofer

Once you confirm the nodes of the speakers, subwooder You need to decide whether headphone share the volume controls with

Quoted 8 lines
Quoted 5 lines

the

Quoted 2 lines

speaker/subwoofer

Quoted 1 line

I have spent some time on this step already with 3.14.1

Did you retask the node of subwoofer as speaker or line out ?

I have tried both but I have not been able to identify the subwoofer.

I have tried playing with: 16, 19, 1a

Quoted 2 lines

Did you find the node of the rear speakers in (1) ?

I have not found them yet.

Quoted 2 lines

Did surround 4.0 work when you fix the rear speaker ?

Only the front speakers play audio but they don't work with 4.0 enabled

Quoted 2 lines

Did you find the node of the external subwoofer in (2) ?

Quoted 8 lines

Not yet.

Quoted 3 lines

Did the sonic master subwoofer detected ?
hda jack sense test -a

I have grabbed the scripts but I get this error when running hda-analyzer:

You can use hda-verb GET_PIN_SENSE to test all the pin complex nodes which pincap support DETECT

Quoted 6 lines
Quoted 3 lines

Do the subwoofer only use right channel ?

I cannot hear the subwoofer at this point

Quoted 8 lines
Quoted 2 lines

Do surround 2.1 works ?

It says it is working but I do not get sound out of the sub woofer. I can hear static(whitenoise) through the front speakers (with pulseaudio test) if I set pins 0x19 and 0x1a to Line Out (Center/LFE) and Internal (Center/LFE) or vice versa with hdajackretask.

http://git.alsa-project.org/?p=alsa-tools.git;a=blob;f=hdajackretask/README;hb=HEAD

Did you use apply button(dyanmic reconfiguartion) or installment boot override (early patching) ?

Quoted 5 lines
Quoted 5 lines
Quoted 4 lines

Is there a specific reason this process is not already scripted other than
no one has taken the time to do it?

Quoted 7 lines
Quoted 2 lines

Do surround 4.1 or 5.1 work when you fix both speaker and subwoofer ?

Surround 4.1/5/1 do not produce any sound from my tests so far (using PA Test)

Quoted 1 line

Do you prefer driver create headphone volume control or subwoofer

volume

Quoted 14 lines
Quoted 2 lines

control ?

I would like the lfe to be sent through the yellow sonic master jack. I am not concerned with the headset jack at the moment. A cursory test shows just the right channel is working on the headset jack.

Quoted 6 lines
Quoted 4 lines

Can we not create a test script that will run through all the logical combinations and provide all the relevant info?

The driver hardcore the name of volume control to bass when there are

two

Quoted 6 lines
Quoted 2 lines

speaker nodes for those 2.1

I do not see any controls for the bass volume in alsamixer

https://git.kernel.org/cgit/linux/kernel/git/tiwai/sound.git/commit/sound/pci/hda?id=f37bc7a88d374448a1f4bba9267d308606d78bf2

Quoted 11 lines
Quoted 11 lines
Quoted 11 lines
Quoted 11 lines
Quoted 11 lines

- I have found a couple of kernel bug reports for other ASUS models with
this chipset but they are both marked resolved. Should I open a new ticket
?

https://bugzilla.kernel.org/show_bug.cgi?id=65091
https://bugzilla.kernel.org/show_bug.cgi?id=66271

- I can hear static through the front speakers (with pulseaudio

test)

Quoted 6 lines
Quoted 6 lines
Quoted 4 lines
Quoted 4 lines
Quoted 4 lines

if
I set pins 0x19 and 0x1a to Line Out (Center/LFE) and Internal (Center/LFE) or vice versa with hdajackretask.

For multi channel, the sequence number is ascending and the driver

expect

Quoted 2 lines
Quoted 2 lines

they have same type i.e, all speakers or all line out jacks

Pin Default 0x90170110: [Fixed] Speaker at Int N/A
Conn = Analog, Color = Unknown DefAssociation = 0x1, Sequence = 0x0 Misc = NO_PRESENCE

The rear speaker need same default association but sequence number higher than that of the front speaker

The external subwoofer may use [jack] speaker with same default association and higher sequence number if it can be detected

The driver won't use all of them for multi channel if you retasked it as line out

#11 lore raw

Re: Testing/Debugging alc668 with ASUS N750JK

Quoted 4 lines · Raymond Yau

You can use hda-verb GET_PIN_SENSE to test all the pin complex nodes which pincap support DETECT

I have tried a few attempts but it's pretty confusing.

These ones don't do anything:

# hda-verb /dev/snd/hwC1D0  GET_PIN_SENSE
# hda-verb /dev/snd/hwC1D0  0x0 GET_PIN_SENSE

I don't know what to make of this output:

# hda-verb /dev/snd/hwC1D0  0x0 GET_PIN_SENSE PIN_CAP
nid = 0x0, verb = 0xf09, param = 0xc
value = 0x0
# hda-verb /dev/snd/hwC0D0  0x0 GET_PIN_SENSE PIN_CAP
nid = 0x0, verb = 0xf09, param = 0xc
value = 0x0
# hda-verb /dev/snd/hwC0D0  0x16 GET_PIN_SENSE PIN_CAP
nid = 0x16, verb = 0xf09, param = 0xc
value = 0xffffffff
# hda-verb /dev/snd/hwC0D0  0x19 GET_PIN_SENSE PIN_CAP
nid = 0x19, verb = 0xf09, param = 0xc
value = 0xffffffff
# hda-verb /dev/snd/hwC0D0  0x1a GET_PIN_SENSE PIN_CAP
nid = 0x1a, verb = 0xf09, param = 0xc
value = 0xffffffff
# hda-verb /dev/snd/hwC0D0  0x1b GET_PIN_SENSE PIN_CAP
nid = 0x1b, verb = 0xf09, param = 0xc
value = 0xffffffff
Quoted 11 lines
Quoted 10 lines
Quoted 2 lines

Do surround 2.1 works ?

It says it is working but I do not get sound out of the sub woofer. I can
hear static(whitenoise) through the front speakers (with pulseaudio test)
if I set pins 0x19 and 0x1a to Line Out (Center/LFE) and Internal (Center/LFE) or vice versa with hdajackretask.

Quoted 5 lines

http://git.alsa-project.org/?p=alsa-tools.git;a=blob;f=hdajackretask/README;hb=HEAD

Did you use apply button(dyanmic reconfiguartion) or installment boot override (early patching) ?

I have tried both options.

After rebooting with the apply option set I don't hear any static or audio with the PA test app.

Quoted 7 lines
Quoted 4 lines

I do not see any controls for the bass volume in alsamixer

https://git.kernel.org/cgit/linux/kernel/git/tiwai/sound.git/commit/sound/pci/hda?id=f37bc7a88d374448a1f4bba9267d308606d78bf2

I have checked alsamixer again after the last round of tinkering with hdajackretask and" Speaker CLFE" is now showing up but it does not have volume control just mute on/off.

I see the following new controls

Speaker CFLE (mute only)
Speaker Front (mute + vol)
Speaker Side (mute only)
Speaker Surround (mute + vol)

Quoted 29 lines
Quoted 13 lines
Quoted 2 lines
Quoted 2 lines
Quoted 2 lines
Quoted 2 lines

- I have found a couple of kernel bug reports for other ASUS

models

Quoted 2 lines
Quoted 2 lines
Quoted 2 lines
Quoted 2 lines

with
this chipset but they are both marked resolved. Should I open a

new

Quoted 7 lines
Quoted 7 lines
Quoted 7 lines
Quoted 7 lines

ticket
?

https://bugzilla.kernel.org/show_bug.cgi?id=65091
https://bugzilla.kernel.org/show_bug.cgi?id=66271

- I can hear static through the front speakers (with pulseaudio

test)

Quoted 6 lines
Quoted 6 lines
Quoted 4 lines
Quoted 4 lines
Quoted 4 lines

if
I set pins 0x19 and 0x1a to Line Out (Center/LFE) and Internal (Center/LFE) or vice versa with hdajackretask.

For multi channel, the sequence number is ascending and the driver

expect

Quoted 2 lines
Quoted 2 lines

they have same type i.e, all speakers or all line out jacks

Pin Default 0x90170110: [Fixed] Speaker at Int N/A
Conn = Analog, Color = Unknown DefAssociation = 0x1, Sequence = 0x0 Misc = NO_PRESENCE

Quoted 9 lines

The rear speaker need same default association but sequence number higher than that of the front speaker

The external subwoofer may use [jack] speaker with same default association and higher sequence number if it can be detected

The driver won't use all of them for multi channel if you retasked it as line out

I have tried several combinations with hdajackretask

I am not able to get audio out of the physical rear speakers or sonic master output.

I can get audio to play back in the front l/c/r speakers with varying combinations.

ex.

7.1 side l/r plays through front l/r or front c
4.0 rear r/l plays through front l/r
2.1 l/r plays through front l/r
2.1 subwoofer plays white noise through front c

Most of the time it is only front left/right that make any sound. Sometimes there is no sound on one audio profile but it works on a couple of channels on another profile.

Any time that the Center LFE works it produces white noise.

I have tried with both options: apply and patch/reboot

I can keep playing around with the settings until I eventually stumble on a combination that works but it seems like this process should be scriptable. Given that I will probably spend hours of my time on the test process and I have already spent 4 separate sessions on testing it seems like it would be better value for my time and others going forward to write a test script.

So what do I need to do to write a script that will test all the combinations and play audio through them? Or am I missing something that someone else has already written for this purpose?

Currently I am using this process:

1: hdajackretask - modify params
2: pulseaudio -k
3: hdajackretask : apply settings
4: pulseaudio -D
5: open PA audio config
6: select audio output option and press test speakers button 7: manually press every button

Rinse and repeat.

Surely there is a more humane method for testing the variations ;-)

--
Patrick Shirkey
Boost Hardware Ltd

#12 lore raw

Re: Testing/Debugging alc668 with ASUS N750JK

http://git.alsa-project.org/?p=alsa.git;a=commitdiff;h=48ed9474fc6724dc1486d30e9a274ab27ec001da;hp=56c640a98975b03a6a78a44b2c01e49dfd7b5263

Have you try the fix ?

Quoted 3 lines
Quoted 3 lines

You can use hda-verb GET_PIN_SENSE to test all the pin complex nodes

which

Quoted 5 lines
Quoted 2 lines

pincap support DETECT

I have tried a few attempts but it's pretty confusing.

Quoted 7 lines

These ones don't do anything:

# hda-verb /dev/snd/hwC1D0  GET_PIN_SENSE
# hda-verb /dev/snd/hwC1D0  0x0 GET_PIN_SENSE

I don't know what to make of this output:

Bit 31 is PD

VALUE should return 0 when Jack is UNplugged and 0x80000000 when Jack is plugged for those pin which support DETECT

Quoted 11 lines
# hda-verb /dev/snd/hwC1D0  0x0 GET_PIN_SENSE PIN_CAP
nid = 0x0, verb = 0xf09, param = 0xc
value = 0x0
# hda-verb /dev/snd/hwC0D0  0x0 GET_PIN_SENSE PIN_CAP
nid = 0x0, verb = 0xf09, param = 0xc
value = 0x0
# hda-verb /dev/snd/hwC0D0  0x16 GET_PIN_SENSE PIN_CAP
nid = 0x16, verb = 0xf09, param = 0xc
value = 0xffffffff
# hda-verb /dev/snd/hwC0D0  0x19 GET_PIN_SENSE PIN_CAP
Quoted 9 lines
nid = 0x19, verb = 0xf09, param = 0xc
value = 0xffffffff
# hda-verb /dev/snd/hwC0D0  0x1a GET_PIN_SENSE PIN_CAP
nid = 0x1a, verb = 0xf09, param = 0xc
value = 0xffffffff
# hda-verb /dev/snd/hwC0D0  0x1b GET_PIN_SENSE PIN_CAP
nid = 0x1b, verb = 0xf09, param = 0xc
value = 0xffffffff

But your alc668 is on card 1 , the second hda controller

Quoted 5 lines
Quoted 5 lines
Quoted 5 lines
Quoted 4 lines

Do surround 2.1 works ?

Quoted 9 lines
Quoted 9 lines
Quoted 7 lines

It says it is working but I do not get sound out of the sub woofer. I can
hear static(whitenoise) through the front speakers (with pulseaudio test)
if I set pins 0x19 and 0x1a to Line Out (Center/LFE) and Internal (Center/LFE) or vice versa with hdajackretask.

http://git.alsa-project.org/?p=alsa-tools.git;a=blob;f=hdajackretask/README;hb=HEAD

Quoted 16 lines
Quoted 4 lines

Did you use apply button(dyanmic reconfiguartion) or installment boot override (early patching) ?

I have tried both options.

After rebooting with the apply option set I don't hear any static or audio with the PA test app.

Quoted 6 lines
Quoted 4 lines

I do not see any controls for the bass volume in alsamixer

https://git.kernel.org/cgit/linux/kernel/git/tiwai/sound.git/commit/sound/pci/hda?id=f37bc7a88d374448a1f4bba9267d308606d78bf2

Quoted 6 lines
Quoted 1 line

I have checked alsamixer again after the last round of tinkering with hdajackretask and" Speaker CLFE" is now showing up but it does not have volume control just mute on/off.

Quoted 6 lines

I see the following new controls

Speaker CFLE (mute only)
Speaker Front (mute + vol)
Speaker Side (mute only)
Speaker Surround (mute + vol)

hda-jack-retask won't check whether your codec have enough audio output if you changed all the nodes to speaker

But the driver expect multiout support up to 8 channels when parsing the pin

As alc668 only support 6 channels, hda_generic.c just assign audio output and create volume control but Jack detection controls and mute switch are created according to the number of parsed pins which support Jack detect and mute switch

Do the headphone still work with pulseaudio since there is no headphone playback volume and headphone is share SPEAKER FRONT PLAYBAACK VOLUME control with front speaker ?

Quoted 53 lines
Quoted 31 lines
Quoted 15 lines
Quoted 4 lines
Quoted 4 lines
Quoted 4 lines
Quoted 4 lines

- I have found a couple of kernel bug reports for other ASUS

models

Quoted 2 lines
Quoted 2 lines
Quoted 2 lines
Quoted 2 lines

with
this chipset but they are both marked resolved. Should I open a

new

Quoted 7 lines
Quoted 7 lines
Quoted 7 lines
Quoted 7 lines

ticket
?

https://bugzilla.kernel.org/show_bug.cgi?id=65091
https://bugzilla.kernel.org/show_bug.cgi?id=66271

- I can hear static through the front speakers (with pulseaudio

test)

Quoted 6 lines
Quoted 6 lines
Quoted 4 lines
Quoted 4 lines
Quoted 4 lines

if
I set pins 0x19 and 0x1a to Line Out (Center/LFE) and Internal (Center/LFE) or vice versa with hdajackretask.

For multi channel, the sequence number is ascending and the driver

expect

Quoted 2 lines
Quoted 2 lines

they have same type i.e, all speakers or all line out jacks

Pin Default 0x90170110: [Fixed] Speaker at Int N/A
Conn = Analog, Color = Unknown DefAssociation = 0x1, Sequence = 0x0 Misc = NO_PRESENCE

Quoted 9 lines

The rear speaker need same default association but sequence number higher than that of the front speaker

The external subwoofer may use [jack] speaker with same default association and higher sequence number if it can be detected

The driver won't use all of them for multi channel if you retasked it as line out

I have tried several combinations with hdajackretask

I am not able to get audio out of the physical rear speakers or sonic master output.
:

So what do I need to do to write a script that will test all the combinations and play audio through them? Or am I missing something that someone else has already written for this purpose?

Currently I am using this process:

Quoted 8 lines

1: hdajackretask - modify params
2: pulseaudio -k
3: hdajackretask : apply settings
4: pulseaudio -D
5: open PA audio config
6: select audio output option and press test speakers button 7: manually press every button

Use install boot option and reboot to test the driver with hda-jack-retask.fw patch

Should not use pulseaudio when testing

speaker-test -c2 -t wav -D hw:1,0

speaker-test -c4 -t wav -D hw:1,0

Test 6 channel only after you find both rear speaker and subwoofer

speaker-test -c6 -t wav -D hw:1,0

if the connected retasked pin is not the correct pin
,you can use hda_analyzer to change the pin ctls of the remaining unconnected pin to OUT, unmute and coonect the pin to second/third dac through audio mixers

#13 lore raw

Re: Testing/Debugging alc668 with ASUS N750JK

Quoted 4 lines · Raymond Yau

http://git.alsa-project.org/?p=alsa.git;a=commitdiff;h=48ed9474fc6724dc1486d30e9a274ab27ec001da;hp=56c640a98975b03a6a78a44b2c01e49dfd7b5263

Have you try the fix ?

Quoted 1 line

I did not see that update.

run.py works now without any modifications on this machine.

I have generated a graph.

http://boosthardware.com/hda_graph-1.png

Quoted 16 lines
Quoted 2 lines
Quoted 2 lines

You can use hda-verb GET_PIN_SENSE to test all the pin complex nodes

which

Quoted 5 lines
Quoted 2 lines

pincap support DETECT

I have tried a few attempts but it's pretty confusing.

Quoted 7 lines

These ones don't do anything:

# hda-verb /dev/snd/hwC1D0  GET_PIN_SENSE
# hda-verb /dev/snd/hwC1D0  0x0 GET_PIN_SENSE

I don't know what to make of this output:

Quoted 8 lines

Bit 31 is PD

VALUE should return 0 when Jack is UNplugged and 0x80000000 when Jack is plugged for those pin which support DETECT

But your alc668 is on card 1 , the second hda controller

Sorry. Missed that one.

# hda-verb /dev/snd/hwC1D0  0x16 GET_PIN_SENSE PIN_CAP
nid = 0x16, verb = 0xf09, param = 0xc
value = 0x0
# hda-verb /dev/snd/hwC1D0  0x19 GET_PIN_SENSE PIN_CAP
nid = 0x19, verb = 0xf09, param = 0xc
value = 0x0
# hda-verb /dev/snd/hwC1D0  0x11a GET_PIN_SENSE PIN_CAP
invalid nid 0x11a
# hda-verb /dev/snd/hwC1D0  0x1a GET_PIN_SENSE PIN_CAP
nid = 0x1a, verb = 0xf09, param = 0xc
value = 0x0
# hda-verb /dev/snd/hwC1D0  0x1b GET_PIN_SENSE PIN_CAP
nid = 0x1b, verb = 0xf09, param = 0xc
value = 0x0
Quoted 13 lines
Quoted 6 lines

I see the following new controls

Speaker CFLE (mute only)
Speaker Front (mute + vol)
Speaker Side (mute only)
Speaker Surround (mute + vol)

hda-jack-retask won't check whether your codec have enough audio output if you changed all the nodes to speaker

But the driver expect multiout support up to 8 channels when parsing the pin

Quoted 9 lines

As alc668 only support 6 channels, hda_generic.c just assign audio output and create volume control but Jack detection controls and mute switch are created according to the number of parsed pins which support Jack detect and mute switch

Do the headphone still work with pulseaudio since there is no headphone playback volume and headphone is share SPEAKER FRONT PLAYBAACK VOLUME control with front speaker ?

With speaker-test I can hear audio on the right channel

speaker-test -c2 -t wav -D hw:1,0

audio comes out of front left/right

speaker-test -c4 -t wav -D hw:1,0

front left/right has no audio
rear left/right audio comes out of front left/right speakers

# speaker-test -c6 -t wav -D hw:1,0

speaker-test 1.0.28

Playback device is hw:1,0
Stream parameters are 48000Hz, S16_LE, 6 channels
WAV file(s)
Channels count (6) not available for playbacks: Invalid argument Setting of hwparams failed: Invalid argument

Quoted 6 lines

if the connected retasked pin is not the correct pin
,you can use hda_analyzer to change the pin ctls of the remaining unconnected pin to OUT, unmute and coonect the pin to second/third dac through audio mixers

This is a bit confusing to master. How should I approach it given the layout of the graph linked above?

--
Patrick Shirkey
Boost Hardware Ltd

#14 lore raw

Re: Testing/Debugging alc668 with ASUS N750JK

Quoted 1 line
Quoted 1 line

http://git.alsa-project.org/?p=alsa.git;a=commitdiff;h=48ed9474fc6724dc1486d30e9a274ab27ec001da;hp=56c640a98975b03a6a78a44b2c01e49dfd7b5263

Quoted 4 lines
Quoted 3 lines

Have you try the fix ?

Quoted 1 line
Quoted 29 lines

I did not see that update.

run.py works now without any modifications on this machine.

I have generated a graph.

http://boosthardware.com/hda_graph-1.png

Quoted 19 lines
Quoted 2 lines
Quoted 2 lines

You can use hda-verb GET_PIN_SENSE to test all the pin complex nodes

which

Quoted 5 lines
Quoted 2 lines

pincap support DETECT

I have tried a few attempts but it's pretty confusing.

Quoted 7 lines

These ones don't do anything:

# hda-verb /dev/snd/hwC1D0  GET_PIN_SENSE
# hda-verb /dev/snd/hwC1D0  0x0 GET_PIN_SENSE

I don't know what to make of this output:

Bit 31 is PD

VALUE should return 0 when Jack is UNplugged and 0x80000000 when Jack

is

Quoted 8 lines
Quoted 5 lines

plugged for those pin which support DETECT

But your alc668 is on card 1 , the second hda controller

Sorry. Missed that one.

Quoted 16 lines
# hda-verb /dev/snd/hwC1D0  0x16 GET_PIN_SENSE PIN_CAP
nid = 0x16, verb = 0xf09, param = 0xc
value = 0x0
# hda-verb /dev/snd/hwC1D0  0x19 GET_PIN_SENSE PIN_CAP
nid = 0x19, verb = 0xf09, param = 0xc
value = 0x0
# hda-verb /dev/snd/hwC1D0  0x11a GET_PIN_SENSE PIN_CAP
invalid nid 0x11a
# hda-verb /dev/snd/hwC1D0  0x1a GET_PIN_SENSE PIN_CAP
nid = 0x1a, verb = 0xf09, param = 0xc
value = 0x0
# hda-verb /dev/snd/hwC1D0  0x1b GET_PIN_SENSE PIN_CAP
nid = 0x1b, verb = 0xf09, param = 0xc
value = 0x0

Do you mean the plugging of subwoofer cannot be detected

hda-jack-sense-test -c 1 -a

Quoted 8 lines
Quoted 8 lines
Quoted 6 lines

I see the following new controls

Speaker CFLE (mute only)
Speaker Front (mute + vol)
Speaker Side (mute only)
Speaker Surround (mute + vol)

hda-jack-retask won't check whether your codec have enough audio output

if

Quoted 6 lines
Quoted 6 lines

you changed all the nodes to speaker

But the driver expect multiout support up to 8 channels when parsing the pin

As alc668 only support 6 channels, hda_generic.c just assign audio

output

Quoted 1 line
Quoted 1 line

and create volume control but Jack detection controls and mute switch

are

Quoted 21 lines
Quoted 7 lines

created according to the number of parsed pins which support Jack detect and mute switch

Do the headphone still work with pulseaudio since there is no headphone playback volume and headphone is share SPEAKER FRONT PLAYBAACK VOLUME control with front speaker ?

With speaker-test I can hear audio on the right channel

speaker-test -c2 -t wav -D hw:1,0

audio comes out of front left/right

speaker-test -c4 -t wav -D hw:1,0

front left/right has no audio
rear left/right audio comes out of front left/right speakers

# speaker-test -c6 -t wav -D hw:1,0
Quoted 8 lines

speaker-test 1.0.28

Playback device is hw:1,0
Stream parameters are 48000Hz, S16_LE, 6 channels
WAV file(s)
Channels count (6) not available for playbacks: Invalid argument Setting of hwparams failed: Invalid argument

The graph don't contain enough into for debugg

Post output of alsa-info.sh after retasked

Seem headphone is more important than multichannel speaker when evaluating the badness of config

You may need to configure alsa driver --with-debug=verbose to produce more information in system log about how it evaluate the badness

#15 lore raw

Re: Testing/Debugging alc668 with ASUS N750JK

Quoted 1 line · Raymond Yau

alsa-info:

retask and apply
http://boosthardware.com/alsa-info1.txt

store and reboot
http://boosthardware.com/alsa-info2.txt

Quoted 5 lines

Do you mean the plugging of subwoofer cannot be detected

hda-jack-sense-test -c 1 -a

prior to latest changes with hdajackretask:

# python alsa-jack-sense-test.py -c 1 -a
Pin 0x12 (Internal Mic): present = No
Pin 0x14 (Internal Speaker): present = No
Pin 0x15 (Black HP Out): present = No
Pin 0x16 (Not connected): present = No
Pin 0x18 (Black Mic): present = No
Pin 0x19 (Not connected): present = No
Pin 0x1a (Not connected): present = No
Pin 0x1b (Not connected): present = No
Pin 0x1d (Not connected): present = No
Pin 0x1e (Black SPDIF Out): present = No
Pin 0x1f (Not connected): present = No

headset connected:

# python alsa-jack-sense-test.py -c 1 -a
Pin 0x12 (Internal Mic): present = No
Pin 0x14 (Internal Speaker): present = No
Pin 0x15 (Black HP Out): present = Yes
Pin 0x16 (Not connected): present = No
Pin 0x18 (Black Mic): present = No
Pin 0x19 (Not connected): present = No
Pin 0x1a (Not connected): present = No
Pin 0x1b (Not connected): present = No
Pin 0x1d (Not connected): present = No
Pin 0x1e (Black SPDIF Out): present = No
Pin 0x1f (Not connected): present = No

after latest reboot (alsa-info2.txt):

# python alsa-jack-sense-test.py -c 1 -a
Pin 0x12 (Internal Mic): present = No
Pin 0x14 (Internal Speaker): present = No
Pin 0x15 (Black HP Out): present = No
Pin 0x16 (Not connected): present = No
Pin 0x18 (Black Mic): present = No
Pin 0x19 (Not connected): present = No
Pin 0x1a (Not connected): present = No
Pin 0x1b (Not connected): present = No
Pin 0x1d (Not connected): present = No
Pin 0x1e (Black SPDIF Out): present = No
Pin 0x1f (Not connected): present = No

headset connected:

# python alsa-jack-sense-test.py -c 1 -a
Pin 0x12 (Internal Mic): present = No
Pin 0x14 (Internal Speaker): present = No
Pin 0x15 (Black HP Out): present = Yes
Pin 0x16 (Not connected): present = No
Pin 0x18 (Black Mic): present = No
Pin 0x19 (Not connected): present = No
Pin 0x1a (Not connected): present = No
Pin 0x1b (Not connected): present = No
Pin 0x1d (Not connected): present = No
Pin 0x1e (Black SPDIF Out): present = No
Pin 0x1f (Not connected): present = No
Quoted 11 lines

The graph don't contain enough into for debugg

Post output of alsa-info.sh after retasked

Seem headphone is more important than multichannel speaker when evaluating the badness of config

You may need to configure alsa driver --with-debug=verbose to produce more information in system log about how it evaluate the badness

Easier said than done. I have to build a custom kernel in order to get custom alsa-drivers to build on this machine so at the moment I am stuck with whatever I got in 3.14.1. From the list above can you make a recommendation for the best options to test?

According to hdajackretask the pins I can retask for output are the following:

Pin 0x14 (Internal Speaker): present = No Pin 0x15 (Black HP Out): present = No Pin 0x16 (Not connected): present = No Pin 0x18 (Black Mic): present = No Pin 0x19 (Not connected): present = No Pin 0x1a (Not connected): present = No

- The other pins present just a few options for input ex, mic, line in, spdif.

--
Patrick Shirkey
Boost Hardware Ltd

#16 lore raw

Re: Testing/Debugging alc668 with ASUS N750JK

Quoted 10 lines

alsa-info:

retask and apply
http://boosthardware.com/alsa-info1.txt

store and reboot
http://boosthardware.com/alsa-info2.txt

Any reason to use asus-mode4 and hda-jack-retask at the same time ?

Try model=auto when you use patch=,hda-jack-retask.fw

Your alsa-info missing many important info , need all info from alsactl, amixer, sysfs about the driver init pins and user init pins, allay/arecord -l

No information about which Jack have been retasked

#17 lore raw

Re: Testing/Debugging alc668 with ASUS N750JK

Quoted 6 lines · Raymond Yau
Quoted 6 lines

alsa-info:

retask and apply
http://boosthardware.com/alsa-info1.txt

Quoted 7 lines
Quoted 4 lines

store and reboot
http://boosthardware.com/alsa-info2.txt

Any reason to use asus-mode4 and hda-jack-retask at the same time ?

I had it in place because at one point it seemed to allow PA to have addition profiles other than stereo. However the line below seems to be a better combination.

Quoted 2 lines

Try model=auto when you use patch=,hda-jack-retask.fw

That nugget of information seems to have enabled the bass speaker in alsa after the last reboot.

/etc/modprobe.d/alsa-base.conf
options snd-hda-intel model=auto patch=,hda-jack-retask.fw

Quoted 4 lines

Your alsa-info missing many important info , need all info from alsactl, amixer, sysfs about the driver init pins and user init pins, allay/arecord -l

http://boosthardware.com/alsa-info4.txt

Quoted 2 lines

No information about which Jack have been retasked

For the info file above I have the following retask assignments:

0x14 Line out (front)
0x15 Line out (center/LFE)
0x16 Line Out (Back)
0x18 Internal Speaker
0x19 Internal Speaker(Back)
0x1a Internal mic

- With the following command I can hear "rear center" through the sonic master speaker when channel 5 is testing.

speaker-test -D hw:1 -c 6 -t wav

- I do not hear any sound when rear left/right is testing.

- I do not hear any audio through the LFE with PA test on any of the audio profiles.

- I will play around with the retask assignments now that something seems to be working. Looks like I'm on the right track now.

Thanks for all your help so far.

--
Patrick Shirkey
Boost Hardware Ltd