Loading Documentation/devicetree/bindings/sound/rockchip,pdm.txt 0 → 100644 +39 −0 Original line number Diff line number Diff line * Rockchip PDM controller Required properties: - compatible: "rockchip,pdm" - reg: physical base address of the controller and length of memory mapped region. - dmas: DMA specifiers for rx dma. See the DMA client binding, Documentation/devicetree/bindings/dma/dma.txt - dma-names: should include "rx". - clocks: a list of phandle + clock-specifer pairs, one for each entry in clock-names. - clock-names: should contain following: - "pdm_hclk": clock for PDM BUS - "pdm_clk" : clock for PDM controller - pinctrl-names: Must contain a "default" entry. - pinctrl-N: One property must exist for each entry in pinctrl-names. See ../pinctrl/pinctrl-bindings.txt for details of the property values. Example for rk3328 PDM controller: pdm: pdm@ff040000 { compatible = "rockchip,pdm"; reg = <0x0 0xff040000 0x0 0x1000>; clocks = <&clk_pdm>, <&clk_gates28 0>; clock-names = "pdm_clk", "pdm_hclk"; dmas = <&pdma 16>; #dma-cells = <1>; dma-names = "rx"; pinctrl-names = "default", "sleep"; pinctrl-0 = <&pdmm0_clk &pdmm0_fsync &pdmm0_sdi0 &pdmm0_sdi1 &pdmm0_sdi2 &pdmm0_sdi3>; pinctrl-1 = <&pdmm0_sleep>; status = "disabled"; }; Documentation/devicetree/bindings/sound/rockchip-spdif.txt +2 −0 Original line number Diff line number Diff line Loading @@ -9,7 +9,9 @@ Required properties: - compatible: should be one of the following: - "rockchip,rk3066-spdif" - "rockchip,rk3188-spdif" - "rockchip,rk3228-spdif" - "rockchip,rk3288-spdif" - "rockchip,rk3328-spdif" - "rockchip,rk3366-spdif" - "rockchip,rk3368-spdif" - "rockchip,rk3399-spdif" Loading sound/soc/codecs/rt5514.c +31 −2 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ * published by the Free Software Foundation. */ #include <linux/acpi.h> #include <linux/fs.h> #include <linux/module.h> #include <linux/moduleparam.h> Loading Loading @@ -906,9 +907,23 @@ static int rt5514_set_tdm_slot(struct snd_soc_dai *dai, unsigned int tx_mask, if (rx_mask || tx_mask) val |= RT5514_TDM_MODE; if (slots == 4) switch (slots) { case 4: val |= RT5514_TDMSLOT_SEL_RX_4CH | RT5514_TDMSLOT_SEL_TX_4CH; break; case 6: val |= RT5514_TDMSLOT_SEL_RX_6CH | RT5514_TDMSLOT_SEL_TX_6CH; break; case 8: val |= RT5514_TDMSLOT_SEL_RX_8CH | RT5514_TDMSLOT_SEL_TX_8CH; break; case 2: default: break; } switch (slot_width) { case 20: Loading @@ -919,6 +934,10 @@ static int rt5514_set_tdm_slot(struct snd_soc_dai *dai, unsigned int tx_mask, val |= RT5514_CH_LEN_RX_24 | RT5514_CH_LEN_TX_24; break; case 25: val |= RT5514_TDM_MODE2; break; case 32: val |= RT5514_CH_LEN_RX_32 | RT5514_CH_LEN_TX_32; break; Loading @@ -930,7 +949,8 @@ static int rt5514_set_tdm_slot(struct snd_soc_dai *dai, unsigned int tx_mask, regmap_update_bits(rt5514->regmap, RT5514_I2S_CTRL1, RT5514_TDM_MODE | RT5514_TDMSLOT_SEL_RX_MASK | RT5514_TDMSLOT_SEL_TX_MASK | RT5514_CH_LEN_RX_MASK | RT5514_CH_LEN_TX_MASK, val); RT5514_CH_LEN_RX_MASK | RT5514_CH_LEN_TX_MASK | RT5514_TDM_MODE2, val); return 0; } Loading Loading @@ -1076,6 +1096,14 @@ static const struct of_device_id rt5514_of_match[] = { MODULE_DEVICE_TABLE(of, rt5514_of_match); #endif #ifdef CONFIG_ACPI static struct acpi_device_id rt5514_acpi_match[] = { { "10EC5514", 0}, {}, }; MODULE_DEVICE_TABLE(acpi, rt5514_acpi_match); #endif static int rt5514_parse_dt(struct rt5514_priv *rt5514, struct device *dev) { device_property_read_u32(dev, "realtek,dmic-init-delay-ms", Loading Loading @@ -1179,6 +1207,7 @@ static const struct dev_pm_ops rt5514_i2_pm_ops = { static struct i2c_driver rt5514_i2c_driver = { .driver = { .name = "rt5514", .acpi_match_table = ACPI_PTR(rt5514_acpi_match), .of_match_table = of_match_ptr(rt5514_of_match), .pm = &rt5514_i2_pm_ops, }, Loading sound/soc/codecs/rt5514.h +6 −0 Original line number Diff line number Diff line Loading @@ -117,6 +117,8 @@ #define RT5514_POW_ADCFEDL_BIT 0 /* RT5514_I2S_CTRL1 (0x2010) */ #define RT5514_TDM_MODE2 (0x1 << 30) #define RT5514_TDM_MODE2_SFT 30 #define RT5514_TDM_MODE (0x1 << 28) #define RT5514_TDM_MODE_SFT 28 #define RT5514_I2S_LR_MASK (0x1 << 26) Loading @@ -136,6 +138,8 @@ #define RT5514_TDMSLOT_SEL_RX_MASK (0x3 << 10) #define RT5514_TDMSLOT_SEL_RX_SFT 10 #define RT5514_TDMSLOT_SEL_RX_4CH (0x1 << 10) #define RT5514_TDMSLOT_SEL_RX_6CH (0x2 << 10) #define RT5514_TDMSLOT_SEL_RX_8CH (0x3 << 10) #define RT5514_CH_LEN_RX_MASK (0x3 << 8) #define RT5514_CH_LEN_RX_SFT 8 #define RT5514_CH_LEN_RX_16 (0x0 << 8) Loading @@ -145,6 +149,8 @@ #define RT5514_TDMSLOT_SEL_TX_MASK (0x3 << 6) #define RT5514_TDMSLOT_SEL_TX_SFT 6 #define RT5514_TDMSLOT_SEL_TX_4CH (0x1 << 6) #define RT5514_TDMSLOT_SEL_TX_6CH (0x2 << 6) #define RT5514_TDMSLOT_SEL_TX_8CH (0x3 << 6) #define RT5514_CH_LEN_TX_MASK (0x3 << 4) #define RT5514_CH_LEN_TX_SFT 4 #define RT5514_CH_LEN_TX_16 (0x0 << 4) Loading sound/soc/omap/mcbsp.c +4 −8 Original line number Diff line number Diff line Loading @@ -835,15 +835,11 @@ static ssize_t dma_op_mode_store(struct device *dev, const char *buf, size_t size) { struct omap_mcbsp *mcbsp = dev_get_drvdata(dev); const char * const *s; int i = 0; for (s = &dma_op_modes[i]; i < ARRAY_SIZE(dma_op_modes); s++, i++) if (sysfs_streq(buf, *s)) break; int i; if (i == ARRAY_SIZE(dma_op_modes)) return -EINVAL; i = sysfs_match_string(dma_op_modes, buf); if (i < 0) return i; spin_lock_irq(&mcbsp->lock); if (!mcbsp->free) { Loading Loading
Documentation/devicetree/bindings/sound/rockchip,pdm.txt 0 → 100644 +39 −0 Original line number Diff line number Diff line * Rockchip PDM controller Required properties: - compatible: "rockchip,pdm" - reg: physical base address of the controller and length of memory mapped region. - dmas: DMA specifiers for rx dma. See the DMA client binding, Documentation/devicetree/bindings/dma/dma.txt - dma-names: should include "rx". - clocks: a list of phandle + clock-specifer pairs, one for each entry in clock-names. - clock-names: should contain following: - "pdm_hclk": clock for PDM BUS - "pdm_clk" : clock for PDM controller - pinctrl-names: Must contain a "default" entry. - pinctrl-N: One property must exist for each entry in pinctrl-names. See ../pinctrl/pinctrl-bindings.txt for details of the property values. Example for rk3328 PDM controller: pdm: pdm@ff040000 { compatible = "rockchip,pdm"; reg = <0x0 0xff040000 0x0 0x1000>; clocks = <&clk_pdm>, <&clk_gates28 0>; clock-names = "pdm_clk", "pdm_hclk"; dmas = <&pdma 16>; #dma-cells = <1>; dma-names = "rx"; pinctrl-names = "default", "sleep"; pinctrl-0 = <&pdmm0_clk &pdmm0_fsync &pdmm0_sdi0 &pdmm0_sdi1 &pdmm0_sdi2 &pdmm0_sdi3>; pinctrl-1 = <&pdmm0_sleep>; status = "disabled"; };
Documentation/devicetree/bindings/sound/rockchip-spdif.txt +2 −0 Original line number Diff line number Diff line Loading @@ -9,7 +9,9 @@ Required properties: - compatible: should be one of the following: - "rockchip,rk3066-spdif" - "rockchip,rk3188-spdif" - "rockchip,rk3228-spdif" - "rockchip,rk3288-spdif" - "rockchip,rk3328-spdif" - "rockchip,rk3366-spdif" - "rockchip,rk3368-spdif" - "rockchip,rk3399-spdif" Loading
sound/soc/codecs/rt5514.c +31 −2 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ * published by the Free Software Foundation. */ #include <linux/acpi.h> #include <linux/fs.h> #include <linux/module.h> #include <linux/moduleparam.h> Loading Loading @@ -906,9 +907,23 @@ static int rt5514_set_tdm_slot(struct snd_soc_dai *dai, unsigned int tx_mask, if (rx_mask || tx_mask) val |= RT5514_TDM_MODE; if (slots == 4) switch (slots) { case 4: val |= RT5514_TDMSLOT_SEL_RX_4CH | RT5514_TDMSLOT_SEL_TX_4CH; break; case 6: val |= RT5514_TDMSLOT_SEL_RX_6CH | RT5514_TDMSLOT_SEL_TX_6CH; break; case 8: val |= RT5514_TDMSLOT_SEL_RX_8CH | RT5514_TDMSLOT_SEL_TX_8CH; break; case 2: default: break; } switch (slot_width) { case 20: Loading @@ -919,6 +934,10 @@ static int rt5514_set_tdm_slot(struct snd_soc_dai *dai, unsigned int tx_mask, val |= RT5514_CH_LEN_RX_24 | RT5514_CH_LEN_TX_24; break; case 25: val |= RT5514_TDM_MODE2; break; case 32: val |= RT5514_CH_LEN_RX_32 | RT5514_CH_LEN_TX_32; break; Loading @@ -930,7 +949,8 @@ static int rt5514_set_tdm_slot(struct snd_soc_dai *dai, unsigned int tx_mask, regmap_update_bits(rt5514->regmap, RT5514_I2S_CTRL1, RT5514_TDM_MODE | RT5514_TDMSLOT_SEL_RX_MASK | RT5514_TDMSLOT_SEL_TX_MASK | RT5514_CH_LEN_RX_MASK | RT5514_CH_LEN_TX_MASK, val); RT5514_CH_LEN_RX_MASK | RT5514_CH_LEN_TX_MASK | RT5514_TDM_MODE2, val); return 0; } Loading Loading @@ -1076,6 +1096,14 @@ static const struct of_device_id rt5514_of_match[] = { MODULE_DEVICE_TABLE(of, rt5514_of_match); #endif #ifdef CONFIG_ACPI static struct acpi_device_id rt5514_acpi_match[] = { { "10EC5514", 0}, {}, }; MODULE_DEVICE_TABLE(acpi, rt5514_acpi_match); #endif static int rt5514_parse_dt(struct rt5514_priv *rt5514, struct device *dev) { device_property_read_u32(dev, "realtek,dmic-init-delay-ms", Loading Loading @@ -1179,6 +1207,7 @@ static const struct dev_pm_ops rt5514_i2_pm_ops = { static struct i2c_driver rt5514_i2c_driver = { .driver = { .name = "rt5514", .acpi_match_table = ACPI_PTR(rt5514_acpi_match), .of_match_table = of_match_ptr(rt5514_of_match), .pm = &rt5514_i2_pm_ops, }, Loading
sound/soc/codecs/rt5514.h +6 −0 Original line number Diff line number Diff line Loading @@ -117,6 +117,8 @@ #define RT5514_POW_ADCFEDL_BIT 0 /* RT5514_I2S_CTRL1 (0x2010) */ #define RT5514_TDM_MODE2 (0x1 << 30) #define RT5514_TDM_MODE2_SFT 30 #define RT5514_TDM_MODE (0x1 << 28) #define RT5514_TDM_MODE_SFT 28 #define RT5514_I2S_LR_MASK (0x1 << 26) Loading @@ -136,6 +138,8 @@ #define RT5514_TDMSLOT_SEL_RX_MASK (0x3 << 10) #define RT5514_TDMSLOT_SEL_RX_SFT 10 #define RT5514_TDMSLOT_SEL_RX_4CH (0x1 << 10) #define RT5514_TDMSLOT_SEL_RX_6CH (0x2 << 10) #define RT5514_TDMSLOT_SEL_RX_8CH (0x3 << 10) #define RT5514_CH_LEN_RX_MASK (0x3 << 8) #define RT5514_CH_LEN_RX_SFT 8 #define RT5514_CH_LEN_RX_16 (0x0 << 8) Loading @@ -145,6 +149,8 @@ #define RT5514_TDMSLOT_SEL_TX_MASK (0x3 << 6) #define RT5514_TDMSLOT_SEL_TX_SFT 6 #define RT5514_TDMSLOT_SEL_TX_4CH (0x1 << 6) #define RT5514_TDMSLOT_SEL_TX_6CH (0x2 << 6) #define RT5514_TDMSLOT_SEL_TX_8CH (0x3 << 6) #define RT5514_CH_LEN_TX_MASK (0x3 << 4) #define RT5514_CH_LEN_TX_SFT 4 #define RT5514_CH_LEN_TX_16 (0x0 << 4) Loading
sound/soc/omap/mcbsp.c +4 −8 Original line number Diff line number Diff line Loading @@ -835,15 +835,11 @@ static ssize_t dma_op_mode_store(struct device *dev, const char *buf, size_t size) { struct omap_mcbsp *mcbsp = dev_get_drvdata(dev); const char * const *s; int i = 0; for (s = &dma_op_modes[i]; i < ARRAY_SIZE(dma_op_modes); s++, i++) if (sysfs_streq(buf, *s)) break; int i; if (i == ARRAY_SIZE(dma_op_modes)) return -EINVAL; i = sysfs_match_string(dma_op_modes, buf); if (i < 0) return i; spin_lock_irq(&mcbsp->lock); if (!mcbsp->free) { Loading