From: Vinod Koul <vinod.koul@intel.com>
To: Takashi Iwai <tiwai@suse.de>
Cc: ALSA <alsa-devel@alsa-project.org>,
Charles Keepax <ckeepax@opensource.cirrus.com>,
patches.audio@intel.com,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
plai@codeaurora.org, LKML <linux-kernel@vger.kernel.org>,
Pierre <pierre-louis.bossart@linux.intel.com>,
Sagar Dharia <sdharia@codeaurora.org>, Mark <broonie@kernel.org>,
srinivas.kandagatla@linaro.org, Shreyas NC <shreyas.nc@intel.com>,
Sanyog Kale <sanyog.r.kale@intel.com>,
Sudheer Papothi <spapothi@codeaurora.org>,
alan@linux.intel.com
Subject: Re: [alsa-devel] [PATCH 06/14] soundwire: Add IO transfer
Date: Fri, 20 Oct 2017 11:00:06 +0530 [thread overview]
Message-ID: <20171020053006.GJ30097@localhost> (raw)
In-Reply-To: <s5hefpzts8j.wl-tiwai@suse.de>
On Thu, Oct 19, 2017 at 11:13:48AM +0200, Takashi Iwai wrote:
> On Thu, 19 Oct 2017 05:03:22 +0200,
> Vinod Koul wrote:
> >
> > +static inline int find_error_code(unsigned int sdw_ret)
> > +{
> > + switch (sdw_ret) {
> > + case SDW_CMD_OK:
> > + return 0;
> > +
> > + case SDW_CMD_IGNORED:
> > + return -ENODATA;
> > +
> > + case SDW_CMD_TIMEOUT:
> > + return -ETIMEDOUT;
> > + }
> > +
> > + return -EIO;
> > +}
> > +
> > +static inline int do_transfer(struct sdw_bus *bus,
> > + struct sdw_msg *msg, bool page)
> > +{
> > + int retry = bus->prop.err_threshold;
> > + int ret, i;
> > +
> > + for (ret = 0, i = 0; i <= retry; i++) {
>
> Initializing ret here is a bit messy. Better to do it outside.
sounds good
> > + ret = bus->ops->xfer_msg(bus, msg, page);
> > + ret = find_error_code(ret);
> > + /* if cmd is ok or ignored return */
> > + if (ret == 0 || ret == -ENODATA)
> > + return ret;
>
> Hmm, it's not good to use the same variable for representing two
> different things. Either drop the substitution to ret for
> bus->ops->xfer_msg() call, or use another variable to make clear which
> one is for SDW_CMD_* and which one is for -EXXX. The former should be
> basically an enum.
yes will do, sometimes we should not reuse :)
> > +/**
> > + * sdw_transfer: Synchronous transfer message to a SDW Slave device
> > + *
> > + * @bus: SDW bus
> > + * @slave: SDW Slave
> > + * @msg: SDW message to be xfered
> > + */
> > +int sdw_transfer(struct sdw_bus *bus, struct sdw_slave *slave,
> > + struct sdw_msg *msg)
> > +{
> > + bool page;
> > + int ret;
> > +
> > + mutex_lock(&bus->msg_lock);
> > +
> > + page = sdw_get_page(slave, msg);
> > +
> > + ret = do_transfer(bus, msg, page);
> > + if (ret != 0 && ret != -ENODATA) {
> > + dev_err(bus->dev, "trf on Slave %d failed:%d\n",
> > + msg->dev_num, ret);
> > + goto error;
> > + }
> > +
> > + if (page)
> > + ret = sdw_reset_page(bus, msg->dev_num);
> > +
> > +error:
> > + mutex_unlock(&bus->msg_lock);
> > +
> > + return ret;
>
> So the logic here is that when -ENODATA is returned and page is false,
> this function should return -ENODATA to the caller, but when page
> is set, it returns 0?
Sorry no. do_transfer can succced (0) or in some case where Slaves didn't
care for return error (ENODATA), or other errors.
No ENODATA can be error depending on message sent so we dont treat this as
failure and let caller decide.
In case of errors (others) we don't need to reset page and we bail out
>
> > +static inline int sdw_fill_msg(struct sdw_msg *msg, u16 addr,
> > + size_t count, u16 dev_num, u8 flags, u8 *buf)
> > +{
> > + msg->addr = (addr >> SDW_REG_SHIFT(SDW_REGADDR));
> > + msg->len = count;
> > + msg->dev_num = dev_num;
> > + msg->addr_page1 = (addr >> SDW_REG_SHIFT(SDW_SCP_ADDRPAGE1_MASK));
> > + msg->addr_page2 = (addr >> SDW_REG_SHIFT(SDW_SCP_ADDRPAGE2_MASK));
> > + msg->flags = flags;
> > + msg->buf = buf;
> > + msg->ssp_sync = false;
> > +
> > + return 0;
>
> This function can be void.
yup
--
~Vinod
next prev parent reply other threads:[~2017-10-20 5:25 UTC|newest]
Thread overview: 94+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-10-19 3:03 [PATCH 00/14] soundwire: Add a new SoundWire subsystem Vinod Koul
2017-10-19 3:03 ` [PATCH 01/14] Documentation: Add SoundWire summary Vinod Koul
2017-10-19 3:33 ` Randy Dunlap
2017-10-19 4:44 ` Vinod Koul
2017-10-20 10:39 ` Greg Kroah-Hartman
2017-10-20 15:49 ` Vinod Koul
2017-10-20 16:22 ` Greg Kroah-Hartman
2017-10-20 17:09 ` Vinod Koul
2017-10-21 8:57 ` Mark Brown
2017-10-21 11:28 ` Vinod Koul
2017-10-22 10:06 ` [alsa-devel] " Pierre-Louis Bossart
2017-10-23 8:21 ` Mark Brown
2017-10-23 7:50 ` Mark Brown
2017-10-23 11:18 ` [alsa-devel] " Vinod Koul
2017-10-19 3:03 ` [PATCH 02/14] soundwire: Add SoundWire bus type Vinod Koul
2017-10-19 7:40 ` Takashi Iwai
2017-10-19 8:32 ` [alsa-devel] " Takashi Iwai
2017-10-20 5:11 ` Vinod Koul
2017-10-20 6:59 ` Takashi Iwai
2017-10-20 15:46 ` Vinod Koul
2017-10-20 15:50 ` Takashi Iwai
2017-10-20 16:11 ` Vinod Koul
2017-10-20 10:41 ` Greg Kroah-Hartman
2017-10-20 15:52 ` Vinod Koul
2017-10-20 10:45 ` Greg Kroah-Hartman
2017-10-20 16:01 ` Vinod Koul
2017-10-20 16:21 ` Greg Kroah-Hartman
2017-10-20 17:10 ` Vinod Koul
2017-10-23 11:46 ` Alan Cox
2017-10-26 8:33 ` Vinod Koul
2017-10-27 8:57 ` Greg Kroah-Hartman
2017-10-30 13:11 ` Vinod Koul
2017-10-20 16:03 ` Philippe Ombredanne
2017-10-20 16:20 ` Vinod Koul
2017-10-20 16:27 ` Greg Kroah-Hartman
2017-10-20 17:13 ` Vinod Koul
2017-10-23 11:52 ` Alan Cox
2017-10-21 9:03 ` Mark Brown
2017-10-21 11:29 ` Vinod Koul
2017-11-09 21:14 ` Srinivas Kandagatla
2017-11-10 4:59 ` Vinod Koul
2017-11-10 8:55 ` Vinod Koul
2017-11-10 10:50 ` Srinivas Kandagatla
2017-11-10 10:42 ` Srinivas Kandagatla
2017-11-10 10:58 ` Vinod Koul
2017-10-19 3:03 ` [PATCH 03/14] soundwire: Add Master registration Vinod Koul
2017-10-19 8:54 ` [alsa-devel] " Takashi Iwai
2017-10-20 5:19 ` Vinod Koul
2017-10-20 10:47 ` Greg Kroah-Hartman
2017-10-20 16:05 ` Vinod Koul
2017-10-21 9:12 ` Mark Brown
2017-10-21 11:35 ` Vinod Koul
2017-10-23 8:24 ` Mark Brown
2017-10-23 11:19 ` Vinod Koul
2017-11-09 21:14 ` Srinivas Kandagatla
2017-11-10 5:02 ` Vinod Koul
2017-10-19 3:03 ` [PATCH 04/14] soundwire: Add MIPI DisCo property helpers Vinod Koul
2017-10-19 9:02 ` [alsa-devel] " Takashi Iwai
2017-10-20 5:25 ` Vinod Koul
2017-10-21 9:20 ` Mark Brown
2017-10-21 11:37 ` Vinod Koul
2017-10-22 10:14 ` [alsa-devel] " Pierre-Louis Bossart
2017-10-19 3:03 ` [PATCH 05/14] soundwire: Add SoundWire MIPI defined registers Vinod Koul
2017-10-19 3:03 ` [PATCH 06/14] soundwire: Add IO transfer Vinod Koul
2017-10-19 9:13 ` [alsa-devel] " Takashi Iwai
2017-10-20 5:30 ` Vinod Koul [this message]
2017-10-20 7:06 ` Takashi Iwai
2017-10-20 15:48 ` Vinod Koul
2017-10-21 9:29 ` Mark Brown
2017-10-21 11:40 ` Vinod Koul
2017-10-19 3:03 ` [PATCH 07/14] regmap: Add SoundWire bus support Vinod Koul
2017-10-21 9:34 ` Mark Brown
2017-10-21 11:44 ` Vinod Koul
2017-10-23 11:56 ` Alan Cox
2017-10-23 13:16 ` Mark Brown
2017-10-19 3:03 ` [PATCH 08/14] soundwire: Add Slave status handling helpers Vinod Koul
2017-10-19 13:44 ` [alsa-devel] " Takashi Iwai
2017-10-31 13:04 ` Vinod Koul
2017-10-31 21:19 ` Pierre-Louis Bossart
2017-11-01 9:08 ` Vinod Koul
2017-11-01 21:10 ` Pierre-Louis Bossart
2017-11-02 3:28 ` Vinod Koul
2017-10-19 3:03 ` [PATCH 09/14] soundwire: Add slave status handling Vinod Koul
2017-10-19 3:03 ` [PATCH 10/14] soundwire: Add sysfs for SoundWire DisCo properties Vinod Koul
2017-10-21 9:42 ` Mark Brown
2017-10-21 11:53 ` Vinod Koul
2017-11-09 21:14 ` Srinivas Kandagatla
2017-11-10 4:52 ` Vinod Koul
2017-10-19 3:03 ` [PATCH 11/14] soundwire: cdns: Add cadence module Vinod Koul
2017-10-21 9:52 ` Mark Brown
2017-10-21 11:54 ` Vinod Koul
2017-10-19 3:03 ` [PATCH 12/14] soundwire: cdns: Add sdw_master_ops and IO transfer support Vinod Koul
2017-10-19 3:03 ` [PATCH 13/14] soundwire: intel: Add Intel Master driver Vinod Koul
2017-10-19 3:03 ` [PATCH 14/14] soundwire: intel: Add Intel init module Vinod Koul
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=20171020053006.GJ30097@localhost \
--to=vinod.koul@intel.com \
--cc=alan@linux.intel.com \
--cc=alsa-devel@alsa-project.org \
--cc=broonie@kernel.org \
--cc=ckeepax@opensource.cirrus.com \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=patches.audio@intel.com \
--cc=pierre-louis.bossart@linux.intel.com \
--cc=plai@codeaurora.org \
--cc=sanyog.r.kale@intel.com \
--cc=sdharia@codeaurora.org \
--cc=shreyas.nc@intel.com \
--cc=spapothi@codeaurora.org \
--cc=srinivas.kandagatla@linaro.org \
--cc=tiwai@suse.de \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).