All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Daney <ddaney@caviumnetworks.com>
To: Ulf Hansson <ulf.hansson@linaro.org>
Cc: Matt Redfearn <Matt.Redfearn@imgtec.com>,
	David Daney <david.daney@cavium.com>,
	linux-mmc <linux-mmc@vger.kernel.org>,
	Aleksey Makarov <aleksey.makarov@caviumnetworks.com>,
	Chandrakala Chavva <cchavva@caviumnetworks.com>,
	Aleksey Makarov <aleksey.makarov@auriga.com>,
	Leonid Rosenboim <lrosenboim@caviumnetworks.com>,
	Peter Swain <pswain@cavium.com>,
	Aaron Williams <aaron.williams@cavium.com>,
	Rob Herring <robh+dt@kernel.org>,
	Ralf Baechle <ralf@linux-mips.org>
Subject: Re: [RESEND PATCH v7 1/2] mmc: OCTEON: Add DT bindings for OCTEON MMC controller
Date: Wed, 20 Apr 2016 15:32:56 -0700	[thread overview]
Message-ID: <57180398.6040507@caviumnetworks.com> (raw)
In-Reply-To: <CAPDyKFrZ2FU2iGJG-KK3fLwZpu49uFamZCb7PBt+MaCGfy0Dpw@mail.gmail.com>

On 04/20/2016 02:32 AM, Ulf Hansson wrote:
[...]
>>
>> It is a matter of how much manipulation of the device tree we want to do
>> before it is handed off to the driver core for device creation.  I would
>> like to not do any.
>>
>> There is a global cost to changing the device tree in early boot.  It may
>> not be borne by the MMC sub-system, but it exists none the less.
>
> I don't think your concern is right.
>
> What I request are *small* updates to the DTB from arch/SoC specific
> code, those should be really simple to fix.
>
> The benefit is that the driver becomes more portable and it don't have
> to carry around supporting legacy bindings.
>
> Moreover, for new SoCs revisions, which still may re-use the same MMC
> controller, the DTB patching isn't needed.
>
>>
>> Given that:
>>
>>   A) The MMC core doesn't contain the concept of one bus controller with
>> multiple "slots".
>>
>>   B) The existing OCTEON device tree bindings should continue to be
>> supported.
>>
>> There are several options.
>>
>>    1) Invent new MMC device tree bindings that are different from what we
>> currently have, but that convey the same information.
>>
>>    1a) Change the OCTEON MMC driver to use only these new bindings, and write
>> some sort of device tree fix up code that runs in early boot to rewrite the
>> device tree MMC properties.   This results in the code supporting the OCTEON
>> MMC devices being split between the driver and system early boot code.  The
>> cost is an increase in system complexity to generate the device tree nodes
>> with new bindings.
>>
>>    1b) Change the OCTEON MMC driver to use either these new bindings or
>> legacy bindings.  In this case all OCTEON MMC code is localized to a single
>> driver file.  There is a small increase in complexity to carry code to
>> decode both new and legacy device tree bindings.
>>
>>    2) Use existing OCTEON MMC device tree bindings, as they are sufficient to
>> achieve a working driver.  Since the code is all specific to the OCTEON MMC
>> driver, any ugliness is contained lexicographically near to the features
>> being implemented.  Any feedback related to the architecture and style of
>> the driver code would be addressed.
>>
>> The current state is #2.  My interpretation of your desires is #1a.
>>
>> I am fine with introducing a new device tree binding.  But, I don't think
>> the kernel as a whole nor this specific OCTEON MMC driver will be improved
>> by adding more device tree synthesis code in early boot.  Any thing that is
>> there should be limited to supporting very old (pre OCTEON MMC) firmware
>> that doesn't supply a device tree.  So I would strongly support either
>> approach #1b or #2.
>
> Let me elaborate once more on how I see the way forward.
>
> For A):
> I have suggested a solution that I think can be generic, see my earlier email.
>
>  From the DTB point of view, I request you to update the slot
> compatible string to a generic one. Is that a difficult task to patch
> the DTB with?

It depends on the length of the new compatible property.  If it is 
longer than the old property, then it is much more difficult.


> If so, let's keep yours as well, but make sure it's documented as deprecated.
>
> Regarding the changes needed to the mmc core, as to enable it to know
> about mmc-slots, this should be quite easy to implement. I even
> volunteer to can help, if you think it's needed.
>
> So to summarize regarding A). I want a generic solution for slot nodes!
>
> For B), there are two cases:
> 1. Legacy bindings that already has a corresponding generic MMC
> binding. Renaming these properties by patching the DTB is an easy
> operation.

It is not so easy to rename things in the DTB.  Any renaming causes the 
string table to grow, so you have to have to allocate extra space for 
it.  Currently everything we do with the DTB is done in-place, so you 
would have to rewrite the early DTB handling code to allocate memory and 
make a copy of the DTB.

>
> 2. Regarding the DT bindings for "power-gpios" and "voltage-ranges".
> Under *no* circumstances I won't accept any similar bindings. Instead
> a GPIO regulator shall be used and I have explained why in an earlier
> response.
>

power-gpios is somewhat of a misnomer.  It may not even control the 
device power supply, on some boards it just isolates the data lines so 
the MMC/SD cannot influence the bus.

voltage-ranges I almost think we can drop, and not deal with.


> I do realize that patching the DTB to create the GPIO regulator is not
> an easy task, that was my initial thought but let's just avoid that!
>
> Instead, you can parse the DTB from arch/SoC specific code to find the
> slot compatible string. Then continue to search for the
> power-gpios/voltage-ranges DT properties and register a GPIO regulator
> via the regulator API for the slot-node device. I believe this should
> be an easy task for you to implement, right!?
>
> Then the mmc octeon driver can ignore the power-gpios and
> voltage-ranges DT bindings and instead just use
> mmc_regulator_get_supply() (and other mmc regulator APIs from the mmc
> core) to deal with power to the card.
>

We will consider that.

David Daney



  reply	other threads:[~2016-04-20 22:33 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-31 15:26 [RESEND PATCH v7 1/2] mmc: OCTEON: Add DT bindings for OCTEON MMC controller Matt Redfearn
2016-03-31 15:26 ` [RESEND PATCH v7 2/2] mmc: OCTEON: Add host driver " Matt Redfearn
2016-04-19 20:46   ` Arnd Bergmann
2016-04-19 21:45     ` David Daney
2016-04-19 22:09       ` Arnd Bergmann
2016-04-19 23:27         ` David Daney
2016-04-19 23:57           ` Arnd Bergmann
2016-04-20  0:02             ` Arnd Bergmann
2016-04-21  8:02           ` Ulf Hansson
2016-04-21 10:15             ` Arnd Bergmann
2016-04-21 12:44               ` Ulf Hansson
2016-04-21 13:19                 ` Arnd Bergmann
2016-04-22 13:54                   ` Ulf Hansson
2016-04-22 16:42                     ` Arnd Bergmann
2016-04-22 17:49                       ` David Daney
2016-04-22 20:23                         ` Arnd Bergmann
2016-04-14 12:45 ` [RESEND PATCH v7 1/2] mmc: OCTEON: Add DT bindings " Ulf Hansson
2016-04-18  8:53   ` Matt Redfearn
2016-04-18 11:13     ` Ulf Hansson
2016-04-18 11:37       ` Matt Redfearn
2016-04-18 12:08         ` Ulf Hansson
2016-04-18 12:57           ` Matt Redfearn
2016-04-18 22:59             ` David Daney
2016-04-19  9:15             ` Ulf Hansson
2016-04-19 16:13               ` David Daney
2016-04-19 19:33                 ` Ulf Hansson
2016-04-19 20:25                   ` David Daney
2016-04-19 20:56                     ` Arnd Bergmann
2016-04-19 21:50                       ` David Daney
2016-04-20  9:32                     ` Ulf Hansson
2016-04-20 22:32                       ` David Daney [this message]
2016-04-20 22:42                         ` Arnd Bergmann

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=57180398.6040507@caviumnetworks.com \
    --to=ddaney@caviumnetworks.com \
    --cc=Matt.Redfearn@imgtec.com \
    --cc=aaron.williams@cavium.com \
    --cc=aleksey.makarov@auriga.com \
    --cc=aleksey.makarov@caviumnetworks.com \
    --cc=cchavva@caviumnetworks.com \
    --cc=david.daney@cavium.com \
    --cc=linux-mmc@vger.kernel.org \
    --cc=lrosenboim@caviumnetworks.com \
    --cc=pswain@cavium.com \
    --cc=ralf@linux-mips.org \
    --cc=robh+dt@kernel.org \
    --cc=ulf.hansson@linaro.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 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.