linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v4 0/8] Add SPDIF support for rockchip
@ 2015-10-08 13:31 Sjoerd Simons
  2015-10-08 13:31 ` [PATCH v4 1/8] ASoC: dt-bindings: add rockchip tranceiver bindings Sjoerd Simons
                   ` (8 more replies)
  0 siblings, 9 replies; 18+ messages in thread
From: Sjoerd Simons @ 2015-10-08 13:31 UTC (permalink / raw)
  To: linux-rockchip
  Cc: Jaroslav Kysela, devicetree, alsa-devel, Heiko Stuebner,
	Mark Brown, linux-kernel, Kumar Gala, Ian Campbell, Takashi Iwai,
	Liam Girdwood, Sjoerd Simons, Pawel Moll, Rob Herring,
	Mark Rutland, Russell King, linux-arm-kernel, Arnd Bergmann,
	Thierry Reding, Olof Johansson, linux-clk, Alexandre Belloni,
	Geert Uytterhoeven, Ray Jui, Javier Martinez Canillas,
	Krzysztof Kozlowski, Kukjin Kim, Michael Turquette, Tomeu Vizoso,
	Stephen Boyd, Lee Jones

This patchset adds support for the Rockchip SPDIF transceiver as present
on RK3066, RK3188 and RK3288 boards and enables it on a Radxa rock pro.
Tested on a Radxa Rock Pro board and Radxa Rock 2 Square board.

Quite a few changes since v3 (mostly based on review comment). One
important addition is proper RK3288 SoC support; While according to the
documentation it has 2 SPDIF "solutions" with the default being the old
one, this variation doesn't actually work.. So support has been added
to switch to the new SPDIF solution on RK3288.

Changes in v4:
- Require rockchip,grf on RK3288 as the 8 channel solution has to be
  selected on that SoC
- Make the compatibility string one of a known list rather then
  requiring a precise list of options.
- Change the clock names to hclk and mclk instead of spdif_hclk and
  spdif_mclk to better match the implementation and data sheets.
- Use hclk and mclk as the clock names matching the update devicetree
  documentation
- Drop something useless to_info function
- Open-code tx control in rk_spdif_trigge
- Use devm_regmap_init_mmio_clk to allow the regmap subsystem to manage
  the hclk as needed
- Use a more conventionale pm setup (turn everything on,
  mark the device as active, enable pm and request the device to go
  idle)
- re-add the platfrorm:rockchip-spdif module alias
- Also manage the hclk in the PM callbacks
- Check the return code of clk_set_rate
- Switch to the 8 channel spdif solutions on RK3288
- Add support for 192khz audio rate
- Adjust clock names to match the new names (hclk/mclk)

Changes in v3:
- Fix typos in commit message
- Resent patches to a more complete list of maintainers.

Changes in v2:
- Remove platform: module alias as it was unused
- Call MODULE_DEVICE_TABLE(of, ) right after the of match table
- use rk_spdif as a prefix consistenly throughout the driver
- Check return code of regmap_update and bubble it up
- Sort the spdif node properties
- Drop the 0x prefix from the node name
- Rename the spdif@ node to sound@

Sjoerd Simons (8):
  ASoC: dt-bindings: add rockchip tranceiver bindings
  ASoC: rockchip: Add rockchip SPDIF transceiver driver
  ARM: dts: rockchip: Add SPDIF transceiver for RK3188
  ARM: dts: rockchip: Add SPDIF optical out on Radxa Rock
  clk: rockchip: Allow the RK3288 SPDIF clocks to change their parent
  ARM: dts: rockchip: Add SPDIF transceiver for RK3288
  ARM: dts: rockchip: Add SPDIF optical out on Radxa Rock2 Square
  ARM: multi_v7_defconfig: Add rockchip audio support

 .../devicetree/bindings/sound/rockchip-spdif.txt   |  44 +++
 arch/arm/boot/dts/rk3188-radxarock.dts             |  19 +
 arch/arm/boot/dts/rk3188.dtsi                      |  22 ++
 arch/arm/boot/dts/rk3288-rock2-square.dts          |  18 +
 arch/arm/boot/dts/rk3288.dtsi                      |  23 ++
 arch/arm/configs/multi_v7_defconfig                |   5 +
 drivers/clk/rockchip/clk-rk3288.c                  |  16 +-
 sound/soc/rockchip/Kconfig                         |   8 +
 sound/soc/rockchip/Makefile                        |   2 +
 sound/soc/rockchip/rockchip_spdif.c                | 409 +++++++++++++++++++++
 sound/soc/rockchip/rockchip_spdif.h                |  63 ++++
 11 files changed, 621 insertions(+), 8 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/sound/rockchip-spdif.txt
 create mode 100644 sound/soc/rockchip/rockchip_spdif.c
 create mode 100644 sound/soc/rockchip/rockchip_spdif.h

-- 
2.6.1


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [PATCH v4 1/8] ASoC: dt-bindings: add rockchip tranceiver bindings
  2015-10-08 13:31 [PATCH v4 0/8] Add SPDIF support for rockchip Sjoerd Simons
@ 2015-10-08 13:31 ` Sjoerd Simons
  2015-10-08 16:50   ` Rob Herring
  2015-10-08 13:31 ` [PATCH v4 2/8] ASoC: rockchip: Add rockchip SPDIF transceiver driver Sjoerd Simons
                   ` (7 subsequent siblings)
  8 siblings, 1 reply; 18+ messages in thread
From: Sjoerd Simons @ 2015-10-08 13:31 UTC (permalink / raw)
  To: linux-rockchip
  Cc: Jaroslav Kysela, devicetree, alsa-devel, Heiko Stuebner,
	Mark Brown, linux-kernel, Kumar Gala, Ian Campbell, Takashi Iwai,
	Liam Girdwood, Sjoerd Simons, Pawel Moll, Rob Herring,
	Mark Rutland, Russell King, linux-arm-kernel

Add devicetree bindings for the spdif tranceiver found on
found on rk3066, rk3188 and rk3288 SoCs

Signed-off-by: Sjoerd Simons <sjoerd.simons@collabora.co.uk>

---

Changes in v4:
- Require rockchip,grf on RK3288 as the 8 channel solution has to be
  selected on that SoC
- Make the compatibility string one of a known list rather then
  requiring a precise list of options.
- Change the clock names to hclk and mclk instead of spdif_hclk and
  spdif_mclk to better match the implementation and data sheets.

Changes in v3: None
Changes in v2: None

 .../devicetree/bindings/sound/rockchip-spdif.txt   | 44 ++++++++++++++++++++++
 1 file changed, 44 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/sound/rockchip-spdif.txt

diff --git a/Documentation/devicetree/bindings/sound/rockchip-spdif.txt b/Documentation/devicetree/bindings/sound/rockchip-spdif.txt
new file mode 100644
index 0000000..33dd82c
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/rockchip-spdif.txt
@@ -0,0 +1,44 @@
+* Rockchip SPDIF transceiver
+
+The S/PDIF audio block is a stereo transceiver that allows the
+processor to receive and transmit digital audio via an coaxial cable or
+a fibre cable.
+
+Required properties:
+
+- compatible: should be one of the following:
+   - "rockchip,rk3288-spdif", "rockchip,rk3188-spdif" or
+     "rockchip,rk3066-spdif"
+- reg: physical base address of the controller and length of memory mapped
+  region.
+- interrupts: should contain the SPDIF interrupt.
+- #address-cells: should be 1.
+- #size-cells: should be 0.
+- dmas: DMA specifiers for tx dma. See the DMA client binding,
+  Documentation/devicetree/bindings/dma/dma.txt
+- dma-names: should be "tx"
+- clocks: a list of phandle + clock-specifier pairs, one for each entry
+  in clock-names.
+- clock-names: should contain following:
+   - "hclk": clock for SPDIF controller
+   - "mclk" : clock for SPDIF bus
+
+Required properties on RK3288:
+  - rockchip,grf: the phandle of the syscon node for the general register
+                   file (GRF)
+
+Example for the rk3188 SPDIF controller:
+
+spdif: spdif@0x1011e000 {
+	compatible = "rockchip,rk3188-spdif", "rockchip,rk3066-spdif";
+	reg = <0x1011e000 0x2000>;
+	interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
+	#address-cells = <1>;
+	#size-cells = <0>;
+	dmas = <&dmac1_s 8>;
+	dma-names = "tx";
+	clock-names = "hclk", "mclk";
+	clocks = <&cru HCLK_SPDIF>, <&cru SCLK_SPDIF>;
+	status = "disabled";
+	#sound-dai-cells = <0>;
+};
-- 
2.6.1


^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH v4 2/8] ASoC: rockchip: Add rockchip SPDIF transceiver driver
  2015-10-08 13:31 [PATCH v4 0/8] Add SPDIF support for rockchip Sjoerd Simons
  2015-10-08 13:31 ` [PATCH v4 1/8] ASoC: dt-bindings: add rockchip tranceiver bindings Sjoerd Simons
@ 2015-10-08 13:31 ` Sjoerd Simons
  2015-10-08 13:31 ` [PATCH v4 3/8] ARM: dts: rockchip: Add SPDIF transceiver for RK3188 Sjoerd Simons
                   ` (6 subsequent siblings)
  8 siblings, 0 replies; 18+ messages in thread
From: Sjoerd Simons @ 2015-10-08 13:31 UTC (permalink / raw)
  To: linux-rockchip
  Cc: Jaroslav Kysela, devicetree, alsa-devel, Heiko Stuebner,
	Mark Brown, linux-kernel, Kumar Gala, Ian Campbell, Takashi Iwai,
	Liam Girdwood, Sjoerd Simons, Pawel Moll, Rob Herring,
	Mark Rutland, Russell King, linux-arm-kernel

Add a driver for the SPDIF transceiver available on RK3066, RK3188 and
RK3288. Heavily based on the rockchip i2s driver.

Signed-off-by: Sjoerd Simons <sjoerd.simons@collabora.co.uk>

---

Changes in v4:
- Use hclk and mclk as the clock names matching the update devicetree
  documentation
- Drop something useless to_info function
- Open-code tx control in rk_spdif_trigge
- Use devm_regmap_init_mmio_clk to allow the regmap subsystem to manage
  the hclk as needed
