All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
To: Mark Brown <broonie@kernel.org>
Cc: "Samuel Ortiz" <sameo@linux.intel.com>,
	"Lee Jones" <lee.jones@linaro.org>,
	"Benoît Cousson" <b-cousson@ti.com>,
	"Tony Lindgren" <tony@atomide.com>,
	"Jonathan Cameron" <jic23@cam.ac.uk>,
	"Dmitry Torokhov" <dmitry.torokhov@gmail.com>,
	"Felipe Balbi" <balbi@ti.com>,
	linux-kernel@vger.kernel.org, linux-omap@vger.kernel.org,
	linux-iio@vger.kernel.org, linux-input@vger.kernel.org
Subject: Re: [PATCH 01/22] mfd/ti_am335x_tscadc: remove regmap
Date: Thu, 04 Jul 2013 11:02:41 +0200	[thread overview]
Message-ID: <51D53A31.3080704@linutronix.de> (raw)
In-Reply-To: <20130617160326.GE1403@sirena.org.uk>

Sorry for the long pause…

On 06/17/2013 06:03 PM, Mark Brown wrote:
>> This is a lot of for a simple mmio access. In terms of
>> performance: If I add a trace point to my read and write I have
>> still less code which is called and it can be disabled. This
>> regmap overhead is always there chasing pointers.
> 
> Equally well what you're implementing here is support for
> something that's typically implemented with an I2C or SPI control
> interface so you're already going to be quite a way ahead of the
> norm.  This is part of what's confusing me, usually for this
> application things aren't that bad performance wise even on a
> massively slower bus.
> 
> If all you're saying here is that there's some overhead that's fine
> if a bit surprising, but the way you're talking made it sound like
> there was some issue that made the API actually unusable.

No, sorry for that confusion. I had a problem with the locking in irq
context, changed the driver & pointed out the problem, been told that
there is a fix, applied it, never complained again.

This is simply about I am forced to use regmap and I don't agree with
it.

>> As I said before: I doubt that you get this regmap access in an
>> one GiB network driver and in turn remove their trace points to
>> register access.
> 
> Well, of course for that sort of thing the general trick is not to
> talk to the hardware at all and do as much as possible with memory
> that the hardware can DMA - there's actually still non-trivial
> costs in talking over the buses.

That is true but even while doing DMA you have enough handshake with
the HW to trigger the transfer and if you are lucky your DMA
descriptors are in cached memory.

>> Please don't get me wrong: It is still nice for slow buses and
>> this ADC driver isn't anything close to high performance like a
>> 1GiB network driver but it adds a lot of unwanted overhead which
>> I prefer not to have.
> 
> OK, but equally well remember that from a subsystem maintainer
> point of view having things factored out is a win in itself; for
> example with the MFDs locking on the register I/O has been a
> persistent issue in the past.

I agree with that. But:

The driver here does not use atomic updates but read followed by write
so your locking here is futile. So the API/regmap alone does not make
it right. And look: the MFD part uses regmap. Its children (IIO &
input) do not use it. After I told this Samuel he said that it is okay.
So here I am. Using regmap in MFD which is only used once on init and
never again. It has regmap.

The register access in both child driver is split making sure they do
not use the same ones. I added one function which writes a common
register. That one is reset after an operation and needs to be written
by the currently active child so the HW continues to work. Haven't seen
anything close to it in regmap.

I ask, politely I hope, to get this patch in and remove regmap since
none of its features are used in this driver.

Sebastian

WARNING: multiple messages have this Message-ID (diff)
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
To: Mark Brown <broonie@kernel.org>
Cc: "Samuel Ortiz" <sameo@linux.intel.com>,
	"Lee Jones" <lee.jones@linaro.org>,
	"Benoît Cousson" <b-cousson@ti.com>,
	"Tony Lindgren" <tony@atomide.com>,
	"Jonathan Cameron" <jic23@cam.ac.uk>,
	"Dmitry Torokhov" <dmitry.torokhov@gmail.com>,
	"Felipe Balbi" <balbi@ti.com>,
	linux-kernel@vger.kernel.org, linux-omap@vger.kernel.org,
	linux-iio@vger.kernel.org, linux-input@vger.kernel.org
