[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <ADE657CA350FB648AAC2C43247A983F0020698FEE719@AUSP01VMBX24.collaborationhost.net>
Date: Wed, 11 Jul 2012 11:30:17 -0500
From: H Hartley Sweeten <hartleys@...ionengravers.com>
To: Ian Abbott <abbotti@....co.uk>,
Linux Kernel <linux-kernel@...r.kernel.org>
CC: "devel@...verdev.osuosl.org" <devel@...verdev.osuosl.org>,
Greg Kroah-Hartman <gregkh@...uxfoundation.org>
Subject: RE: [PATCH] staging: comedi: rtd520: add a few comments
On Wednesday, July 11, 2012 5:28 AM, Ian Abbott wrote:
> H Hartley Sweeten's recent series of patches to clean up the rtd520
> driver made some of the register accesses harder to understand. Add a
> few comments to provide some clues to the reader.
>
> Signed-off-by: Ian Abbott <abbotti@....co.uk>
> Cc: H Hartley Sweeten <hsweeten@...ionengravers.com>
> Cc: Greg Kroah-Hartman <gregkh@...uxfoundation.org>
> ---
> To be applied after Hartley's 83 patches.
> ---
> drivers/staging/comedi/drivers/rtd520.c | 23 ++++++++++++++++++-----
> 1 files changed, 18 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/staging/comedi/drivers/rtd520.c b/drivers/staging/comedi/drivers/rtd520.c
> index 5a2953e..9998d6b 100644
> --- a/drivers/staging/comedi/drivers/rtd520.c
> +++ b/drivers/staging/comedi/drivers/rtd520.c
> @@ -494,6 +494,7 @@ static int rtd520_probe_fifo_depth(struct comedi_device *dev)
>
> writel(0, devpriv->las0 + LAS0_ADC_FIFO_CLEAR);
> rtd_load_channelgain_list(dev, 1, &chanspec);
> + /* ADC conversion trigger source: SOFTWARE */
> writel(0, devpriv->las0 + LAS0_ADC_CONVERSION);
> /* convert samples */
> for (i = 0; i < limit; ++i) {
> @@ -544,7 +545,7 @@ static int rtd_ai_rinsn(struct comedi_device *dev,
> /* write channel to multiplexer and clear channel gain table */
> rtd_load_channelgain_list(dev, 1, &insn->chanspec);
>
> - /* set conversion source */
> + /* ADC conversion trigger source: SOFTWARE */
> writel(0, devpriv->las0 + LAS0_ADC_CONVERSION);
>
> /* convert n samples */
> @@ -908,8 +909,9 @@ abortTransfer:
> /* fall into transferDone */
>
> transferDone:
> + /* pacer stop source: SOFTWARE */
> writel(0, devpriv->las0 + LAS0_PACER_STOP);
> - writel(0, devpriv->las0 + LAS0_PACER);
> + writel(0, devpriv->las0 + LAS0_PACER); /* stop pacer */
> writel(0, devpriv->las0 + LAS0_ADC_CONVERSION);
> devpriv->intMask = 0;
> writew(devpriv->intMask, devpriv->las0 + LAS0_IT);
> @@ -1180,8 +1182,9 @@ static int rtd_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s)
> int timer;
>
> /* stop anything currently running */
> + /* pacer stop source: SOFTWARE */
> writel(0, devpriv->las0 + LAS0_PACER_STOP);
> - writel(0, devpriv->las0 + LAS0_PACER);
> + writel(0, devpriv->las0 + LAS0_PACER); /* stop pacer */
> writel(0, devpriv->las0 + LAS0_ADC_CONVERSION);
> devpriv->intMask = 0;
> writew(devpriv->intMask, devpriv->las0 + LAS0_IT);
> @@ -1215,12 +1218,17 @@ static int rtd_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s)
> /* setup the common case and override if needed */
> if (cmd->chanlist_len > 1) {
> /*DPRINTK ("rtd520: Multi channel setup\n"); */
> + /* pacer start source: SOFTWARE */
> writel(0, devpriv->las0 + LAS0_PACER_START);
> + /* burst trigger source: PACER */
> writel(1, devpriv->las0 + LAS0_BURST_START);
> + /* ADC conversion trigger source: BURST */
> writel(2, devpriv->las0 + LAS0_ADC_CONVERSION);
> } else { /* single channel */
> /*DPRINTK ("rtd520: single channel setup\n"); */
> + /* pacer start source: SOFTWARE */
> writel(0, devpriv->las0 + LAS0_PACER_START);
> + /* ADC conversion trigger source: PACER */
> writel(1, devpriv->las0 + LAS0_ADC_CONVERSION);
> }
> writel((devpriv->fifoLen / 2 - 1) & 0xffff, devpriv->las0 + LAS0_ACNT);
> @@ -1269,7 +1277,9 @@ static int rtd_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s)
> devpriv->transCount = 0;
> devpriv->flags &= ~SEND_EOS;
> }
> + /* pacer clock source: INTERNAL 8MHz */
> writel(1, devpriv->las0 + LAS0_PACER_SELECT);
> + /* just interrupt, don't stop */
> writel(1, devpriv->las0 + LAS0_ACNT_STOP_ENABLE);
>
> /* BUG??? these look like enumerated values, but they are bit fields */
> @@ -1305,6 +1315,7 @@ static int rtd_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s)
> break;
>
> case TRIG_EXT:
> + /* pacer start source: EXTERNAL */
> writel(1, devpriv->las0 + LAS0_PACER_START);
> break;
>
> @@ -1327,6 +1338,7 @@ static int rtd_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s)
> break;
>
> case TRIG_EXT: /* external */
> + /* burst trigger source: EXTERNAL */
> writel(2, devpriv->las0 + LAS0_BURST_START);
> break;
>
> @@ -1378,7 +1390,7 @@ static int rtd_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s)
>
> /* BUG: start_src is ASSUMED to be TRIG_NOW */
> /* BUG? it seems like things are running before the "start" */
> - readl(devpriv->las0 + LAS0_PACER);
> + readl(devpriv->las0 + LAS0_PACER); /* start pacer */
> return 0;
> }
>
> @@ -1391,8 +1403,9 @@ static int rtd_ai_cancel(struct comedi_device *dev, struct comedi_subdevice *s)
> u32 overrun;
> u16 status;
>
> + /* pacer stop source: SOFTWARE */
> writel(0, devpriv->las0 + LAS0_PACER_STOP);
> - writel(0, devpriv->las0 + LAS0_PACER);
> + writel(0, devpriv->las0 + LAS0_PACER); /* stop pacer */
> writel(0, devpriv->las0 + LAS0_ADC_CONVERSION);
> devpriv->intMask = 0;
> writew(devpriv->intMask, devpriv->las0 + LAS0_IT);
Reviewed-by: H Hartley Sweeten <hsweeten@...ionengravers.com>
Thanks!
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists