linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Richard Fitzgerald <rf@opensource.wolfsonmicro.com>
To: Mark Brown <broonie@kernel.org>
Cc: Lee Jones <lee.jones@linaro.org>, <linus.walleij@linaro.org>,
	<gnurou@gmail.com>, <robh+dt@kernel.org>, <tglx@linutronix.de>,
	<jason@lakedaemon.net>, <alsa-devel@alsa-project.org>,
	<patches@opensource.wolfsonmicro.com>,
	<linux-gpio@vger.kernel.org>, <devicetree@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v2 01/18] mfd: madera: Add register definitions for Cirrus Logic Madera codecs
Date: Fri, 14 Jul 2017 12:50:59 +0100	[thread overview]
Message-ID: <1500033059.4826.139.camel@rf-debian.wolfsonmicro.main> (raw)
In-Reply-To: <20170713130305.ytrk322lqe6dusla@sirena.org.uk>

On Thu, 2017-07-13 at 14:03 +0100, Mark Brown wrote:
> On Thu, Jul 13, 2017 at 01:44:10PM +0100, Richard Fitzgerald wrote:
> > On Thu, 2017-07-13 at 11:05 +0100, Mark Brown wrote:
> > > On Thu, Jul 13, 2017 at 09:02:10AM +0100, Lee Jones wrote:
> 
> > > > This patch has been rejected by Linus.
> 
> > > > https://lkml.org/lkml/2017/7/7/579
> 
> > > Hrm, when I used to push the register definition patches I did elide all
> > > the obviously repeated register banks like the write sequencer one that
> > > Linus is calling out there.  I'm surprised by the "every single line"
> > > bit though...
> 
> > Linux doesn't say what he wants us to do about it. I could manually
> > strip out a few more definitions but seriously, it makes the code a lot
> > harder to maintain if we can't grep it for use of registers and register
> > fields. They are big chips, they have a lot of stuff in the registers.
> 
> I'd take it up with him, if you can explain why it looks very
> repetitive but isn't actually that'd help...
> 

I would but I haven't subscribed to receive LKML email because of the
high bandwidth, and I'm not sure how thrilled Linus would be if my reply
isn't a reply to his thread.

> Building up copies of the repeated IPs with macros would help too (the
> AIF and especially frame control registers stick out like a sore thumb
> here), as would removing the individual registers for the write
> sequencer block.

Mark: I know you already know what's below so apologies for this. But
for others on this thread interested in why our registers.h is the way
it is...

We really quite like to keep all the registers defined because it makes
the source highly greppable, which is extremely useful. A type of
question which is often asked is "what does the driver do with register
bits XYZ" or "where does it use register bits XYZ". Eliminating
definitions into generator macros or block-indexing code makes these
questions more difficult to answer. Another convenience is that it makes
it easier for people to translate raw hardware configurations (which are
a list of register values) into ALSA and pdata settings if they can
easily grep the source for those registers to see how they are
controlled. It also helps when adapting the driver for another similar
codec.

We do use block-indexing code where it's clearly the only sensible way
to implement a feature. But a lot of the source that uses
repetitive-looking definitions is ASoC tables, not functions, so there's
no code to do block-indexing, and macroing out the register definitions
just makes the table definitions more clunky and less readable but has
no effect on its "quality". I did already strip a lot out of the file to
remove stuff we don't need or we implement as repeated blocks (the
original file is >44000 lines).

As for the naming and the 1-indexed counting, these are the datasheet
names of the registers and we want to use the same name in the source as
is in the datasheet and the hardware design, otherwise it gets
confusing. In fact, the majority are the names of actual wires and
blocks in the hardware design, generated directly from it. Renaming them
is a big deal for the hardware engineers because it's a design change
and you can't patch silicon if it introduces a bug. The 0-indexed
counting is a very C-centric view, hardware designers have other
considerations, as well as avoiding the risk of unnecessary changes.