Subject: Re: [PATCH 01/22] mfd/ti_am335x_tscadc: remove regmap
Date: Thu, 04 Jul 2013 11:02:41 +0200	[thread overview]
Message-ID: <51D53A31.3080704@linutronix.de> (raw)
In-Reply-To: <20130617160326.GE1403@sirena.org.uk>

Sorry for the long pause…

On 06/17/2013 06:03 PM, Mark Brown wrote:
>> This is a lot of for a simple mmio access. In terms of
>> performance: If I add a trace point to my read and write I have
>> still less code which is called and it can be disabled. This
>> regmap overhead is always there chasing pointers.
> 
> Equally well what you're implementing here is support for
> something that's typically implemented with an I2C or SPI control
> interface so you're already going to be quite a way ahead of the
> norm.  This is part of what's confusing me, usually for this
> application things aren't that bad performance wise even on a
> massively slower bus.
> 
> If all you're saying here is that there's some overhead that's fine
> if a bit surprising, but the way you're talking made it sound like
> there was some issue that made the API actually unusable.

No, sorry for that confusion. I had a problem with the locking in irq
context, changed the driver & pointed out the problem, been told that
there is a fix, applied it, never complained again.

This is simply about I am forced to use regmap and I don't agree with
it.

>> As I said before: I doubt that you get this regmap access in an
>> one GiB network driver and in turn remove their trace points to
>> register access.
> 
> Well, of course for that sort of thing the general trick is not to
> talk to the hardware at all and do as much as possible with memory
> that the hardware can DMA - there's actually still non-trivial
> costs in talking over the buses.

That is true but even while doing DMA you have enough handshake with
the HW to trigger the transfer and if you are lucky your DMA
descriptors are in cached memory.

>> Please don't get me wrong: It is still nice for slow buses and
>> this ADC driver isn't anything close to high performance like a
>> 1GiB network driver but it adds a lot of unwanted overhead which
>> I prefer not to have.
> 
> OK, but equally well remember that from a subsystem maintainer
> point of view having things factored out is a win in itself; for
> example with the MFDs locking on the register I/O has been a
> persistent issue in the past.

I agree with that. But:

The driver here does not use atomic updates but read followed by write
so your locking here is futile. So the API/regmap alone does not make
it right. And look: the MFD part uses regmap. Its children (IIO &
input) do not use it. After I told this Samuel he said that it is okay.
So here I am. Using regmap in MFD which is only used once on init and
never again. It has regmap.

The register access in both child driver is split making sure they do
not use the same ones. I added one function which writes a common
register. That one is reset after an operation and needs to be written
by the currently active child so the HW continues to work. Haven't seen
anything close to it in regmap.

I ask, politely I hope, to get this patch in and remove regmap since
none of its features are used in this driver.

Sebastian
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  reply	other threads:[~2013-07-04  9:02 UTC|newest]

Thread overview: 99+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-06-11 11:30 am335x: TSC & ADC reworking including DT pieces, take 4 Sebastian Andrzej Siewior
2013-06-11 11:30 ` Sebastian Andrzej Siewior
2013-06-11 11:30 ` [PATCH 01/22] mfd/ti_am335x_tscadc: remove regmap Sebastian Andrzej Siewior
2013-06-11 14:23   ` Samuel Ortiz
2013-06-11 14:34     ` Sebastian Andrzej Siewior
2013-06-11 14:34       ` Sebastian Andrzej Siewior
2013-06-14 13:53       ` Mark Brown
2013-06-14 13:53         ` Mark Brown
2013-06-17 11:41         ` Sebastian Andrzej Siewior
2013-06-17 11:41           ` Sebastian Andrzej Siewior
2013-06-17 16:03           ` Mark Brown
2013-06-17 16:03             ` Mark Brown
2013-07-04  9:02             ` Sebastian Andrzej Siewior [this message]
2013-07-04  9:02               ` Sebastian Andrzej Siewior
2013-07-04 10:45               ` Mark Brown
2013-07-04 11:15                 ` Sebastian Andrzej Siewior
2013-07-04 11:15                   ` Sebastian Andrzej Siewior
2013-06-11 11:30 ` [PATCH 02/22] mfd & input & iio/ti_am335x_adc: use one structure for ti_tscadc_dev Sebastian Andrzej Siewior
2013-06-11 11:30 ` [PATCH 03/22] input/ti_am33x_tsc: Step enable bits made configurable Sebastian Andrzej Siewior
2013-06-11 11:30 ` [PATCH 04/22] input/ti_am33x_tsc: Order of TSC wires, " Sebastian Andrzej Siewior
2013-06-11 14:23   ` Samuel Ortiz
2013-06-11 14:23     ` Samuel Ortiz
2013-06-11 14:35     ` Sebastian Andrzej Siewior
2013-07-04 11:14   ` Sekhar Nori
2013-07-04 11:14     ` Sekhar Nori
2013-07-04 11:33     ` Sebastian Andrzej Siewior
2013-07-04 11:33       ` Sebastian Andrzej Siewior
2013-07-04 13:39       ` Sekhar Nori
2013-07-04 13:39         ` Sekhar Nori
2013-07-04 13:50         ` Sebastian Andrzej Siewior
2013-07-04 14:27           ` Sekhar Nori
2013-06-11 11:30 ` [PATCH 05/22] input/ti_am33x_tsc: remove unwanted fifo flush Sebastian Andrzej Siewior
2013-06-11 11:30 ` [PATCH 06/22] input/ti_am33x_tsc: Add DT support Sebastian Andrzej Siewior
2013-06-11 11:30   ` Sebastian Andrzej Siewior
2013-06-11 11:30 ` [PATCH 07/22] input/ti_am33x_tsc: remove platform_data support Sebastian Andrzej Siewior
2013-06-11 11:30 ` [PATCH 08/22] iio/ti_am335x_adc: Add DT support Sebastian Andrzej Siewior
2013-06-11 11:30 ` [PATCH 09/22] iio/ti_am335x_adc: remove platform_data support Sebastian Andrzej Siewior
2013-06-11 11:30 ` [PATCH 10/22] mfd/ti_am335x_tscadc: Add DT support Sebastian Andrzej Siewior
2013-06-11 14:23   ` Samuel Ortiz
2013-06-11 14:42     ` Sebastian Andrzej Siewior
2013-06-11 14:42       ` Sebastian Andrzej Siewior
2013-06-11 15:05       ` Samuel Ortiz
2013-06-11 15:41         ` Sebastian Andrzej Siewior
2013-06-11 15:41           ` Sebastian Andrzej Siewior
2013-06-11 18:42           ` Lee Jones
2013-06-11 18:42             ` Lee Jones
2013-06-11 17:10       ` Lee Jones
2013-06-11 17:10         ` Lee Jones
2013-06-11 11:30 ` [PATCH 11/22] mfd/ti_am335x_tscadc: remove platform_data support Sebastian Andrzej Siewior
2013-06-11 11:30 ` [PATCH 12/22] iio/ti_tscadc: provide datasheet_name and scan_type Sebastian Andrzej Siewior
2013-06-11 11:30 ` [PATCH 13/22] mfd/ti_tscadc: deal with partial activation Sebastian Andrzej Siewior
2013-06-11 11:31 ` [PATCH 14/22] arm/am33xx: add TSC/ADC mfd device support Sebastian Andrzej Siewior
2013-07-04 13:49   ` Sekhar Nori
2013-07-04 13:49     ` Sekhar Nori
2013-07-04 13:51     ` Sebastian Andrzej Siewior
2013-07-04 13:51       ` Sebastian Andrzej Siewior
2013-06-11 11:31 ` [PATCH 15/22] input & mfd: ti_am335x_tsc remove remaining platform data pieces Sebastian Andrzej Siewior
2013-06-11 11:31 ` [PATCH 16/22] mfd & input/ti_am335x_tsc: rename device from tsc to TI-am335x-tsc Sebastian Andrzej Siewior
2013-06-11 11:31 ` [PATCH 17/22] mfd & iio/ti_am335x_adc: rename device from tiadc to TI-am335x-adc Sebastian Andrzej Siewior
2013-06-11 11:31   ` Sebastian Andrzej Siewior
2013-06-11 11:31 ` [PATCH 18/22] input/ti_am335x_adc: use only FIFO0 and clean up a little Sebastian Andrzej Siewior
2013-06-11 11:31 ` [PATCH 19/22] input/ti_am335x_tsc: ACK the HW_PEN irq in ISR Sebastian Andrzej Siewior
2013-06-11 11:31 ` [PATCH 20/22] input/ti_am335x_tsc: return IRQ_NONE if there was no IRQ for us Sebastian Andrzej Siewior
2013-06-11 11:31 ` [PATCH 21/22] iio/ti_am335x_adc: Allow to specify input line Sebastian Andrzej Siewior
2013-06-11 11:31 ` [PATCH 22/22] iio/ti_am335x_adc: check if we found the value Sebastian Andrzej Siewior
2013-06-11 12:05 ` am335x: TSC & ADC reworking including DT pieces, take 4 Lee Jones
2013-06-11 12:05   ` Lee Jones
2013-06-11 13:53   ` Lars-Peter Clausen
2013-06-11 13:53     ` Lars-Peter Clausen
2013-06-11 14:23 ` Samuel Ortiz
2013-06-11 15:29   ` Sebastian Andrzej Siewior
2013-06-11 15:29     ` Sebastian Andrzej Siewior
2013-06-11 16:10     ` Samuel Ortiz
2013-06-11 16:10       ` Samuel Ortiz
2013-06-11 16:18       ` Sebastian Andrzej Siewior
2013-06-11 16:18         ` Sebastian Andrzej Siewior
2013-06-14 13:57     ` Mark Brown
2013-06-14 13:57       ` Mark Brown
2013-06-11 16:04   ` Dmitry Torokhov
2013-06-11 16:04     ` Dmitry Torokhov
2013-06-11 16:15     ` Samuel Ortiz
2013-06-11 16:15       ` Samuel Ortiz
2013-06-11 16:27       ` Jonathan Cameron
2013-06-11 16:27         ` Jonathan Cameron
2013-06-11 17:01         ` Lars-Peter Clausen
2013-06-11 17:01           ` Lars-Peter Clausen
2013-06-11 17:55         ` Samuel Ortiz
2013-06-11 17:55           ` Samuel Ortiz
2013-06-12 13:29           ` Sebastian Andrzej Siewior
2013-06-12 13:50             ` Samuel Ortiz
2013-06-12 13:50               ` Samuel Ortiz
2013-06-12 14:02               ` Sebastian Andrzej Siewior
2013-06-12 14:02                 ` Sebastian Andrzej Siewior
2013-06-12 14:41                 ` Samuel Ortiz
2013-06-12 15:00                   ` Sebastian Andrzej Siewior
2013-06-11 18:02   ` Jonathan Cameron
2013-06-11 18:02     ` Jonathan Cameron
  -- strict thread matches above, loose matches on Subject: below --
2013-06-05 16:24 AM335x tsc & adc, dt + cleanup take 3 Sebastian Andrzej Siewior
     [not found] ` <1370449495-29981-1-git-send-email-bigeasy-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org>
2013-06-05 16:24   ` [PATCH 01/22] mfd/ti_am335x_tscadc: remove regmap Sebastian Andrzej Siewior
2013-06-05 16:24     ` Sebastian Andrzej Siewior

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=51D53A31.3080704@linutronix.de \
    --to=bigeasy@linutronix.de \
    --cc=b-cousson@ti.com \
    --cc=balbi@ti.com \
    --cc=broonie@kernel.org \
    --cc=dmitry.torokhov@gmail.com \
    --cc=jic23@cam.ac.uk \
    --cc=lee.jones@linaro.org \
    --cc=linux-iio@vger.kernel.org \
    --cc=linux-input@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=sameo@linux.intel.com \
    --cc=tony@atomide.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: link
Be 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.