- Use a more conventionale pm setup (turn everything on,
  mark the device as active, enable pm and request the device to go
  idle)
- re-add the platfrorm:rockchip-spdif module alias
- Also manage the hclk in the PM callbacks
- Check the return code of clk_set_rate
- Switch to the 8 channel spdif solutions on RK3288
- Add support for 192khz audio rate

Changes in v3:
- Fix typos in commit message

Changes in v2:
- Remove platform: module alias as it was unused
- Call MODULE_DEVICE_TABLE(of, ) right after the of match table
- use rk_spdif as a prefix consistenly throughout the driver
- Check return code of regmap_update and bubble it up

 sound/soc/rockchip/Kconfig          |   8 +
 sound/soc/rockchip/Makefile         |   2 +
 sound/soc/rockchip/rockchip_spdif.c | 409 ++++++++++++++++++++++++++++++++++++
 sound/soc/rockchip/rockchip_spdif.h |  63 ++++++
 4 files changed, 482 insertions(+)
 create mode 100644 sound/soc/rockchip/rockchip_spdif.c
 create mode 100644 sound/soc/rockchip/rockchip_spdif.h

diff --git a/sound/soc/rockchip/Kconfig b/sound/soc/rockchip/Kconfig
index 58bae8e..603fd1f 100644
--- a/sound/soc/rockchip/Kconfig
+++ b/sound/soc/rockchip/Kconfig
@@ -15,6 +15,14 @@ config SND_SOC_ROCKCHIP_I2S
 	  Rockchip I2S device. The device supports upto maximum of
 	  8 channels each for play and record.
 
+config SND_SOC_ROCKCHIP_SPDIF
+	tristate "Rockchip SPDIF Device Driver"
+	depends on CLKDEV_LOOKUP && SND_SOC_ROCKCHIP
+	select SND_SOC_GENERIC_DMAENGINE_PCM
+	help
+	  Say Y or M if you want to add support for SPDIF driver for
+	  Rockchip SPDIF transceiver device.
+
 config SND_SOC_ROCKCHIP_MAX98090
 	tristate "ASoC support for Rockchip boards using a MAX98090 codec"
 	depends on SND_SOC_ROCKCHIP && I2C && GPIOLIB
diff --git a/sound/soc/rockchip/Makefile b/sound/soc/rockchip/Makefile
index 1bc1dc3..b527b9c 100644
--- a/sound/soc/rockchip/Makefile
+++ b/sound/soc/rockchip/Makefile
@@ -1,7 +1,9 @@
 # ROCKCHIP Platform Support
 snd-soc-i2s-objs := rockchip_i2s.o
+snd-soc-rockchip-spdif-objs := rockchip_spdif.o
 
 obj-$(CONFIG_SND_SOC_ROCKCHIP_I2S) += snd-soc-i2s.o
+obj-$(CONFIG_SND_SOC_ROCKCHIP_SPDIF) += snd-soc-rockchip-spdif.o
 
 snd-soc-rockchip-max98090-objs := rockchip_max98090.o
 snd-soc-rockchip-rt5645-objs := rockchip_rt5645.o
