From: Bjorn Helgaas <helgaas@kernel.org>
To: Fabio Estevam <festevam@gmail.com>
Cc: Bjorn Helgaas <bhelgaas@google.com>,
Fabio Estevam <fabio.estevam@freescale.com>,
"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>,
Pratyush Anand Thakur <pratyush.anand@gmail.com>,
m-karicheri2 <m-karicheri2@ti.com>,
Lucas Stach <l.stach@pengutronix.de>,
Minghuan Lian <Minghuan.Lian@freescale.com>
Subject: Re: [PATCH v4 1/4] PCI: designware: Use common LTSSM_STATE_MASK definition
Date: Tue, 27 Oct 2015 11:20:56 -0500 [thread overview]
Message-ID: <20151027162056.GA16564@localhost> (raw)
In-Reply-To: <CAOMZO5CYTd+VKj8h6iP_g1A_OAHuFYhM=-wfS5+PzshkbFFnyg@mail.gmail.com>
On Tue, Oct 27, 2015 at 02:05:17PM -0200, Fabio Estevam wrote:
> Hi Bjorn,
>
> On Tue, Oct 27, 2015 at 1:15 PM, Bjorn Helgaas <helgaas@kernel.org> wrote:
> > [+cc Minghuan]
> >
> > On Wed, Oct 21, 2015 at 01:42:50PM -0500, Bjorn Helgaas wrote:
> >> From: Fabio Estevam <fabio.estevam@freescale.com>
> >>
> >> Add a common #define for LTSSM_STATE_MASK and use it in all the
> >> DesignWare-based drivers.
> >>
> >> Note that this changes LTSSM_STATE_MASK from 6 bits (0x3f) to 5 bits (0x1f)
> >> for i.MX6 and Layerscape. We believe this is safe for all DesignWare-based
> >> PCIe cores.
> >
> > OK, DesignWare experts, what's the story on this LTSSM_STATE_MASK?
> >
> > Minghuan says Layerscape requires a mask of 0x3f and it actually uses
> > states 0x20, 0x21, 0x22, and 0x23:
> >
> > MH> Our LTSSM mask is 0x3f because it includes the following states:
> > MH> 0x20 S_RCVRY_EQ0
> > MH> 0x21 S_RCVRY_EQ1
> > MH> 0x22 S_RCVRY_EQ2
> > MH> 0x23 S_RCVRY_EQ3
> >
> > MH> And I checked DesignWare Cores PCI Express Controller Databook
> > MH> v4.21a and found the following descriptor:
> >
> > MH> [5:0]: smlh_ltssm_state: LTSSM current state. Encoding is defined in workspace/src/include/cxpl_defs.vh
> >
> > MH> So could we use the mask 0x3f for all SoCs?
> >
> > I couldn't find the "DesignWare Cores PCI Express Controller Databook
> > v4.21a", but I do see the Keystone mask (sec 3.9.11 of
> > http://www.ti.com/lit/ug/sprugs6d/sprugs6d.pdf) is definitely only 5
> > bits, but that's clearly a TI register, not a generic DesignWare
> > register.
> >
> > So it looks like a mistake to make a common LTSSM_STATE_MASK
> > definition. It looks like this is something with some variation and
> > we shouldn't make assumptions about it being common.
>
> Yes, what if we keep the original behaviour: define a common
> LTSSM_STATE_MASK as 0x3f and then add KS_LTSSM_STATE_MASK as 0x1f for
> Keystone only?
>
> >
> > Now I'm concerned that the LTSSM state definitions I put in
> > drivers/pci/host/pcie-designware.h might not actually apply to
> > everything derived from DW. For example, the Layerscape S_RCVRY
> > states appear to be Layerscape-specific.
> >
> > I don't want to put misleading stuff in
> > drivers/pci/host/pcie-designware.h if it's not really generic. Better
> > to have it in the individual drivers, with a prefix that indicates
> > that it applies to that driver, e.g., KS_LTSSM_MASK, LS_LTSSM_MASK,
> > etc.
>
> The LTSSM states we put in drivers/pci/host/pcie-designware.h are from
> 0-1f, so they are common.
Well, maybe. Are those states documented in the DesignWare spec? I
don't want to put things in pcie-designware.h that are only common by
accident or even by convention. We should only put things there if
they are documented things that users of that IP can rely on.
LTSSM_MASK is documented in the TI Keystone spec, so its definition
probably belongs in pci-keystone-dw.c. The same TI spec also contains
LTSSM state definitions, so I suspect they're in the same boat --
things that might accidentally be the same across devices, but they
don't *have* to be.
So I'm going to drop the following patches from my tree for now:
1ad5fdbc8410 PCI: designware: Add LTSSM state definitions
b09464f77dd2 PCI: designware: Use common LTSSM_STATE_L0 definition
fa15c15fd95d PCI: designware: Use common LTSSM_STATE_RCVRY_LOCK definition
4788fe6ebf45 PCI: designware: Use common LTSSM_STATE_MASK definition
We can add pieces back if they make sense. If we add things to shared
files like pcie-designware.h, I'd like a reference to the DW spec that
justifies the sharing.
Bjorn
next prev parent reply other threads:[~2015-10-27 16:21 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-21 18:42 [PATCH v4 0/4] PCI: designware: LTSSM #define cleanup Bjorn Helgaas
2015-10-21 18:42 ` [PATCH v4 1/4] PCI: designware: Use common LTSSM_STATE_MASK definition Bjorn Helgaas
2015-10-22 14:51 ` Murali Karicheri
2015-10-27 15:15 ` Bjorn Helgaas
2015-10-27 16:05 ` Fabio Estevam
2015-10-27 16:20 ` Bjorn Helgaas [this message]
2015-10-27 23:34 ` Fabio Estevam
2015-10-21 18:42 ` [PATCH v4 2/4] PCI: designware: Use common LTSSM_STATE_RCVRY_LOCK definition Bjorn Helgaas
2015-10-21 18:43 ` [PATCH v4 3/4] PCI: designware: Use common LTSSM_STATE_L0 definition Bjorn Helgaas
2015-10-22 14:53 ` Murali Karicheri
2015-10-21 18:43 ` [PATCH v4 4/4] PCI: spear: Remove unused #defines Bjorn Helgaas
2015-10-21 18:51 ` [PATCH v4 0/4] PCI: designware: LTSSM #define cleanup Fabio Estevam
2015-10-22 9:04 ` Lucas Stach
2015-10-22 15:34 ` Bjorn Helgaas
2015-10-23 6:53 ` Pratyush Anand
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=20151027162056.GA16564@localhost \
--to=helgaas@kernel.org \
--cc=Minghuan.Lian@freescale.com \
--cc=bhelgaas@google.com \
--cc=fabio.estevam@freescale.com \
--cc=festevam@gmail.com \
--cc=l.stach@pengutronix.de \
--cc=linux-pci@vger.kernel.org \
--cc=m-karicheri2@ti.com \
--cc=pratyush.anand@gmail.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).