From: "Zubair Lutfullah :" <zubair.lutfullah-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: Jonathan Cameron
<jic23-tko9wxEg+fIOOJlXag/Snyp2UmYkHbXO@public.gmane.org>
Cc: Zubair Lutfullah
<zubair.lutfullah-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
jic23-KWPb1pKIrIJaa/9Udqfwiw@public.gmane.org,
dmitry.torokhov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org,
linux-iio-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-input-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
bigeasy-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org,
gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org
Subject: Re: [PATCH 2/2] iio: ti_am335x_adc: Add continuous sampling support
Date: Thu, 19 Sep 2013 10:24:34 +0500 [thread overview]
Message-ID: <20130919052419.GB4363@gmail.com> (raw)
In-Reply-To: <5239B197.2040807-tko9wxEg+fIOOJlXag/Snyp2UmYkHbXO@public.gmane.org>
On Wed, Sep 18, 2013 at 02:58:47PM +0100, Jonathan Cameron wrote:
> On 18/09/13 12:23, Zubair Lutfullah wrote:
> >Previously the driver had only one-shot reading functionality.
> >This patch adds continuous sampling support to the driver.
> >
...
>
> Very very nearly there. Couple of suggestions in-line.
> (about 30 seconds work + testing ;)
Thank-you so much. Makes me want to put in more work and finish it :)
>
> I'm still unsure of why we need 32bit storage in the fifo
> for the data. I've proposed the changes I'd make to put it in 16 bit
> storage inline. The fact that the device is working in 32bits
> is irrelevant given we only have a 12 bit number coming out and
> it is in 12 least significant bits. I guess there might be a tiny
> cost in doing the conversion, but you kfifo will be half the size
> as a result and that seems more likely to a worthwhile gain!
>
I understand and will make the changes.
> Out of interest, are you testing this with generic_buffer.c?
> If so, what changes were necessary? Given this driver will not
> have a trigger it would be nice to update that example code to handle
> that case if it doesn't already.
I simply remove the lines like goto err_trigger etc. :p
Sneaky but works. I wasn't sure how to make the code understand its a
INDIO_BUFFER_HARDWARE..
But this is a separate discussion..
>
>
> >---
> > drivers/iio/adc/ti_am335x_adc.c | 216 +++++++++++++++++++++++++++++++++-
> > include/linux/mfd/ti_am335x_tscadc.h | 9 ++
> > 2 files changed, 220 insertions(+), 5 deletions(-)
> >
> >diff --git a/drivers/iio/adc/ti_am335x_adc.c b/drivers/iio/adc/ti_am335x_adc.c
...
> >
> > struct tiadc_device {
> > struct ti_tscadc_dev *mfd_tscadc;
> > int channels;
> > u8 channel_line[8];
> > u8 channel_step[8];
> >+ int buffer_en_ch_steps;
> >+ u32 *data;
> u16 *data;
>
> Also it might actually save memory to simply have a fixed size array
> of the maximum size used here and avoid the extra allocations for
> the cost
> of 16 bytes in here.
>
> Hence,
>
> u16 data[8];
> > };
Why data[8]? The length is dynamic.
This would be valid for the usual one sample per trigger case.
But here its continuous sampling and the hardware pushes samples
*quickly*
Dynamic allocation is needed.
...
> >+static irqreturn_t tiadc_worker_h(int irq, void *private)
> >+{
> >+ struct iio_dev *indio_dev = private;
> >+ struct tiadc_device *adc_dev = iio_priv(indio_dev);
> >+ int i, k, fifo1count, read;
> >+ u32 *data = adc_dev->data;
> u16* data = adc_dev->data;
> >+
> >+ fifo1count = tiadc_readl(adc_dev, REG_FIFO1CNT);
> >+ for (k = 0; k < fifo1count; k = k + i) {
> >+ for (i = 0; i < (indio_dev->scan_bytes)/4; i++) {
> >+ read = tiadc_readl(adc_dev, REG_FIFO1);
> >+ data[i] = read & FIFOREAD_DATA_MASK;
> //This is a 12 bit number after the mask so will fit just fine into 16 bits.
Indeed
...
> >+
> >+static int tiadc_buffer_postenable(struct iio_dev *indio_dev)
> >+{
> >+ struct tiadc_device *adc_dev = iio_priv(indio_dev);
> >+ struct iio_buffer *buffer = indio_dev->buffer;
> >+ unsigned int enb = 0;
> >+ u8 bit;
> >+
> (can drop this if doing the array with adc_dev as suggested above)
> >+ adc_dev->data = kmalloc(indio_dev->scan_bytes, GFP_KERNEL);
> >+ if (adc_dev->data == NULL)
> >+ return -ENOMEM;
As explained previously. Large array.. This is needed..
...
> >+{
> >+ struct tiadc_device *adc_dev = iio_priv(indio_dev);
> >+
> >+ tiadc_step_config(indio_dev);
> (can drop this if doing the array withing adc_dev as suggested above)
> >+ kfree(adc_dev->data);
> This is also missbalanced with the preenable (which is true of quite
> a few drivers - one day I'll clean those up!)
Misbalanced? :s
> >+
> >+ return 0;
> >+}
>
Thanks for the review and feedback.
I'll resend the patches with 16 bit everything and dynamic allocation.
Zubair
>
next prev parent reply other threads:[~2013-09-19 5:24 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-09-18 11:23 [PATCH V10 0/2] iio: input: ti_am335x_adc: Add continuous sampling support Zubair Lutfullah
[not found] ` <1379503383-17086-1-git-send-email-zubair.lutfullah-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2013-09-18 11:23 ` [PATCH 1/2] input: ti_am335x_tsc: Enable shared IRQ for TSC Zubair Lutfullah
2013-09-18 11:23 ` [PATCH 2/2] iio: ti_am335x_adc: Add continuous sampling support Zubair Lutfullah
[not found] ` <1379503383-17086-3-git-send-email-zubair.lutfullah-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2013-09-18 13:58 ` Jonathan Cameron
[not found] ` <5239B197.2040807-tko9wxEg+fIOOJlXag/Snyp2UmYkHbXO@public.gmane.org>
2013-09-19 5:24 ` Zubair Lutfullah : [this message]
[not found] ` <20130919052419.GB4363-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2013-09-19 5:41 ` Jonathan Cameron
[not found] ` <085d9527-c80e-4307-b8b9-c008976b4be1-2ueSQiBKiTY7tOexoI0I+QC/G2K4zDHf@public.gmane.org>
2013-09-19 5:55 ` Zubair Lutfullah :
2013-10-07 11:53 ` Testing ti_am335x_adc continuous mode (WAS: Re: [PATCH 2/2] Sebastian Andrzej Siewior
2013-10-07 12:50 ` Zubair Lutfullah :
-- strict thread matches above, loose matches on Subject: below --
2013-09-17 4:44 [PATCH V9 0/2] iio: input: ti_am335x_adc: Add continuous sampling support Zubair Lutfullah
2013-09-17 4:44 ` [PATCH 2/2] iio: " Zubair Lutfullah
[not found] ` <1379393047-11772-3-git-send-email-zubair.lutfullah-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2013-09-18 4:27 ` Dmitry Torokhov
[not found] ` <20130918042726.GB13196-WlK9ik9hQGAhIp7JRqBPierSzoNAToWh@public.gmane.org>
2013-09-18 6:54 ` Zubair Lutfullah :
[not found] ` <20130918065406.GA13451-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2013-09-18 9:39 ` Jonathan Cameron
[not found] ` <53771776-0d33-436d-9687-995ed0d6345d-2ueSQiBKiTY7tOexoI0I+QC/G2K4zDHf@public.gmane.org>
2013-09-18 11:25 ` Zubair Lutfullah :
2013-09-18 14:15 ` Dmitry Torokhov
[not found] ` <20130918141533.GA16424-WlK9ik9hQGAhIp7JRqBPierSzoNAToWh@public.gmane.org>
2013-09-18 16:12 ` Jonathan Cameron
2013-09-18 16:24 ` Dmitry Torokhov
[not found] ` <20130918162442.GA14803-WlK9ik9hQGAhIp7JRqBPierSzoNAToWh@public.gmane.org>
2013-09-18 17:05 ` Jonathan Cameron
2013-09-19 5:16 ` Zubair Lutfullah :
[not found] ` <20130919051611.GA4363-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2013-09-19 5:33 ` Jonathan Cameron
2013-09-01 11:17 [PATCH V8 0/2] iio: input: ti_am335x_tscadc: Add continuous sampling support to adc Zubair Lutfullah
2013-09-01 11:17 ` [PATCH 2/2] iio: ti_am335x_adc: Add continuous sampling support Zubair Lutfullah
[not found] ` <1378034277-26728-3-git-send-email-zubair.lutfullah-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2013-09-08 13:42 ` Jonathan Cameron
[not found] ` <522C7EDB.7090306-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2013-09-11 16:02 ` Zubair Lutfullah :
2013-09-01 11:07 [PATCH V7 0/2] iio: input: ti_am335x_tscadc: Add continuous sampling support to adc Zubair Lutfullah
2013-09-01 11:07 ` [PATCH 2/2] iio: ti_am335x_adc: Add continuous sampling support Zubair Lutfullah
2013-08-25 22:45 [PATCH V6 0/2] iio: input: " Zubair Lutfullah
[not found] ` <1377470724-15710-1-git-send-email-zubair.lutfullah-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2013-08-25 22:45 ` [PATCH 2/2] iio: " Zubair Lutfullah
2013-08-27 8:42 ` Lee Jones
2013-08-28 13:01 ` Sebastian Andrzej Siewior
2013-08-28 18:43 ` Zubair Lutfullah :
[not found] ` <1377470724-15710-3-git-send-email-zubair.lutfullah-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2013-08-28 14:18 ` Sebastian Andrzej Siewior
[not found] ` <20130828141835.GD14111-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org>
2013-08-28 18:22 ` Zubair Lutfullah :
2013-08-28 16:43 ` Sebastian Andrzej Siewior
[not found] ` <20130828164308.GE14111-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org>
2013-08-28 18:19 ` Zubair Lutfullah :
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=20130919052419.GB4363@gmail.com \
--to=zubair.lutfullah-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
--cc=bigeasy-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org \
--cc=dmitry.torokhov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org \
--cc=jic23-KWPb1pKIrIJaa/9Udqfwiw@public.gmane.org \
--cc=jic23-tko9wxEg+fIOOJlXag/Snyp2UmYkHbXO@public.gmane.org \
--cc=linux-iio-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-input-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
/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).