diff --git a/sound/soc/rockchip/rockchip_spdif.c b/sound/soc/rockchip/rockchip_spdif.c
new file mode 100644
index 0000000..9d5c470
--- /dev/null
+++ b/sound/soc/rockchip/rockchip_spdif.c
@@ -0,0 +1,409 @@
+/* sound/soc/rockchip/rk_spdif.c
+ *
+ * ALSA SoC Audio Layer - Rockchip I2S Controller driver
+ *
+ * Copyright (c) 2014 Rockchip Electronics Co. Ltd.
+ * Author: Jianqun <jay.xu@rock-chips.com>
+ * Copyright (c) 2015 Collabora Ltd.
+ * Author: Sjoerd Simons <sjoerd.simons@collabora.co.uk>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/module.h>
+#include <linux/delay.h>
+#include <linux/of_gpio.h>
+#include <linux/clk.h>
+#include <linux/pm_runtime.h>
+#include <linux/mfd/syscon.h>
+#include <linux/regmap.h>
+#include <sound/pcm_params.h>
+#include <sound/dmaengine_pcm.h>
+
+#include "rockchip_spdif.h"
+
+enum rk_spdif_type {
+	RK_SPDIF_RK3066,
+	RK_SPDIF_RK3188,
+	RK_SPDIF_RK3288,
+};
+
+#define RK3288_GRF_SOC_CON2 0x24c
+
+struct rk_spdif_dev {
+	struct device *dev;
+
+	struct clk *mclk;
+	struct clk *hclk;
+
+	struct snd_dmaengine_dai_dma_data playback_dma_data;
+
+	struct regmap *regmap;
+};
+
+static const struct of_device_id rk_spdif_match[] = {
+	{ .compatible = "rockchip,rk3066-spdif",
+	  .data = (void *) RK_SPDIF_RK3066 },
+	{ .compatible = "rockchip,rk3188-spdif",
+	  .data = (void *) RK_SPDIF_RK3188 },
+	{ .compatible = "rockchip,rk3288-spdif",
+	  .data = (void *) RK_SPDIF_RK3288 },
+	{},
+};
+MODULE_DEVICE_TABLE(of, rk_spdif_match);
+
+static int rk_spdif_runtime_suspend(struct device *dev)
+{
+	struct rk_spdif_dev *spdif = dev_get_drvdata(dev);
+
+	clk_disable_unprepare(spdif->mclk);
+	clk_disable_unprepare(spdif->hclk);
+
+	return 0;
+}
+
+static int rk_spdif_runtime_resume(struct device *dev)
+{
+	struct rk_spdif_dev *spdif = dev_get_drvdata(dev);
+	int ret;
+
+	ret = clk_prepare_enable(spdif->mclk);
+	if (ret) {
+		dev_err(spdif->dev, "mclk clock enable failed %d\n", ret);
+		return ret;
+	}
+
+	ret = clk_prepare_enable(spdif->hclk);
+	if (ret) {
+		dev_err(spdif->dev, "hclk clock enable failed %d\n", ret);
+		return ret;
+	}
+
+	return 0;
+}
+
+static int rk_spdif_hw_params(struct snd_pcm_substream *substream,
+				  struct snd_pcm_hw_params *params,
+				  struct snd_soc_dai *dai)
+{
+	struct rk_spdif_dev *spdif = snd_soc_dai_get_drvdata(dai);
+	unsigned int val = SPDIF_CFGR_HALFWORD_ENABLE;
+	int srate, mclk;
+	int ret;
+
+	srate = params_rate(params);
+	switch (srate) {
+	case 32000:
+	case 48000:
+	case 96000:
+		mclk = 96000 * 128; /* 12288000 hz */
+		break;
+	case 44100:
+		mclk = 44100 * 256; /* 11289600 hz */
+		break;
+	case 192000:
+		mclk = 192000 * 128; /* 24576000 hz */
+		break;
+	default:
+		return -EINVAL;
+	}
+
+	switch (params_format(params)) {
+	case SNDRV_PCM_FORMAT_S16_LE:
+		val |= SPDIF_CFGR_VDW_16;
+		break;
+	case SNDRV_PCM_FORMAT_S20_3LE:
+		val |= SPDIF_CFGR_VDW_20;
+		break;
+	case SNDRV_PCM_FORMAT_S24_LE:
+		val |= SPDIF_CFGR_VDW_24;
+		break;
+	default:
+		return -EINVAL;
+	}
+
+	/* Set clock and calculate divider */
+	ret = clk_set_rate(spdif->mclk, mclk);
+	if (ret != 0) {
+		dev_err(spdif->dev, "Failed to set module clock rate: %d\n",
+			ret);
+		return ret;
+	}
+
+	val |= SPDIF_CFGR_CLK_DIV(mclk/(srate * 256));
+	ret = regmap_update_bits(spdif->regmap, SPDIF_CFGR,
+		SPDIF_CFGR_CLK_DIV_MASK | SPDIF_CFGR_HALFWORD_ENABLE |
+		SDPIF_CFGR_VDW_MASK,
+		val);
+
+	return ret;
+}
+
+static int rk_spdif_trigger(struct snd_pcm_substream *substream,
+				int cmd, struct snd_soc_dai *dai)
+{
+	struct rk_spdif_dev *spdif = snd_soc_dai_get_drvdata(dai);
+	int ret;
+
+	switch (cmd) {
+	case SNDRV_PCM_TRIGGER_START:
+	case SNDRV_PCM_TRIGGER_RESUME:
+	case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
+		ret = regmap_update_bits(spdif->regmap, SPDIF_DMACR,
+				   SPDIF_DMACR_TDE_ENABLE,
+				   SPDIF_DMACR_TDE_ENABLE);
+
+		if (ret != 0)
+			return ret;
+
+		ret = regmap_update_bits(spdif->regmap, SPDIF_XFER,
+				   SPDIF_XFER_TXS_START,
+				   SPDIF_XFER_TXS_START);
+		break;
+	case SNDRV_PCM_TRIGGER_SUSPEND:
+	case SNDRV_PCM_TRIGGER_STOP:
+	case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
+		ret = regmap_update_bits(spdif->regmap, SPDIF_DMACR,
+				   SPDIF_DMACR_TDE_ENABLE,
+				   SPDIF_DMACR_TDE_DISABLE);
+
+		if (ret != 0)
+			return ret;
+
+		ret = regmap_update_bits(spdif->regmap, SPDIF_XFER,
+				   SPDIF_XFER_TXS_START,
+				   SPDIF_XFER_TXS_STOP);
+		break;
+	default:
+		ret = -EINVAL;
+		break;
+	}
+
+	return ret;
+}
+
+static int rk_spdif_dai_probe(struct snd_soc_dai *dai)
+{
+	struct rk_spdif_dev *spdif = snd_soc_dai_get_drvdata(dai);
+
+	dai->playback_dma_data = &spdif->playback_dma_data;
+
+	return 0;
+}
+
+static const struct snd_soc_dai_ops rk_spdif_dai_ops = {
+	.hw_params = rk_spdif_hw_params,
+	.trigger = rk_spdif_trigger,
+};
+
+static struct snd_soc_dai_driver rk_spdif_dai = {
+	.probe = rk_spdif_dai_probe,
+	.playback = {
+		.stream_name = "Playback",
+		.channels_min = 2,
+		.channels_max = 2,
+		.rates = (SNDRV_PCM_RATE_32000 |
+			  SNDRV_PCM_RATE_44100 |
+			  SNDRV_PCM_RATE_48000 |
+			  SNDRV_PCM_RATE_96000 |
+			  SNDRV_PCM_RATE_192000),
+		.formats = (SNDRV_PCM_FMTBIT_S16_LE |
+			    SNDRV_PCM_FMTBIT_S20_3LE |
+			    SNDRV_PCM_FMTBIT_S24_LE),
+	},
+	.ops = &rk_spdif_dai_ops,
+};
+
+static const struct snd_soc_component_driver rk_spdif_component = {
+	.name = "rockchip-spdif",
+};
+
+static bool rk_spdif_wr_reg(struct device *dev, unsigned int reg)
+{
+	switch (reg) {
+	case SPDIF_CFGR:
+	case SPDIF_DMACR:
+	case SPDIF_INTCR:
+	case SPDIF_XFER:
+	case SPDIF_SMPDR:
+		return true;
+	default:
+		return false;
+	}
+}
+
+static bool rk_spdif_rd_reg(struct device *dev, unsigned int reg)
+{
+	switch (reg) {
+	case SPDIF_CFGR:
+	case SPDIF_SDBLR:
+	case SPDIF_INTCR:
+	case SPDIF_INTSR:
+	case SPDIF_XFER:
+		return true;
+	default:
+		return false;
+	}
+}
+
+static bool rk_spdif_volatile_reg(struct device *dev, unsigned int reg)
+{
+	switch (reg) {
+	case SPDIF_INTSR:
+	case SPDIF_SDBLR:
+		return true;
+	default:
+		return false;
+	}
+}
+
+static const struct regmap_config rk_spdif_regmap_config = {
+	.reg_bits = 32,
+	.reg_stride = 4,
+	.val_bits = 32,
+	.max_register = SPDIF_SMPDR,
+	.writeable_reg = rk_spdif_wr_reg,
+	.readable_reg = rk_spdif_rd_reg,
+	.volatile_reg = rk_spdif_volatile_reg,
+	.cache_type = REGCACHE_FLAT,
+};
+
+static int rk_spdif_probe(struct platform_device *pdev)
+{
+	struct device_node *np = pdev->dev.of_node;
+	struct rk_spdif_dev *spdif;
+	const struct of_device_id *match;
+	struct resource *res;
+	void __iomem *regs;
+	int ret;
+
+	match = of_match_node(rk_spdif_match, np);
+	if ((int) match->data == RK_SPDIF_RK3288) {
+		struct regmap *grf;
+
+		grf = syscon_regmap_lookup_by_phandle(np, "rockchip,grf");
+		if (IS_ERR(grf)) {
+			dev_err(&pdev->dev,
+				"rockchip_spdif missing 'rockchip,grf' \n");
+			return PTR_ERR(grf);
+		}
+
+		/* Select the 8 channel SPDIF solution on RK3288 as
+		 * the 2 channel one does not appear to work
+		 */
+		regmap_write(grf, RK3288_GRF_SOC_CON2, BIT(1) << 16);
+	}
+
+	spdif = devm_kzalloc(&pdev->dev, sizeof(*spdif), GFP_KERNEL);
+	if (!spdif)
+		return -ENOMEM;
+
+	spdif->hclk = devm_clk_get(&pdev->dev, "hclk");
+	if (IS_ERR(spdif->hclk)) {
+		dev_err(&pdev->dev, "Can't retrieve rk_spdif bus clock\n");
+		return PTR_ERR(spdif->hclk);
+	}
+	ret = clk_prepare_enable(spdif->hclk);
+	if (ret) {
+		dev_err(spdif->dev, "hclock enable failed %d\n", ret);
+		return ret;
+	}
+
+	spdif->mclk = devm_clk_get(&pdev->dev, "mclk");
+	if (IS_ERR(spdif->mclk)) {
+		dev_err(&pdev->dev, "Can't retrieve rk_spdif master clock\n");
+		return PTR_ERR(spdif->mclk);
+	}
+
+	ret = clk_prepare_enable(spdif->mclk);
+	if (ret) {
+		dev_err(spdif->dev, "clock enable failed %d\n", ret);
+		return ret;
+	}
+
+	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+	regs = devm_ioremap_resource(&pdev->dev, res);
+	if (IS_ERR(regs))
+		return PTR_ERR(regs);
+
+	spdif->regmap = devm_regmap_init_mmio_clk(&pdev->dev, "hclk", regs,
+						  &rk_spdif_regmap_config);
+	if (IS_ERR(spdif->regmap)) {
+		dev_err(&pdev->dev,
+			"Failed to initialise managed register map\n");
+		return PTR_ERR(spdif->regmap);
+	}
+
+	spdif->playback_dma_data.addr = res->start + SPDIF_SMPDR;
+	spdif->playback_dma_data.addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
+	spdif->playback_dma_data.maxburst = 4;
+
+	spdif->dev = &pdev->dev;
+	dev_set_drvdata(&pdev->dev, spdif);
+
+	pm_runtime_set_active(&pdev->dev);
+	pm_runtime_enable(&pdev->dev);
+	pm_request_idle(&pdev->dev);
+
+	ret = devm_snd_soc_register_component(&pdev->dev,
+					      &rk_spdif_component,
+					      &rk_spdif_dai, 1);
+	if (ret) {
+		dev_err(&pdev->dev, "Could not register DAI\n");
+		goto err_pm_runtime;
+	}
+
+	ret = snd_dmaengine_pcm_register(&pdev->dev, NULL, 0);
+	if (ret) {
+		dev_err(&pdev->dev, "Could not register PCM\n");
+		goto err_pcm_register;
+	}
+
+	return 0;
+
+err_pcm_register:
+	snd_dmaengine_pcm_unregister(&pdev->dev);
+err_pm_runtime:
+	pm_runtime_disable(&pdev->dev);
+
+	return ret;
+}
+
+static int rk_spdif_remove(struct platform_device *pdev)
+{
+	struct rk_spdif_dev *spdif = dev_get_drvdata(&pdev->dev);
+
+	pm_runtime_disable(&pdev->dev);
+	if (!pm_runtime_status_suspended(&pdev->dev))
+		rk_spdif_runtime_suspend(&pdev->dev);
+
+	clk_disable_unprepare(spdif->mclk);
+	clk_disable_unprepare(spdif->hclk);
+	snd_dmaengine_pcm_unregister(&pdev->dev);
+	snd_soc_unregister_component(&pdev->dev);
+
+	return 0;
+}
+
+static const struct dev_pm_ops rk_spdif_pm_ops = {
+	SET_RUNTIME_PM_OPS(rk_spdif_runtime_suspend, rk_spdif_runtime_resume,
+			   NULL)
+};
+
+static struct platform_driver rk_spdif_driver = {
+	.probe = rk_spdif_probe,
+	.remove = rk_spdif_remove,
+	.driver = {
+		.name = "rockchip-spdif",
+		.of_match_table = of_match_ptr(rk_spdif_match),
+		.pm = &rk_spdif_pm_ops,
+	},
+};
+module_platform_driver(rk_spdif_driver);
+
+MODULE_ALIAS("platform:rockchip-spdif");
+MODULE_DESCRIPTION("ROCKCHIP SPDIF transceiver Interface");
+MODULE_AUTHOR("Sjoerd Simons <sjoerd.simons@collabora.co.uk>");
+MODULE_LICENSE("GPL v2");
diff --git a/sound/soc/rockchip/rockchip_spdif.h b/sound/soc/rockchip/rockchip_spdif.h
new file mode 100644
index 0000000..07f86a2
--- /dev/null
+++ b/sound/soc/rockchip/rockchip_spdif.h
@@ -0,0 +1,63 @@
+/*
+ * ALSA SoC Audio Layer - Rockchip SPDIF transceiver driver
+ *
+ * Copyright (c) 2015 Collabora Ltd.
+ * Author: Sjoerd Simons <sjoerd.simons@collabora.co.uk>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#ifndef _ROCKCHIP_SPDIF_H
+#define _ROCKCHIP_SPDIF_H
+
+/*
+ * CFGR
+ * transfer configuration register
+*/
+#define SPDIF_CFGR_CLK_DIV_SHIFT	(16)
+#define SPDIF_CFGR_CLK_DIV_MASK		(0xff << SPDIF_CFGR_CLK_DIV_SHIFT)
+#define SPDIF_CFGR_CLK_DIV(x)		(x << SPDIF_CFGR_CLK_DIV_SHIFT)
+
+#define SPDIF_CFGR_HALFWORD_SHIFT	2
+#define SPDIF_CFGR_HALFWORD_DISABLE	(0 << SPDIF_CFGR_HALFWORD_SHIFT)
+#define SPDIF_CFGR_HALFWORD_ENABLE	(1 << SPDIF_CFGR_HALFWORD_SHIFT)
+
+#define SPDIF_CFGR_VDW_SHIFT	0
+#define SPDIF_CFGR_VDW(x)	(x << SPDIF_CFGR_VDW_SHIFT)
+#define SDPIF_CFGR_VDW_MASK	(0xf << SPDIF_CFGR_VDW_SHIFT)
+
+#define SPDIF_CFGR_VDW_16	SPDIF_CFGR_VDW(0x00)
+#define SPDIF_CFGR_VDW_20	SPDIF_CFGR_VDW(0x01)
+#define SPDIF_CFGR_VDW_24	SPDIF_CFGR_VDW(0x10)
+
+/*
+ * DMACR
+ * DMA control register
+*/
+#define SPDIF_DMACR_TDE_SHIFT	5
+#define SPDIF_DMACR_TDE_DISABLE	(0 << SPDIF_DMACR_TDE_SHIFT)
+#define SPDIF_DMACR_TDE_ENABLE	(1 << SPDIF_DMACR_TDE_SHIFT)
+
+#define SPDIF_DMACR_TDL_SHIFT	0
+#define SPDIF_DMACR_TDL(x)	((x) << SPDIF_DMACR_TDL_SHIFT)
+#define SPDIF_DMACR_TDL_MASK	(0x1f << SDPIF_DMACR_TDL_SHIFT)
+
+/*
+ * XFER
+ * Transfer control register
+*/
+#define SPDIF_XFER_TXS_SHIFT	0
+#define SPDIF_XFER_TXS_STOP	(0 << SPDIF_XFER_TXS_SHIFT)
+#define SPDIF_XFER_TXS_START	(1 << SPDIF_XFER_TXS_SHIFT)
+
+#define SPDIF_CFGR	(0x0000)
+#define SPDIF_SDBLR	(0x0004)
+#define SPDIF_DMACR	(0x0008)
+#define SPDIF_INTCR	(0x000c)
+#define SPDIF_INTSR	(0x0010)
+#define SPDIF_XFER	(0x0018)
+#define SPDIF_SMPDR	(0x0020)
+
+#endif /* _ROCKCHIP_SPDIF_H */
-- 
2.6.1


