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 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.