Message ID | 20231128140818.261541-1-herve.codina@bootlin.com |
---|---|
Headers | show |
Series | Prepare the PowerQUICC QMC and TSA for the HDLC QMC driver | expand |
On Tue, Nov 28, 2023, at 15:08, Herve Codina wrote: > @@ -272,6 +274,8 @@ int qmc_chan_get_info(struct qmc_chan *chan, struct > qmc_chan_info *info) > if (ret) > return ret; > > + spin_lock_irqsave(&chan->ts_lock, flags); > + > info->mode = chan->mode; > info->rx_fs_rate = tsa_info.rx_fs_rate; > info->rx_bit_rate = tsa_info.rx_bit_rate; > @@ -280,6 +284,8 @@ int qmc_chan_get_info(struct qmc_chan *chan, struct > qmc_chan_info *info) > info->tx_bit_rate = tsa_info.tx_bit_rate; > info->nb_rx_ts = hweight64(chan->rx_ts_mask); > > + spin_unlock_irqrestore(&chan->ts_lock, flags); > + > return 0; > } I would normally use spin_lock_irq() instead of spin_lock_irqsave() in functions that are only called outside of atomic context. > +static int qmc_chan_start_rx(struct qmc_chan *chan); > + > int qmc_chan_stop(struct qmc_chan *chan, int direction) > { ... > -static void qmc_chan_start_rx(struct qmc_chan *chan) > +static int qmc_setup_chan_trnsync(struct qmc *qmc, struct qmc_chan *chan); > + > +static int qmc_chan_start_rx(struct qmc_chan *chan) > { Can you reorder the static functions in a way that avoids the forward declarations? Arnd
On Tue, Nov 28, 2023, at 15:07, Herve Codina wrote: > Hi, > > This series updates PowerQUICC QMC and TSA drivers to prepare the > support for the QMC HDLC driver. > > Patches were previously sent as part of a full feature series: > "Add support for QMC HDLC, framer infrastructure and PEF2256 framer" [1] > > The full feature series reached the v9 iteration. > The v1 was sent the 07/25/2023 followed by the other iterations > (07/26/2023, 08/09/2023, 08/18/2023, 09/12/2023, 09/22/2023, 09/28/2023, > 10/11/23, 11/15/2023) and was ready to be merged in its v8. > https://lore.kernel.org/linux-kernel/20231025123215.5caca7d4@kernel.org/ > > The lack of feedback from the Freescale SoC and the Quicc Engine > maintainers (i.e. drivers/soc/fsl/qe/ to which the QMC and TSA drivers > belong) blocks the entire full feature series. > These patches are fixes and improvements to TSA and QMC drivers. > These drivers were previously acked by Li Yang but without any feedback > from Li Yang nor Qiang Zhao the series cannot move forward. > > In order to ease the review/merge, the full feature series has been > split and this series contains patches related to the PowerQUICC SoC > part (QMC and TSA). > - Perform some fixes (patches 1 to 5) > - Add support for child devices (patch 6) > - Add QMC dynamic timeslot support (patches 7 to 17) > > From the original full feature series, a patches extraction without any > modification was done. I took a rough look at the entire series and only have a few minor comments to one patch, otherwise it looks fine to me. I would still prefer for Li Yang to merge the patches and send the pull request to soc@kernel.org, but if this also gets stalled because of lack of feedback and there are no objections to the content, you can send a PR there yourself. Arnd
Hi Arnd, On Wed, 29 Nov 2023 15:03:02 +0100 "Arnd Bergmann" <arnd@arndb.de> wrote: > On Tue, Nov 28, 2023, at 15:08, Herve Codina wrote: > > @@ -272,6 +274,8 @@ int qmc_chan_get_info(struct qmc_chan *chan, struct > > qmc_chan_info *info) > > if (ret) > > return ret; > > > > + spin_lock_irqsave(&chan->ts_lock, flags); > > + > > info->mode = chan->mode; > > info->rx_fs_rate = tsa_info.rx_fs_rate; > > info->rx_bit_rate = tsa_info.rx_bit_rate; > > @@ -280,6 +284,8 @@ int qmc_chan_get_info(struct qmc_chan *chan, struct > > qmc_chan_info *info) > > info->tx_bit_rate = tsa_info.tx_bit_rate; > > info->nb_rx_ts = hweight64(chan->rx_ts_mask); > > > > + spin_unlock_irqrestore(&chan->ts_lock, flags); > > + > > return 0; > > } > > I would normally use spin_lock_irq() instead of spin_lock_irqsave() > in functions that are only called outside of atomic context. I would prefer to keep spin_lock_irqsave() here. This function is part of the API and so, its quite difficult to ensure that all calls (current and future) will be done outside of an atomic context. > > > +static int qmc_chan_start_rx(struct qmc_chan *chan); > > + > > int qmc_chan_stop(struct qmc_chan *chan, int direction) > > { > ... > > -static void qmc_chan_start_rx(struct qmc_chan *chan) > > +static int qmc_setup_chan_trnsync(struct qmc *qmc, struct qmc_chan *chan); > > + > > +static int qmc_chan_start_rx(struct qmc_chan *chan) > > { > > Can you reorder the static functions in a way that avoids the > forward declarations? Yes, sure. I will do that in the next iteration. Thanks for the review, Best regards, Hervé
Hi, This series updates PowerQUICC QMC and TSA drivers to prepare the support for the QMC HDLC driver. Patches were previously sent as part of a full feature series: "Add support for QMC HDLC, framer infrastructure and PEF2256 framer" [1] The full feature series reached the v9 iteration. The v1 was sent the 07/25/2023 followed by the other iterations (07/26/2023, 08/09/2023, 08/18/2023, 09/12/2023, 09/22/2023, 09/28/2023, 10/11/23, 11/15/2023) and was ready to be merged in its v8. https://lore.kernel.org/linux-kernel/20231025123215.5caca7d4@kernel.org/ The lack of feedback from the Freescale SoC and the Quicc Engine maintainers (i.e. drivers/soc/fsl/qe/ to which the QMC and TSA drivers belong) blocks the entire full feature series. These patches are fixes and improvements to TSA and QMC drivers. These drivers were previously acked by Li Yang but without any feedback from Li Yang nor Qiang Zhao the series cannot move forward. In order to ease the review/merge, the full feature series has been split and this series contains patches related to the PowerQUICC SoC part (QMC and TSA). - Perform some fixes (patches 1 to 5) - Add support for child devices (patch 6) - Add QMC dynamic timeslot support (patches 7 to 17) >From the original full feature series, a patches extraction without any modification was done. Best regards, Hervé [1]: https://lore.kernel.org/linux-kernel/20231115144007.478111-1-herve.codina@bootlin.com/ Patches extracted: - Patch 1..6 : full feature series patch 1..6 - Patch 7..17 : full feature series patch 9..19 Herve Codina (17): soc: fsl: cpm1: tsa: Fix __iomem addresses declaration soc: fsl: cpm1: qmc: Fix __iomem addresses declaration soc: fsl: cpm1: qmc: Fix rx channel reset soc: fsl: cpm1: qmc: Extend the API to provide Rx status soc: fsl: cpm1: qmc: Remove inline function specifiers soc: fsl: cpm1: qmc: Add support for child devices soc: fsl: cpm1: qmc: Introduce available timeslots masks soc: fsl: cpm1: qmc: Rename qmc_setup_tsa* to qmc_init_tsa* soc: fsl: cpm1: qmc: Introduce qmc_chan_setup_tsa* soc: fsl: cpm1: qmc: Remove no more needed checks from qmc_check_chans() soc: fsl: cpm1: qmc: Check available timeslots in qmc_check_chans() soc: fsl: cpm1: qmc: Add support for disabling channel TSA entries soc: fsl: cpm1: qmc: Split Tx and Rx TSA entries setup soc: fsl: cpm1: qmc: Introduce is_tsa_64rxtx flag soc: fsl: cpm1: qmc: Handle timeslot entries at channel start() and stop() soc: fsl: cpm1: qmc: Remove timeslots handling from setup_chan() soc: fsl: cpm1: qmc: Introduce functions to change timeslots at runtime drivers/soc/fsl/qe/qmc.c | 592 +++++++++++++++++++++++++++------- drivers/soc/fsl/qe/tsa.c | 22 +- include/soc/fsl/qe/qmc.h | 27 +- sound/soc/fsl/fsl_qmc_audio.c | 2 +- 4 files changed, 506 insertions(+), 137 deletions(-)