The WSEQ registers can go but I was hoping to avoid manually stripping
too much more because when there are updated register maps for new chips
or new revisions of existing silicon it must be possible to see what's
changed. As we strip more and more it gets harder work for people to see
in a diff the difference between genuinely removed register bits and
spurious changes from manual edits. However, I can strip out definitions
of bits that we aren't using _right now_ to reduce file size and patch
them back later when we need to use them, though that does mean anyone
debugging (via regmap debugfs for example) has to go to the datasheet to
look for the definitions of all those bits because they are missing from
the source.

  reply	other threads:[~2017-07-14 11:51 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-24 16:08 [PATCH v2 00/18] Add support for Cirrus Logic CS47L35/L85/L90/L91 codecs Richard Fitzgerald
2017-04-24 16:08 ` [PATCH v2 01/18] mfd: madera: Add register definitions for Cirrus Logic Madera codecs Richard Fitzgerald
2017-05-23  7:20   ` Lee Jones
2017-07-13  8:02   ` Lee Jones
2017-07-13 10:05     ` Mark Brown
2017-07-13 12:44       ` Richard Fitzgerald
2017-07-13 13:03         ` Mark Brown
2017-07-14 11:50           ` Richard Fitzgerald [this message]
2017-07-14 12:06             ` [alsa-devel] " Takashi Iwai
2017-04-24 16:08 ` [PATCH v2 02/18] mfd: madera: Add common support " Richard Fitzgerald
2017-05-22 17:39   ` Lee Jones
2017-04-24 16:08 ` [PATCH v2 03/18] dt-bindings: mfd: Add bindings " Richard Fitzgerald
2017-04-28 18:07   ` Rob Herring
2017-05-22 17:40   ` Lee Jones
2017-04-24 16:08 ` [PATCH v2 04/18] mfd: madera: Register map tables for Cirrus Logic CS47L35 Richard Fitzgerald
2017-05-23  7:22   ` Lee Jones
2017-04-24 16:08 ` [PATCH v2 05/18] mfd: madera: Register map tables for Cirrus Logic CS47L85 Richard Fitzgerald
2017-05-23  7:23   ` Lee Jones
2017-04-24 16:08 ` [PATCH v2 06/18] mfd: madera: Register map tables for Cirrus Logic CS47L90/91 Richard Fitzgerald
2017-05-23  7:24   ` Lee Jones
2017-04-24 16:08 ` [PATCH v2 07/18] regulator: arizona-micsupp: Add support for Cirrus Logic Madera codecs Richard Fitzgerald
2017-04-28 18:07   ` Rob Herring
2017-04-24 16:08 ` [PATCH v2 08/18] regulator: arizona-ldo1: " Richard Fitzgerald
2017-04-24 16:08 ` [PATCH v2 09/18] irqchip: Add driver " Richard Fitzgerald
2017-05-10 15:03   ` Thomas Gleixner
2017-04-24 16:08 ` [PATCH v2 10/18] pinctrl: madera: " Richard Fitzgerald
2017-04-25  9:41   ` Linus Walleij
2017-04-25 10:26     ` Richard Fitzgerald
2017-04-28  7:39   ` Linus Walleij
2017-05-20 20:06     ` Paul Gortmaker
2017-04-24 16:08 ` [PATCH v2 11/18] dt-bindings: pinctrl: Add bindings " Richard Fitzgerald
2017-04-25  9:35   ` Linus Walleij
2017-04-28 18:16   ` Rob Herring
2017-04-24 16:08 ` [PATCH v2 12/18] gpio: madera: Support Cirrus Logic Madera class codecs Richard Fitzgerald
2017-04-25 14:13   ` Linus Walleij
2017-04-25 14:44     ` Richard Fitzgerald
2017-04-28  7:46       ` Linus Walleij
2017-04-28  7:44   ` Linus Walleij
2017-04-24 16:08 ` [PATCH v2 13/18] dt-bindings: gpio: Add bindings for GPIO on Cirrus Logic Madera codecs Richard Fitzgerald
2017-04-25  9:42   ` Linus Walleij
2017-04-28 18:17   ` Rob Herring
2017-04-24 16:08 ` [PATCH v2 14/18] ASoC: madera: Add common support for " Richard Fitzgerald
2017-04-24 16:08 ` [PATCH v2 15/18] dt-bindings: sound: Add bindings " Richard Fitzgerald
2017-04-25 15:52   ` Mark Brown
2017-04-25 16:27     ` Richard Fitzgerald
2017-05-14 10:04       ` Mark Brown
2017-04-28 18:06     ` Rob Herring
2017-04-24 16:08 ` [PATCH v2 16/18] ASoC: cs47l35: Add codec driver for Cirrus Logic CS47L35 Richard Fitzgerald
2017-04-24 16:08 ` [PATCH v2 17/18] ASoC: cs47l85: Add codec driver for Cirrus Logic CS47L85 Richard Fitzgerald
2017-04-24 16:08 ` [PATCH v2 18/18] ASoC: cs47l90: Add codec driver for Cirrus Logic CS47L90 Richard Fitzgerald

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=1500033059.4826.139.camel@rf-debian.wolfsonmicro.main \
    --to=rf@opensource.wolfsonmicro.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=broonie@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=gnurou@gmail.com \
    --cc=jason@lakedaemon.net \
    --cc=lee.jones@linaro.org \
    --cc=linus.walleij@linaro.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=patches@opensource.wolfsonmicro.com \
    --cc=robh+dt@kernel.org \
    --cc=tglx@linutronix.de \
    /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).