^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH v4 3/8] ARM: dts: rockchip: Add SPDIF transceiver for RK3188
  2015-10-08 13:31 [PATCH v4 0/8] Add SPDIF support for rockchip Sjoerd Simons
  2015-10-08 13:31 ` [PATCH v4 1/8] ASoC: dt-bindings: add rockchip tranceiver bindings Sjoerd Simons
  2015-10-08 13:31 ` [PATCH v4 2/8] ASoC: rockchip: Add rockchip SPDIF transceiver driver Sjoerd Simons
@ 2015-10-08 13:31 ` Sjoerd Simons
  2015-10-08 13:31 ` [PATCH v4 4/8] ARM: dts: rockchip: Add SPDIF optical out on Radxa Rock Sjoerd Simons
                   ` (5 subsequent siblings)
  8 siblings, 0 replies; 18+ messages in thread
From: Sjoerd Simons @ 2015-10-08 13:31 UTC (permalink / raw)
  To: linux-rockchip
  Cc: Jaroslav Kysela, devicetree, alsa-devel, Heiko Stuebner,
	Mark Brown, linux-kernel, Kumar Gala, Ian Campbell, Takashi Iwai,
	Liam Girdwood, Sjoerd Simons, Pawel Moll, Rob Herring,
	Mark Rutland, Russell King, linux-arm-kernel

Add the SPDIF transceiver controller and pin for RK3188

Signed-off-by: Sjoerd Simons <sjoerd.simons@collabora.co.uk>

---

Changes in v4:
- Adjust clock names to match the new names (hclk/mclk)

Changes in v3: None
Changes in v2:
- Sort the spdif node properties
- Drop the 0x prefix from the node name
- Rename the spdif@ node to sound@

 arch/arm/boot/dts/rk3188.dtsi | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/arch/arm/boot/dts/rk3188.dtsi b/arch/arm/boot/dts/rk3188.dtsi
index 3163042..04e38af 100644
--- a/arch/arm/boot/dts/rk3188.dtsi
+++ b/arch/arm/boot/dts/rk3188.dtsi
@@ -121,6 +121,22 @@
 		status = "disabled";
 	};
 
+	spdif: sound@1011e000 {
+		compatible = "rockchip,rk3188-spdif", "rockchip,rk3066-spdif";
+		reg = <0x1011e000 0x2000>;
+		#address-cells = <1>;
+		#size-cells = <0>;
+		#sound-dai-cells = <0>;
+		clock-names = "hclk", "mclk";
+		clocks = <&cru HCLK_SPDIF>, <&cru SCLK_SPDIF>;
+		dmas = <&dmac1_s 8>;
+		dma-names = "tx";
+		interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&spdif_tx>;
+		status = "disabled";
+	};
+
 	cru: clock-controller@20000000 {
 		compatible = "rockchip,rk3188-cru";
 		reg = <0x20000000 0x1000>;
@@ -484,6 +500,12 @@
 						<RK_GPIO1 21 RK_FUNC_1 &pcfg_pull_none>;
 			};
 		};
+
+		spdif {
+			spdif_tx: spdif-tx {
+				rockchip,pins = <RK_GPIO1 14 RK_FUNC_1 &pcfg_pull_none>;
+			};
+		};
 	};
 };
 
-- 
2.6.1


^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH v4 4/8] ARM: dts: rockchip: Add SPDIF optical out on Radxa Rock
  2015-10-08 13:31 [PATCH v4 0/8] Add SPDIF support for rockchip Sjoerd Simons
                   ` (2 preceding siblings ...)
  2015-10-08 13:31 ` [PATCH v4 3/8] ARM: dts: rockchip: Add SPDIF transceiver for RK3188 Sjoerd Simons
@ 2015-10-08 13:31 ` Sjoerd Simons
  2015-10-08 13:31 ` [PATCH v4 5/8] clk: rockchip: Allow the RK3288 SPDIF clocks to change their parent Sjoerd Simons
                   ` (4 subsequent siblings)
  8 siblings, 0 replies; 18+ messages in thread
From: Sjoerd Simons @ 2015-10-08 13:31 UTC (permalink / raw)
  To: linux-rockchip
  Cc: Jaroslav Kysela, devicetree, alsa-devel, Heiko Stuebner,
	Mark Brown, linux-kernel, Kumar Gala, Ian Campbell, Takashi Iwai,
	Liam Girdwood, Sjoerd Simons, Pawel Moll, Rob Herring,
	Mark Rutland, Russell King, linux-arm-kernel

This enables the SPDIF optical audio output on the Radxa Rock

Signed-off-by: Sjoerd Simons <sjoerd.simons@collabora.co.uk>

---

Changes in v4: None
Changes in v3:
- Resent patches to a more complete list of maintainers.

Changes in v2: None

 arch/arm/boot/dts/rk3188-radxarock.dts | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/arch/arm/boot/dts/rk3188-radxarock.dts b/arch/arm/boot/dts/rk3188-radxarock.dts
index d2180e5..797f83dd 100644
--- a/arch/arm/boot/dts/rk3188-radxarock.dts
+++ b/arch/arm/boot/dts/rk3188-radxarock.dts
@@ -90,6 +90,21 @@
 		};
 	};
 
+	sound {
+		compatible = "simple-audio-card";
+		simple-audio-card,name = "SPDIF";
+
+		simple-audio-card,dai-link@1 {  /* S/PDIF - S/PDIF */
+			cpu { sound-dai = <&spdif>; };
+			codec { sound-dai = <&spdif_out>; };
+		};
+	};
+
+	spdif_out: spdif-out {
+		compatible = "linux,spdif-dit";
+		#sound-dai-cells = <0>;
+	};
+
 	ir_recv: gpio-ir-receiver {
 		compatible = "gpio-ir-receiver";
 		gpios = <&gpio0 10 1>;
@@ -343,6 +358,10 @@
 	};
 };
 
+&spdif {
+	status = "okay";
+};
+
 &uart0 {
 	status = "okay";
 };
-- 
2.6.1


^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH v4 5/8] clk: rockchip: Allow the RK3288 SPDIF clocks to change their parent
  2015-10-08 13:31 [PATCH v4 0/8] Add SPDIF support for rockchip Sjoerd Simons
                   ` (3 preceding siblings ...)
  2015-10-08 13:31 ` [PATCH v4 4/8] ARM: dts: rockchip: Add SPDIF optical out on Radxa Rock Sjoerd Simons
@ 2015-10-08 13:31 ` Sjoerd Simons
  2015-10-08 15:10   ` Heiko Stuebner
  2015-10-08 13:31 ` [PATCH v4 6/8] ARM: dts: rockchip: Add SPDIF transceiver for RK3288 Sjoerd Simons
                   ` (3 subsequent siblings)
  8 siblings, 1 reply; 18+ messages in thread
From: Sjoerd Simons @ 2015-10-08 13:31 UTC (permalink / raw)
  To: linux-rockchip
  Cc: Jaroslav Kysela, devicetree, alsa-devel, Heiko Stuebner,
	Mark Brown, linux-kernel, Kumar Gala, Ian Campbell, Takashi Iwai,
	Liam Girdwood, Sjoerd Simons, Pawel Moll, Rob Herring,
	Mark Rutland, Russell King, linux-arm-kernel, Michael Turquette,
	Stephen Boyd, linux-clk

The clock branches leading to sclk_spdif and sclk_spdif_8ch on RK3288
SoCs only feed those clocks, allow those clocks to change their parents
all the way up the hierarchy.

Signed-off-by: Sjoerd Simons <sjoerd.simons@collabora.co.uk>
---

Changes in v4: None
Changes in v3: None
Changes in v2: None

 drivers/clk/rockchip/clk-rk3288.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/drivers/clk/rockchip/clk-rk3288.c b/drivers/clk/rockchip/clk-rk3288.c
