From: Sjoerd Simons <sjoerd.simons@collabora.co.uk>
To: "Heiko Stübner" <heiko@sntech.de>
Cc: Rob Herring <robh+dt@kernel.org>, Pawel Moll <pawel.moll@arm.com>,
Mark Rutland <mark.rutland@arm.com>,
Ian Campbell <ijc+devicetree@hellion.org.uk>,
Kumar Gala <galak@codeaurora.org>,
Liam Girdwood <lgirdwood@gmail.com>,
Mark Brown <broonie@kernel.org>, Jaroslav Kysela <perex@perex.cz>,
Takashi Iwai <tiwai@suse.com>,
linux-arm-kernel@lists.infradead.org,
linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org,
alsa-devel@alsa-project.org
Subject: Re: [PATCH 2/4] ASoc: rockchip: Add rockchip SPDIF transceiver driver
Date: Tue, 28 Jul 2015 17:13:03 +0200 [thread overview]
Message-ID: <1438096383.3969.39.camel@collabora.co.uk> (raw)
In-Reply-To: <8512006.Rsa7Aqr0B5@diego>
On Tue, 2015-07-28 at 16:28 +0200, Heiko Stübner wrote:
> Hi,
>
> could you streamline the prefixes a bit perhaps? I.e. so far I've
> seen
>
> rk_spdif_dev
> spdif_runtime_suspend
> rockchip_snd_txctrl
> rockchip_spdif_hw_params
>
> I guess rockchip_spdif_* or rk_spdif_* for everything might make this
> a bit
> nicer
Will do in V2, i probalby copied a few too many warts from the i2s
driver ;)
Thanks for the review!
> Am Dienstag, 28. Juli 2015, 14:03:29 schrieb Sjoerd Simons:
> > Add a driver for the SDPIF transceiver available on RK3066, RK3188
> > and
> > RK3288. Heavily based on the rockchip i2s driver.
> >
> > Signed-off-by: Sjoerd Simons <sjoerd.simons@collabora.co.uk>
> > ---
> > sound/soc/rockchip/Kconfig | 9 +
> > sound/soc/rockchip/Makefile | 3 +
> > sound/soc/rockchip/rockchip_spdif.c | 375
> > ++++++++++++++++++++++++++++++++++++
> > sound/soc/rockchip/rockchip_spdif.h |
> > 63 ++++++
> > 4 files changed, 450 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..20bc676 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
> > @@ -33,3 +41,4 @@ config SND_SOC_ROCKCHIP_RT5645
> > help
> > Say Y or M here if you want to add support for SoC audio
> > on Rockchip
> > boards using the RT5645/RT5650 codec, such as Veyron.
> > +
>
> unrelated newline
>
> > diff --git a/sound/soc/rockchip/Makefile
> > b/sound/soc/rockchip/Makefile
> > index 1bc1dc3..b02ab69 100644
> > --- a/sound/soc/rockchip/Makefile
> > +++ b/sound/soc/rockchip/Makefile
> > @@ -1,10 +1,13 @@
> > # ROCKCHIP Platform Support
> > snd-soc-i2s-objs := rockchip_i2s.o
> > +snd-soc-spdif-objs := rockchip_spdif.o
> >
> > obj-$(CONFIG_SND_SOC_ROCKCHIP_I2S) += snd-soc-i2s.o
> > +obj-$(CONFIG_SND_SOC_ROCKCHIP_SPDIF) += snd-soc-spdif.o
> >
> > snd-soc-rockchip-max98090-objs := rockchip_max98090.o
> > snd-soc-rockchip-rt5645-objs := rockchip_rt5645.o
> >
> > obj-$(CONFIG_SND_SOC_ROCKCHIP_MAX98090) += snd-soc-rockchip
> > -max98090.o
> > obj-$(CONFIG_SND_SOC_ROCKCHIP_RT5645) += snd-soc-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..e60ccf6
> > --- /dev/null
> > +++ b/sound/soc/rockchip/rockchip_spdif.c
> > @@ -0,0 +1,375 @@
> > +/* sound/soc/rockchip/rockchip_spdif.c
> > + *
> > + * ALSA SoC Audio Layer - Rockchip I2S Controller driver
> ^spd
> if
>
> > + *
> > + * 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/regmap.h>
> > +#include <sound/pcm_params.h>
> > +#include <sound/dmaengine_pcm.h>
> > +
> > +#include "rockchip_spdif.h"
> > +
> > +#define DRV_NAME "rockchip-spdif"
> > +
> > +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 int spdif_runtime_suspend(struct device *dev)
> > +{
> > + struct rk_spdif_dev *spdif = dev_get_drvdata(dev);
> > +
> > + clk_disable_unprepare(spdif->mclk);
> > +
> > + return 0;
> > +}
> > +
> > +static int 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, "clock enable failed %d\n",
> > ret);
> > + return ret;
> > + }
> > +
> > + return 0;
> > +}
> > +
> > +static inline struct rk_spdif_dev *to_info(struct snd_soc_dai
> > *dai)
> > +{
> > + return snd_soc_dai_get_drvdata(dai);
> > +}
> > +
> > +static void rockchip_snd_txctrl(struct rk_spdif_dev *spdif, int
> > on)
> > +{
> > + if (on) {
> > + regmap_update_bits(spdif->regmap, SPDIF_DMACR,
> > + SPDIF_DMACR_TDE_ENABLE,
> > + SPDIF_DMACR_TDE_ENABLE);
> > +
> > + regmap_update_bits(spdif->regmap, SPDIF_XFER,
> > + SPDIF_XFER_TXS_START,
> > + SPDIF_XFER_TXS_START);
>
> personally I'm always unsure of regmap return values. While the
> underlying
> method is mmio in this case, regmap_* in theory still has the
> possibility to
> return errors, so I'm not sure if it's ok to silently ignore them.
>
> Here it would simply mean return the error and also return it in
> rockchip_spdif_trigger below.
>
>
> Heiko
--
Sjoerd Simons <sjoerd.simons@collabora.co.uk>
Collabora Ltd.
WARNING: multiple messages have this Message-ID (diff)
From: sjoerd.simons@collabora.co.uk (Sjoerd Simons)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 2/4] ASoc: rockchip: Add rockchip SPDIF transceiver driver
Date: Tue, 28 Jul 2015 17:13:03 +0200 [thread overview]
Message-ID: <1438096383.3969.39.camel@collabora.co.uk> (raw)
In-Reply-To: <8512006.Rsa7Aqr0B5@diego>
On Tue, 2015-07-28 at 16:28 +0200, Heiko St?bner wrote:
> Hi,
>
> could you streamline the prefixes a bit perhaps? I.e. so far I've
> seen
>
> rk_spdif_dev
> spdif_runtime_suspend
> rockchip_snd_txctrl
> rockchip_spdif_hw_params
>
> I guess rockchip_spdif_* or rk_spdif_* for everything might make this
> a bit
> nicer
Will do in V2, i probalby copied a few too many warts from the i2s
driver ;)
Thanks for the review!
> Am Dienstag, 28. Juli 2015, 14:03:29 schrieb Sjoerd Simons:
> > Add a driver for the SDPIF transceiver available on RK3066, RK3188
> > and
> > RK3288. Heavily based on the rockchip i2s driver.
> >
> > Signed-off-by: Sjoerd Simons <sjoerd.simons@collabora.co.uk>
> > ---
> > sound/soc/rockchip/Kconfig | 9 +
> > sound/soc/rockchip/Makefile | 3 +
> > sound/soc/rockchip/rockchip_spdif.c | 375
> > ++++++++++++++++++++++++++++++++++++
> > sound/soc/rockchip/rockchip_spdif.h |
> > 63 ++++++
> > 4 files changed, 450 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..20bc676 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
> > @@ -33,3 +41,4 @@ config SND_SOC_ROCKCHIP_RT5645
> > help
> > Say Y or M here if you want to add support for SoC audio
> > on Rockchip
> > boards using the RT5645/RT5650 codec, such as Veyron.
> > +
>
> unrelated newline
>
> > diff --git a/sound/soc/rockchip/Makefile
> > b/sound/soc/rockchip/Makefile
> > index 1bc1dc3..b02ab69 100644
> > --- a/sound/soc/rockchip/Makefile
> > +++ b/sound/soc/rockchip/Makefile
> > @@ -1,10 +1,13 @@
> > # ROCKCHIP Platform Support
> > snd-soc-i2s-objs := rockchip_i2s.o
> > +snd-soc-spdif-objs := rockchip_spdif.o
> >
> > obj-$(CONFIG_SND_SOC_ROCKCHIP_I2S) += snd-soc-i2s.o
> > +obj-$(CONFIG_SND_SOC_ROCKCHIP_SPDIF) += snd-soc-spdif.o
> >
> > snd-soc-rockchip-max98090-objs := rockchip_max98090.o
> > snd-soc-rockchip-rt5645-objs := rockchip_rt5645.o
> >
> > obj-$(CONFIG_SND_SOC_ROCKCHIP_MAX98090) += snd-soc-rockchip
> > -max98090.o
> > obj-$(CONFIG_SND_SOC_ROCKCHIP_RT5645) += snd-soc-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..e60ccf6
> > --- /dev/null
> > +++ b/sound/soc/rockchip/rockchip_spdif.c
> > @@ -0,0 +1,375 @@
> > +/* sound/soc/rockchip/rockchip_spdif.c
> > + *
> > + * ALSA SoC Audio Layer - Rockchip I2S Controller driver
> ^spd
> if
>
> > + *
> > + * 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/regmap.h>
> > +#include <sound/pcm_params.h>
> > +#include <sound/dmaengine_pcm.h>
> > +
> > +#include "rockchip_spdif.h"
> > +
> > +#define DRV_NAME "rockchip-spdif"
> > +
> > +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 int spdif_runtime_suspend(struct device *dev)
> > +{
> > + struct rk_spdif_dev *spdif = dev_get_drvdata(dev);
> > +
> > + clk_disable_unprepare(spdif->mclk);
> > +
> > + return 0;
> > +}
> > +
> > +static int 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, "clock enable failed %d\n",
> > ret);
> > + return ret;
> > + }
> > +
> > + return 0;
> > +}
> > +
> > +static inline struct rk_spdif_dev *to_info(struct snd_soc_dai
> > *dai)
> > +{
> > + return snd_soc_dai_get_drvdata(dai);
> > +}
> > +
> > +static void rockchip_snd_txctrl(struct rk_spdif_dev *spdif, int
> > on)
> > +{
> > + if (on) {
> > + regmap_update_bits(spdif->regmap, SPDIF_DMACR,
> > + SPDIF_DMACR_TDE_ENABLE,
> > + SPDIF_DMACR_TDE_ENABLE);
> > +
> > + regmap_update_bits(spdif->regmap, SPDIF_XFER,
> > + SPDIF_XFER_TXS_START,
> > + SPDIF_XFER_TXS_START);
>
> personally I'm always unsure of regmap return values. While the
> underlying
> method is mmio in this case, regmap_* in theory still has the
> possibility to
> return errors, so I'm not sure if it's ok to silently ignore them.
>
> Here it would simply mean return the error and also return it in
> rockchip_spdif_trigger below.
>
>
> Heiko
--
Sjoerd Simons <sjoerd.simons@collabora.co.uk>
Collabora Ltd.
next prev parent reply other threads:[~2015-07-28 15:13 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-28 12:03 [PATCH 0/4] Add SPDIF support for rockchip Sjoerd Simons
2015-07-28 12:03 ` Sjoerd Simons
2015-07-28 12:03 ` [PATCH 1/4] ASoC: dt-bindings: add rockchip tranceiver bindings Sjoerd Simons
2015-07-28 12:03 ` Sjoerd Simons
[not found] ` <1438085011-16577-1-git-send-email-sjoerd.simons-ZGY8ohtN/8pPYcu2f3hruQ@public.gmane.org>
2015-07-28 12:03 ` [PATCH 2/4] ASoc: rockchip: Add rockchip SPDIF transceiver driver Sjoerd Simons
2015-07-28 12:03 ` Sjoerd Simons
2015-07-28 12:03 ` Sjoerd Simons
2015-07-28 14:28 ` Heiko Stübner
2015-07-28 14:28 ` Heiko Stübner
2015-07-28 15:13 ` Sjoerd Simons [this message]
2015-07-28 15:13 ` Sjoerd Simons
2015-07-29 8:51 ` Paul Bolle
2015-07-29 8:51 ` Paul Bolle
2015-08-07 13:13 ` Mark Brown
2015-08-07 13:13 ` Mark Brown
2015-07-28 12:03 ` [PATCH 3/4] ARM: dts: rockchip: Add SPDIF transceiver for RK3188 Sjoerd Simons
2015-07-28 12:03 ` Sjoerd Simons
2015-07-28 13:48 ` Sergei Shtylyov
2015-07-28 13:48 ` Sergei Shtylyov
2015-07-28 14:20 ` Heiko Stübner
2015-07-28 14:20 ` Heiko Stübner
2015-07-28 12:03 ` [PATCH 4/4] ARM: dts: rockchip: Add SPDIF optical out on Radxa Rock Sjoerd Simons
2015-07-28 12:03 ` Sjoerd Simons
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1438096383.3969.39.camel@collabora.co.uk \
--to=sjoerd.simons@collabora.co.uk \
--cc=alsa-devel@alsa-project.org \
--cc=broonie@kernel.org \
--cc=galak@codeaurora.org \
--cc=heiko@sntech.de \
--cc=ijc+devicetree@hellion.org.uk \
--cc=lgirdwood@gmail.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rockchip@lists.infradead.org \
--cc=mark.rutland@arm.com \
--cc=pawel.moll@arm.com \
--cc=perex@perex.cz \
--cc=robh+dt@kernel.org \
--cc=tiwai@suse.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.