ASoC: codecs: add rk817 support
Subsystems (5)
v10 cover ASoC: codecs: add rk817 support
From: Chris Morgan <[email protected]>
This series is to add support for the Rockchip rk817 audio codec which is present in all Rockchip rk817 MFD chips.
Changes in v10:
- Correct order of test/ack/signed-off to chronological order.
- Removed ifdef from mfd driver keep cell from being added when the codec was not to be built.
- Changed codec DT parsing messages from error to debug to prevent errors in dmesg log in the rare but valid case a user has the rk817 PMIC but does not use the codec.
Changes in v9:
- Add cover letter.
- Remove documentation for interrupt parent per Rob Herring's request.
- Remove unused MODULE_DEVICE_TABLE to fix a bug identified by kernel test robot.
Changes in v8:
- Added additional documentation for missing properties of #sound-dai-cells, interrupt-parent, and wakeup-source for mfd documentation.
- Corrected order of elements descriptions in device tree documentation.
- Changed name of "mic-in-differential" to "rockchip,mic-in-differential".
- Changed name of sound card from "rockchip,rk817-codec" to "Analog".
- Removed unused resets and reset-names from the i2s1_2ch node.
Changes in v7:
- Removed ifdef around register definitions for MFD.
- Replaced codec documentation with updates to MFD documentation.
- Reordered elements in example to comply with upstream rules.
- Added binding update back for Odroid Go Advance as requested.
- Submitting patches from gmail now.
Changes in v6:
- Included additional project maintainers for correct subsystems.
- Removed unneeded compatible from DT documentation.
- Removed binding update for Odroid Go Advance (will do in separate series).
Changes in v5:
- Move register definitions from rk817_codec.h to main rk808.h register definitions.
- Add volatile register for codec bits.
- Add default values for codec bits.
- Removed of_compatible from mtd driver (not necessary).
- Switched to using parent regmap instead of private regmap for codec.
Changes in v4:
- Created set_pll() call.
- Created user visible gain control in mic.
- Check for return value of clk_prepare_enable().
- Removed duplicate clk_prepare_enable().
- Split DT documentation to separate commit.
Changes in v3:
- Use DAPM macros to set audio path.
- Updated devicetree binding (as every rk817 has this codec chip).
- Changed documentation to yaml format.
- Split MFD changes to separate commit.
Changes in v2:
- Fixed audio path registers to solve some bugs.
Chris Morgan (4):
mfd: Add Rockchip rk817 audio CODEC support
ASoC: Add Rockchip rk817 audio CODEC support
dt-bindings: Add Rockchip rk817 audio CODEC support
arm64: dts: rockchip: add rk817 codec to Odroid Go
.../devicetree/bindings/mfd/rk808.txt | 186 ++++++ .../boot/dts/rockchip/rk3326-odroid-go2.dts | 36 +- drivers/mfd/rk808.c | 83 +++ include/linux/mfd/rk808.h | 81 +++ sound/soc/codecs/Kconfig | 6 + sound/soc/codecs/Makefile | 2 + sound/soc/codecs/rk817_codec.c | 558 ++++++++++++++++++ 7 files changed, 950 insertions(+), 2 deletions(-) create mode 100644 sound/soc/codecs/rk817_codec.c
Signature · 1 line
2.25.1
PATCH v10 1/4 mfd: Add Rockchip rk817 audio CODEC support
From: Chris Morgan <[email protected]>
Add rk817 codec support cell to rk808 mfd driver.
--- drivers/mfd/rk808.c | 83 +++++++++++++++++++++++++++++++++++++++ include/linux/mfd/rk808.h | 81 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 164 insertions(+)
drivers/mfd/rk808.c +83 -0
@@ -65,6 +65,7 @@ static bool rk817_is_volatile_reg(struct device *dev, unsigned int reg)switch (reg) { case RK817_SECONDS_REG ... RK817_WEEKS_REG:case RK817_RTC_STATUS_REG : +case RK817_CODEC_DTOP_LPT_SRST :case RK817_INT_STS_REG0 :case RK817_INT_STS_REG1 :case RK817_INT_STS_REG2 :
@@ -163,6 +164,9 @@ static const struct mfd_cell rk817s[] = { .num_resources = ARRAY_SIZE(rk817_rtc_resources), .resources = &rk817_rtc_resources[0], }, + { + .name = "rk817-codec", + }, };static const struct mfd_cell rk818s[] = {
@@ -201,6 +205,85 @@ static const struct rk808_reg_data rk808_pre_init_reg[] = {static const struct rk808_reg_data rk817_pre_init_reg[] = { {RK817_RTC_CTRL_REG ,RTC_STOP ,RTC_STOP }, +/* Codec specific registers */ + {RK817_CODEC_DTOP_VUCTL ,MASK_ALL ,0x03 }, + {RK817_CODEC_DTOP_VUCTIME ,MASK_ALL ,0x00 }, + {RK817_CODEC_DTOP_LPT_SRST ,MASK_ALL ,0x00 }, + {RK817_CODEC_DTOP_DIGEN_CLKE ,MASK_ALL ,0x00 }, +/* from vendor driver, CODEC_AREF_RTCFG0 not defined in data sheet */ + {RK817_CODEC_AREF_RTCFG0 ,MASK_ALL ,0x00 }, + {RK817_CODEC_AREF_RTCFG1 ,MASK_ALL ,0x06 }, + {RK817_CODEC_AADC_CFG0 ,MASK_ALL ,0xc8 }, +/* from vendor driver, CODEC_AADC_CFG1 not defined in data sheet */ + {RK817_CODEC_AADC_CFG1 ,MASK_ALL ,0x00 }, + {RK817_CODEC_DADC_VOLL ,MASK_ALL ,0x00 }, + {RK817_CODEC_DADC_VOLR ,MASK_ALL ,0x00 }, + {RK817_CODEC_DADC_SR_ACL0 ,MASK_ALL ,0x00 }, + {RK817_CODEC_DADC_ALC1 ,MASK_ALL ,0x00 }, + {RK817_CODEC_DADC_ALC2 ,MASK_ALL ,0x00 }, + {RK817_CODEC_DADC_NG ,MASK_ALL ,0x00 }, + {RK817_CODEC_DADC_HPF ,MASK_ALL ,0x00 }, + {RK817_CODEC_DADC_RVOLL ,MASK_ALL ,0xff }, + {RK817_CODEC_DADC_RVOLR ,MASK_ALL ,0xff }, + {RK817_CODEC_AMIC_CFG0 ,MASK_ALL ,0x70 }, + {RK817_CODEC_AMIC_CFG1 ,MASK_ALL ,0x00 }, + {RK817_CODEC_DMIC_PGA_GAIN ,MASK_ALL ,0x66 }, + {RK817_CODEC_DMIC_LMT1 ,MASK_ALL ,0x00 }, + {RK817_CODEC_DMIC_LMT2 ,MASK_ALL ,0x00 }, + {RK817_CODEC_DMIC_NG1 ,MASK_ALL ,0x00 }, + {RK817_CODEC_DMIC_NG2 ,MASK_ALL ,0x00 }, +/* from vendor driver, CODEC_ADAC_CFG0 not defined in data sheet */ + {RK817_CODEC_ADAC_CFG0 ,MASK_ALL ,0x00 }, + {RK817_CODEC_ADAC_CFG1 ,MASK_ALL ,0x07 }, + {RK817_CODEC_DDAC_POPD_DACST ,MASK_ALL ,0x82 }, + {RK817_CODEC_DDAC_VOLL ,MASK_ALL ,0x00 }, + {RK817_CODEC_DDAC_VOLR ,MASK_ALL ,0x00 }, + {RK817_CODEC_DDAC_SR_LMT0 ,MASK_ALL ,0x00 }, + {RK817_CODEC_DDAC_LMT1 ,MASK_ALL ,0x00 }, + {RK817_CODEC_DDAC_LMT2 ,MASK_ALL ,0x00 }, + {RK817_CODEC_DDAC_MUTE_MIXCTL ,MASK_ALL ,0xa0 }, + {RK817_CODEC_DDAC_RVOLL ,MASK_ALL ,0xff }, + {RK817_CODEC_DADC_RVOLR ,MASK_ALL ,0xff }, + {RK817_CODEC_AMIC_CFG0 ,MASK_ALL ,0x70 }, + {RK817_CODEC_AMIC_CFG1 ,MASK_ALL ,0x00 }, + {RK817_CODEC_DMIC_PGA_GAIN ,MASK_ALL ,0x66 }, + {RK817_CODEC_DMIC_LMT1 ,MASK_ALL ,0x00 }, + {RK817_CODEC_DMIC_LMT2 ,MASK_ALL ,0x00 }, + {RK817_CODEC_DMIC_NG1 ,MASK_ALL ,0x00 }, + {RK817_CODEC_DMIC_NG2 ,MASK_ALL ,0x00 }, +/* from vendor driver, CODEC_ADAC_CFG0 not defined in data sheet */ + {RK817_CODEC_ADAC_CFG0 ,MASK_ALL ,0x00 }, + {RK817_CODEC_ADAC_CFG1 ,MASK_ALL ,0x07 }, + {RK817_CODEC_DDAC_POPD_DACST ,MASK_ALL ,0x82 }, + {RK817_CODEC_DDAC_VOLL ,MASK_ALL ,0x00 }, + {RK817_CODEC_DDAC_VOLR ,MASK_ALL ,0x00 }, + {RK817_CODEC_DDAC_SR_LMT0 ,MASK_ALL ,0x00 }, + {RK817_CODEC_DDAC_LMT1 ,MASK_ALL ,0x00 }, + {RK817_CODEC_DDAC_LMT2 ,MASK_ALL ,0x00 }, + {RK817_CODEC_DDAC_MUTE_MIXCTL ,MASK_ALL ,0xa0 }, + {RK817_CODEC_DDAC_RVOLL ,MASK_ALL ,0xff }, + {RK817_CODEC_DDAC_RVOLR ,MASK_ALL ,0xff }, + {RK817_CODEC_AHP_ANTI0 ,MASK_ALL ,0x00 }, + {RK817_CODEC_AHP_ANTI1 ,MASK_ALL ,0x00 }, + {RK817_CODEC_AHP_CFG0 ,MASK_ALL ,0xe0 }, + {RK817_CODEC_AHP_CFG1 ,MASK_ALL ,0x1f }, + {RK817_CODEC_AHP_CP ,MASK_ALL ,0x09 }, + {RK817_CODEC_ACLASSD_CFG1 ,MASK_ALL ,0x69 }, + {RK817_CODEC_ACLASSD_CFG2 ,MASK_ALL ,0x44 }, + {RK817_CODEC_APLL_CFG0 ,MASK_ALL ,0x04 }, + {RK817_CODEC_APLL_CFG1 ,MASK_ALL ,0x00 }, + {RK817_CODEC_APLL_CFG2 ,MASK_ALL ,0x30 }, + {RK817_CODEC_APLL_CFG3 ,MASK_ALL ,0x19 }, + {RK817_CODEC_APLL_CFG4 ,MASK_ALL ,0x65 }, + {RK817_CODEC_APLL_CFG5 ,MASK_ALL ,0x01 }, + {RK817_CODEC_DI2S_CKM ,MASK_ALL ,0x01 }, + {RK817_CODEC_DI2S_RSD ,MASK_ALL ,0x00 }, + {RK817_CODEC_DI2S_RXCR1 ,MASK_ALL ,0x00 }, + {RK817_CODEC_DI2S_RXCR2 ,MASK_ALL ,0x17 }, + {RK817_CODEC_DI2S_RXCMD_TSD ,MASK_ALL ,0x00 }, + {RK817_CODEC_DI2S_TXCR1 ,MASK_ALL ,0x00 }, + {RK817_CODEC_DI2S_TXCR2 ,MASK_ALL ,0x17 }, + {RK817_CODEC_DI2S_TXCR3_TXCMD ,MASK_ALL ,0x00 }, {RK817_GPIO_INT_CFG ,RK817_INT_POL_MSK ,RK817_INT_POL_L }, {RK817_SYS_CFG (1 ),RK817_HOTDIE_TEMP_MSK |RK817_TSD_TEMP_MSK ,RK817_HOTDIE_105 |RK817_TSD_140 },
include/linux/mfd/rk808.h +81 -0
87 lines not on this page · raw message
Signature · 1 line
2.25.1
PATCH v10 2/4 ASoC: Add Rockchip rk817 audio CODEC support
In reply to Chris MorganFrom: Chris Morgan <[email protected]>
Add support for the Rockchip rk817 audio codec integrated into the rk817 PMIC. This is based on the sources provided by Rockchip from their BSP kernel.
--- sound/soc/codecs/Kconfig | 6 + sound/soc/codecs/Makefile | 2 + sound/soc/codecs/rk817_codec.c | 558 +++++++++++++++++++++++++++++++++ 3 files changed, 566 insertions(+) create mode 100644 sound/soc/codecs/rk817_codec.c
sound/soc/codecs/Kconfig +6 -0
@@ -155,6 +155,7 @@ config SND_SOC_ALL_CODECS imply SND_SOC_PCM512x_I2C imply SND_SOC_PCM512x_SPI imply SND_SOC_RK3328 + imply SND_SOC_RK817 imply SND_SOC_RT274 imply SND_SOC_RT286 imply SND_SOC_RT298
@@ -1063,6 +1064,11 @@ config SND_SOC_RK3328 tristate "Rockchip RK3328 audio CODEC" select REGMAP_MMIO +config SND_SOC_RK817 + tristate "Rockchip RK817 audio CODEC" + depends on MFD_RK808 + select REGMAP_I2C + config SND_SOC_RL6231 tristate default y if SND_SOC_RT5514=y
sound/soc/codecs/Makefile +2 -0
@@ -166,6 +166,7 @@ snd-soc-pcm512x-objs := pcm512x.o snd-soc-pcm512x-i2c-objs := pcm512x-i2c.o snd-soc-pcm512x-spi-objs := pcm512x-spi.o snd-soc-rk3328-objs := rk3328_codec.o +snd-soc-rk817-objs := rk817_codec.o snd-soc-rl6231-objs := rl6231.o snd-soc-rl6347a-objs := rl6347a.o snd-soc-rt1011-objs := rt1011.o
@@ -487,6 +488,7 @@ obj-$(CONFIG_SND_SOC_PCM512x) += snd-soc-pcm512x.o obj-$(CONFIG_SND_SOC_PCM512x_I2C) += snd-soc-pcm512x-i2c.o obj-$(CONFIG_SND_SOC_PCM512x_SPI) += snd-soc-pcm512x-spi.o obj-$(CONFIG_SND_SOC_RK3328) += snd-soc-rk3328.o +obj-$(CONFIG_SND_SOC_RK817) += snd-soc-rk817.o obj-$(CONFIG_SND_SOC_RL6231) += snd-soc-rl6231.o obj-$(CONFIG_SND_SOC_RL6347A) += snd-soc-rl6347a.o obj-$(CONFIG_SND_SOC_RT1011) += snd-soc-rt1011.o
sound/soc/codecs/rk817_codec.c new file +558 -0
558 lines not on this page · raw message
Signature · 1 line
2.25.1
Mark Brown
maintainerRe: [PATCH v10 2/4] ASoC: Add Rockchip rk817 audio CODEC support
sound/soc/codecs/rk817_codec.c line 466
Quoted 10 lines · Chris Morgan
sound/soc/codecs/rk817_codec.c new file +10
-0+static int rk817_codec_parse_dt_property (struct device *dev, +struct rk817_codec_priv *rk817) +{ +struct device_node *node = dev->parent->of_node; + +if (!node) { +dev_err (dev,"%s() dev->parent->of_node is NULL\n" , + __func__); +return -ENODEV ; + }
There's no need to fail the probe here, you won't be able to read any DT properties but that shouldn't stop the driver binding.
Re: [PATCH v10 2/4] ASoC: Add Rockchip rk817 audio CODEC support
Quoted 15 lines · Mark Brown
sound/soc/codecs/rk817_codec.c line 466
Quoted 10 lines · Chris Morgan
sound/soc/codecs/rk817_codec.c new file +10
-0+static int rk817_codec_parse_dt_property (struct device *dev, +struct rk817_codec_priv *rk817) +{ +struct device_node *node = dev->parent->of_node; + +if (!node) { +dev_err (dev,"%s() dev->parent->of_node is NULL\n" , + __func__); +return -ENODEV ; + }There's no need to fail the probe here, you won't be able to read any DT properties but that shouldn't stop the driver binding.
If I'm not mistaken this is actually telling us to fail if the parent device (the PMIC itself) isn't present. I think I'll remove this as not necessary since if the parent node isn't present the mfd driver will never load, meaning this driver will never load either.
Below this line however we're failing if the codec node isn't present. Are you telling me we want to bind the driver if the node isn't present (such as in the edge case where the driver is present and the PMIC is a rk817, but the CODEC is not in use)? I will remove the return code if you think that is what needs to be done. My concern there though is if we do that we'll either be in a position to again report a bunch of errors for the edge case of users who want to use the PMIC but not the codec (in this case missing clocks and whatnot) if we try to bind the driver and the user doesn't want it. I can also set those errors to debug level, but I think that they might be important enough for users who DO want to use the codec to keep them as dev_err.
Let me know what you think.
Thank you.
_______________________________________________
Linux-rockchip mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-rockchip
Mark Brown
maintainerRe: [PATCH v10 2/4] ASoC: Add Rockchip rk817 audio CODEC support
Quoted 9 lines · Chris Morgan
Quoted 6 lines · Mark Brown
sound/soc/codecs/rk817_codec.c line 464
Quoted 3 lines
sound/soc/codecs/rk817_codec.c new file +3
-0+if (!node) { +dev_err (dev,"%s() dev->parent->of_node is NULL\n" , + __func__);There's no need to fail the probe here, you won't be able to read any DT properties but that shouldn't stop the driver binding.
Quoted 4 lines
If I'm not mistaken this is actually telling us to fail if the parent device (the PMIC itself) isn't present. I think I'll remove this as not necessary since if the parent node isn't present the mfd driver will never load, meaning this driver will never load either.
So it is - I edited incorrectly when I went to reply.
Quoted 4 lines
Below this line however we're failing if the codec node isn't present. Are you telling me we want to bind the driver if the node isn't present (such as in the edge case where the driver is present and the PMIC is a rk817, but the CODEC is not in use)? I will remove the return code if
Yes.
Quoted 4 lines
you think that is what needs to be done. My concern there though is if we do that we'll either be in a position to again report a bunch of errors for the edge case of users who want to use the PMIC but not the codec (in this case missing clocks and whatnot) if we try to bind the
Why would there be any errors?
Re: [PATCH v10 2/4] ASoC: Add Rockchip rk817 audio CODEC support
Quoted 22 lines · Mark Brown
Quoted 9 lines · Chris Morgan
Quoted 6 lines · Mark Brown
sound/soc/codecs/rk817_codec.c line 464
Quoted 3 lines
sound/soc/codecs/rk817_codec.c new file +3
-0+if (!node) { +dev_err (dev,"%s() dev->parent->of_node is NULL\n" , + __func__);There's no need to fail the probe here, you won't be able to read any DT properties but that shouldn't stop the driver binding.
Quoted 4 lines
If I'm not mistaken this is actually telling us to fail if the parent device (the PMIC itself) isn't present. I think I'll remove this as not necessary since if the parent node isn't present the mfd driver will never load, meaning this driver will never load either.
So it is - I edited incorrectly when I went to reply.
Quoted 4 lines
Below this line however we're failing if the codec node isn't present. Are you telling me we want to bind the driver if the node isn't present (such as in the edge case where the driver is present and the PMIC is a rk817, but the CODEC is not in use)? I will remove the return code if
Quoted 8 lines
Yes.
Quoted 4 lines
you think that is what needs to be done. My concern there though is if we do that we'll either be in a position to again report a bunch of errors for the edge case of users who want to use the PMIC but not the codec (in this case missing clocks and whatnot) if we try to bind the
Why would there be any errors?
There won't be here. I'm thinking of the edge case where a user has this driver but doesn't want to use this hardware again, but I'm getting scatterbrained and thinking overall and not in the context of this one section.
Once I remove these lines the last place for an error to occur is when fetching/activating the mclk in the main probe function. A user who is trying to use this hardware would want to get an error associated with a missing clock or one that couldn't be activated, whereas a user who does not want to use this hardware won't care. How do you think I should handle that?
I'm assuming if the clock isn't present or working that's where we'd want to stop the driver, since without the clock it's useless. I'm thinking if the clock is not present we should simply exit out and drop a dev_dbg message to aid in troubleshooting when someone wants to use this hardware but forgets to define their clock. However, if either the clock is present but fails to activate or the codec fails to register, that should probably give an actual error message (and still prevent the driver from binding successfully).
So I'll clean up the rk817_codec_parse_dt_property to not check for a parent node (useless), and remove the return values from it since neither of the remaining conditions should cause the driver to fail to probe. I'll also remove checking for the device parent in rk817_platform_probe, since its' not necessary. If you think it's the best solution I'll then change the clock dev_err to a dev_dbg, and leave everything else the same.
Thank you.
_______________________________________________
Linux-rockchip mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-rockchip
PATCH v10 3/4 dt-bindings: Add Rockchip rk817 audio CODEC support
In reply to Chris MorganFrom: Chris Morgan <[email protected]>
Create dt-binding documentation to document rk817 codec. New property name of rockchip,mic-in-differential added to control if the microphone is in differential mode or not.
--- .../devicetree/bindings/mfd/rk808.txt | 186 ++++++++++++++++++ 1 file changed, 186 insertions(+)
Documentation/devicetree/bindings/mfd/rk808.txt +186 -0
@@ -23,6 +23,7 @@ Optional properties: default output clock name - rockchip,system-power-controller: Telling whether or not this pmic is controlling the system power. +- wakeup-source: Device can be used as a wakeup source. Optional RK805 properties: - vcc1-supply: The input supply for DCDC_REG1
@@ -63,8 +64,16 @@ Optional RK809 properties: - vcc9-supply: The input supply for DCDC_REG5, SWITCH_REG2 Optional RK817 properties: +- clocks: The input clock for the audio codec +- clock-names: The clock name for the codec clock. Should be "mclk". +- #sound-dai-cells: Needed for the interpretation of sound dais. Should be 0. + - vcc8-supply: The input supply for BOOST - vcc9-supply: The input supply for OTG_SWITCH +- codec: The child node for the codec to hold additional properties. + +- rockchip,mic-in-differential: Telling if the microphone uses differential + mode. Should be under the codec child node. Optional RK818 properties: - vcc1-supply: The input supply for DCDC_REG1
@@ -275,3 +284,180 @@ Example: }; }; }; + + rk817: pmic@20 { + compatible = "rockchip,rk817"; + reg = <0x20>; + interrupt-parent = <&gpio0>; + interrupts = <RK_PB2 IRQ_TYPE_LEVEL_LOW>; + clock-output-names = "rk808-clkout1", "xin32k"; + clock-names = "mclk"; + clocks = <&cru SCLK_I2S1_OUT>; + pinctrl-names = "default"; + pinctrl-0 = <&pmic_int>, <&i2s1_2ch_mclk>; + wakeup-source; + #clock-cells = <1>; + #sound-dai-cells = <0>; + + vcc1-supply = <&vccsys>; + vcc2-supply = <&vccsys>; + vcc3-supply = <&vccsys>; + vcc4-supply = <&vccsys>; + vcc5-supply = <&vccsys>; + vcc6-supply = <&vccsys>; + vcc7-supply = <&vccsys>; + + regulators { + vdd_logic: DCDC_REG1 { + regulator-name = "vdd_logic"; + regulator-min-microvolt = <950000>; + regulator-max-microvolt = <1150000>; + regulator-ramp-delay = <6001>; + regulator-always-on; + regulator-boot-on; + + regulator-state-mem { + regulator-on-in-suspend; + regulator-suspend-microvolt = <950000>; + }; + }; + + vdd_arm: DCDC_REG2 { + regulator-name = "vdd_arm"; + regulator-min-microvolt = <950000>; + regulator-max-microvolt = <1350000>; + regulator-ramp-delay = <6001>; + regulator-always-on; + regulator-boot-on; + + regulator-state-mem { + regulator-off-in-suspend; + regulator-suspend-microvolt = <950000>; + }; + }; + + vcc_ddr: DCDC_REG3 { + regulator-name = "vcc_ddr"; + regulator-always-on; + regulator-boot-on; + + regulator-state-mem { + regulator-on-in-suspend; + }; + }; + + vcc_3v3: DCDC_REG4 { + regulator-name = "vcc_3v3"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + regulator-boot-on; + + regulator-state-mem { + regulator-off-in-suspend; + regulator-suspend-microvolt = <3300000>; + }; + }; + + vcc_1v8: LDO_REG2 { + regulator-name = "vcc_1v8"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-always-on; + regulator-boot-on; + + regulator-state-mem { + regulator-on-in-suspend; + regulator-suspend-microvolt = <1800000>; + }; + }; + + vdd_1v0: LDO_REG3 { + regulator-name = "vdd_1v0"; + regulator-min-microvolt = <1000000>; + regulator-max-microvolt = <1000000>; + regulator-always-on; + regulator-boot-on; + + regulator-state-mem { + regulator-on-in-suspend; + regulator-suspend-microvolt = <1000000>; + }; + }; + + vcc3v3_pmu: LDO_REG4 { + regulator-name = "vcc3v3_pmu"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + regulator-boot-on; + + regulator-state-mem { + regulator-on-in-suspend; + regulator-suspend-microvolt = <3300000>; + }; + }; + + vccio_sd: LDO_REG5 { + regulator-name = "vccio_sd"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + regulator-boot-on; + + regulator-state-mem { + regulator-on-in-suspend; + regulator-suspend-microvolt = <3300000>; + }; + }; + + vcc_sd: LDO_REG6 { + regulator-name = "vcc_sd"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-boot-on; + + regulator-state-mem { + regulator-on-in-suspend; + regulator-suspend-microvolt = <3300000>; + }; + }; + + vcc_bl: LDO_REG7 { + regulator-name = "vcc_bl"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + + regulator-state-mem { + regulator-off-in-suspend; + regulator-suspend-microvolt = <3300000>; + }; + }; + + vcc_lcd: LDO_REG8 { + regulator-name = "vcc_lcd"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + + regulator-state-mem { + regulator-off-in-suspend; + regulator-suspend-microvolt = <2800000>; + }; + }; + + vcc_cam: LDO_REG9 { + regulator-name = "vcc_cam"; + regulator-min-microvolt = <3000000>; + regulator-max-microvolt = <3000000>; + + regulator-state-mem { + regulator-off-in-suspend; + regulator-suspend-microvolt = <3000000>; + }; + }; + }; + + rk817_codec: codec { + rockchip,mic-in-differential; + }; + };
Signature · 1 line
2.25.1
PATCH v10 4/4 arm64: dts: rockchip: add rk817 codec to Odroid Go
In reply to Chris MorganFrom: Chris Morgan <[email protected]>
Add the new rk817 codec driver to the Odroid Go Advance.
--- .../boot/dts/rockchip/rk3326-odroid-go2.dts | 36 +++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-)
arch/arm64/boot/dts/rockchip/rk3326-odroid-go2.dts +34 -2
@@ -165,6 +165,31 @@ blue_led: led-0 { }; }; + rk817-sound { + compatible = "simple-audio-card"; + simple-audio-card,name = "Analog"; + simple-audio-card,format = "i2s"; + simple-audio-card,mclk-fs = <256>; + simple-audio-card,widgets = + "Microphone", "Mic Jack", + "Headphone", "Headphones", + "Speaker", "Speaker"; + simple-audio-card,routing = + "MICL", "Mic Jack", + "Headphones", "HPOL", + "Headphones", "HPOR", + "Speaker", "SPKO"; + simple-audio-card,hp-det-gpio = <&gpio2 RK_PC6 GPIO_ACTIVE_HIGH>; + + simple-audio-card,cpu { + sound-dai = <&i2s1_2ch>; + }; + + simple-audio-card,codec { + sound-dai = <&rk817>; + }; + }; + vccsys: vccsys { compatible = "regulator-fixed"; regulator-name = "vcc3v8_sys";
@@ -269,11 +294,14 @@ rk817: pmic@20 { reg = <0x20>; interrupt-parent = <&gpio0>; interrupts = <RK_PB2 IRQ_TYPE_LEVEL_LOW>; + clock-output-names = "rk808-clkout1", "xin32k"; + clock-names = "mclk"; + clocks = <&cru SCLK_I2S1_OUT>; pinctrl-names = "default"; - pinctrl-0 = <&pmic_int>; + pinctrl-0 = <&pmic_int>, <&i2s1_2ch_mclk>; wakeup-source; #clock-cells = <1>; - clock-output-names = "rk808-clkout1", "xin32k"; + #sound-dai-cells = <0>; vcc1-supply = <&vccsys>; vcc2-supply = <&vccsys>;
@@ -432,6 +460,10 @@ regulator-state-mem { }; }; }; + + rk817_codec: codec { + rockchip,mic-in-differential; + }; }; };
Signature · 1 line
2.25.1