public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Murali Karicheri <m-karicheri2@ti.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [U-boot PATCH] keystone: set default pci mode to root complex
Date: Fri, 19 Dec 2014 11:28:49 -0500	[thread overview]
Message-ID: <54945241.5020503@ti.com> (raw)
In-Reply-To: <1418153546-14445-1-git-send-email-m-karicheri2@ti.com>

On 12/09/2014 02:32 PM, Murali Karicheri wrote:
> pci ports are used as root complex in Linux. So set this as default
> in u-boot for keystone devices
>
> Signed-off-by: Murali Karicheri<m-karicheri2@ti.com>
> ---
>   arch/arm/cpu/armv7/keystone/init.c            |   33 +++++++++++++++++++++++++
>   arch/arm/include/asm/arch-keystone/hardware.h |    1 +
>   2 files changed, 34 insertions(+)
>
> diff --git a/arch/arm/cpu/armv7/keystone/init.c b/arch/arm/cpu/armv7/keystone/init.c
> index c2b9478..c96845c 100644
> --- a/arch/arm/cpu/armv7/keystone/init.c
> +++ b/arch/arm/cpu/armv7/keystone/init.c
> @@ -15,6 +15,16 @@
>   #include<asm/arch/hardware.h>
>   #include<asm/arch/psc_defs.h>
>
> +#define MAX_PCI_PORTS		2
> +enum pci_mode	{
> +	ENDPOINT,
> +	LEGACY_ENDPOINT,
> +	ROOTCOMPLEX,
> +};
> +
> +#define DEVCFG_MODE_MASK		(BIT(2) | BIT(1))
> +#define DEVCFG_MODE_SHIFT		1
> +
>   void chip_configuration_unlock(void)
>   {
>   	__raw_writel(KS2_KICK0_MAGIC, KS2_KICK0);
> @@ -68,6 +78,24 @@ void osr_init(void)
>   }
>   #endif
>
> +/* Function to set up PCIe mode */
> +static void config_pcie_mode(int pcie_port,  enum pci_mode mode)
> +{
> +	u32 val = __raw_readl(KS2_DEVCFG);
> +
> +	if (pcie_port>= MAX_PCI_PORTS)
> +		return;
> +
> +	/**
> +	 * each pci port has two bits for mode and it starts at
> +	 * bit 1. So use port number to get the right bit position.
> +	 */
> +	pcie_port<<= 1;
> +	val&= ~(DEVCFG_MODE_MASK<<  pcie_port);
> +	val |= ((mode<<  DEVCFG_MODE_SHIFT)<<  pcie_port);
> +	__raw_writel(val, KS2_DEVCFG);
> +}
> +
>   int arch_cpu_init(void)
>   {
>   	chip_configuration_unlock();
> @@ -77,8 +105,13 @@ int arch_cpu_init(void)
>   	msmc_share_all_segments(KS2_MSMC_SEGMENT_NETCP);
>   	msmc_share_all_segments(KS2_MSMC_SEGMENT_QM_PDSP);
>   	msmc_share_all_segments(KS2_MSMC_SEGMENT_PCIE0);
> +
> +	/* Initialize the PCIe-0 to work as Root Complex */
> +	config_pcie_mode(0, ROOTCOMPLEX);
>   #if defined(CONFIG_SOC_K2E) || defined(CONFIG_SOC_K2L)
>   	msmc_share_all_segments(KS2_MSMC_SEGMENT_PCIE1);
> +	/* Initialize the PCIe-1 to work as Root Complex */
> +	config_pcie_mode(1, ROOTCOMPLEX);
>   #endif
>   #ifdef CONFIG_SOC_K2L
>   	osr_init();
> diff --git a/arch/arm/include/asm/arch-keystone/hardware.h b/arch/arm/include/asm/arch-keystone/hardware.h
> index be22bdb..16cbcee 100644
> --- a/arch/arm/include/asm/arch-keystone/hardware.h
> +++ b/arch/arm/include/asm/arch-keystone/hardware.h
> @@ -144,6 +144,7 @@ typedef volatile unsigned int   *dv_reg_p;
>   #define KS2_DEVICE_STATE_CTRL_BASE	0x02620000
>   #define KS2_JTAG_ID_REG			(KS2_DEVICE_STATE_CTRL_BASE + 0x18)
>   #define KS2_DEVSTAT			(KS2_DEVICE_STATE_CTRL_BASE + 0x20)
> +#define KS2_DEVCFG			(KS2_DEVICE_STATE_CTRL_BASE + 0x14c)
>
>   /* PSC */
>   #define KS2_PSC_BASE			0x02350000
Tom,

Please apply this when you get a chance if there are no comments.

-- 
Murali Karicheri
Linux Kernel, Texas Instruments

  reply	other threads:[~2014-12-19 16:28 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-09 19:32 [U-Boot] [U-boot PATCH] keystone: set default pci mode to root complex Murali Karicheri
2014-12-19 16:28 ` Murali Karicheri [this message]
2015-01-07 15:11 ` [U-Boot] [U-Boot, U-boot] " Tom Rini

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=54945241.5020503@ti.com \
    --to=m-karicheri2@ti.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