Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 512def88 authored by Mark Brown's avatar Mark Brown
Browse files

Merge remote-tracking branches 'asoc/topic/rcar', 'asoc/topic/rl6347a',...

Merge remote-tracking branches 'asoc/topic/rcar', 'asoc/topic/rl6347a', 'asoc/topic/rockchip' and 'asoc/topic/rt286' into asoc-next
Loading
Loading
Loading
Loading
+2 −4
Original line number Diff line number Diff line
@@ -12,8 +12,6 @@ Required properties:
- reg: physical base address of the controller and length of memory mapped
  region.
- interrupts: should contain the I2S interrupt.
- #address-cells: should be 1.
- #size-cells: should be 0.
- dmas: DMA specifiers for tx and rx dma. See the DMA client binding,
	Documentation/devicetree/bindings/dma/dma.txt
- dma-names: should include "tx" and "rx".
@@ -21,6 +19,7 @@ Required properties:
- clock-names: should contain followings:
   - "i2s_hclk": clock for I2S BUS
   - "i2s_clk" : clock for I2S controller
- rockchip,capture-channels: max capture channels, if not set, 2 channels default.

Example for rk3288 I2S controller:

@@ -28,10 +27,9 @@ i2s@ff890000 {
	compatible = "rockchip,rk3288-i2s", "rockchip,rk3066-i2s";
	reg = <0xff890000 0x10000>;
	interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
	#address-cells = <1>;
	#size-cells = <0>;
	dmas = <&pdma1 0>, <&pdma1 1>;
	dma-names = "tx", "rx";
	clock-names = "i2s_hclk", "i2s_clk";
	clocks = <&cru HCLK_I2S0>, <&cru SCLK_I2S0>;
	rockchip,capture-channels = <2>;
};
+40 −0
Original line number Diff line number Diff line
* 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.
- 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>;
	dmas = <&dmac1_s 8>;
	dma-names = "tx";
	clock-names = "hclk", "mclk";
	clocks = <&cru HCLK_SPDIF>, <&cru SCLK_SPDIF>;
	status = "disabled";
	#sound-dai-cells = <0>;
};
+1 −18
Original line number Diff line number Diff line
@@ -11,25 +11,8 @@
 */

#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/init.h>
#include <linux/delay.h>
#include <linux/pm.h>
#include <linux/i2c.h>
#include <linux/platform_device.h>
#include <linux/spi/spi.h>
#include <linux/dmi.h>
#include <linux/acpi.h>
#include <sound/core.h>
#include <sound/pcm.h>
#include <sound/pcm_params.h>
#include <sound/soc.h>
#include <sound/soc-dapm.h>
#include <sound/initval.h>
#include <sound/tlv.h>
#include <sound/jack.h>
#include <linux/workqueue.h>
#include <sound/hda_verbs.h>
#include <linux/regmap.h>

#include "rl6347a.h"

+2 −0
Original line number Diff line number Diff line
@@ -12,6 +12,8 @@
#ifndef __RL6347A_H__
#define __RL6347A_H__

#include <sound/hda_verbs.h>

#define VERB_CMD(V, N, D) ((N << 20) | (V << 8) | D)

#define RL6347A_VENDOR_REGISTERS	0x20
+6 −3
Original line number Diff line number Diff line
@@ -29,7 +29,6 @@
#include <sound/jack.h>
#include <linux/workqueue.h>
#include <sound/rt286.h>
#include <sound/hda_verbs.h>

#include "rl6347a.h"
#include "rt286.h"
@@ -38,7 +37,7 @@
#define RT288_VENDOR_ID 0x10ec0288

struct rt286_priv {
	const struct reg_default *index_cache;
	struct reg_default *index_cache;
	int index_cache_size;
	struct regmap *regmap;
	struct snd_soc_codec *codec;
@@ -1161,7 +1160,11 @@ static int rt286_i2c_probe(struct i2c_client *i2c,
		return -ENODEV;
	}

	rt286->index_cache = rt286_index_def;
	rt286->index_cache = devm_kmemdup(&i2c->dev, rt286_index_def,
					  sizeof(rt286_index_def), GFP_KERNEL);
	if (!rt286->index_cache)
		return -ENOMEM;

	rt286->index_cache_size = INDEX_CACHE_SIZE;
	rt286->i2c = i2c;
	i2c_set_clientdata(i2c, rt286);
Loading