From: Patrice CHOTARD <patrice.chotard@foss.st.com> To: Boris Brezillon <boris.brezillon@collabora.com> Cc: Mark Brown <broonie@kernel.org>, Miquel Raynal <miquel.raynal@bootlin.com>, Vignesh Raghavendra <vigneshr@ti.com>, Alexandre Torgue <alexandre.torgue@foss.st.com>, <linux-spi@vger.kernel.org>, <linux-stm32@st-md-mailman.stormreply.com>, <linux-arm-kernel@lists.infradead.org>, <linux-kernel@vger.kernel.org>, <christophe.kerello@foss.st.com> Subject: Re: [PATCH v3 1/3] spi: spi-mem: add automatic poll status functions Date: Tue, 18 May 2021 13:54:26 +0200 [thread overview] Message-ID: <865b01c8-12ff-cce6-557f-178effbc39a4@foss.st.com> (raw) In-Reply-To: <20210518134037.0e5839b0@collabora.com> On 5/18/21 1:40 PM, Boris Brezillon wrote: > On Tue, 18 May 2021 11:39:49 +0200 > <patrice.chotard@foss.st.com> wrote: > >> +/** >> + * spi_mem_poll_status() - Poll memory device status >> + * @mem: SPI memory device >> + * @op: the memory operation to execute >> + * @mask: status bitmask to ckeck >> + * @match: (status & mask) expected value >> + * @initial_delay_us: delay in us before starting to poll >> + * @polling_delay_us: time to sleep between reads in us >> + * @timeout_ms: timeout in milliseconds >> + * >> + * This function send a polling status request to the controller driver >> + * >> + * Return: 0 in case of success, -ETIMEDOUT in case of error, >> + * -EOPNOTSUPP if not supported. >> + */ >> +int spi_mem_poll_status(struct spi_mem *mem, >> + const struct spi_mem_op *op, >> + u16 mask, u16 match, >> + unsigned long initial_delay_us, >> + unsigned long polling_delay_us, >> + u16 timeout_ms) >> +{ >> + struct spi_controller *ctlr = mem->spi->controller; >> + int ret = -EOPNOTSUPP; >> + int read_status_ret; >> + u16 status; >> + >> + if (op->data.nbytes < 1 || op->data.nbytes > 2) >> + return -EINVAL; > > We should also make sure this is a read operation. Ok , i will add a check here Thanks Patrice > >> + >> + if (ctlr->mem_ops && ctlr->mem_ops->poll_status) { >> + ret = spi_mem_access_start(mem); >> + if (ret) >> + return ret; >> + >> + ret = ctlr->mem_ops->poll_status(mem, op, mask, match, >> + initial_delay_us, polling_delay_us, >> + timeout_ms); >> + >> + spi_mem_access_end(mem); >> + } >> + >> + if (ret == -EOPNOTSUPP) { >> + if (!spi_mem_supports_op(mem, op)) >> + return ret; >> + >> + if (initial_delay_us < 10) >> + udelay(initial_delay_us); >> + else >> + usleep_range((initial_delay_us >> 2) + 1, >> + initial_delay_us); >> + >> + ret = read_poll_timeout(spi_mem_read_status, read_status_ret, >> + (read_status_ret || ((status) & mask) == match), >> + polling_delay_us, timeout_ms * 1000, false, mem, >> + op, &status); >> + if (read_status_ret) >> + return read_status_ret; >> + } >> + >> + return ret; >> +}
WARNING: multiple messages have this Message-ID (diff)
From: Patrice CHOTARD <patrice.chotard@foss.st.com> To: Boris Brezillon <boris.brezillon@collabora.com> Cc: Mark Brown <broonie@kernel.org>, Miquel Raynal <miquel.raynal@bootlin.com>, Vignesh Raghavendra <vigneshr@ti.com>, Alexandre Torgue <alexandre.torgue@foss.st.com>, <linux-spi@vger.kernel.org>, <linux-stm32@st-md-mailman.stormreply.com>, <linux-arm-kernel@lists.infradead.org>, <linux-kernel@vger.kernel.org>, <christophe.kerello@foss.st.com> Subject: Re: [PATCH v3 1/3] spi: spi-mem: add automatic poll status functions Date: Tue, 18 May 2021 13:54:26 +0200 [thread overview] Message-ID: <865b01c8-12ff-cce6-557f-178effbc39a4@foss.st.com> (raw) In-Reply-To: <20210518134037.0e5839b0@collabora.com> On 5/18/21 1:40 PM, Boris Brezillon wrote: > On Tue, 18 May 2021 11:39:49 +0200 > <patrice.chotard@foss.st.com> wrote: > >> +/** >> + * spi_mem_poll_status() - Poll memory device status >> + * @mem: SPI memory device >> + * @op: the memory operation to execute >> + * @mask: status bitmask to ckeck >> + * @match: (status & mask) expected value >> + * @initial_delay_us: delay in us before starting to poll >> + * @polling_delay_us: time to sleep between reads in us >> + * @timeout_ms: timeout in milliseconds >> + * >> + * This function send a polling status request to the controller driver >> + * >> + * Return: 0 in case of success, -ETIMEDOUT in case of error, >> + * -EOPNOTSUPP if not supported. >> + */ >> +int spi_mem_poll_status(struct spi_mem *mem, >> + const struct spi_mem_op *op, >> + u16 mask, u16 match, >> + unsigned long initial_delay_us, >> + unsigned long polling_delay_us, >> + u16 timeout_ms) >> +{ >> + struct spi_controller *ctlr = mem->spi->controller; >> + int ret = -EOPNOTSUPP; >> + int read_status_ret; >> + u16 status; >> + >> + if (op->data.nbytes < 1 || op->data.nbytes > 2) >> + return -EINVAL; > > We should also make sure this is a read operation. Ok , i will add a check here Thanks Patrice > >> + >> + if (ctlr->mem_ops && ctlr->mem_ops->poll_status) { >> + ret = spi_mem_access_start(mem); >> + if (ret) >> + return ret; >> + >> + ret = ctlr->mem_ops->poll_status(mem, op, mask, match, >> + initial_delay_us, polling_delay_us, >> + timeout_ms); >> + >> + spi_mem_access_end(mem); >> + } >> + >> + if (ret == -EOPNOTSUPP) { >> + if (!spi_mem_supports_op(mem, op)) >> + return ret; >> + >> + if (initial_delay_us < 10) >> + udelay(initial_delay_us); >> + else >> + usleep_range((initial_delay_us >> 2) + 1, >> + initial_delay_us); >> + >> + ret = read_poll_timeout(spi_mem_read_status, read_status_ret, >> + (read_status_ret || ((status) & mask) == match), >> + polling_delay_us, timeout_ms * 1000, false, mem, >> + op, &status); >> + if (read_status_ret) >> + return read_status_ret; >> + } >> + >> + return ret; >> +} _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2021-05-18 11:54 UTC|newest] Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-05-18 9:39 [PATCH v3 0/3] MTD: spinand: Add spi_mem_poll_status() support patrice.chotard 2021-05-18 9:39 ` patrice.chotard 2021-05-18 9:39 ` patrice.chotard 2021-05-18 9:39 ` [PATCH v3 1/3] spi: spi-mem: add automatic poll status functions patrice.chotard 2021-05-18 9:39 ` patrice.chotard 2021-05-18 9:39 ` patrice.chotard 2021-05-18 11:30 ` Boris Brezillon 2021-05-18 11:30 ` Boris Brezillon 2021-05-18 11:30 ` Boris Brezillon 2021-05-18 11:50 ` Patrice CHOTARD 2021-05-18 11:50 ` Patrice CHOTARD 2021-05-18 11:50 ` Patrice CHOTARD 2021-05-18 11:40 ` Boris Brezillon 2021-05-18 11:40 ` Boris Brezillon 2021-05-18 11:40 ` Boris Brezillon 2021-05-18 11:54 ` Patrice CHOTARD [this message] 2021-05-18 11:54 ` Patrice CHOTARD 2021-05-18 9:39 ` [PATCH v3 2/3] mtd: spinand: use the spi-mem poll status APIs patrice.chotard 2021-05-18 9:39 ` patrice.chotard 2021-05-18 9:39 ` patrice.chotard 2021-05-18 11:28 ` Boris Brezillon 2021-05-18 11:28 ` Boris Brezillon 2021-05-18 11:28 ` Boris Brezillon 2021-05-18 11:50 ` Patrice CHOTARD 2021-05-18 11:50 ` Patrice CHOTARD 2021-05-18 11:50 ` Patrice CHOTARD 2021-05-18 9:39 ` [PATCH v3 3/3] spi: stm32-qspi: add automatic poll status feature patrice.chotard 2021-05-18 9:39 ` patrice.chotard 2021-05-18 9:39 ` patrice.chotard 2021-05-18 11:39 ` Boris Brezillon 2021-05-18 11:39 ` Boris Brezillon 2021-05-18 11:39 ` Boris Brezillon 2021-05-18 11:53 ` Patrice CHOTARD 2021-05-18 11:53 ` Patrice CHOTARD 2021-05-18 11:53 ` Patrice CHOTARD 2021-05-18 11:28 ` [PATCH v3 0/3] MTD: spinand: Add spi_mem_poll_status() support Patrice CHOTARD 2021-05-18 11:28 ` Patrice CHOTARD 2021-05-18 11:28 ` Patrice CHOTARD
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=865b01c8-12ff-cce6-557f-178effbc39a4@foss.st.com \ --to=patrice.chotard@foss.st.com \ --cc=alexandre.torgue@foss.st.com \ --cc=boris.brezillon@collabora.com \ --cc=broonie@kernel.org \ --cc=christophe.kerello@foss.st.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-spi@vger.kernel.org \ --cc=linux-stm32@st-md-mailman.stormreply.com \ --cc=miquel.raynal@bootlin.com \ --cc=vigneshr@ti.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: linkBe 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.