linux-mmc.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Adrian Hunter <adrian.hunter@intel.com>
To: Ulf Hansson <ulf.hansson@linaro.org>,
	Russell King - ARM Linux <linux@arm.linux.org.uk>
Cc: Shawn Lin <shawn.lin@rock-chips.com>,
	bcm-kernel-feedback-list@broadcom.com,
	linux-rpi-kernel@lists.infradead.org,
	linux-mmc <linux-mmc@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	P L Sai Krishna <lakshmi.sai.krishna.potthuri@xilinx.com>,
	Wan Zongshun <vincent.wan@amd.com>
Subject: Re: [RFC PATCH 0/21] Totally remove SDHCI_QUIRK_BROKEN_CARD_DETECTION quirk
Date: Thu, 28 Jan 2016 14:03:54 +0200	[thread overview]
Message-ID: <56AA03AA.5010706@intel.com> (raw)
In-Reply-To: <CAPDyKFr0MT5xa87F=4LPX7WbNuD0THndTDkvhL9N0h6A5g67eg@mail.gmail.com>

On 27/01/16 17:07, Ulf Hansson wrote:
> On 27 January 2016 at 14:23, Russell King - ARM Linux
> <linux@arm.linux.org.uk> wrote:
>> On Wed, Jan 27, 2016 at 02:59:14PM +0200, Adrian Hunter wrote:
>>> In my view Ulf needs to explain how the SDHCI library is going to work,
>>> particularly in the absence of new callbacks.
>>
>> We need to add new callbacks as part of the conversion to a library,
>> otherwise we're very much into a total rewrite from scratch (which
>> I think is far too much work, and prone to errors) or a big flag day
>> to switch everything over (which will require a moritorium on sdhci
>> patches while the effort to switch everything is ongoing.)
>>
>> Both of those approaches suffer from one huge drawback: there is no
>> way to bisect between them to locate the cause of a regression.
>>
>> A piece-meal approach, where the driver is gradually converted is a
>> far saner approach, because it means that each conversion in the step
>> can be done as a series of transformations, which not only can be
>> properly reviewed, but also bisected - and that is _hugely_ important
>> for the existing state of SDHCI.
>>
>> The chances of some hardware behavioural quirk being missed while
>> trying to convert SDHCI to a library are _extremely_ high, and the
>> only sane approach to this is one which allows a progressive
>> transformation of the driver.
>>
>> Also, the last thing we want is for drivers to end up duplicating
>> entire functions from sdhci.c just because they have one thing
>> different (eg, because they need to do something in the middle of
>> a set_ios() call which no other SDHCI driver needs.)  Having such
>> code duplication will just make maintanence even more of a
>> nightmare.
>>
>> set_ios() is probably one of the worst functions in sdhci right now,
>> and there's no obvious way to split it up into several stand-alone
>> functions which drivers could chain together.
>>
>> I think what needs to happen here is that Ulf needs to leave such
>> decisions about what is acceptable or unacceptable to those who are
>> trying to convert sdhci to a library, otherwise the conversion will
>> probably never happen... unless Ulf wants to get directly involved
>> in the conversion effort, producing patches to make it happen.
>>
> 
> I don't intend to contribute much with actual patches. I am willing to
> help review and also help with expertise around the PM related parts.
> 
> I do realize that some callbacks may still be needed, even in the end
> when sdhci has become a pure library. Although, those should be far
> less then those we have today.
> 
> Currently I am more or less unable to properly maintain sdhci because
> of it's bad code structure. Therefore I have taken a quite simple
> approach by rejecting new callbacks and quirks, in a way to prevent it
> from being worse. To me, the best way forward would be if some of you
> experienced sdhci developers stepped in as a maintainer for it. In
> that way, I can trust the development moving in the "library
> direction" so I can pull back from nacking potential interim sdhci
> callbacks/quirks.
> 
> Does it make sense?

I am happy to help and even be the SDHCI maintainer if Russell King and
others agree.  I have an interest in sdhci-acpi and sdhci-pci and also there
is UHS-II and ADMA3 on the horizon.

I agree with Russell that a re-write would introduce more bugs and more work
than it would be worth.  Making many small steps in the general direction is
preferable.

Initially it would nice to see it made easy for drivers to replace specific
mmc ops and sdhci ops and then call the standard version before/after doing
some custom code.  For example, P L Sai Krishna's auto-tuning problem might
be solved by something to the effect of:

int arasan_execute_tuning(struct mmc_host *mmc, u32 opcode)
{
	struct sdhci_host *host = mmc_priv(mmc);
	int err;

	err = sdhci_execute_tuning(mmc, opcode);
	if (!err)
		arasan_tune_sdclk(host);
	return err;
}

And Wan Zongshun also wanted to be able directly to replace
sdhci_execute_tuning() from sdhci-pci.

As suggested, my get_cd problem could also be solved by replacing the mmc
get_cd op.


  parent reply	other threads:[~2016-01-28 12:07 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-27  5:05 [RFC PATCH 0/21] Totally remove SDHCI_QUIRK_BROKEN_CARD_DETECTION quirk Shawn Lin
2016-01-27  5:06 ` [RFC PATCH 01/21] mmc: sdhci-pltfm: consolidate parsing path Shawn Lin
2016-01-27  5:06 ` [RFC PATCH 02/21] mmc: sdhci-iproc: " Shawn Lin
2016-01-27  5:06 ` [RFC PATCH 03/21] mmc: sdhci-msm: " Shawn Lin
2016-01-27  5:06 ` [RFC PATCH 04/21] mmc: sdhci-of-arasan: " Shawn Lin
2016-01-27  5:06 ` [RFC PATCH 05/21] mmc: sdhci-of-at91: " Shawn Lin
2016-01-27  5:07 ` [RFC PATCH 06/21] mmc: sdhci-of-esdhc: " Shawn Lin
2016-01-27  5:07 ` [RFC PATCH 07/21] mmc: sdhci-pxav3: " Shawn Lin
2016-01-27  5:44   ` Jisheng Zhang
2016-01-27  6:17     ` Shawn Lin
2016-01-27  5:07 ` [RFC PATCH 08/21] mmc: sdhci-sirf: check sdhci_get_of_property return value Shawn Lin
2016-01-27  5:07 ` [RFC PATCH 09/21] mmc: sdhci_f_sdh30: " Shawn Lin
2016-01-27  5:08 ` [RFC PATCH 10/21] mmc: sdhci: remove SDHCI_QUIRK_BROKEN_CARD_DETECTION Shawn Lin
2016-01-27  7:11   ` Haibo Chen
2016-01-27  7:20     ` Shawn Lin
2016-01-27  5:08 ` [RFC PATCH 11/21] mmc: sdhci-acpi: " Shawn Lin
2016-01-27  5:08 ` [RFC PATCH 12/21] mmc: sdhci-bcm-kona: " Shawn Lin
2016-01-27  5:08 ` [RFC PATCH 13/21] mmc: sdhci-bcm2835: " Shawn Lin
2016-01-27  5:08 ` [RFC PATCH 14/21] mmc: sdhci-esdhc-imx: " Shawn Lin
     [not found]   ` <1453871318-3888-1-git-send-email-shawn.lin-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
2016-01-27  6:54     ` Haibo Chen
2016-01-27  6:58       ` Shawn Lin
2016-01-27  5:08 ` [RFC PATCH 15/21] mmc: sdhci-msm: " Shawn Lin
2016-01-27  5:08 ` [RFC PATCH 16/21] mmc: sdhci-of-esdhc: " Shawn Lin
2016-01-27  5:09 ` [RFC PATCH 17/21] mmc: sdhci-pci-core: " Shawn Lin
2016-01-27  5:09 ` [RFC PATCH 18/21] mmc: sdhci-pltfm: " Shawn Lin
2016-01-27  5:09 ` [RFC PATCH 19/21] mmc: sdhci-pxav2: " Shawn Lin
2016-01-27  5:09 ` [RFC PATCH 20/21] mmc: sdhci-s3c: " Shawn Lin
2016-01-27  5:09 ` [RFC PATCH 21/21] mmc: sdhci.h: " Shawn Lin
2016-01-27 12:59 ` [RFC PATCH 0/21] Totally remove SDHCI_QUIRK_BROKEN_CARD_DETECTION quirk Adrian Hunter
2016-01-27 13:23   ` Russell King - ARM Linux
2016-01-27 15:07     ` Ulf Hansson
2016-01-28  2:17       ` Shawn Lin
2016-01-28 11:29         ` One Thousand Gnomes
2016-01-28 15:03           ` Ulf Hansson
2016-01-28 15:54             ` One Thousand Gnomes
2016-01-28 12:03       ` Adrian Hunter [this message]
2016-01-28 15:16         ` Ulf Hansson
2016-01-28 16:27           ` Russell King - ARM Linux
2016-01-29 12:08           ` Adrian Hunter
2016-01-29 17:28             ` Russell King - ARM Linux
2016-02-01 12:32               ` Adrian Hunter
  -- strict thread matches above, loose matches on Subject: below --
2016-01-27  5:04 Shawn Lin
2016-02-04 10:40 ` Ulf Hansson

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=56AA03AA.5010706@intel.com \
    --to=adrian.hunter@intel.com \
    --cc=bcm-kernel-feedback-list@broadcom.com \
    --cc=lakshmi.sai.krishna.potthuri@xilinx.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mmc@vger.kernel.org \
    --cc=linux-rpi-kernel@lists.infradead.org \
    --cc=linux@arm.linux.org.uk \
    --cc=shawn.lin@rock-chips.com \
    --cc=ulf.hansson@linaro.org \
    --cc=vincent.wan@amd.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 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).