index 90c1c9b..4e90252 100644
--- a/drivers/clk/rockchip/clk-rk3288.c
+++ b/drivers/clk/rockchip/clk-rk3288.c
@@ -317,25 +317,25 @@ static struct rockchip_clk_branch rk3288_clk_branches[] __initdata = {
 
 	MUX(0, "spdif_src", mux_pll_src_cpll_gpll_p, 0,
 			RK3288_CLKSEL_CON(5), 15, 1, MFLAGS),
-	COMPOSITE_NOMUX(0, "spdif_pre", "spdif_src", 0,
+	COMPOSITE_NOMUX(0, "spdif_pre", "spdif_src", CLK_SET_RATE_PARENT,
 			RK3288_CLKSEL_CON(5), 0, 7, DFLAGS,
 			RK3288_CLKGATE_CON(4), 4, GFLAGS),
-	COMPOSITE_FRACMUX(0, "spdif_frac", "spdif_src", 0,
+	COMPOSITE_FRACMUX(0, "spdif_frac", "spdif_src", CLK_SET_RATE_PARENT,
 			RK3288_CLKSEL_CON(9), 0,
 			RK3288_CLKGATE_CON(4), 5, GFLAGS,
-		MUX(0, "spdif_mux", mux_spdif_p, 0,
+		MUX(0, "spdif_mux", mux_spdif_p, CLK_SET_RATE_PARENT,
 				RK3288_CLKSEL_CON(5), 8, 2, MFLAGS)),
-	GATE(SCLK_SPDIF, "sclk_spdif", "spdif_mux", 0,
+	GATE(SCLK_SPDIF, "sclk_spdif", "spdif_mux", CLK_SET_RATE_PARENT,
 			RK3288_CLKGATE_CON(4), 6, GFLAGS),
-	COMPOSITE_NOMUX(0, "spdif_8ch_pre", "spdif_src", 0,
+	COMPOSITE_NOMUX(0, "spdif_8ch_pre", "spdif_src", CLK_SET_RATE_PARENT,
 			RK3288_CLKSEL_CON(40), 0, 7, DFLAGS,
 			RK3288_CLKGATE_CON(4), 7, GFLAGS),
-	COMPOSITE_FRACMUX(0, "spdif_8ch_frac", "spdif_8ch_pre", 0,
+	COMPOSITE_FRACMUX(0, "spdif_8ch_frac", "spdif_8ch_pre", CLK_SET_RATE_PARENT,
 			RK3288_CLKSEL_CON(41), 0,
 			RK3288_CLKGATE_CON(4), 8, GFLAGS,
-		MUX(0, "spdif_8ch_mux", mux_spdif_8ch_p, 0,
+		MUX(0, "spdif_8ch_mux", mux_spdif_8ch_p, CLK_SET_RATE_PARENT,
 				RK3288_CLKSEL_CON(40), 8, 2, MFLAGS)),
-	GATE(SCLK_SPDIF8CH, "sclk_spdif_8ch", "spdif_8ch_mux", 0,
+	GATE(SCLK_SPDIF8CH, "sclk_spdif_8ch", "spdif_8ch_mux", CLK_SET_RATE_PARENT,
 			RK3288_CLKGATE_CON(4), 9, GFLAGS),
 
 	GATE(0, "sclk_acc_efuse", "xin24m", 0,
-- 
2.6.1


^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH v4 6/8] ARM: dts: rockchip: Add SPDIF transceiver for RK3288
  2015-10-08 13:31 [PATCH v4 0/8] Add SPDIF support for rockchip Sjoerd Simons
                   ` (4 preceding siblings ...)
  2015-10-08 13:31 ` [PATCH v4 5/8] clk: rockchip: Allow the RK3288 SPDIF clocks to change their parent Sjoerd Simons
@ 2015-10-08 13:31 ` Sjoerd Simons
  2015-10-08 13:31 ` [PATCH v4 7/8] ARM: dts: rockchip: Add SPDIF optical out on Radxa Rock2 Square Sjoerd Simons
                   ` (2 subsequent siblings)
  8 siblings, 0 replies; 18+ messages in thread
From: Sjoerd Simons @ 2015-10-08 13:31 UTC (permalink / raw)
  To: linux-rockchip
  Cc: Jaroslav Kysela, devicetree, alsa-devel, Heiko Stuebner,
	Mark Brown, linux-kernel, Kumar Gala, Ian Campbell, Takashi Iwai,
	Liam Girdwood, Sjoerd Simons, Pawel Moll, Rob Herring,
	Mark Rutland, Russell King, linux-arm-kernel

Add the SPDIF transceiver controller definition and pin setup for RK3288
SoCs

Signed-off-by: Sjoerd Simons <sjoerd.simons@collabora.co.uk>
---

Changes in v4: None
Changes in v3: None
Changes in v2: None

 arch/arm/boot/dts/rk3288.dtsi | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/arch/arm/boot/dts/rk3288.dtsi b/arch/arm/boot/dts/rk3288.dtsi
index 906e938..b905cf6 100644
--- a/arch/arm/boot/dts/rk3288.dtsi
+++ b/arch/arm/boot/dts/rk3288.dtsi
@@ -653,6 +653,23 @@
 		status = "disabled";
 	};
 
+	spdif: sound@ff88b0000 {
+		compatible = "rockchip,rk3288-spdif", "rockchip,rk3066-spdif";
+		reg = <0xff8b0000 0x10000>;
+		#address-cells = <1>;
+		#size-cells = <0>;
+		#sound-dai-cells = <0>;
+		clock-names = "hclk", "mclk";
+		clocks = <&cru HCLK_SPDIF8CH>, <&cru SCLK_SPDIF8CH>;
+		dmas = <&dmac_bus_s 3>;
+		dma-names = "tx";
+		interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&spdif_tx>;
+		rockchip,grf = <&grf>;
+		status = "disabled";
+	};
+
 	i2s: i2s@ff890000 {
 		compatible = "rockchip,rk3288-i2s", "rockchip,rk3066-i2s";
 		reg = <0xff890000 0x10000>;
@@ -1334,5 +1351,11 @@
 						<4 3 3 &pcfg_pull_none>;
 			};
 		};
+
+		spdif {
+			spdif_tx: spdif-tx {
+				rockchip,pins = <RK_GPIO6 11 RK_FUNC_1 &pcfg_pull_none>;
+			};
+		};
 	};
 };
-- 
2.6.1


^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH v4 7/8] ARM: dts: rockchip: Add SPDIF optical out on Radxa Rock2 Square
  2015-10-08 13:31 [PATCH v4 0/8] Add SPDIF support for rockchip Sjoerd Simons
                   ` (5 preceding siblings ...)
  2015-10-08 13:31 ` [PATCH v4 6/8] ARM: dts: rockchip: Add SPDIF transceiver for RK3288 Sjoerd Simons
@ 2015-10-08 13:31 ` Sjoerd Simons
  2015-10-08 13:31 ` [PATCH v4 8/8] ARM: multi_v7_defconfig: Add rockchip audio support Sjoerd Simons
  2015-10-13 21:51 ` [PATCH v4 0/8] Add SPDIF support for rockchip Heiko Stübner
  8 siblings, 0 replies; 18+ messages in thread
From: Sjoerd Simons @ 2015-10-08 13:31 UTC (permalink / raw)
  To: linux-rockchip
  Cc: Jaroslav Kysela, devicetree, alsa-devel, Heiko Stuebner,
	Mark Brown, linux-kernel, Kumar Gala, Ian Campbell, Takashi Iwai,
	Liam Girdwood, Sjoerd Simons, Pawel Moll, Rob Herring,
	Mark Rutland, Russell King, linux-arm-kernel

Enable the SPDIF optical output on Radxa Rock2 square boards

Signed-off-by: Sjoerd Simons <sjoerd.simons@collabora.co.uk>
---

Changes in v4: None
Changes in v3: None
Changes in v2: None

 arch/arm/boot/dts/rk3288-rock2-square.dts | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/arch/arm/boot/dts/rk3288-rock2-square.dts b/arch/arm/boot/dts/rk3288-rock2-square.dts
index bce50cd..1756d04 100644
--- a/arch/arm/boot/dts/rk3288-rock2-square.dts
+++ b/arch/arm/boot/dts/rk3288-rock2-square.dts
@@ -49,6 +49,20 @@
 		stdout-path = "serial2:115200n8";
 	};
 
+	sound {
+		compatible = "simple-audio-card";
+		simple-audio-card,name = "SPDIF";
+		simple-audio-card,dai-link@1 {  /* S/PDIF - S/PDIF */
+			cpu { sound-dai = <&spdif>; };
+			codec { sound-dai = <&spdif_out>; };
+		};
+	};
+
+	spdif_out: spdif-out {
+		compatible = "linux,spdif-dit";
+		#sound-dai-cells = <0>;
+	};
+
 	vcc_usb_host: vcc-host-regulator {
 		compatible = "regulator-fixed";
 		enable-active-high;
@@ -136,6 +150,10 @@
 	};
 };
 
+&spdif {
+	status = "okay";
+};
+
 &uart2 {
 	status = "okay";
 };
-- 
2.6.1


^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH v4 8/8] ARM: multi_v7_defconfig: Add rockchip audio support
  2015-10-08 13:31 [PATCH v4 0/8] Add SPDIF support for rockchip Sjoerd Simons
                   ` (6 preceding siblings ...)
  2015-10-08 13:31 ` [PATCH v4 7/8] ARM: dts: rockchip: Add SPDIF optical out on Radxa Rock2 Square Sjoerd Simons
@ 2015-10-08 13:31 ` Sjoerd Simons
  2015-10-08 13:51   ` Javier Martinez Canillas
  2015-10-09  7:27   ` Lee Jones
  2015-10-13 21:51 ` [PATCH v4 0/8] Add SPDIF support for rockchip Heiko Stübner
  8 siblings, 2 replies; 18+ messages in thread
From: Sjoerd Simons @ 2015-10-08 13:31 UTC (permalink / raw)
  To: linux-rockchip
  Cc: Jaroslav Kysela, devicetree, alsa-devel, Heiko Stuebner,
	Mark Brown, linux-kernel, Kumar Gala, Ian Campbell, Takashi Iwai,
	Liam Girdwood, Sjoerd Simons, Pawel Moll, Rob Herring,
	Mark Rutland, Russell King, linux-arm-kernel,
	Javier Martinez Canillas, Kukjin Kim, Krzysztof Kozlowski,
	Thierry Reding, Geert Uytterhoeven, Alexandre Belloni,
	Arnd Bergmann, Lee Jones, Olof Johansson, Ray Jui, Tomeu Vizoso

Enable support for audio device found on rockchip boards.

Signed-off-by: Sjoerd Simons <sjoerd.simons@collabora.co.uk>
---

Changes in v4: None
Changes in v3: None
Changes in v2: None

 arch/arm/configs/multi_v7_defconfig | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/arch/arm/configs/multi_v7_defconfig b/arch/arm/configs/multi_v7_defconfig
index 03deb7f..febce7e 100644
--- a/arch/arm/configs/multi_v7_defconfig
+++ b/arch/arm/configs/multi_v7_defconfig
@@ -478,6 +478,10 @@ CONFIG_SND_USB_AUDIO=y
 CONFIG_SND_SOC=m
 CONFIG_SND_ATMEL_SOC=m
 CONFIG_SND_ATMEL_SOC_WM8904=m
+CONFIG_SND_SOC_ROCKCHIP=m
+CONFIG_SND_SOC_ROCKCHIP_SPDIF=m
+CONFIG_SND_SOC_ROCKCHIP_MAX98090=m
+CONFIG_SND_SOC_ROCKCHIP_RT5645=m
 CONFIG_SND_SOC_SH4_FSI=m
 CONFIG_SND_SOC_RCAR=m
 CONFIG_SND_SOC_RSRC_CARD=m
@@ -489,6 +493,7 @@ CONFIG_SND_SOC_TEGRA_TRIMSLICE=m
 CONFIG_SND_SOC_TEGRA_ALC5632=m
 CONFIG_SND_SOC_TEGRA_MAX98090=m
 CONFIG_SND_SOC_AK4642=m
+CONFIG_SND_SOC_SPDIF=m
 CONFIG_SND_SOC_WM8978=m
 CONFIG_USB=y
 CONFIG_USB_XHCI_HCD=y
-- 
2.6.1


^ permalink raw reply related	[flat|nested] 18+ messages in thread

* Re: [PATCH v4 8/8] ARM: multi_v7_defconfig: Add rockchip audio support
  2015-10-08 13:31 ` [PATCH v4 8/8] ARM: multi_v7_defconfig: Add rockchip audio support Sjoerd Simons
@ 2015-10-08 13:51   ` Javier Martinez Canillas
  2015-10-09  7:27   ` Lee Jones
  1 sibling, 0 replies; 18+ messages in thread
From: Javier Martinez Canillas @ 2015-10-08 13:51 UTC (permalink / raw)
  To: Sjoerd Simons, linux-rockchip
  Cc: Jaroslav Kysela, devicetree, alsa-devel, Heiko Stuebner,
	Mark Brown, linux-kernel, Kumar Gala, Ian Campbell, Takashi Iwai,
	Liam Girdwood, Pawel Moll, Rob Herring, Mark Rutland,
	Russell King, linux-arm-kernel, Kukjin Kim, Krzysztof Kozlowski,
	Thierry Reding, Geert Uytterhoeven, Alexandre Belloni,
	Arnd Bergmann, Lee Jones, Olof Johansson, Ray Jui, Tomeu Vizoso

Hello Sjoerd,

On 10/08/2015 03:31 PM, Sjoerd Simons wrote:
> Enable support for audio device found on rockchip boards.
> 
> Signed-off-by: Sjoerd Simons <sjoerd.simons@collabora.co.uk>
> ---

Patch looks good to me.

Reviewed-by: Javier Martinez Canillas <javier@osg.samsung.com>

Best regards,
-- 
Javier Martinez Canillas
Open Source Group
Samsung Research America

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH v4 5/8] clk: rockchip: Allow the RK3288 SPDIF clocks to change their parent
  2015-10-08 13:31 ` [PATCH v4 5/8] clk: rockchip: Allow the RK3288 SPDIF clocks to change their parent Sjoerd Simons
@ 2015-10-08 15:10   ` Heiko Stuebner
  2015-10-09 11:35     ` Sjoerd Simons
  0 siblings, 1 reply; 18+ messages in thread
From: Heiko Stuebner @ 2015-10-08 15:10 UTC (permalink / raw)
  To: Sjoerd Simons
  Cc: linux-rockchip, Jaroslav Kysela, devicetree, alsa-devel,
	Mark Brown, linux-kernel, Kumar Gala, Ian Campbell, Takashi Iwai,
	Liam Girdwood, Pawel Moll, Rob Herring, Mark Rutland,
	Russell King, linux-arm-kernel, Michael Turquette, Stephen Boyd,
	linux-clk

Am Donnerstag, 8. Oktober 2015, 15:31:16 schrieb Sjoerd Simons:
> The clock branches leading to sclk_spdif and sclk_spdif_8ch on RK3288
> SoCs only feed those clocks, allow those clocks to change their parents
> all the way up the hierarchy.
> 
> Signed-off-by: Sjoerd Simons <sjoerd.simons@collabora.co.uk>

Just as comment, if I'm seeing that right, this patch needs "clk: rockchip: 
handle mux dependency of fractional dividers" and friends [0] to apply and 
also actually handle the fractional dividers correctly.

For the clock change itself:
Reviewed-by: Heiko Stuebner <heiko@sntech.de>


Heiko

[0] http://lists.infradead.org/pipermail/linux-rockchip/2015-August/003930.html


> ---
> 
> Changes in v4: None
> Changes in v3: None
> Changes in v2: None
> 
>  drivers/clk/rockchip/clk-rk3288.c | 16 ++++++++--------
>  1 file changed, 8 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/clk/rockchip/clk-rk3288.c
> b/drivers/clk/rockchip/clk-rk3288.c index 90c1c9b..4e90252 100644
> --- a/drivers/clk/rockchip/clk-rk3288.c
> +++ b/drivers/clk/rockchip/clk-rk3288.c
> @@ -317,25 +317,25 @@ static struct rockchip_clk_branch
> rk3288_clk_branches[] __initdata = {
> 
>  	MUX(0, "spdif_src", mux_pll_src_cpll_gpll_p, 0,
>  			RK3288_CLKSEL_CON(5), 15, 1, MFLAGS),
> -	COMPOSITE_NOMUX(0, "spdif_pre", "spdif_src", 0,
> +	COMPOSITE_NOMUX(0, "spdif_pre", "spdif_src", CLK_SET_RATE_PARENT,
>  			RK3288_CLKSEL_CON(5), 0, 7, DFLAGS,
>  			RK3288_CLKGATE_CON(4), 4, GFLAGS),
> -	COMPOSITE_FRACMUX(0, "spdif_frac", "spdif_src", 0,
> +	COMPOSITE_FRACMUX(0, "spdif_frac", "spdif_src", CLK_SET_RATE_PARENT,
>  			RK3288_CLKSEL_CON(9), 0,
>  			RK3288_CLKGATE_CON(4), 5, GFLAGS,
> -		MUX(0, "spdif_mux", mux_spdif_p, 0,
> +		MUX(0, "spdif_mux", mux_spdif_p, CLK_SET_RATE_PARENT,
>  				RK3288_CLKSEL_CON(5), 8, 2, MFLAGS)),
> -	GATE(SCLK_SPDIF, "sclk_spdif", "spdif_mux", 0,
> +	GATE(SCLK_SPDIF, "sclk_spdif", "spdif_mux", CLK_SET_RATE_PARENT,
>  			RK3288_CLKGATE_CON(4), 6, GFLAGS),
> -	COMPOSITE_NOMUX(0, "spdif_8ch_pre", "spdif_src", 0,
> +	COMPOSITE_NOMUX(0, "spdif_8ch_pre", "spdif_src", CLK_SET_RATE_PARENT,
>  			RK3288_CLKSEL_CON(40), 0, 7, DFLAGS,
>  			RK3288_CLKGATE_CON(4), 7, GFLAGS),
> -	COMPOSITE_FRACMUX(0, "spdif_8ch_frac", "spdif_8ch_pre", 0,
> +	COMPOSITE_FRACMUX(0, "spdif_8ch_frac", "spdif_8ch_pre",
> CLK_SET_RATE_PARENT, RK3288_CLKSEL_CON(41), 0,
>  			RK3288_CLKGATE_CON(4), 8, GFLAGS,
> -		MUX(0, "spdif_8ch_mux", mux_spdif_8ch_p, 0,
> +		MUX(0, "spdif_8ch_mux", mux_spdif_8ch_p, CLK_SET_RATE_PARENT,
>  				RK3288_CLKSEL_CON(40), 8, 2, MFLAGS)),
> -	GATE(SCLK_SPDIF8CH, "sclk_spdif_8ch", "spdif_8ch_mux", 0,
> +	GATE(SCLK_SPDIF8CH, "sclk_spdif_8ch", "spdif_8ch_mux",
> CLK_SET_RATE_PARENT, RK3288_CLKGATE_CON(4), 9, GFLAGS),
> 
>  	GATE(0, "sclk_acc_efuse", "xin24m", 0,


^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH v4 1/8] ASoC: dt-bindings: add rockchip tranceiver bindings
  2015-10-08 13:31 ` [PATCH v4 1/8] ASoC: dt-bindings: add rockchip tranceiver bindings Sjoerd Simons
@ 2015-10-08 16:50   ` Rob Herring
  2015-10-09 11:52     ` Sjoerd Simons
  0 siblings, 1 reply; 18+ messages in thread
From: Rob Herring @ 2015-10-08 16:50 UTC (permalink / raw)
  To: Sjoerd Simons
  Cc: linux-rockchip, Jaroslav Kysela, devicetree, Linux-ALSA,
	Heiko Stuebner, Mark Brown, linux-kernel, Kumar Gala,
	Ian Campbell, Takashi Iwai, Liam Girdwood, Pawel Moll,
	Mark Rutland, Russell King, linux-arm-kernel

On Thu, Oct 8, 2015 at 8:31 AM, Sjoerd Simons
<sjoerd.simons@collabora.co.uk> wrote:
> Add devicetree bindings for the spdif tranceiver found on
> found on rk3066, rk3188 and rk3288 SoCs
>
> Signed-off-by: Sjoerd Simons <sjoerd.simons@collabora.co.uk>
>
> ---
>
> Changes in v4:
> - Require rockchip,grf on RK3288 as the 8 channel solution has to be
>   selected on that SoC
> - Make the compatibility string one of a known list rather then
>   requiring a precise list of options.
> - Change the clock names to hclk and mclk instead of spdif_hclk and
>   spdif_mclk to better match the implementation and data sheets.
>
> Changes in v3: None
> Changes in v2: None
>
>  .../devicetree/bindings/sound/rockchip-spdif.txt   | 44 ++++++++++++++++++++++
>  1 file changed, 44 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/sound/rockchip-spdif.txt
>
> diff --git a/Documentation/devicetree/bindings/sound/rockchip-spdif.txt b/Documentation/devicetree/bindings/sound/rockchip-spdif.txt
> new file mode 100644
> index 0000000..33dd82c
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/sound/rockchip-spdif.txt
> @@ -0,0 +1,44 @@
> +* Rockchip SPDIF transceiver
> +
> +The S/PDIF audio block is a stereo transceiver that allows the
> +processor to receive and transmit digital audio via an coaxial cable or
> +a fibre cable.
> +
> +Required properties:
> +
> +- compatible: should be one of the following:
> +   - "rockchip,rk3288-spdif", "rockchip,rk3188-spdif" or
> +     "rockchip,rk3066-spdif"
> +- reg: physical base address of the controller and length of memory mapped
> +  region.
> +- interrupts: should contain the SPDIF interrupt.

> +- #address-cells: should be 1.
> +- #size-cells: should be 0.

Why do you need these? Are you going to have sub nodes?

> +- dmas: DMA specifiers for tx dma. See the DMA client binding,
> +  Documentation/devicetree/bindings/dma/dma.txt
> +- dma-names: should be "tx"
> +- clocks: a list of phandle + clock-specifier pairs, one for each entry
> +  in clock-names.
> +- clock-names: should contain following:
> +   - "hclk": clock for SPDIF controller
> +   - "mclk" : clock for SPDIF bus
> +
> +Required properties on RK3288:
> +  - rockchip,grf: the phandle of the syscon node for the general register
> +                   file (GRF)
> +
> +Example for the rk3188 SPDIF controller:
> +
> +spdif: spdif@0x1011e000 {
> +       compatible = "rockchip,rk3188-spdif", "rockchip,rk3066-spdif";
> +       reg = <0x1011e000 0x2000>;
> +       interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
> +       #address-cells = <1>;
> +       #size-cells = <0>;
> +       dmas = <&dmac1_s 8>;
> +       dma-names = "tx";
> +       clock-names = "hclk", "mclk";
> +       clocks = <&cru HCLK_SPDIF>, <&cru SCLK_SPDIF>;
> +       status = "disabled";
> +       #sound-dai-cells = <0>;
> +};
> --
> 2.6.1
>

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH v4 8/8] ARM: multi_v7_defconfig: Add rockchip audio support
  2015-10-08 13:31 ` [PATCH v4 8/8] ARM: multi_v7_defconfig: Add rockchip audio support Sjoerd Simons
  2015-10-08 13:51   ` Javier Martinez Canillas
@ 2015-10-09  7:27   ` Lee Jones
  1 sibling, 0 replies; 18+ messages in thread
From: Lee Jones @ 2015-10-09  7:27 UTC (permalink / raw)
  To: Sjoerd Simons
  Cc: linux-rockchip, Jaroslav Kysela, devicetree, alsa-devel,
	Heiko Stuebner, Mark Brown, linux-kernel, Kumar Gala,
	Ian Campbell, Takashi Iwai, Liam Girdwood, Pawel Moll,
	Rob Herring, Mark Rutland, Russell King, linux-arm-kernel,
	Javier Martinez Canillas, Kukjin Kim, Krzysztof Kozlowski,
	Thierry Reding, Geert Uytterhoeven, Alexandre Belloni,
	Arnd Bergmann, Olof Johansson, Ray Jui, Tomeu Vizoso

Thanks an awful lot of people you've spammed there.

Are you sure they all care about your Rockchip changes?

Hint: I'm sure that they don't.

Please be careful and only send patches to relevant people.

> Enable support for audio device found on rockchip boards.
> 
> Signed-off-by: Sjoerd Simons <sjoerd.simons@collabora.co.uk>
> ---
> 
> Changes in v4: None
> Changes in v3: None
> Changes in v2: None
> 
>  arch/arm/configs/multi_v7_defconfig | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/arch/arm/configs/multi_v7_defconfig b/arch/arm/configs/multi_v7_defconfig
> index 03deb7f..febce7e 100644
> --- a/arch/arm/configs/multi_v7_defconfig
> +++ b/arch/arm/configs/multi_v7_defconfig
> @@ -478,6 +478,10 @@ CONFIG_SND_USB_AUDIO=y
>  CONFIG_SND_SOC=m
>  CONFIG_SND_ATMEL_SOC=m
>  CONFIG_SND_ATMEL_SOC_WM8904=m
> +CONFIG_SND_SOC_ROCKCHIP=m
> +CONFIG_SND_SOC_ROCKCHIP_SPDIF=m
> +CONFIG_SND_SOC_ROCKCHIP_MAX98090=m
> +CONFIG_SND_SOC_ROCKCHIP_RT5645=m
>  CONFIG_SND_SOC_SH4_FSI=m
>  CONFIG_SND_SOC_RCAR=m
>  CONFIG_SND_SOC_RSRC_CARD=m
> @@ -489,6 +493,7 @@ CONFIG_SND_SOC_TEGRA_TRIMSLICE=m
>  CONFIG_SND_SOC_TEGRA_ALC5632=m
>  CONFIG_SND_SOC_TEGRA_MAX98090=m
>  CONFIG_SND_SOC_AK4642=m
> +CONFIG_SND_SOC_SPDIF=m
>  CONFIG_SND_SOC_WM8978=m
>  CONFIG_USB=y
>  CONFIG_USB_XHCI_HCD=y

-- 
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH v4 5/8] clk: rockchip: Allow the RK3288 SPDIF clocks to change their parent
  2015-10-08 15:10   ` Heiko Stuebner
@ 2015-10-09 11:35     ` Sjoerd Simons
  2015-10-11 10:43       ` Heiko Stübner
  0 siblings, 1 reply; 18+ messages in thread
From: Sjoerd Simons @ 2015-10-09 11:35 UTC (permalink / raw)
  To: Heiko Stuebner
  Cc: linux-rockchip, Jaroslav Kysela, devicetree, alsa-devel,
	Mark Brown, linux-kernel, Kumar Gala, Ian Campbell, Takashi Iwai,
	Liam Girdwood, Pawel Moll, Rob Herring, Mark Rutland,
	Russell King, linux-arm-kernel, Michael Turquette, Stephen Boyd,
	linux-clk

Hey Heiko,

On Thu, 2015-10-08 at 17:10 +0200, Heiko Stuebner wrote:
> Am Donnerstag, 8. Oktober 2015, 15:31:16 schrieb Sjoerd Simons:
> > The clock branches leading to sclk_spdif and sclk_spdif_8ch on
> > RK3288
> > SoCs only feed those clocks, allow those clocks to change their
> > parents
> > all the way up the hierarchy.
> > 
> > Signed-off-by: Sjoerd Simons <sjoerd.simons@collabora.co.uk>
> 
> Just as comment, if I'm seeing that right, this patch needs "clk:
> rockchip: 
> handle mux dependency of fractional dividers" and friends [0] to
> apply and 
> also actually handle the fractional dividers correctly.
> 
> For the clock change itself:
> Reviewed-by: Heiko Stuebner <heiko@sntech.de>

Oh sorry yes, i completely forgot to at that as note on this patch
(series). These are on top of your series as those are required to make
things actually work as expected. 

Which reminds me, i was wondering how to best move that forward. Could
you pick this one up to include it in the next round of your series?
(Otherwise i'm happy to rebase it once you do a v2)

> 
> Heiko
> 
> [0] http://lists.infradead.org/pipermail/linux-rockchip/2015-August/0
> 03930.html


-- 
Sjoerd Simons
Collabora Ltd.

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH v4 1/8] ASoC: dt-bindings: add rockchip tranceiver bindings
  2015-10-08 16:50   ` Rob Herring
@ 2015-10-09 11:52     ` Sjoerd Simons
  0 siblings, 0 replies; 18+ messages in thread
From: Sjoerd Simons @ 2015-10-09 11:52 UTC (permalink / raw)
  To: Rob Herring
  Cc: linux-rockchip, Jaroslav Kysela, devicetree, Linux-ALSA,
	Heiko Stuebner, Mark Brown, linux-kernel, Kumar Gala,
	Ian Campbell, Takashi Iwai, Liam Girdwood, Pawel Moll,
	Mark Rutland, Russell King, linux-arm-kernel

Hey Rob,

On Thu, 2015-10-08 at 11:50 -0500, Rob Herring wrote:
> On Thu, Oct 8, 2015 at 8:31 AM, Sjoerd Simons
> <sjoerd.simons@collabora.co.uk> wrote:
> > Add devicetree bindings for the spdif tranceiver found on
> > found on rk3066, rk3188 and rk3288 SoCs
> > 
> > Signed-off-by: Sjoerd Simons <sjoerd.simons@collabora.co.uk>
> > 
> > ---
> > 
> > Changes in v4:
> > - Require rockchip,grf on RK3288 as the 8 channel solution has to
> > be
> >   selected on that SoC
> > - Make the compatibility string one of a known list rather then
> >   requiring a precise list of options.
> > - Change the clock names to hclk and mclk instead of spdif_hclk and
> >   spdif_mclk to better match the implementation and data sheets.
> > 
> > Changes in v3: None
> > Changes in v2: None
> > 
> >  .../devicetree/bindings/sound/rockchip-spdif.txt   | 44
> > ++++++++++++++++++++++
> >  1 file changed, 44 insertions(+)
> >  create mode 100644
> > Documentation/devicetree/bindings/sound/rockchip-spdif.txt
> > 
> > diff --git a/Documentation/devicetree/bindings/sound/rockchip
> > -spdif.txt b/Documentation/devicetree/bindings/sound/rockchip
> > -spdif.txt
> > new file mode 100644
> > index 0000000..33dd82c
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/sound/rockchip-spdif.txt
> > @@ -0,0 +1,44 @@
> > +* Rockchip SPDIF transceiver
> > +
> > +The S/PDIF audio block is a stereo transceiver that allows the
> > +processor to receive and transmit digital audio via an coaxial
> > cable or
> > +a fibre cable.
> > +
> > +Required properties:
> > +
> > +- compatible: should be one of the following:
> > +   - "rockchip,rk3288-spdif", "rockchip,rk3188-spdif" or
> > +     "rockchip,rk3066-spdif"
> > +- reg: physical base address of the controller and length of
> > memory mapped
> > +  region.
> > +- interrupts: should contain the SPDIF interrupt.
> 
> > +- #address-cells: should be 1.
> > +- #size-cells: should be 0.
> 
> Why do you need these? Are you going to have sub nodes?

Oh good spot, it looks like I indeed don't need this. (for reference,
this came from the rockchip i2s' drivers device-tree documentation and
i mindlessly left it in).

Thanks!,

-- 
Sjoerd Simons
Collabora Ltd.

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH v4 5/8] clk: rockchip: Allow the RK3288 SPDIF clocks to change their parent
  2015-10-09 11:35     ` Sjoerd Simons
@ 2015-10-11 10:43       ` Heiko Stübner
  2015-10-22 12:10         ` Michael Turquette
  0 siblings, 1 reply; 18+ messages in thread
From: Heiko Stübner @ 2015-10-11 10:43 UTC (permalink / raw)
  To: Sjoerd Simons
  Cc: linux-rockchip, Jaroslav Kysela, devicetree, alsa-devel,
	Mark Brown, linux-kernel, Kumar Gala, Ian Campbell, Takashi Iwai,
	Liam Girdwood, Pawel Moll, Rob Herring, Mark Rutland,
	Russell King, linux-arm-kernel, Michael Turquette, Stephen Boyd,
	linux-clk

Hi Sjoerd,

Am Freitag, 9. Oktober 2015, 13:35:55 schrieb Sjoerd Simons:
> On Thu, 2015-10-08 at 17:10 +0200, Heiko Stuebner wrote:
> > Am Donnerstag, 8. Oktober 2015, 15:31:16 schrieb Sjoerd Simons:
> > > The clock branches leading to sclk_spdif and sclk_spdif_8ch on
> > > RK3288
> > > SoCs only feed those clocks, allow those clocks to change their
> > > parents
> > > all the way up the hierarchy.
> > > 
> > > Signed-off-by: Sjoerd Simons <sjoerd.simons@collabora.co.uk>
> > 
> > Just as comment, if I'm seeing that right, this patch needs "clk:
> > rockchip:
> > handle mux dependency of fractional dividers" and friends [0] to
> > apply and
> > also actually handle the fractional dividers correctly.
> > 
> > For the clock change itself:
> > Reviewed-by: Heiko Stuebner <heiko@sntech.de>
> 
> Oh sorry yes, i completely forgot to at that as note on this patch
> (series). These are on top of your series as those are required to make
> things actually work as expected.
> 
> Which reminds me, i was wondering how to best move that forward. Could
> you pick this one up to include it in the next round of your series?
> (Otherwise i'm happy to rebase it once you do a v2)

I guess that will depend on how the core series gets handled. Aka if there 
needs to be a v2 (depending on the clock maintainers) I can pick that up as 
part of it. Otherwise we'll just need to ping the clock-maintainers separately 
on this patch if necessary.


Heiko


^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH v4 0/8] Add SPDIF support for rockchip
  2015-10-08 13:31 [PATCH v4 0/8] Add SPDIF support for rockchip Sjoerd Simons
                   ` (7 preceding siblings ...)
  2015-10-08 13:31 ` [PATCH v4 8/8] ARM: multi_v7_defconfig: Add rockchip audio support Sjoerd Simons
@ 2015-10-13 21:51 ` Heiko Stübner
  8 siblings, 0 replies; 18+ messages in thread
From: Heiko Stübner @ 2015-10-13 21:51 UTC (permalink / raw)
  To: Sjoerd Simons, devicetree, linux-arm-kernel, Olof Johansson,
	Javier Martinez Canillas, Michael Turquette
  Cc: linux-rockchip, alsa-devel, Mark Brown, linux-kernel, Kumar Gala,
	Ian Campbell, Takashi Iwai, Liam Girdwood, Pawel Moll,
	Rob Herring, Mark Rutland, Arnd Bergmann, linux-clk,
	Tomeu Vizoso, Stephen Boyd

Am Donnerstag, 8. Oktober 2015, 15:31:11 schrieb Sjoerd Simons:
> This patchset adds support for the Rockchip SPDIF transceiver as present
> on RK3066, RK3188 and RK3288 boards and enables it on a Radxa rock pro.
> Tested on a Radxa Rock Pro board and Radxa Rock 2 Square board.
> 
> Quite a few changes since v3 (mostly based on review comment). One
> important addition is proper RK3288 SoC support; While according to the
> documentation it has 2 SPDIF "solutions" with the default being the old
> one, this variation doesn't actually work.. So support has been added
> to switch to the new SPDIF solution on RK3288.

[...]

> Sjoerd Simons (8):
>   ASoC: dt-bindings: add rockchip tranceiver bindings
>   ASoC: rockchip: Add rockchip SPDIF transceiver driver
>   ARM: dts: rockchip: Add SPDIF transceiver for RK3188
>   ARM: dts: rockchip: Add SPDIF optical out on Radxa Rock
>   clk: rockchip: Allow the RK3288 SPDIF clocks to change their parent
>   ARM: dts: rockchip: Add SPDIF transceiver for RK3288
>   ARM: dts: rockchip: Add SPDIF optical out on Radxa Rock2 Square
>   ARM: multi_v7_defconfig: Add rockchip audio support

After Mark took the two ASoC-specific patches, I've now picked up the 4 dts 
patches, after removing the #address- and #size-cells lines from them.

Sjoerd, are you sending a followup patch to Mark to also drop them from the 
binding doc?

Hopefully the clock patch will also find its way into the clock tree, together 
with the base series for the frac dividers.

And I guess we'll need to prod the armsoc-guys to take the defconfig change 
too :-)


Heiko

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH v4 5/8] clk: rockchip: Allow the RK3288 SPDIF clocks to change their parent
  2015-10-11 10:43       ` Heiko Stübner
@ 2015-10-22 12:10         ` Michael Turquette
  0 siblings, 0 replies; 18+ messages in thread
From: Michael Turquette @ 2015-10-22 12:10 UTC (permalink / raw)
  To: Heiko Stübner, Sjoerd Simons
  Cc: linux-rockchip, Jaroslav Kysela, devicetree, alsa-devel,
	Mark Brown, linux-kernel, Kumar Gala, Ian Campbell, Takashi Iwai,
	Liam Girdwood, Pawel Moll, Rob Herring, Mark Rutland,
	Russell King, linux-arm-kernel, Stephen Boyd, linux-clk

Quoting Heiko Stübner (2015-10-11 03:43:27)
> Hi Sjoerd,
> 
> Am Freitag, 9. Oktober 2015, 13:35:55 schrieb Sjoerd Simons:
> > On Thu, 2015-10-08 at 17:10 +0200, Heiko Stuebner wrote:
> > > Am Donnerstag, 8. Oktober 2015, 15:31:16 schrieb Sjoerd Simons:
> > > > The clock branches leading to sclk_spdif and sclk_spdif_8ch on
> > > > RK3288
> > > > SoCs only feed those clocks, allow those clocks to change their
> > > > parents
> > > > all the way up the hierarchy.
> > > > 
> > > > Signed-off-by: Sjoerd Simons <sjoerd.simons@collabora.co.uk>
> > > 
> > > Just as comment, if I'm seeing that right, this patch needs "clk:
> > > rockchip:
> > > handle mux dependency of fractional dividers" and friends [0] to
> > > apply and
> > > also actually handle the fractional dividers correctly.
> > > 
> > > For the clock change itself:
> > > Reviewed-by: Heiko Stuebner <heiko@sntech.de>
> > 
> > Oh sorry yes, i completely forgot to at that as note on this patch
> > (series). These are on top of your series as those are required to make
> > things actually work as expected.
> > 
> > Which reminds me, i was wondering how to best move that forward. Could
> > you pick this one up to include it in the next round of your series?
> > (Otherwise i'm happy to rebase it once you do a v2)
> 
> I guess that will depend on how the core series gets handled. Aka if there 
> needs to be a v2 (depending on the clock maintainers) I can pick that up as 
> part of it. Otherwise we'll just need to ping the clock-maintainers separately 
> on this patch if necessary.

I've spoken with Heiko on irc about v2 about using the coordinated clock
rates patches for handling the mux/fractional dividers thing. I'd prefer
to use the ccr approach, which puts a delay on that series.

Is there anything wrong with merging this patch #5/8 as-is? Will the
struct clk_core.rate accounting not match the hardware if we set
CLK_SET_PARENT_RATE on these clocks?

Regards,
Mike

> 
> 
> Heiko
> 

^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2015-10-22 12:10 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-10-08 13:31 [PATCH v4 0/8] Add SPDIF support for rockchip Sjoerd Simons
2015-10-08 13:31 ` [PATCH v4 1/8] ASoC: dt-bindings: add rockchip tranceiver bindings Sjoerd Simons
2015-10-08 16:50   ` Rob Herring
2015-10-09 11:52     ` Sjoerd Simons
2015-10-08 13:31 ` [PATCH v4 2/8] ASoC: rockchip: Add rockchip SPDIF transceiver driver Sjoerd Simons
2015-10-08 13:31 ` [PATCH v4 3/8] ARM: dts: rockchip: Add SPDIF transceiver for RK3188 Sjoerd Simons
2015-10-08 13:31 ` [PATCH v4 4/8] ARM: dts: rockchip: Add SPDIF optical out on Radxa Rock Sjoerd Simons
2015-10-08 13:31 ` [PATCH v4 5/8] clk: rockchip: Allow the RK3288 SPDIF clocks to change their parent Sjoerd Simons
2015-10-08 15:10   ` Heiko Stuebner
2015-10-09 11:35     ` Sjoerd Simons
2015-10-11 10:43       ` Heiko Stübner
2015-10-22 12:10         ` Michael Turquette
2015-10-08 13:31 ` [PATCH v4 6/8] ARM: dts: rockchip: Add SPDIF transceiver for RK3288 Sjoerd Simons
2015-10-08 13:31 ` [PATCH v4 7/8] ARM: dts: rockchip: Add SPDIF optical out on Radxa Rock2 Square Sjoerd Simons
2015-10-08 13:31 ` [PATCH v4 8/8] ARM: multi_v7_defconfig: Add rockchip audio support Sjoerd Simons
2015-10-08 13:51   ` Javier Martinez Canillas
2015-10-09  7:27   ` Lee Jones
2015-10-13 21:51 ` [PATCH v4 0/8] Add SPDIF support for rockchip Heiko Stübner

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).