Message ID | 20200304220044.11193-8-olteanv@gmail.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 6a726824aaa3adaaf3bcfca3b471408e225f33d6 |
Headers | show |
Series | TCFQ to XSPI migration for NXP DSPI driver | expand |
On Thu, Mar 05, 2020 at 12:00:39AM +0200, Vladimir Oltean wrote: > From: Vladimir Oltean <vladimir.oltean@nxp.com> > > When dealing with a SPI controller driver that is sending more than 1 > byte at once (or the entire buffer at once), and the SPI peripheral > driver has requested timestamping for a byte in the middle of the > buffer, we find that spi_take_timestamp_pre never records a "pre" > timestamp. This is a fix and so should have been at the start of the series to make sure there aren't any dependencies.
Hi Mark, On Thu, 5 Mar 2020 at 14:12, Mark Brown <broonie@kernel.org> wrote: > > On Thu, Mar 05, 2020 at 12:00:39AM +0200, Vladimir Oltean wrote: > > From: Vladimir Oltean <vladimir.oltean@nxp.com> > > > > When dealing with a SPI controller driver that is sending more than 1 > > byte at once (or the entire buffer at once), and the SPI peripheral > > driver has requested timestamping for a byte in the middle of the > > buffer, we find that spi_take_timestamp_pre never records a "pre" > > timestamp. > > This is a fix and so should have been at the start of the series to make > sure there aren't any dependencies. My reasoning for not submitting it as a fix is: - The only driver that uses the functionality so far - spi-fsl-dspi - has worked thus far even with the limitation that only byte-by-byte transfers were supported properly. - I removed the limitation before actually changing the operating mode of spi-fsl-dspi. Therefore the limitation is effectively never seen. - New SPI drivers that would want to make use of software timestamping would do so through your SPI for-next branch anyway, where the limitation would be, again, fixed. Thanks, -Vladimir
On Thu, Mar 05, 2020 at 03:00:22PM +0200, Vladimir Oltean wrote: > On Thu, 5 Mar 2020 at 14:12, Mark Brown <broonie@kernel.org> wrote: > > This is a fix and so should have been at the start of the series to make > > sure there aren't any dependencies. > My reasoning for not submitting it as a fix is: > - The only driver that uses the functionality so far - spi-fsl-dspi - > has worked thus far even with the limitation that only byte-by-byte > transfers were supported properly. > - I removed the limitation before actually changing the operating mode > of spi-fsl-dspi. Therefore the limitation is effectively never seen. > - New SPI drivers that would want to make use of software timestamping > would do so through your SPI for-next branch anyway, where the > limitation would be, again, fixed. That's mostly all true but it's still better to pull fixes like this (or the patch limiting the size) forwards and not have to think if it's safe to not apply them as a fix, it's less effort all round.
On Thu, 5 Mar 2020 at 15:04, Mark Brown <broonie@kernel.org> wrote: > > On Thu, Mar 05, 2020 at 03:00:22PM +0200, Vladimir Oltean wrote: > > On Thu, 5 Mar 2020 at 14:12, Mark Brown <broonie@kernel.org> wrote: > > > > This is a fix and so should have been at the start of the series to make > > > sure there aren't any dependencies. > > > My reasoning for not submitting it as a fix is: > > - The only driver that uses the functionality so far - spi-fsl-dspi - > > has worked thus far even with the limitation that only byte-by-byte > > transfers were supported properly. > > - I removed the limitation before actually changing the operating mode > > of spi-fsl-dspi. Therefore the limitation is effectively never seen. > > - New SPI drivers that would want to make use of software timestamping > > would do so through your SPI for-next branch anyway, where the > > limitation would be, again, fixed. > > That's mostly all true but it's still better to pull fixes like this (or > the patch limiting the size) forwards and not have to think if it's safe > to not apply them as a fix, it's less effort all round. So do you want me to do something about it now?
On Thu, Mar 05, 2020 at 03:13:53PM +0200, Vladimir Oltean wrote: > On Thu, 5 Mar 2020 at 15:04, Mark Brown <broonie@kernel.org> wrote: > > That's mostly all true but it's still better to pull fixes like this (or > > the patch limiting the size) forwards and not have to think if it's safe > > to not apply them as a fix, it's less effort all round. > So do you want me to do something about it now? No, it's fine for now but please bear this in mind in future.
diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c index a8495fd3bb47..22baf204a09d 100644 --- a/drivers/spi/spi.c +++ b/drivers/spi/spi.c @@ -1515,17 +1515,15 @@ void spi_take_timestamp_pre(struct spi_controller *ctlr, if (!xfer->ptp_sts) return; - if (xfer->timestamped_pre) + if (xfer->timestamped) return; - if (progress < xfer->ptp_sts_word_pre) + if (progress > xfer->ptp_sts_word_pre) return; /* Capture the resolution of the timestamp */ xfer->ptp_sts_word_pre = progress; - xfer->timestamped_pre = true; - if (irqs_off) { local_irq_save(ctlr->irq_flags); preempt_disable(); @@ -1554,7 +1552,7 @@ void spi_take_timestamp_post(struct spi_controller *ctlr, if (!xfer->ptp_sts) return; - if (xfer->timestamped_post) + if (xfer->timestamped) return; if (progress < xfer->ptp_sts_word_post) @@ -1570,7 +1568,7 @@ void spi_take_timestamp_post(struct spi_controller *ctlr, /* Capture the resolution of the timestamp */ xfer->ptp_sts_word_post = progress; - xfer->timestamped_post = true; + xfer->timestamped = true; } EXPORT_SYMBOL_GPL(spi_take_timestamp_post); @@ -1675,12 +1673,9 @@ void spi_finalize_current_message(struct spi_controller *ctlr) } } - if (unlikely(ctlr->ptp_sts_supported)) { - list_for_each_entry(xfer, &mesg->transfers, transfer_list) { - WARN_ON_ONCE(xfer->ptp_sts && !xfer->timestamped_pre); - WARN_ON_ONCE(xfer->ptp_sts && !xfer->timestamped_post); - } - } + if (unlikely(ctlr->ptp_sts_supported)) + list_for_each_entry(xfer, &mesg->transfers, transfer_list) + WARN_ON_ONCE(xfer->ptp_sts && !xfer->timestamped); spi_unmap_msg(ctlr, mesg); diff --git a/include/linux/spi/spi.h b/include/linux/spi/spi.h index 600e3793303e..87105272879b 100644 --- a/include/linux/spi/spi.h +++ b/include/linux/spi/spi.h @@ -933,8 +933,7 @@ struct spi_transfer { struct ptp_system_timestamp *ptp_sts; - bool timestamped_pre; - bool timestamped_post; + bool timestamped; struct list_head transfer_list; };