U-Boot Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Joakim Tjernlund <Joakim.Tjernlund@infinera.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH] FSL PCI: Configure PCIe reference ratio
Date: Tue, 21 Nov 2017 18:20:11 +0000	[thread overview]
Message-ID: <1511288408.4775.157.camel@infinera.com> (raw)
In-Reply-To: <VI1PR04MB2078E0E79B302DD6B736A7AD9A230@VI1PR04MB2078.eurprd04.prod.outlook.com>

On Tue, 2017-11-21 at 18:04 +0000, York Sun wrote:
> 
> 
> On 11/21/2017 09:52 AM, Joakim Tjernlund wrote:
> > On Tue, 2017-11-21 at 17:45 +0000, York Sun wrote:
> > > 
> > > On 11/21/2017 09:41 AM, Joakim Tjernlund wrote:
> > > > On Tue, 2017-11-21 at 17:32 +0000, York Sun wrote:
> > > > > CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you recognize the sender and know the content is safe.
> > > > > 
> > > > > 
> > > > > On 11/21/2017 09:29 AM, Joakim Tjernlund wrote:
> > > > > > On Tue, 2017-11-21 at 17:23 +0000, York Sun wrote:
> > > > > > > CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you recognize the sender and know the content is safe.
> > > > > > > 
> > > > > > > 
> > > > > > > On 11/21/2017 09:18 AM, Joakim Tjernlund wrote:
> > > > > > > > On Tue, 2017-09-12 at 19:56 +0200, Joakim Tjernlund wrote:
> > > > > > > > > Most FSL PCIe controllers expects 333 MHz PCI reference clock.
> > > > > > > > > This clock is derived from the CCB but in many cases the ref.
> > > > > > > > > clock is not 333 MHz and a divisor needs to be configured.
> > > > > > > > > 
> > > > > > > > > This adds PEX_CCB_DIV #define which can be defined for each
> > > > > > > > > type of CPU/platform.
> > > > > > > > > 
> > > > > > > > > Signed-off-by: Joakim Tjernlund <joakim.tjernlund@infinera.com>
> > > > > > > > > ---
> > > > > > > > >  drivers/pci/fsl_pci_init.c | 6 ++++++
> > > > > > > > >  1 file changed, 6 insertions(+)
> > > > > > > > > 
> > > > > > > > > diff --git a/drivers/pci/fsl_pci_init.c b/drivers/pci/fsl_pci_init.c
> > > > > > > > > index 52792dcd59..4d00b3f26c 100644
> > > > > > > > > --- a/drivers/pci/fsl_pci_init.c
> > > > > > > > > +++ b/drivers/pci/fsl_pci_init.c
> > > > > > > > > @@ -322,6 +322,12 @@ void fsl_pci_init(struct pci_controller *hose, struct fsl_pci_info *pci_info)
> > > > > > > > > 
> > > > > > > > >      pci_setup_indirect(hose, cfg_addr, cfg_data);
> > > > > > > > > 
> > > > > > > > > +#ifdef PEX_CCB_DIV
> > > > > > > > > +    /* Configure the PCIE controller core clock ratio */
> > > > > > > > > +    pci_hose_write_config_dword(hose, dev, 0x440,
> > > > > > > > > +                                ((gd->bus_clk / 1000000) *
> > > > > > > > > +                                 (16 / PEX_CCB_DIV)) / 333);
> > > > > > > > > +#endif
> 
> 
> 
> I took another look at this patch. Would it be appropriate to alway
> write to this register with correct clock?

I sure hope so, the docs I have only mentions this reg having a default value which
needs to be changed in most cases I guess.

