Hi Bin, On Wed, 13 Feb 2019 at 02:39, Bin Meng <bmeng...@gmail.com> wrote: > > Hi Simon, > > On Tue, Jan 22, 2019 at 9:14 AM Simon Glass <s...@chromium.org> wrote: > > > > When testing the sound system we don't need the hear the beeps. The > > testing works by checking the data that would be emitted. Add a > > device-tree property to silence the sound, and enable it for testing. > > > > Signed-off-by: Simon Glass <s...@chromium.org> > > --- > > > > arch/sandbox/dts/test.dts | 1 + > > drivers/sound/sandbox.c | 23 +++++++++++++++++++++-- > > 2 files changed, 22 insertions(+), 2 deletions(-) > > > > diff --git a/arch/sandbox/dts/test.dts b/arch/sandbox/dts/test.dts > > index 9144430cc0..5748cd60b1 100644 > > --- a/arch/sandbox/dts/test.dts > > +++ b/arch/sandbox/dts/test.dts > > @@ -389,6 +389,7 @@ > > i2s: i2s { > > compatible = "sandbox,i2s"; > > #sound-dai-cells = <1>; > > + sandbox,silent; /* Don't emit sounds while testing */ > > }; > > > > misc-test { > > diff --git a/drivers/sound/sandbox.c b/drivers/sound/sandbox.c > > index 600523160f..4b57ef6759 100644 > > --- a/drivers/sound/sandbox.c > > +++ b/drivers/sound/sandbox.c > > @@ -3,6 +3,8 @@ > > * Copyright (c) 2013 Google, Inc > > */ > > > > +#define LOG_CATEGORY UCLASS_SOUND > > + > > #include <common.h> > > #include <audio_codec.h> > > #include <dm.h> > > @@ -20,6 +22,7 @@ struct sandbox_codec_priv { > > > > struct sandbox_i2s_priv { > > int sum; /* Use to sum the provided audio data */ > > + bool silent; /* Sound is silent, don't use SDL */ > > }; > > > > struct sandbox_sound_priv { > > @@ -101,12 +104,21 @@ static int sandbox_i2s_tx_data(struct udevice *dev, > > void *data, > > for (i = 0; i < data_size; i++) > > priv->sum += ((uint8_t *)data)[i]; > > > > - return sandbox_sdl_sound_play(data, data_size); > > + if (!priv->silent) { > > + int ret; > > + > > + ret = sandbox_sdl_sound_play(data, data_size); > > + if (ret) > > + return ret; > > + } > > + > > + return 0; > > } > > > > static int sandbox_i2s_probe(struct udevice *dev) > > { > > struct i2s_uc_priv *uc_priv = dev_get_uclass_priv(dev); > > + struct sandbox_i2s_priv *priv = dev_get_priv(dev); > > > > /* Use hard-coded values here */ > > uc_priv->rfs = 256; > > @@ -117,8 +129,15 @@ static int sandbox_i2s_probe(struct udevice *dev) > > uc_priv->channels = 2; > > uc_priv->id = 1; > > > > + priv->silent = dev_read_bool(dev, "sandbox,silent"); > > + > > /* Ignore any error here - we'll just have no sound */ > > - sandbox_sdl_sound_init(uc_priv->samplingrate, uc_priv->channels); > > + if (priv->silent) { > > + log_warning("Sound is silenced\n"); > > + } else if (sandbox_sdl_sound_init(uc_priv->samplingrate, > > + uc_priv->channels)) { > > + priv->silent = true; > > should be false?
I don't think so. If an init error occurs then we want to silence the sound. I'll move the comment. Regards, Simon _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot