From: Joakim Tjernlund <joakim.tjernlund@transmode.se>
To: "haokexin@gmail.com" <haokexin@gmail.com>
Cc: "ulf.hansson@linaro.org" <ulf.hansson@linaro.org>,
"linux-mmc@vger.kernel.org" <linux-mmc@vger.kernel.org>
Subject: Re: [PATCH] Revert "sdhci-of-esdhc: Support 8BIT bus width."
Date: Thu, 21 May 2015 09:24:43 +0000 [thread overview]
Message-ID: <1432200282.6782.104.camel@transmode.se> (raw)
In-Reply-To: <20150521010750.GU26848@pek-khao-d1.corp.ad.wrs.com>
On Thu, 2015-05-21 at 09:07 +0800, Kevin Hao wrote:
> On Wed, May 20, 2015 at 02:54:27PM +0000, Joakim Tjernlund wrote:
> > On Tue, 2015-05-19 at 17:20 +0800, Kevin Hao wrote:
> > > On Sun, May 17, 2015 at 08:36:07AM +0000, Joakim Tjernlund wrote:
> > > > On Sun, 2015-05-17 at 13:06 +0800, Kevin Hao wrote:
> > > > > >
> > > > > > How about this one:
> > > > > >
> > > > > > From af6b18c056b6064424bd2ab1f9989bbadae5e701 Mon Sep 17 00:00:00 2001
> > > > > > From: Joakim Tjernlund <joakim.tjernlund@transmode.se>
> > > > > > Date: Mon, 20 Apr 2015 22:36:55 +0200
> > > > > > Subject: [PATCHv3] sdhci-of-esdhc: Support 8BIT bus width.
> > > > > >
> > > > > > esdhc_readb()/esdhc_writeb() did not adjust for 8BIT.
> > > > >
> > > > > Do we really need this for the 8bit bus support? There is already a specific
> > > > > API for setting the bus width, this change seems unnecessary to me. That is
> > > > > also why I choose to revert that patch. Did I miss something?
> > > >
> > > > We do, the bus API really only works well when the bus bits are in another
> > > > register but the HOST_CONTROL register.
> > >
> > > Sorry, I didn't get what you mean. Could you elaborate a bit more?
> > clrsetbits_be32(host->ioaddr + SDHCI_HOST_CONTROL,
> > ESDHC_CTRL_BUSWIDTH_MASK, ctrl);
> > and
> > esdhc_writeb(struct sdhci_host *host, int reg) with reg == SDHCI_HOST_CONTROL
> > is the same register so esdhc_writeb() will stomp on the settings esdhc_pltfm_set_bus_width()
> > did earlier.
>
> The .set_bus_width() is the only API we use to set the bus width. We never do
> something like this:
> esdhc_writeb(host, SDHCI_CTRL_8BITBUS, SDHCI_HOST_CONTROL);
ATM, you might at some point.
>
> So the scenario you mentioned above should not happen. That is also why I think
> your changes is not necessary.
The HW 8BIT can be confused with SDHCI_CTRL_HISPD(0x04) as it is the same bit.
However, now I see that esdhc_writeb() has
/* Prevent SDHCI core from writing reserved bits (e.g. HISPD). */
if (reg == SDHCI_HOST_CONTROL)
val &= ~ESDHC_HOST_CONTROL_RES;
and
#define ESDHC_HOST_CONTROL_RES 0x05
so any esdhc_writeb() to SDHCI_HOST_CONTROL will clear the HW 8BIT.
What a mess.
>
> >
> > >
> > > > The only reason 4BIT works is because its bit placement is where
> > > > SDHCI expects it to be. 8BIT is not, so unless readb/writeb funktions compensate
> > > > for that they will overwrite what the bus API set earlier.
> > >
> > > But the implementation of esdhc_pltfm_set_bus_width() already take care about
> > > this. And in the current kernel, we only set the bus width via this API. So why
> > > do you think that it can be overwrote?
> > >
> > > static void esdhc_pltfm_set_bus_width(struct sdhci_host *host, int width)
> > > {
> > > u32 ctrl;
> > >
> > > switch (width) {
> > > case MMC_BUS_WIDTH_8:
> > > ctrl = ESDHC_CTRL_8BITBUS;
> > > break;
> > >
> > > case MMC_BUS_WIDTH_4:
> > > ctrl = ESDHC_CTRL_4BITBUS;
> > > break;
> > >
> > > default:
> > > ctrl = 0;
> > > break;
> > > }
> > >
> > > clrsetbits_be32(host->ioaddr + SDHCI_HOST_CONTROL,
> > > ESDHC_CTRL_BUSWIDTH_MASK, ctrl);
> > > }
> > >
> > > >
> > > > Atleast this is my understanding, Ulf?
> > > >
> > > > Didn't this patch work for you either?
> > >
> > > I don't have a 8bit card at hand. For 4bit card, it works with or without this
> > > change.
> >
> > Sure it does, that was not the question though:
> > Does it still work with this version of the patch?
>
> I think I already answered your question. For 4bit card, it works with or
> without this version of patch.
Ahh, I misread. Sorry for the confusion.
Jocke
next prev parent reply other threads:[~2015-05-21 9:24 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-15 6:29 [PATCH] Revert "sdhci-of-esdhc: Support 8BIT bus width." Kevin Hao
2015-05-15 7:02 ` Joakim Tjernlund
2015-05-15 7:24 ` Joakim Tjernlund
2015-05-15 7:42 ` Kevin Hao
2015-05-15 8:00 ` Joakim Tjernlund
2015-05-15 8:20 ` Joakim Tjernlund
2015-05-15 12:40 ` Joakim Tjernlund
2015-05-17 5:06 ` Kevin Hao
2015-05-17 8:36 ` Joakim Tjernlund
2015-05-18 7:58 ` Ulf Hansson
2015-05-19 9:20 ` Kevin Hao
2015-05-20 14:54 ` Joakim Tjernlund
2015-05-21 1:07 ` Kevin Hao
2015-05-21 9:24 ` Joakim Tjernlund [this message]
2015-05-21 10:56 ` Kevin Hao
2015-05-21 11:45 ` Joakim Tjernlund
2015-05-22 13:46 ` Ulf Hansson
2015-05-15 7:36 ` Kevin Hao
2015-05-15 7:49 ` Joakim Tjernlund
2015-05-17 5:04 ` Kevin Hao
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=1432200282.6782.104.camel@transmode.se \
--to=joakim.tjernlund@transmode.se \
--cc=haokexin@gmail.com \
--cc=linux-mmc@vger.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.