> 
> 
> 
> > > > > > > > >      block_rev = in_be32(&pci->block_rev1);
> > > > > > > > >      if (PEX_IP_BLK_REV_2_2 <= block_rev) {
> > > > > > > > >              pi = &pci->pit[2];      /* 0xDC0 */
> > > > > > > > 
> > > > > > > > Ping?
> > > > > > > > 
> > > > > > > >  Jocke
> > > > > > > > 
> > > > > > > 
> > > > > > > I believe Mingkai's last comment was "to add the PCIe clock in gd".
> > > > > > 
> > > > > > Right, I seem to have forgotten to comment on that ...
> > > > > > Why add that complexity/bloat? This is a constant defined by the CPU/SOC so
> > > > > > it makes perfect sense to just #define it.
> > > > > > 
> > > > > 
> > > > > I am leaning to agree with you. The clock is either CCB clock, or CCB/2.
> > > > > Would it be better if you use a Kconfig option and select the divisor by
> > > > > SoC?
> > > > 
> > > > No, this is not something that needs Kconfig, just add the PEX_CCB_DIV #define
> > > > in relevant PPC CPU, like in config_mpc85xx.h
> > > > 
> > > 
> > > So what should be in Kconfig, and what shouldn't? This is per SoC macro.
> > > Sounds like CONFIG_SYS_ in old days.
> > 
> > I must confess, I am not up to date with Kconfig stuff. I based my suggestion on
> > what already exists in config_mpc85xx.h:
> > #elif defined(CONFIG_PPC_T1040) || defined(CONFIG_PPC_T1042) ||\
> > defined(CONFIG_PPC_T1020) || defined(CONFIG_PPC_T1022)
> > #define CONFIG_E5500
> > #define CONFIG_FSL_CORENET            /* Freescale CoreNet platform */
> > #define CONFIG_SYS_FSL_QORIQ_CHASSIS2 /* Freescale Chassis generation 2 */
> > #define CONFIG_SYS_FSL_CORES_PER_CLUSTER 1
> > #define CONFIG_SYS_FSL_QMAN_V3                /* QMAN version 3 */
> > #ifdef CONFIG_SYS_FSL_DDR4
> > #define CONFIG_SYS_FSL_DDRC_GEN4
> > #endif
> > #if defined(CONFIG_PPC_T1040) || defined(CONFIG_PPC_T1042)
> > #define CONFIG_MAX_CPUS                       4
> > #elif defined(CONFIG_PPC_T1020) || defined(CONFIG_PPC_T1022)
> > #define CONFIG_MAX_CPUS                       2
> > #endif
> > #define CONFIG_SYS_FSL_NUM_CC_PLLS    2
> > #define CONFIG_SYS_FSL_CLUSTER_CLOCKS   { 1, 1, 1, 1 }
> > #define CONFIG_SYS_FSL_NUM_LAWS               16
> > #define CONFIG_SYS_FSL_SRDS_1
> > #define CONFIG_SYS_FSL_SEC_COMPAT     5
> > #define CONFIG_SYS_NUM_FMAN           1
> > #define CONFIG_SYS_NUM_FM1_DTSEC      5
> > ....
> > etc.
> > 
> > Seems like a good place to put another CPU constant.
> > 
> 
> Yeah. We have been moving things out of header files and into Kconfig. I
> would avoid adding new macro to header files.

OK, I am happy if don't have to manually select the constant.

> 
> > Anyhow, that patch stands of its own I think. Where to put all constants
> > is another patch for NXP.
> 
> Yes, we can add another patch to define this option for SoCs.

 :)

 Jocke

  reply	other threads:[~2017-11-21 18:20 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-09-12 17:56 [U-Boot] [PATCH] FSL PCI: Configure PCIe reference ratio Joakim Tjernlund
2017-09-14 21:15 ` York Sun
2017-09-15  6:14   ` Mingkai Hu
2017-11-21 17:18 ` Joakim Tjernlund
2017-11-21 17:23   ` York Sun
2017-11-21 17:29     ` Joakim Tjernlund
2017-11-21 17:32       ` York Sun
2017-11-21 17:41         ` Joakim Tjernlund
2017-11-21 17:45           ` York Sun
2017-11-21 17:51             ` Joakim Tjernlund
2017-11-21 18:04               ` York Sun
2017-11-21 18:20                 ` Joakim Tjernlund [this message]
2017-11-21 18:35                   ` York Sun
2017-11-21 18:39                     ` Joakim Tjernlund
2017-11-21 18:41                       ` York Sun
2018-02-27 19:30                   ` York Sun
2018-02-27 19:52                     ` Joakim Tjernlund
2018-02-27 19:54                       ` York Sun
2018-08-02 22:38                         ` Joakim Tjernlund
2018-08-02 22:43                           ` York Sun
2018-08-13 16:29 ` York Sun

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=1511288408.4775.157.camel@infinera.com \
    --to=joakim.tjernlund@infinera.com \
    --cc=u-boot@lists.denx.de \
    /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