* [U-Boot] [U-boot] [Patch 0/6] Add support for k2e SoC and EVM
@ 2014-07-15 21:59 Ivan Khoronzhuk
2014-07-15 21:59 ` [U-Boot] [U-boot] [Patch 1/6] ARM: keystone2: add K2E SoC hardware definitions Ivan Khoronzhuk
` (5 more replies)
0 siblings, 6 replies; 16+ messages in thread
From: Ivan Khoronzhuk @ 2014-07-15 21:59 UTC (permalink / raw)
To: u-boot
This series adds support for Keystone2 K2E SoC and k2e_evm evaluation board.
Based on "Generalize Keystone2 code for other SoC types" series.
https://www.mail-archive.com/u-boot at lists.denx.de/msg142007.html
Hao Zhang (4):
ARM: keystone2: add K2E SoC hardware definitions
ARM: keystone2: clock: add K2E clock support
ARM: keystone2: add MSMC cache coherency support for K2E SOC
board: k2e-evm: add board support
Ivan Khoronzhuk (2):
keystone2: use CONFIG_SOC_KEYSTONE in common places
ARM: keystone2: spl: add K2E SoC support
arch/arm/cpu/armv7/keystone/Makefile | 1 +
arch/arm/cpu/armv7/keystone/clock-k2e.c | 101 +++++++++++++++++++++
arch/arm/cpu/armv7/keystone/clock.c | 2 +
arch/arm/cpu/armv7/keystone/cmd_clock.c | 31 ++++++-
arch/arm/cpu/armv7/keystone/init.c | 12 ++-
arch/arm/cpu/armv7/keystone/msmc.c | 4 +-
arch/arm/cpu/armv7/keystone/spl.c | 8 ++
arch/arm/include/asm/arch-keystone/clock-k2e.h | 68 ++++++++++++++
arch/arm/include/asm/arch-keystone/clock.h | 4 +
arch/arm/include/asm/arch-keystone/hardware-k2e.h | 44 +++++++++
arch/arm/include/asm/arch-keystone/hardware-k2hk.h | 44 ---------
arch/arm/include/asm/arch-keystone/hardware.h | 63 ++++++++++++-
arch/arm/include/asm/arch-keystone/msmc.h | 17 ++++
board/ti/ks2_evm/Makefile | 2 +
board/ti/ks2_evm/board_k2e.c | 39 ++++++++
board/ti/ks2_evm/ddr3_cfg.c | 40 ++++++++
board/ti/ks2_evm/ddr3_cfg.h | 3 +
board/ti/ks2_evm/ddr3_k2e.c | 55 +++++++++++
boards.cfg | 1 +
common/image-fdt.c | 2 +-
drivers/serial/ns16550.c | 4 +-
include/configs/k2e_evm.h | 37 ++++++++
include/configs/ks2_evm.h | 2 +-
23 files changed, 523 insertions(+), 61 deletions(-)
create mode 100644 arch/arm/cpu/armv7/keystone/clock-k2e.c
create mode 100644 arch/arm/include/asm/arch-keystone/clock-k2e.h
create mode 100644 arch/arm/include/asm/arch-keystone/hardware-k2e.h
create mode 100644 arch/arm/include/asm/arch-keystone/msmc.h
create mode 100644 board/ti/ks2_evm/board_k2e.c
create mode 100644 board/ti/ks2_evm/ddr3_k2e.c
create mode 100644 include/configs/k2e_evm.h
--
1.8.3.2
^ permalink raw reply [flat|nested] 16+ messages in thread
* [U-Boot] [U-boot] [Patch 1/6] ARM: keystone2: add K2E SoC hardware definitions
2014-07-15 21:59 [U-Boot] [U-boot] [Patch 0/6] Add support for k2e SoC and EVM Ivan Khoronzhuk
@ 2014-07-15 21:59 ` Ivan Khoronzhuk
2014-07-26 1:27 ` [U-Boot] [U-Boot, U-boot, " Tom Rini
2014-07-26 1:27 ` Tom Rini
2014-07-15 21:59 ` [U-Boot] [U-boot] [Patch 2/6] ARM: keystone2: clock: add K2E clock support Ivan Khoronzhuk
` (4 subsequent siblings)
5 siblings, 2 replies; 16+ messages in thread
From: Ivan Khoronzhuk @ 2014-07-15 21:59 UTC (permalink / raw)
To: u-boot
From: Hao Zhang <hzhang@ti.com>
This patch adds hardware definitions specific to Keystone II
K2E device. It has a lot common definitions with k2hk SoC, so
move them to common hardware.h. This is preparation patch for
adding K2E SoC support.
Acked-by: Murali Karicheri <m-karicheri2@ti.com>
Signed-off-by: Hao Zhang <hzhang@ti.com>
Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>
---
arch/arm/include/asm/arch-keystone/hardware-k2e.h | 44 ++++++++++++++++
arch/arm/include/asm/arch-keystone/hardware-k2hk.h | 44 ----------------
arch/arm/include/asm/arch-keystone/hardware.h | 61 ++++++++++++++++++++++
3 files changed, 105 insertions(+), 44 deletions(-)
create mode 100644 arch/arm/include/asm/arch-keystone/hardware-k2e.h
diff --git a/arch/arm/include/asm/arch-keystone/hardware-k2e.h b/arch/arm/include/asm/arch-keystone/hardware-k2e.h
new file mode 100644
index 0000000..62172a4
--- /dev/null
+++ b/arch/arm/include/asm/arch-keystone/hardware-k2e.h
@@ -0,0 +1,44 @@
+/*
+ * K2E: SoC definitions
+ *
+ * (C) Copyright 2012-2014
+ * Texas Instruments Incorporated, <www.ti.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#ifndef __ASM_ARCH_HARDWARE_K2E_H
+#define __ASM_ARCH_HARDWARE_K2E_H
+
+/* PA SS Registers */
+#define KS2_PASS_BASE 0x24000000
+
+/* Power and Sleep Controller (PSC) Domains */
+#define KS2_LPSC_MOD_RST 0
+#define KS2_LPSC_USB_1 1
+#define KS2_LPSC_USB 2
+#define KS2_LPSC_EMIF25_SPI 3
+#define KS2_LPSC_TSIP 4
+#define KS2_LPSC_DEBUGSS_TRC 5
+#define KS2_LPSC_TETB_TRC 6
+#define KS2_LPSC_PKTPROC 7
+#define KS2_LPSC_PA KS2_LPSC_PKTPROC
+#define KS2_LPSC_SGMII 8
+#define KS2_LPSC_CPGMAC KS2_LPSC_SGMII
+#define KS2_LPSC_CRYPTO 9
+#define KS2_LPSC_PCIE 10
+#define KS2_LPSC_VUSR0 12
+#define KS2_LPSC_CHIP_SRSS 13
+#define KS2_LPSC_MSMC 14
+#define KS2_LPSC_EMIF4F_DDR3 23
+#define KS2_LPSC_PCIE_1 27
+#define KS2_LPSC_XGE 50
+
+/* Chip Interrupt Controller */
+#define KS2_CIC2_DDR3_ECC_IRQ_NUM -1 /* not defined in K2E */
+#define KS2_CIC2_DDR3_ECC_CHAN_NUM -1 /* not defined in K2E */
+
+/* Number of DSP cores */
+#define KS2_NUM_DSPS 1
+
+#endif
diff --git a/arch/arm/include/asm/arch-keystone/hardware-k2hk.h b/arch/arm/include/asm/arch-keystone/hardware-k2hk.h
index e7dff05..eb132f7 100644
--- a/arch/arm/include/asm/arch-keystone/hardware-k2hk.h
+++ b/arch/arm/include/asm/arch-keystone/hardware-k2hk.h
@@ -10,46 +10,16 @@
#ifndef __ASM_ARCH_HARDWARE_K2HK_H
#define __ASM_ARCH_HARDWARE_K2HK_H
-#define KS2_PLL_CNTRL_BASE 0x02310000
-#define KS2_CLOCK_BASE KS2_PLL_CNTRL_BASE
-#define KS2_RSTCTRL (KS2_PLL_CNTRL_BASE + 0xe8)
-#define KS2_RSTCTRL_KEY 0x5a69
-#define KS2_RSTCTRL_MASK 0xffff0000
-#define KS2_RSTCTRL_SWRST 0xfffe0000
-
-#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_MISC_CTRL (KS2_DEVICE_STATE_CTRL_BASE + 0xc7c)
#define KS2_ARM_PLL_EN BIT(13)
-#define KS2_SPI0_BASE 0x21000400
-#define KS2_SPI1_BASE 0x21000600
-#define KS2_SPI2_BASE 0x21000800
-#define KS2_SPI_BASE KS2_SPI0_BASE
-
-/* Chip configuration unlock codes and registers */
-#define KS2_KICK0 (KS2_DEVICE_STATE_CTRL_BASE + 0x38)
-#define KS2_KICK1 (KS2_DEVICE_STATE_CTRL_BASE + 0x3c)
-#define KS2_KICK0_MAGIC 0x83e70b13
-#define KS2_KICK1_MAGIC 0x95a4f1e0
-
/* PA SS Registers */
#define KS2_PASS_BASE 0x02000000
/* PLL control registers */
-#define KS2_MAINPLLCTL0 (KS2_DEVICE_STATE_CTRL_BASE + 0x350)
-#define KS2_MAINPLLCTL1 (KS2_DEVICE_STATE_CTRL_BASE + 0x354)
-#define KS2_PASSPLLCTL0 (KS2_DEVICE_STATE_CTRL_BASE + 0x358)
-#define KS2_PASSPLLCTL1 (KS2_DEVICE_STATE_CTRL_BASE + 0x35C)
-#define KS2_DDR3APLLCTL0 (KS2_DEVICE_STATE_CTRL_BASE + 0x360)
-#define KS2_DDR3APLLCTL1 (KS2_DEVICE_STATE_CTRL_BASE + 0x364)
#define KS2_DDR3BPLLCTL0 (KS2_DEVICE_STATE_CTRL_BASE + 0x368)
#define KS2_DDR3BPLLCTL1 (KS2_DEVICE_STATE_CTRL_BASE + 0x36C)
-#define KS2_ARMPLLCTL0 (KS2_DEVICE_STATE_CTRL_BASE + 0x370)
-#define KS2_ARMPLLCTL1 (KS2_DEVICE_STATE_CTRL_BASE + 0x374)
/* Power and Sleep Controller (PSC) Domains */
#define KS2_LPSC_MOD 0
@@ -106,25 +76,11 @@
#define KS2_LPSC_XGE 50
#define KS2_LPSC_ARM_SREFLEX 51
-/* DDR3A definitions */
-#define KS2_DDR3A_EMIF_CTRL_BASE 0x21010000
-#define KS2_DDR3A_EMIF_DATA_BASE 0x80000000
-#define KS2_DDR3A_DDRPHYC 0x02329000
/* DDR3B definitions */
#define KS2_DDR3B_EMIF_CTRL_BASE 0x21020000
#define KS2_DDR3B_EMIF_DATA_BASE 0x60000000
#define KS2_DDR3B_DDRPHYC 0x02328000
-/* Queue manager */
-#define KS2_QM_MANAGER_BASE 0x02a02000
-#define KS2_QM_DESC_SETUP_BASE 0x02a03000
-#define KS2_QM_MANAGER_QUEUES_BASEi 0x02a80000
-#define KS2_QM_MANAGER_Q_PROXY_BASE 0x02ac0000
-#define KS2_QM_QUEUE_STATUS_BASE 0x02a40000
-
-/* MSMC control */
-#define KS2_MSMC_CTRL_BASE 0x0bc00000
-
/* Number of DSP cores */
#define KS2_NUM_DSPS 8
diff --git a/arch/arm/include/asm/arch-keystone/hardware.h b/arch/arm/include/asm/arch-keystone/hardware.h
index 133edad..9c86b69 100644
--- a/arch/arm/include/asm/arch-keystone/hardware.h
+++ b/arch/arm/include/asm/arch-keystone/hardware.h
@@ -69,6 +69,11 @@ typedef volatile unsigned int *dv_reg_p;
#define NOSRA_MASK 0x08000000
#define ECC_MASK 0x00000001
+/* DDR3 definitions */
+#define KS2_DDR3A_EMIF_CTRL_BASE 0x21010000
+#define KS2_DDR3A_EMIF_DATA_BASE 0x80000000
+#define KS2_DDR3A_DDRPHYC 0x02329000
+
#define KS2_DDR3_MIDR_OFFSET 0x00
#define KS2_DDR3_STATUS_OFFSET 0x04
#define KS2_DDR3_SDCFG_OFFSET 0x08
@@ -85,12 +90,46 @@ typedef volatile unsigned int *dv_reg_p;
#define KS2_UART0_BASE 0x02530c00
#define KS2_UART1_BASE 0x02531000
+/* Boot Config */
+#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)
+
/* PSC */
#define KS2_PSC_BASE 0x02350000
#define KS2_LPSC_GEM_0 15
#define KS2_LPSC_TETRIS 52
#define KS2_TETRIS_PWR_DOMAIN 31
+/* Chip configuration unlock codes and registers */
+#define KS2_KICK0 (KS2_DEVICE_STATE_CTRL_BASE + 0x38)
+#define KS2_KICK1 (KS2_DEVICE_STATE_CTRL_BASE + 0x3c)
+#define KS2_KICK0_MAGIC 0x83e70b13
+#define KS2_KICK1_MAGIC 0x95a4f1e0
+
+/* PLL control registers */
+#define KS2_MAINPLLCTL0 (KS2_DEVICE_STATE_CTRL_BASE + 0x350)
+#define KS2_MAINPLLCTL1 (KS2_DEVICE_STATE_CTRL_BASE + 0x354)
+#define KS2_PASSPLLCTL0 (KS2_DEVICE_STATE_CTRL_BASE + 0x358)
+#define KS2_PASSPLLCTL1 (KS2_DEVICE_STATE_CTRL_BASE + 0x35C)
+#define KS2_DDR3APLLCTL0 (KS2_DEVICE_STATE_CTRL_BASE + 0x360)
+#define KS2_DDR3APLLCTL1 (KS2_DEVICE_STATE_CTRL_BASE + 0x364)
+#define KS2_ARMPLLCTL0 (KS2_DEVICE_STATE_CTRL_BASE + 0x370)
+#define KS2_ARMPLLCTL1 (KS2_DEVICE_STATE_CTRL_BASE + 0x374)
+
+#define KS2_PLL_CNTRL_BASE 0x02310000
+#define KS2_CLOCK_BASE KS2_PLL_CNTRL_BASE
+#define KS2_RSTCTRL (KS2_PLL_CNTRL_BASE + 0xe8)
+#define KS2_RSTCTRL_KEY 0x5a69
+#define KS2_RSTCTRL_MASK 0xffff0000
+#define KS2_RSTCTRL_SWRST 0xfffe0000
+
+/* SPI */
+#define KS2_SPI0_BASE 0x21000400
+#define KS2_SPI1_BASE 0x21000600
+#define KS2_SPI2_BASE 0x21000800
+#define KS2_SPI_BASE KS2_SPI0_BASE
+
/* AEMIF */
#define KS2_AEMIF_CNTRL_BASE 0x21000a00
#define DAVINCI_ASYNC_EMIF_CNTRL_BASE KS2_AEMIF_CNTRL_BASE
@@ -98,10 +137,24 @@ typedef volatile unsigned int *dv_reg_p;
/* Flag from ks2_debug options to check if DSPs need to stay ON */
#define DBG_LEAVE_DSPS_ON 0x1
+/* Queue manager */
+#define KS2_QM_MANAGER_BASE 0x02a02000
+#define KS2_QM_DESC_SETUP_BASE 0x02a03000
+#define KS2_QM_MANAGER_QUEUES_BASEi 0x02a80000
+#define KS2_QM_MANAGER_Q_PROXY_BASE 0x02ac0000
+#define KS2_QM_QUEUE_STATUS_BASE 0x02a40000
+
+/* MSMC control */
+#define KS2_MSMC_CTRL_BASE 0x0bc00000
+
#ifdef CONFIG_SOC_K2HK
#include <asm/arch/hardware-k2hk.h>
#endif
+#ifdef CONFIG_SOC_K2E
+#include <asm/arch/hardware-k2e.h>
+#endif
+
#ifndef __ASSEMBLY__
static inline int cpu_is_k2hk(void)
{
@@ -111,6 +164,14 @@ static inline int cpu_is_k2hk(void)
return (part_no == 0xb981) ? 1 : 0;
}
+static inline int cpu_is_k2e(void)
+{
+ unsigned int jtag_id = __raw_readl(KS2_JTAG_ID_REG);
+ unsigned int part_no = (jtag_id >> 12) & 0xffff;
+
+ return (part_no == 0xb9a6) ? 1 : 0;
+}
+
static inline int cpu_revision(void)
{
unsigned int jtag_id = __raw_readl(KS2_JTAG_ID_REG);
--
1.8.3.2
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [U-Boot] [U-boot] [Patch 2/6] ARM: keystone2: clock: add K2E clock support
2014-07-15 21:59 [U-Boot] [U-boot] [Patch 0/6] Add support for k2e SoC and EVM Ivan Khoronzhuk
2014-07-15 21:59 ` [U-Boot] [U-boot] [Patch 1/6] ARM: keystone2: add K2E SoC hardware definitions Ivan Khoronzhuk
@ 2014-07-15 21:59 ` Ivan Khoronzhuk
2014-07-26 1:27 ` [U-Boot] [U-Boot, U-boot, " Tom Rini
2014-09-04 14:08 ` [U-Boot] [U-boot] [Patch " Murali Karicheri
2014-07-15 21:59 ` [U-Boot] [U-boot] [Patch 3/6] ARM: keystone2: add MSMC cache coherency support for K2E SOC Ivan Khoronzhuk
` (3 subsequent siblings)
5 siblings, 2 replies; 16+ messages in thread
From: Ivan Khoronzhuk @ 2014-07-15 21:59 UTC (permalink / raw)
To: u-boot
From: Hao Zhang <hzhang@ti.com>
This patch adds clock definitions and commands to support Keystone2
K2E SOC.
Signed-off-by: Hao Zhang <hzhang@ti.com>
Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>
---
arch/arm/cpu/armv7/keystone/Makefile | 1 +
arch/arm/cpu/armv7/keystone/clock-k2e.c | 101 +++++++++++++++++++++++++
arch/arm/cpu/armv7/keystone/clock.c | 2 +
arch/arm/cpu/armv7/keystone/cmd_clock.c | 31 ++++++--
arch/arm/include/asm/arch-keystone/clock-k2e.h | 68 +++++++++++++++++
arch/arm/include/asm/arch-keystone/clock.h | 4 +
include/configs/ks2_evm.h | 2 +-
7 files changed, 203 insertions(+), 6 deletions(-)
create mode 100644 arch/arm/cpu/armv7/keystone/clock-k2e.c
create mode 100644 arch/arm/include/asm/arch-keystone/clock-k2e.h
diff --git a/arch/arm/cpu/armv7/keystone/Makefile b/arch/arm/cpu/armv7/keystone/Makefile
index 74c5160..f8519c0 100644
--- a/arch/arm/cpu/armv7/keystone/Makefile
+++ b/arch/arm/cpu/armv7/keystone/Makefile
@@ -9,6 +9,7 @@ obj-y += init.o
obj-y += psc.o
obj-y += clock.o
obj-$(CONFIG_SOC_K2HK) += clock-k2hk.o
+obj-$(CONFIG_SOC_K2E) += clock-k2e.o
obj-y += cmd_clock.o
obj-y += cmd_mon.o
obj-$(CONFIG_DRIVER_TI_KEYSTONE_NET) += keystone_nav.o
diff --git a/arch/arm/cpu/armv7/keystone/clock-k2e.c b/arch/arm/cpu/armv7/keystone/clock-k2e.c
new file mode 100644
index 0000000..42092e1
--- /dev/null
+++ b/arch/arm/cpu/armv7/keystone/clock-k2e.c
@@ -0,0 +1,101 @@
+/*
+ * Keystone2: get clk rate for K2E
+ *
+ * (C) Copyright 2012-2014
+ * Texas Instruments Incorporated, <www.ti.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/clock_defs.h>
+
+const struct keystone_pll_regs keystone_pll_regs[] = {
+ [CORE_PLL] = {KS2_MAINPLLCTL0, KS2_MAINPLLCTL1},
+ [PASS_PLL] = {KS2_PASSPLLCTL0, KS2_PASSPLLCTL1},
+ [DDR3_PLL] = {KS2_DDR3APLLCTL0, KS2_DDR3APLLCTL1},
+};
+
+/**
+ * pll_freq_get - get pll frequency
+ * Fout = Fref * NF(mult) / NR(prediv) / OD
+ * @pll: pll identifier
+ */
+static unsigned long pll_freq_get(int pll)
+{
+ unsigned long mult = 1, prediv = 1, output_div = 2;
+ unsigned long ret;
+ u32 tmp, reg;
+
+ if (pll == CORE_PLL) {
+ ret = external_clk[sys_clk];
+ if (pllctl_reg_read(pll, ctl) & PLLCTL_PLLEN) {
+ /* PLL mode */
+ tmp = __raw_readl(KS2_MAINPLLCTL0);
+ prediv = (tmp & PLL_DIV_MASK) + 1;
+ mult = (((tmp & PLLM_MULT_HI_SMASK) >> 6) |
+ (pllctl_reg_read(pll, mult) &
+ PLLM_MULT_LO_MASK)) + 1;
+ output_div = ((pllctl_reg_read(pll, secctl) >>
+ PLL_CLKOD_SHIFT) & PLL_CLKOD_MASK) + 1;
+
+ ret = ret / prediv / output_div * mult;
+ }
+ } else {
+ switch (pll) {
+ case PASS_PLL:
+ ret = external_clk[pa_clk];
+ reg = KS2_PASSPLLCTL0;
+ break;
+ case DDR3_PLL:
+ ret = external_clk[ddr3_clk];
+ reg = KS2_DDR3APLLCTL0;
+ break;
+ default:
+ return 0;
+ }
+
+ tmp = __raw_readl(reg);
+
+ if (!(tmp & PLLCTL_BYPASS)) {
+ /* Bypass disabled */
+ prediv = (tmp & PLL_DIV_MASK) + 1;
+ mult = ((tmp >> PLL_MULT_SHIFT) & PLL_MULT_MASK) + 1;
+ output_div = ((tmp >> PLL_CLKOD_SHIFT) &
+ PLL_CLKOD_MASK) + 1;
+ ret = ((ret / prediv) * mult) / output_div;
+ }
+ }
+
+ return ret;
+}
+
+unsigned long clk_get_rate(unsigned int clk)
+{
+ switch (clk) {
+ case core_pll_clk: return pll_freq_get(CORE_PLL);
+ case pass_pll_clk: return pll_freq_get(PASS_PLL);
+ case ddr3_pll_clk: return pll_freq_get(DDR3_PLL);
+ case sys_clk0_1_clk:
+ case sys_clk0_clk: return pll_freq_get(CORE_PLL) / pll0div_read(1);
+ case sys_clk1_clk: return pll_freq_get(CORE_PLL) / pll0div_read(2);
+ case sys_clk2_clk: return pll_freq_get(CORE_PLL) / pll0div_read(3);
+ case sys_clk3_clk: return pll_freq_get(CORE_PLL) / pll0div_read(4);
+ case sys_clk0_2_clk: return clk_get_rate(sys_clk0_clk) / 2;
+ case sys_clk0_3_clk: return clk_get_rate(sys_clk0_clk) / 3;
+ case sys_clk0_4_clk: return clk_get_rate(sys_clk0_clk) / 4;
+ case sys_clk0_6_clk: return clk_get_rate(sys_clk0_clk) / 6;
+ case sys_clk0_8_clk: return clk_get_rate(sys_clk0_clk) / 8;
+ case sys_clk0_12_clk: return clk_get_rate(sys_clk0_clk) / 12;
+ case sys_clk0_24_clk: return clk_get_rate(sys_clk0_clk) / 24;
+ case sys_clk1_3_clk: return clk_get_rate(sys_clk1_clk) / 3;
+ case sys_clk1_4_clk: return clk_get_rate(sys_clk1_clk) / 4;
+ case sys_clk1_6_clk: return clk_get_rate(sys_clk1_clk) / 6;
+ case sys_clk1_12_clk: return clk_get_rate(sys_clk1_clk) / 12;
+ default:
+ break;
+ }
+
+ return 0;
+}
diff --git a/arch/arm/cpu/armv7/keystone/clock.c b/arch/arm/cpu/armv7/keystone/clock.c
index 42b664b..03c1d9f 100644
--- a/arch/arm/cpu/armv7/keystone/clock.c
+++ b/arch/arm/cpu/armv7/keystone/clock.c
@@ -106,6 +106,7 @@ void init_pll(const struct pll_init_data *data)
tmp = pllctl_reg_setbits(data->pll, ctl, PLLCTL_PLLEN);
+#ifndef CONFIG_SOC_K2E
} else if (data->pll == TETRIS_PLL) {
bwadj = pllm >> 1;
/* 1.5 Set PLLCTL0[BYPASS] =1 (enable bypass), */
@@ -156,6 +157,7 @@ void init_pll(const struct pll_init_data *data)
* only applicable for Kepler
*/
setbits_le32(KS2_MISC_CTRL, KS2_ARM_PLL_EN);
+#endif
} else {
setbits_le32(keystone_pll_regs[data->pll].reg1, PLLCTL_ENSAT);
/*
diff --git a/arch/arm/cpu/armv7/keystone/cmd_clock.c b/arch/arm/cpu/armv7/keystone/cmd_clock.c
index afd30f3..d97c95b 100644
--- a/arch/arm/cpu/armv7/keystone/cmd_clock.c
+++ b/arch/arm/cpu/armv7/keystone/cmd_clock.c
@@ -14,10 +14,10 @@
#include <asm/arch/psc_defs.h>
struct pll_init_data cmd_pll_data = {
- .pll = MAIN_PLL,
- .pll_m = 16,
- .pll_d = 1,
- .pll_od = 2,
+ .pll = MAIN_PLL,
+ .pll_m = 16,
+ .pll_d = 1,
+ .pll_od = 2,
};
int do_pll_cmd(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
@@ -27,12 +27,19 @@ int do_pll_cmd(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
if (strncmp(argv[1], "pa", 2) == 0)
cmd_pll_data.pll = PASS_PLL;
+#ifndef CONFIG_SOC_K2E
else if (strncmp(argv[1], "arm", 3) == 0)
cmd_pll_data.pll = TETRIS_PLL;
+#endif
+#ifdef CONFIG_SOC_K2HK
else if (strncmp(argv[1], "ddr3a", 5) == 0)
cmd_pll_data.pll = DDR3A_PLL;
else if (strncmp(argv[1], "ddr3b", 5) == 0)
cmd_pll_data.pll = DDR3B_PLL;
+#else
+ else if (strncmp(argv[1], "ddr3", 4) == 0)
+ cmd_pll_data.pll = DDR3_PLL;
+#endif
else
goto pll_cmd_usage;
@@ -51,11 +58,20 @@ pll_cmd_usage:
return cmd_usage(cmdtp);
}
+#ifdef CONFIG_SOC_K2HK
U_BOOT_CMD(
pllset, 5, 0, do_pll_cmd,
"set pll multiplier and pre divider",
"<pa|arm|ddr3a|ddr3b> <mult> <div> <OD>\n"
);
+#endif
+#ifdef CONFIG_SOC_K2E
+U_BOOT_CMD(
+ pllset, 5, 0, do_pll_cmd,
+ "set pll multiplier and pre divider",
+ "<pa|ddr3> <mult> <div> <OD>\n"
+);
+#endif
int do_getclk_cmd(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
{
@@ -79,7 +95,12 @@ U_BOOT_CMD(
getclk, 2, 0, do_getclk_cmd,
"get clock rate",
"<clk index>\n"
- "See the 'enum clk_e' in the k2hk clock.h for clk indexes\n"
+#ifdef CONFIG_SOC_K2HK
+ "See the 'enum clk_e' in the clock-k2hk.h for clk indexes\n"
+#endif
+#ifdef CONFIG_SOC_K2E
+ "See the 'enum clk_e' in the clock-k2e.h for clk indexes\n"
+#endif
);
int do_psc_cmd(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
diff --git a/arch/arm/include/asm/arch-keystone/clock-k2e.h b/arch/arm/include/asm/arch-keystone/clock-k2e.h
new file mode 100644
index 0000000..4147811
--- /dev/null
+++ b/arch/arm/include/asm/arch-keystone/clock-k2e.h
@@ -0,0 +1,68 @@
+/*
+ * K2E: Clock management APIs
+ *
+ * (C) Copyright 2012-2014
+ * Texas Instruments Incorporated, <www.ti.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#ifndef __ASM_ARCH_CLOCK_K2E_H
+#define __ASM_ARCH_CLOCK_K2E_H
+
+enum ext_clk_e {
+ sys_clk,
+ alt_core_clk,
+ pa_clk,
+ ddr3_clk,
+ mcm_clk,
+ pcie_clk,
+ sgmii_clk,
+ xgmii_clk,
+ usb_clk,
+ ext_clk_count /* number of external clocks */
+};
+
+extern unsigned int external_clk[ext_clk_count];
+
+enum clk_e {
+ core_pll_clk,
+ pass_pll_clk,
+ ddr3_pll_clk,
+ sys_clk0_clk,
+ sys_clk0_1_clk,
+ sys_clk0_2_clk,
+ sys_clk0_3_clk,
+ sys_clk0_4_clk,
+ sys_clk0_6_clk,
+ sys_clk0_8_clk,
+ sys_clk0_12_clk,
+ sys_clk0_24_clk,
+ sys_clk1_clk,
+ sys_clk1_3_clk,
+ sys_clk1_4_clk,
+ sys_clk1_6_clk,
+ sys_clk1_12_clk,
+ sys_clk2_clk,
+ sys_clk3_clk
+};
+
+#define KS2_CLK1_6 sys_clk0_6_clk
+
+/* PLL identifiers */
+enum pll_type_e {
+ CORE_PLL,
+ PASS_PLL,
+ DDR3_PLL,
+};
+
+#define CORE_PLL_800 {CORE_PLL, 16, 1, 2}
+#define CORE_PLL_1000 {CORE_PLL, 20, 1, 2}
+#define CORE_PLL_1200 {CORE_PLL, 24, 1, 2}
+#define PASS_PLL_1000 {PASS_PLL, 20, 1, 2}
+#define DDR3_PLL_200 {DDR3_PLL, 4, 1, 2}
+#define DDR3_PLL_400 {DDR3_PLL, 16, 1, 4}
+#define DDR3_PLL_800 {DDR3_PLL, 16, 1, 2}
+#define DDR3_PLL_333 {DDR3_PLL, 20, 1, 6}
+
+#endif
diff --git a/arch/arm/include/asm/arch-keystone/clock.h b/arch/arm/include/asm/arch-keystone/clock.h
index c7da352..1513c76 100644
--- a/arch/arm/include/asm/arch-keystone/clock.h
+++ b/arch/arm/include/asm/arch-keystone/clock.h
@@ -16,6 +16,10 @@
#include <asm/arch/clock-k2hk.h>
#endif
+#ifdef CONFIG_SOC_K2E
+#include <asm/arch/clock-k2e.h>
+#endif
+
#define MAIN_PLL CORE_PLL
#include <asm/types.h>
diff --git a/include/configs/ks2_evm.h b/include/configs/ks2_evm.h
index 29f0b9b..43db581 100644
--- a/include/configs/ks2_evm.h
+++ b/include/configs/ks2_evm.h
@@ -80,7 +80,7 @@
#define CONFIG_SPI_FLASH_STMICRO
#define CONFIG_DAVINCI_SPI
#define CONFIG_CMD_SPI
-#define CONFIG_SYS_SPI_CLK clk_get_rate(KS2_LPSC_EMIF25_SPI)
+#define CONFIG_SYS_SPI_CLK clk_get_rate(KS2_CLK1_6)
#define CONFIG_SF_DEFAULT_SPEED 30000000
#define CONFIG_ENV_SPI_MAX_HZ CONFIG_SF_DEFAULT_SPEED
#define CONFIG_SYS_SPI0
--
1.8.3.2
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [U-Boot] [U-boot] [Patch 3/6] ARM: keystone2: add MSMC cache coherency support for K2E SOC
2014-07-15 21:59 [U-Boot] [U-boot] [Patch 0/6] Add support for k2e SoC and EVM Ivan Khoronzhuk
2014-07-15 21:59 ` [U-Boot] [U-boot] [Patch 1/6] ARM: keystone2: add K2E SoC hardware definitions Ivan Khoronzhuk
2014-07-15 21:59 ` [U-Boot] [U-boot] [Patch 2/6] ARM: keystone2: clock: add K2E clock support Ivan Khoronzhuk
@ 2014-07-15 21:59 ` Ivan Khoronzhuk
2014-07-26 1:27 ` [U-Boot] [U-Boot, U-boot, " Tom Rini
2014-07-15 21:59 ` [U-Boot] [U-boot] [Patch 4/6] keystone2: use CONFIG_SOC_KEYSTONE in common places Ivan Khoronzhuk
` (2 subsequent siblings)
5 siblings, 1 reply; 16+ messages in thread
From: Ivan Khoronzhuk @ 2014-07-15 21:59 UTC (permalink / raw)
To: u-boot
From: Hao Zhang <hzhang@ti.com>
This patch adds Keystone2 K2E SOC specific code to support
MSMC cache coherency. Also create header file for msmc to hold
its API.
Acked-by: Murali Karicheri <m-karicheri2@ti.com>
Signed-off-by: Hao Zhang <hzhang@ti.com>
Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>
---
arch/arm/cpu/armv7/keystone/init.c | 12 +++++++-----
arch/arm/cpu/armv7/keystone/msmc.c | 4 ++--
arch/arm/include/asm/arch-keystone/hardware.h | 1 -
arch/arm/include/asm/arch-keystone/msmc.h | 17 +++++++++++++++++
4 files changed, 26 insertions(+), 8 deletions(-)
create mode 100644 arch/arm/include/asm/arch-keystone/msmc.h
diff --git a/arch/arm/cpu/armv7/keystone/init.c b/arch/arm/cpu/armv7/keystone/init.c
index f4c293a..a8f8aee 100644
--- a/arch/arm/cpu/armv7/keystone/init.c
+++ b/arch/arm/cpu/armv7/keystone/init.c
@@ -10,6 +10,7 @@
#include <common.h>
#include <ns16550.h>
#include <asm/io.h>
+#include <asm/arch/msmc.h>
#include <asm/arch/clock.h>
#include <asm/arch/hardware.h>
@@ -24,11 +25,12 @@ int arch_cpu_init(void)
chip_configuration_unlock();
icache_enable();
-#ifdef CONFIG_SOC_K2HK
- share_all_segments(8);
- share_all_segments(9);
- share_all_segments(10); /* QM PDSP */
- share_all_segments(11); /* PCIE */
+ msmc_share_all_segments(8); /* TETRIS */
+ msmc_share_all_segments(9); /* NETCP */
+ msmc_share_all_segments(10); /* QM PDSP */
+ msmc_share_all_segments(11); /* PCIE 0 */
+#ifdef CONFIG_SOC_K2E
+ msmc_share_all_segments(13); /* PCIE 1 */
#endif
/*
diff --git a/arch/arm/cpu/armv7/keystone/msmc.c b/arch/arm/cpu/armv7/keystone/msmc.c
index af858fa..7d8e597 100644
--- a/arch/arm/cpu/armv7/keystone/msmc.c
+++ b/arch/arm/cpu/armv7/keystone/msmc.c
@@ -8,7 +8,7 @@
*/
#include <common.h>
-#include <asm/arch/hardware.h>
+#include <asm/arch/msmc.h>
struct mpax {
u32 mpaxl;
@@ -56,7 +56,7 @@ struct msms_regs {
};
-void share_all_segments(int priv_id)
+void msmc_share_all_segments(int priv_id)
{
struct msms_regs *msmc = (struct msms_regs *)KS2_MSMC_CTRL_BASE;
int j;
diff --git a/arch/arm/include/asm/arch-keystone/hardware.h b/arch/arm/include/asm/arch-keystone/hardware.h
index 9c86b69..bcfb551 100644
--- a/arch/arm/include/asm/arch-keystone/hardware.h
+++ b/arch/arm/include/asm/arch-keystone/hardware.h
@@ -180,7 +180,6 @@ static inline int cpu_revision(void)
return rev;
}
-void share_all_segments(int priv_id);
int cpu_to_bus(u32 *ptr, u32 length);
void sdelay(unsigned long);
diff --git a/arch/arm/include/asm/arch-keystone/msmc.h b/arch/arm/include/asm/arch-keystone/msmc.h
new file mode 100644
index 0000000..c320db5
--- /dev/null
+++ b/arch/arm/include/asm/arch-keystone/msmc.h
@@ -0,0 +1,17 @@
+/*
+ * MSMC controller
+ *
+ * (C) Copyright 2014
+ * Texas Instruments Incorporated, <www.ti.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#ifndef _MSMC_H_
+#define _MSMC_H_
+
+#include <asm/arch/hardware.h>
+
+void msmc_share_all_segments(int priv_id);
+
+#endif
--
1.8.3.2
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [U-Boot] [U-boot] [Patch 4/6] keystone2: use CONFIG_SOC_KEYSTONE in common places
2014-07-15 21:59 [U-Boot] [U-boot] [Patch 0/6] Add support for k2e SoC and EVM Ivan Khoronzhuk
` (2 preceding siblings ...)
2014-07-15 21:59 ` [U-Boot] [U-boot] [Patch 3/6] ARM: keystone2: add MSMC cache coherency support for K2E SOC Ivan Khoronzhuk
@ 2014-07-15 21:59 ` Ivan Khoronzhuk
2014-07-26 1:27 ` [U-Boot] [U-Boot, U-boot, " Tom Rini
2014-07-15 21:59 ` [U-Boot] [U-boot] [Patch 5/6] ARM: keystone2: spl: add K2E SoC support Ivan Khoronzhuk
2014-07-15 21:59 ` [U-Boot] [U-boot] [Patch 6/6] board: k2e-evm: add board support Ivan Khoronzhuk
5 siblings, 1 reply; 16+ messages in thread
From: Ivan Khoronzhuk @ 2014-07-15 21:59 UTC (permalink / raw)
To: u-boot
Use CONFIG_SOC_KEYSTONE in common places instead of defining
a lot of "if def .. || if def " for different Keystone2 SoC types.
Acked-by: Murali Karicheri <m-karicheri2@ti.com>
Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>
---
common/image-fdt.c | 2 +-
drivers/serial/ns16550.c | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/common/image-fdt.c b/common/image-fdt.c
index 5d64009..f87cc5a 100644
--- a/common/image-fdt.c
+++ b/common/image-fdt.c
@@ -487,7 +487,7 @@ int image_setup_libfdt(bootm_headers_t *images, void *blob,
if (!ft_verify_fdt(blob))
return -1;
-#ifdef CONFIG_SOC_K2HK
+#if defined(CONFIG_SOC_KEYSTONE)
if (IMAGE_OF_BOARD_SETUP)
ft_board_setup_ex(blob, gd->bd);
#endif
diff --git a/drivers/serial/ns16550.c b/drivers/serial/ns16550.c
index f26979d..8e7052d 100644
--- a/drivers/serial/ns16550.c
+++ b/drivers/serial/ns16550.c
@@ -30,7 +30,7 @@
#define serial_in(y) readb(y)
#endif
-#if defined(CONFIG_K2HK_EVM)
+#if defined(CONFIG_SOC_KEYSTONE)
#define UART_REG_VAL_PWREMU_MGMT_UART_DISABLE 0
#define UART_REG_VAL_PWREMU_MGMT_UART_ENABLE ((1 << 14) | (1 << 13) | (1 << 0))
#undef UART_MCRVAL
@@ -88,7 +88,7 @@ void NS16550_init(NS16550_t com_port, int baud_divisor)
/* /16 is proper to hit 115200 with 48MHz */
serial_out(0, &com_port->mdr1);
#endif /* CONFIG_OMAP */
-#if defined(CONFIG_K2HK_EVM)
+#if defined(CONFIG_SOC_KEYSTONE)
serial_out(UART_REG_VAL_PWREMU_MGMT_UART_ENABLE, &com_port->regC);
#endif
}
--
1.8.3.2
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [U-Boot] [U-boot] [Patch 5/6] ARM: keystone2: spl: add K2E SoC support
2014-07-15 21:59 [U-Boot] [U-boot] [Patch 0/6] Add support for k2e SoC and EVM Ivan Khoronzhuk
` (3 preceding siblings ...)
2014-07-15 21:59 ` [U-Boot] [U-boot] [Patch 4/6] keystone2: use CONFIG_SOC_KEYSTONE in common places Ivan Khoronzhuk
@ 2014-07-15 21:59 ` Ivan Khoronzhuk
2014-07-26 1:27 ` [U-Boot] [U-Boot, U-boot, " Tom Rini
2014-07-15 21:59 ` [U-Boot] [U-boot] [Patch 6/6] board: k2e-evm: add board support Ivan Khoronzhuk
5 siblings, 1 reply; 16+ messages in thread
From: Ivan Khoronzhuk @ 2014-07-15 21:59 UTC (permalink / raw)
To: u-boot
Keystone2 K2E SoC has slightly different spl pll settings then
K2HK, so correct this.
Acked-by: Murali Karicheri <m-karicheri2@ti.com>
Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>
---
arch/arm/cpu/armv7/keystone/spl.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/arch/arm/cpu/armv7/keystone/spl.c b/arch/arm/cpu/armv7/keystone/spl.c
index e07b64d..d4b0e9b 100644
--- a/arch/arm/cpu/armv7/keystone/spl.c
+++ b/arch/arm/cpu/armv7/keystone/spl.c
@@ -18,10 +18,18 @@
DECLARE_GLOBAL_DATA_PTR;
+#ifdef CONFIG_K2HK_EVM
static struct pll_init_data spl_pll_config[] = {
CORE_PLL_799,
TETRIS_PLL_500,
};
+#endif
+
+#ifdef CONFIG_K2E_EVM
+static struct pll_init_data spl_pll_config[] = {
+ CORE_PLL_800,
+};
+#endif
void spl_init_keystone_plls(void)
{
--
1.8.3.2
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [U-Boot] [U-boot] [Patch 6/6] board: k2e-evm: add board support
2014-07-15 21:59 [U-Boot] [U-boot] [Patch 0/6] Add support for k2e SoC and EVM Ivan Khoronzhuk
` (4 preceding siblings ...)
2014-07-15 21:59 ` [U-Boot] [U-boot] [Patch 5/6] ARM: keystone2: spl: add K2E SoC support Ivan Khoronzhuk
@ 2014-07-15 21:59 ` Ivan Khoronzhuk
2014-07-26 1:28 ` [U-Boot] [U-Boot,U-boot,6/6] " Tom Rini
5 siblings, 1 reply; 16+ messages in thread
From: Ivan Khoronzhuk @ 2014-07-15 21:59 UTC (permalink / raw)
To: u-boot
From: Hao Zhang <hzhang@ti.com>
This patch adds Keystone2 k2e_evm evaluation board support.
Signed-off-by: Hao Zhang <hzhang@ti.com>
Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>
---
arch/arm/include/asm/arch-keystone/hardware.h | 1 +
board/ti/ks2_evm/Makefile | 2 +
board/ti/ks2_evm/board_k2e.c | 39 +++++++++++++++++++
board/ti/ks2_evm/ddr3_cfg.c | 40 +++++++++++++++++++
board/ti/ks2_evm/ddr3_cfg.h | 3 ++
board/ti/ks2_evm/ddr3_k2e.c | 55 +++++++++++++++++++++++++++
boards.cfg | 1 +
include/configs/k2e_evm.h | 37 ++++++++++++++++++
8 files changed, 178 insertions(+)
create mode 100644 board/ti/ks2_evm/board_k2e.c
create mode 100644 board/ti/ks2_evm/ddr3_k2e.c
create mode 100644 include/configs/k2e_evm.h
diff --git a/arch/arm/include/asm/arch-keystone/hardware.h b/arch/arm/include/asm/arch-keystone/hardware.h
index bcfb551..ddeb06e 100644
--- a/arch/arm/include/asm/arch-keystone/hardware.h
+++ b/arch/arm/include/asm/arch-keystone/hardware.h
@@ -119,6 +119,7 @@ typedef volatile unsigned int *dv_reg_p;
#define KS2_PLL_CNTRL_BASE 0x02310000
#define KS2_CLOCK_BASE KS2_PLL_CNTRL_BASE
+#define KS2_RSTCTRL_RSTYPE (KS2_PLL_CNTRL_BASE + 0xe4)
#define KS2_RSTCTRL (KS2_PLL_CNTRL_BASE + 0xe8)
#define KS2_RSTCTRL_KEY 0x5a69
#define KS2_RSTCTRL_MASK 0xffff0000
diff --git a/board/ti/ks2_evm/Makefile b/board/ti/ks2_evm/Makefile
index 774a7d5..00f1164 100644
--- a/board/ti/ks2_evm/Makefile
+++ b/board/ti/ks2_evm/Makefile
@@ -9,3 +9,5 @@ obj-y += board.o
obj-y += ddr3_cfg.o
obj-$(CONFIG_K2HK_EVM) += board_k2hk.o
obj-$(CONFIG_K2HK_EVM) += ddr3_k2hk.o
+obj-$(CONFIG_K2E_EVM) += board_k2e.o
+obj-$(CONFIG_K2E_EVM) += ddr3_k2e.o
diff --git a/board/ti/ks2_evm/board_k2e.c b/board/ti/ks2_evm/board_k2e.c
new file mode 100644
index 0000000..d2499b7
--- /dev/null
+++ b/board/ti/ks2_evm/board_k2e.c
@@ -0,0 +1,39 @@
+/*
+ * K2E EVM : Board initialization
+ *
+ * (C) Copyright 2014
+ * Texas Instruments Incorporated, <www.ti.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/arch/ddr3.h>
+#include <asm/arch/hardware.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+unsigned int external_clk[ext_clk_count] = {
+ [sys_clk] = 100000000,
+ [alt_core_clk] = 100000000,
+ [pa_clk] = 100000000,
+ [ddr3_clk] = 100000000,
+ [mcm_clk] = 312500000,
+ [pcie_clk] = 100000000,
+ [sgmii_clk] = 156250000,
+ [xgmii_clk] = 156250000,
+ [usb_clk] = 100000000,
+};
+
+static struct pll_init_data pll_config[] = {
+ CORE_PLL_1200,
+ PASS_PLL_1000,
+};
+
+#if defined(CONFIG_BOARD_EARLY_INIT_F)
+int board_early_init_f(void)
+{
+ init_plls(ARRAY_SIZE(pll_config), pll_config);
+ return 0;
+}
+#endif
diff --git a/board/ti/ks2_evm/ddr3_cfg.c b/board/ti/ks2_evm/ddr3_cfg.c
index 6e55af9..f7da9f2 100644
--- a/board/ti/ks2_evm/ddr3_cfg.c
+++ b/board/ti/ks2_evm/ddr3_cfg.c
@@ -93,6 +93,46 @@ struct ddr3_emif_config ddr3_1333_2g = {
};
#endif
+#ifdef CONFIG_K2E_EVM
+/* DDR3 PHY configuration data with 1600M rate, and 4GB size */
+struct ddr3_phy_config ddr3phy_1600_4g = {
+ .pllcr = 0x0001C000ul,
+ .pgcr1_mask = (IODDRM_MASK | ZCKSEL_MASK),
+ .pgcr1_val = ((1 << 2) | (1 << 7) | (1 << 23)),
+ .ptr0 = 0x42C21590ul,
+ .ptr1 = 0xD05612C0ul,
+ .ptr2 = 0, /* not set in gel */
+ .ptr3 = 0x08861A80ul,
+ .ptr4 = 0x0C827100ul,
+ .dcr_mask = (PDQ_MASK | MPRDQ_MASK | BYTEMASK_MASK),
+ .dcr_val = ((1 << 10)),
+ .dtpr0 = 0x9D9CBB66ul,
+ .dtpr1 = 0x12840300ul,
+ .dtpr2 = 0x5002D200ul,
+ .mr0 = 0x00001C70ul,
+ .mr1 = 0x00000006ul,
+ .mr2 = 0x00000018ul,
+ .dtcr = 0x710035C7ul,
+ .pgcr2 = 0x00F07A12ul,
+ .zq0cr1 = 0x0001005Dul,
+ .zq1cr1 = 0x0001005Bul,
+ .zq2cr1 = 0x0001005Bul,
+ .pir_v1 = 0x00000033ul,
+ .pir_v2 = 0x0000FF81ul,
+};
+
+/* DDR3 EMIF configuration data with 1600M rate, and 4GB size */
+struct ddr3_emif_config ddr3_1600_4g = {
+ .sdcfg = 0x6200CE62ul,
+ .sdtim1 = 0x166C9855ul,
+ .sdtim2 = 0x00001D4Aul,
+ .sdtim3 = 0x421DFF53ul,
+ .sdtim4 = 0x543F07FFul,
+ .zqcfg = 0x70073200ul,
+ .sdrfc = 0x00001869ul,
+};
+#endif
+
int ddr3_get_dimm_params(char *dimm_name)
{
int ret;
diff --git a/board/ti/ks2_evm/ddr3_cfg.h b/board/ti/ks2_evm/ddr3_cfg.h
index d14bac3..15fcf52 100644
--- a/board/ti/ks2_evm/ddr3_cfg.h
+++ b/board/ti/ks2_evm/ddr3_cfg.h
@@ -16,6 +16,9 @@ extern struct ddr3_emif_config ddr3_1600_8g;
extern struct ddr3_phy_config ddr3phy_1333_2g;
extern struct ddr3_emif_config ddr3_1333_2g;
+extern struct ddr3_phy_config ddr3phy_1600_4g;
+extern struct ddr3_emif_config ddr3_1600_4g;
+
int ddr3_get_dimm_params(char *dimm_name);
#endif /* __DDR3_CFG_H */
diff --git a/board/ti/ks2_evm/ddr3_k2e.c b/board/ti/ks2_evm/ddr3_k2e.c
new file mode 100644
index 0000000..40fd966
--- /dev/null
+++ b/board/ti/ks2_evm/ddr3_k2e.c
@@ -0,0 +1,55 @@
+/*
+ * Keystone2: DDR3 initialization
+ *
+ * (C) Copyright 2014
+ * Texas Instruments Incorporated, <www.ti.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <common.h>
+#include "ddr3_cfg.h"
+#include <asm/arch/ddr3.h>
+
+static int ddr3_size;
+static struct pll_init_data ddr3_400 = DDR3_PLL_400;
+
+void ddr3_init(void)
+{
+ char dimm_name[32];
+
+ if (~(readl(KS2_PLL_CNTRL_BASE + KS2_RSTCTRL_RSTYPE) & 0x1))
+ init_pll(&ddr3_400);
+
+ ddr3_get_dimm_params(dimm_name);
+
+ printf("Detected SO-DIMM [%s]\n", dimm_name);
+
+ /* Reset DDR3 PHY after PLL enabled */
+ ddr3_reset_ddrphy();
+
+ if (!strcmp(dimm_name, "18KSF1G72HZ-1G6E2 ")) {
+ /* 8G SO-DIMM */
+ ddr3_size = 8;
+ printf("DRAM: 8 GiB\n");
+ ddr3phy_1600_8g.zq0cr1 |= 0x10000;
+ ddr3phy_1600_8g.zq1cr1 |= 0x10000;
+ ddr3phy_1600_8g.zq2cr1 |= 0x10000;
+ ddr3_init_ddrphy(KS2_DDR3A_DDRPHYC, &ddr3phy_1600_8g);
+ ddr3_init_ddremif(KS2_DDR3A_EMIF_CTRL_BASE, &ddr3_1600_8g);
+ } else if (!strcmp(dimm_name, "18KSF51272HZ-1G6K2")) {
+ /* 4G SO-DIMM */
+ ddr3_size = 4;
+ printf("DRAM: 4 GiB\n");
+ ddr3_init_ddrphy(KS2_DDR3A_DDRPHYC, &ddr3phy_1600_4g);
+ ddr3_init_ddremif(KS2_DDR3A_EMIF_CTRL_BASE, &ddr3_1600_4g);
+ }
+}
+
+/**
+ * ddr3_get_size - return ddr3 size in GiB
+ */
+int ddr3_get_size(void)
+{
+ return ddr3_size;
+}
diff --git a/boards.cfg b/boards.cfg
index e08ccae..24dab91 100644
--- a/boards.cfg
+++ b/boards.cfg
@@ -299,6 +299,7 @@ Active arm armv7 exynos samsung trats2
Active arm armv7 exynos samsung universal_c210 s5pc210_universal - Przemyslaw Marczak <p.marczak@samsung.com>
Active arm armv7 highbank - highbank highbank - Rob Herring <robh@kernel.org>
Active arm armv7 keystone ti ks2_evm k2hk_evm - Vitaly Andrianov <vitalya@ti.com>
+Active arm armv7 keystone ti ks2_evm k2e_evm - Vitaly Andrianov <vitalya@ti.com>
Active arm armv7 mx5 denx m53evk m53evk m53evk:IMX_CONFIG=board/denx/m53evk/imximage.cfg Marek Vasut <marek.vasut@gmail.com>
Active arm armv7 mx5 esg ima3-mx53 ima3-mx53 ima3-mx53:IMX_CONFIG=board/esg/ima3-mx53/imximage.cfg -
Active arm armv7 mx5 freescale mx51evk mx51evk mx51evk:IMX_CONFIG=board/freescale/mx51evk/imximage.cfg Stefano Babic <sbabic@denx.de>
diff --git a/include/configs/k2e_evm.h b/include/configs/k2e_evm.h
new file mode 100644
index 0000000..3502d10
--- /dev/null
+++ b/include/configs/k2e_evm.h
@@ -0,0 +1,37 @@
+/*
+ * Configuration header file for TI's k2e-evm
+ *
+ * (C) Copyright 2012-2014
+ * Texas Instruments Incorporated, <www.ti.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#ifndef __CONFIG_K2E_EVM_H
+#define __CONFIG_K2E_EVM_H
+
+/* Platform type */
+#define CONFIG_SOC_K2E
+#define CONFIG_K2E_EVM
+
+/* U-Boot general configuration */
+#define CONFIG_SYS_PROMPT "K2E EVM # "
+
+#define KS2_ARGS_UBI "args_ubi=setenv bootargs ${bootargs} rootfstype=ubifs "\
+ "root=ubi0:rootfs rootflags=sync rw ubi.mtd=2,2048\0"
+
+#define KS2_FDT_NAME "name_fdt=k2e-evm.dtb\0"
+#define KS2_ADDR_MON "addr_mon=0x0c140000\0"
+#define KS2_NAME_MON "name_mon=skern-k2e-evm.bin\0"
+#define NAME_UBOOT "name_uboot=u-boot-spi-k2e-evm.gph\0"
+#define NAME_UBI "name_ubi=k2e-evm-ubifs.ubi\0"
+
+#include <configs/ks2_evm.h>
+
+/* SPL SPI Loader Configuration */
+#define CONFIG_SPL_TEXT_BASE 0x0c100000
+
+/* NAND Configuration */
+#define CONFIG_SYS_NAND_PAGE_2K
+
+#endif /* __CONFIG_K2E_EVM_H */
--
1.8.3.2
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [U-Boot] [U-Boot, U-boot, 1/6] ARM: keystone2: add K2E SoC hardware definitions
2014-07-15 21:59 ` [U-Boot] [U-boot] [Patch 1/6] ARM: keystone2: add K2E SoC hardware definitions Ivan Khoronzhuk
@ 2014-07-26 1:27 ` Tom Rini
2014-07-26 1:27 ` Tom Rini
1 sibling, 0 replies; 16+ messages in thread
From: Tom Rini @ 2014-07-26 1:27 UTC (permalink / raw)
To: u-boot
On Wed, Jul 16, 2014 at 12:59:22AM +0300, Khoronzhuk, Ivan wrote:
> From: Hao Zhang <hzhang@ti.com>
>
> This patch adds hardware definitions specific to Keystone II
> K2E device. It has a lot common definitions with k2hk SoC, so
> move them to common hardware.h. This is preparation patch for
> adding K2E SoC support.
>
> Acked-by: Murali Karicheri <m-karicheri2@ti.com>
> Signed-off-by: Hao Zhang <hzhang@ti.com>
> Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>
Applied to u-boot-ti/master, thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140725/df91976a/attachment.pgp>
^ permalink raw reply [flat|nested] 16+ messages in thread
* [U-Boot] [U-Boot, U-boot, 1/6] ARM: keystone2: add K2E SoC hardware definitions
2014-07-15 21:59 ` [U-Boot] [U-boot] [Patch 1/6] ARM: keystone2: add K2E SoC hardware definitions Ivan Khoronzhuk
2014-07-26 1:27 ` [U-Boot] [U-Boot, U-boot, " Tom Rini
@ 2014-07-26 1:27 ` Tom Rini
1 sibling, 0 replies; 16+ messages in thread
From: Tom Rini @ 2014-07-26 1:27 UTC (permalink / raw)
To: u-boot
On Wed, Jul 16, 2014 at 12:59:22AM +0300, Khoronzhuk, Ivan wrote:
> From: Hao Zhang <hzhang@ti.com>
>
> This patch adds hardware definitions specific to Keystone II
> K2E device. It has a lot common definitions with k2hk SoC, so
> move them to common hardware.h. This is preparation patch for
> adding K2E SoC support.
>
> Acked-by: Murali Karicheri <m-karicheri2@ti.com>
> Signed-off-by: Hao Zhang <hzhang@ti.com>
> Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>
Applied to u-boot-ti/master, thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140725/66b8825d/attachment.pgp>
^ permalink raw reply [flat|nested] 16+ messages in thread
* [U-Boot] [U-Boot, U-boot, 2/6] ARM: keystone2: clock: add K2E clock support
2014-07-15 21:59 ` [U-Boot] [U-boot] [Patch 2/6] ARM: keystone2: clock: add K2E clock support Ivan Khoronzhuk
@ 2014-07-26 1:27 ` Tom Rini
2014-09-04 14:08 ` [U-Boot] [U-boot] [Patch " Murali Karicheri
1 sibling, 0 replies; 16+ messages in thread
From: Tom Rini @ 2014-07-26 1:27 UTC (permalink / raw)
To: u-boot
On Wed, Jul 16, 2014 at 12:59:23AM +0300, Khoronzhuk, Ivan wrote:
> From: Hao Zhang <hzhang@ti.com>
>
> This patch adds clock definitions and commands to support Keystone2
> K2E SOC.
>
> Signed-off-by: Hao Zhang <hzhang@ti.com>
> Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>
Applied to u-boot-ti/master, thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140725/0bc5c2a7/attachment.pgp>
^ permalink raw reply [flat|nested] 16+ messages in thread
* [U-Boot] [U-Boot, U-boot, 3/6] ARM: keystone2: add MSMC cache coherency support for K2E SOC
2014-07-15 21:59 ` [U-Boot] [U-boot] [Patch 3/6] ARM: keystone2: add MSMC cache coherency support for K2E SOC Ivan Khoronzhuk
@ 2014-07-26 1:27 ` Tom Rini
0 siblings, 0 replies; 16+ messages in thread
From: Tom Rini @ 2014-07-26 1:27 UTC (permalink / raw)
To: u-boot
On Wed, Jul 16, 2014 at 12:59:24AM +0300, Khoronzhuk, Ivan wrote:
> From: Hao Zhang <hzhang@ti.com>
>
> This patch adds Keystone2 K2E SOC specific code to support
> MSMC cache coherency. Also create header file for msmc to hold
> its API.
>
> Acked-by: Murali Karicheri <m-karicheri2@ti.com>
> Signed-off-by: Hao Zhang <hzhang@ti.com>
> Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>
Applied to u-boot-ti/master, thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140725/977d2545/attachment.pgp>
^ permalink raw reply [flat|nested] 16+ messages in thread
* [U-Boot] [U-Boot, U-boot, 4/6] keystone2: use CONFIG_SOC_KEYSTONE in common places
2014-07-15 21:59 ` [U-Boot] [U-boot] [Patch 4/6] keystone2: use CONFIG_SOC_KEYSTONE in common places Ivan Khoronzhuk
@ 2014-07-26 1:27 ` Tom Rini
0 siblings, 0 replies; 16+ messages in thread
From: Tom Rini @ 2014-07-26 1:27 UTC (permalink / raw)
To: u-boot
On Wed, Jul 16, 2014 at 12:59:25AM +0300, Khoronzhuk, Ivan wrote:
> Use CONFIG_SOC_KEYSTONE in common places instead of defining
> a lot of "if def .. || if def " for different Keystone2 SoC types.
>
> Acked-by: Murali Karicheri <m-karicheri2@ti.com>
> Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>
Applied to u-boot-ti/master, thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140725/71f7b3ed/attachment.pgp>
^ permalink raw reply [flat|nested] 16+ messages in thread
* [U-Boot] [U-Boot, U-boot, 5/6] ARM: keystone2: spl: add K2E SoC support
2014-07-15 21:59 ` [U-Boot] [U-boot] [Patch 5/6] ARM: keystone2: spl: add K2E SoC support Ivan Khoronzhuk
@ 2014-07-26 1:27 ` Tom Rini
0 siblings, 0 replies; 16+ messages in thread
From: Tom Rini @ 2014-07-26 1:27 UTC (permalink / raw)
To: u-boot
On Wed, Jul 16, 2014 at 12:59:26AM +0300, Khoronzhuk, Ivan wrote:
> Keystone2 K2E SoC has slightly different spl pll settings then
> K2HK, so correct this.
>
> Acked-by: Murali Karicheri <m-karicheri2@ti.com>
> Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>
Applied to u-boot-ti/master, thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140725/8b2a66eb/attachment.pgp>
^ permalink raw reply [flat|nested] 16+ messages in thread
* [U-Boot] [U-Boot,U-boot,6/6] board: k2e-evm: add board support
2014-07-15 21:59 ` [U-Boot] [U-boot] [Patch 6/6] board: k2e-evm: add board support Ivan Khoronzhuk
@ 2014-07-26 1:28 ` Tom Rini
0 siblings, 0 replies; 16+ messages in thread
From: Tom Rini @ 2014-07-26 1:28 UTC (permalink / raw)
To: u-boot
On Wed, Jul 16, 2014 at 12:59:27AM +0300, Khoronzhuk, Ivan wrote:
> From: Hao Zhang <hzhang@ti.com>
>
> This patch adds Keystone2 k2e_evm evaluation board support.
>
> Signed-off-by: Hao Zhang <hzhang@ti.com>
> Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>
Applied to u-boot-ti/master, thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140725/779916f9/attachment.pgp>
^ permalink raw reply [flat|nested] 16+ messages in thread
* [U-Boot] [U-boot] [Patch 2/6] ARM: keystone2: clock: add K2E clock support
2014-07-15 21:59 ` [U-Boot] [U-boot] [Patch 2/6] ARM: keystone2: clock: add K2E clock support Ivan Khoronzhuk
2014-07-26 1:27 ` [U-Boot] [U-Boot, U-boot, " Tom Rini
@ 2014-09-04 14:08 ` Murali Karicheri
2014-09-04 15:04 ` Ivan Khoronzhuk
1 sibling, 1 reply; 16+ messages in thread
From: Murali Karicheri @ 2014-09-04 14:08 UTC (permalink / raw)
To: u-boot
On 07/15/2014 05:59 PM, Ivan Khoronzhuk wrote:
> From: Hao Zhang<hzhang@ti.com>
>
> This patch adds clock definitions and commands to support Keystone2
> K2E SOC.
>
> Signed-off-by: Hao Zhang<hzhang@ti.com>
> Signed-off-by: Ivan Khoronzhuk<ivan.khoronzhuk@ti.com>
> ---
> arch/arm/cpu/armv7/keystone/Makefile | 1 +
> arch/arm/cpu/armv7/keystone/clock-k2e.c | 101 +++++++++++++++++++++++++
> arch/arm/cpu/armv7/keystone/clock.c | 2 +
> arch/arm/cpu/armv7/keystone/cmd_clock.c | 31 ++++++--
> arch/arm/include/asm/arch-keystone/clock-k2e.h | 68 +++++++++++++++++
> arch/arm/include/asm/arch-keystone/clock.h | 4 +
> include/configs/ks2_evm.h | 2 +-
> 7 files changed, 203 insertions(+), 6 deletions(-)
> create mode 100644 arch/arm/cpu/armv7/keystone/clock-k2e.c
> create mode 100644 arch/arm/include/asm/arch-keystone/clock-k2e.h
>
> diff --git a/arch/arm/cpu/armv7/keystone/Makefile b/arch/arm/cpu/armv7/keystone/Makefile
> index 74c5160..f8519c0 100644
> --- a/arch/arm/cpu/armv7/keystone/Makefile
> +++ b/arch/arm/cpu/armv7/keystone/Makefile
> @@ -9,6 +9,7 @@ obj-y += init.o
> obj-y += psc.o
> obj-y += clock.o
> obj-$(CONFIG_SOC_K2HK) += clock-k2hk.o
> +obj-$(CONFIG_SOC_K2E) += clock-k2e.o
> obj-y += cmd_clock.o
> obj-y += cmd_mon.o
> obj-$(CONFIG_DRIVER_TI_KEYSTONE_NET) += keystone_nav.o
> diff --git a/arch/arm/cpu/armv7/keystone/clock-k2e.c b/arch/arm/cpu/armv7/keystone/clock-k2e.c
> new file mode 100644
> index 0000000..42092e1
> --- /dev/null
> +++ b/arch/arm/cpu/armv7/keystone/clock-k2e.c
> @@ -0,0 +1,101 @@
> +/*
> + * Keystone2: get clk rate for K2E
> + *
> + * (C) Copyright 2012-2014
> + * Texas Instruments Incorporated,<www.ti.com>
> + *
> + * SPDX-License-Identifier: GPL-2.0+
> + */
> +
> +#include<common.h>
> +#include<asm/arch/clock.h>
> +#include<asm/arch/clock_defs.h>
> +
> +const struct keystone_pll_regs keystone_pll_regs[] = {
> + [CORE_PLL] = {KS2_MAINPLLCTL0, KS2_MAINPLLCTL1},
> + [PASS_PLL] = {KS2_PASSPLLCTL0, KS2_PASSPLLCTL1},
> + [DDR3_PLL] = {KS2_DDR3APLLCTL0, KS2_DDR3APLLCTL1},
> +};
> +
> +/**
> + * pll_freq_get - get pll frequency
> + * Fout = Fref * NF(mult) / NR(prediv) / OD
> + * @pll: pll identifier
> + */
> +static unsigned long pll_freq_get(int pll)
> +{
> + unsigned long mult = 1, prediv = 1, output_div = 2;
> + unsigned long ret;
> + u32 tmp, reg;
> +
> + if (pll == CORE_PLL) {
> + ret = external_clk[sys_clk];
> + if (pllctl_reg_read(pll, ctl)& PLLCTL_PLLEN) {
> + /* PLL mode */
> + tmp = __raw_readl(KS2_MAINPLLCTL0);
> + prediv = (tmp& PLL_DIV_MASK) + 1;
> + mult = (((tmp& PLLM_MULT_HI_SMASK)>> 6) |
> + (pllctl_reg_read(pll, mult)&
> + PLLM_MULT_LO_MASK)) + 1;
> + output_div = ((pllctl_reg_read(pll, secctl)>>
> + PLL_CLKOD_SHIFT)& PLL_CLKOD_MASK) + 1;
> +
> + ret = ret / prediv / output_div * mult;
> + }
> + } else {
> + switch (pll) {
> + case PASS_PLL:
> + ret = external_clk[pa_clk];
> + reg = KS2_PASSPLLCTL0;
> + break;
> + case DDR3_PLL:
> + ret = external_clk[ddr3_clk];
> + reg = KS2_DDR3APLLCTL0;
> + break;
> + default:
> + return 0;
> + }
> +
> + tmp = __raw_readl(reg);
> +
Please remove this line as below is part of this and should be in a
block IMO. With this change,
Acked-by: Murali Karicheri <m-karicheri2@ti.com>
> + if (!(tmp& PLLCTL_BYPASS)) {
> + /* Bypass disabled */
> + prediv = (tmp& PLL_DIV_MASK) + 1;
> + mult = ((tmp>> PLL_MULT_SHIFT)& PLL_MULT_MASK) + 1;
> + output_div = ((tmp>> PLL_CLKOD_SHIFT)&
> + PLL_CLKOD_MASK) + 1;
> + ret = ((ret / prediv) * mult) / output_div;
> + }
> + }
> +
> + return ret;
> +}
> +
> +unsigned long clk_get_rate(unsigned int clk)
> +{
> + switch (clk) {
> + case core_pll_clk: return pll_freq_get(CORE_PLL);
> + case pass_pll_clk: return pll_freq_get(PASS_PLL);
> + case ddr3_pll_clk: return pll_freq_get(DDR3_PLL);
> + case sys_clk0_1_clk:
> + case sys_clk0_clk: return pll_freq_get(CORE_PLL) / pll0div_read(1);
> + case sys_clk1_clk: return pll_freq_get(CORE_PLL) / pll0div_read(2);
> + case sys_clk2_clk: return pll_freq_get(CORE_PLL) / pll0div_read(3);
> + case sys_clk3_clk: return pll_freq_get(CORE_PLL) / pll0div_read(4);
> + case sys_clk0_2_clk: return clk_get_rate(sys_clk0_clk) / 2;
> + case sys_clk0_3_clk: return clk_get_rate(sys_clk0_clk) / 3;
> + case sys_clk0_4_clk: return clk_get_rate(sys_clk0_clk) / 4;
> + case sys_clk0_6_clk: return clk_get_rate(sys_clk0_clk) / 6;
> + case sys_clk0_8_clk: return clk_get_rate(sys_clk0_clk) / 8;
> + case sys_clk0_12_clk: return clk_get_rate(sys_clk0_clk) / 12;
> + case sys_clk0_24_clk: return clk_get_rate(sys_clk0_clk) / 24;
> + case sys_clk1_3_clk: return clk_get_rate(sys_clk1_clk) / 3;
> + case sys_clk1_4_clk: return clk_get_rate(sys_clk1_clk) / 4;
> + case sys_clk1_6_clk: return clk_get_rate(sys_clk1_clk) / 6;
> + case sys_clk1_12_clk: return clk_get_rate(sys_clk1_clk) / 12;
> + default:
> + break;
> + }
> +
> + return 0;
> +}
> diff --git a/arch/arm/cpu/armv7/keystone/clock.c b/arch/arm/cpu/armv7/keystone/clock.c
> index 42b664b..03c1d9f 100644
> --- a/arch/arm/cpu/armv7/keystone/clock.c
> +++ b/arch/arm/cpu/armv7/keystone/clock.c
> @@ -106,6 +106,7 @@ void init_pll(const struct pll_init_data *data)
>
> tmp = pllctl_reg_setbits(data->pll, ctl, PLLCTL_PLLEN);
>
> +#ifndef CONFIG_SOC_K2E
> } else if (data->pll == TETRIS_PLL) {
> bwadj = pllm>> 1;
> /* 1.5 Set PLLCTL0[BYPASS] =1 (enable bypass), */
> @@ -156,6 +157,7 @@ void init_pll(const struct pll_init_data *data)
> * only applicable for Kepler
> */
> setbits_le32(KS2_MISC_CTRL, KS2_ARM_PLL_EN);
> +#endif
> } else {
> setbits_le32(keystone_pll_regs[data->pll].reg1, PLLCTL_ENSAT);
> /*
> diff --git a/arch/arm/cpu/armv7/keystone/cmd_clock.c b/arch/arm/cpu/armv7/keystone/cmd_clock.c
> index afd30f3..d97c95b 100644
> --- a/arch/arm/cpu/armv7/keystone/cmd_clock.c
> +++ b/arch/arm/cpu/armv7/keystone/cmd_clock.c
> @@ -14,10 +14,10 @@
> #include<asm/arch/psc_defs.h>
>
> struct pll_init_data cmd_pll_data = {
> - .pll = MAIN_PLL,
> - .pll_m = 16,
> - .pll_d = 1,
> - .pll_od = 2,
> + .pll = MAIN_PLL,
> + .pll_m = 16,
> + .pll_d = 1,
> + .pll_od = 2,
> };
>
> int do_pll_cmd(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
> @@ -27,12 +27,19 @@ int do_pll_cmd(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
>
> if (strncmp(argv[1], "pa", 2) == 0)
> cmd_pll_data.pll = PASS_PLL;
> +#ifndef CONFIG_SOC_K2E
> else if (strncmp(argv[1], "arm", 3) == 0)
> cmd_pll_data.pll = TETRIS_PLL;
> +#endif
> +#ifdef CONFIG_SOC_K2HK
> else if (strncmp(argv[1], "ddr3a", 5) == 0)
> cmd_pll_data.pll = DDR3A_PLL;
> else if (strncmp(argv[1], "ddr3b", 5) == 0)
> cmd_pll_data.pll = DDR3B_PLL;
> +#else
> + else if (strncmp(argv[1], "ddr3", 4) == 0)
> + cmd_pll_data.pll = DDR3_PLL;
> +#endif
> else
> goto pll_cmd_usage;
>
> @@ -51,11 +58,20 @@ pll_cmd_usage:
> return cmd_usage(cmdtp);
> }
>
> +#ifdef CONFIG_SOC_K2HK
> U_BOOT_CMD(
> pllset, 5, 0, do_pll_cmd,
> "set pll multiplier and pre divider",
> "<pa|arm|ddr3a|ddr3b> <mult> <div> <OD>\n"
> );
> +#endif
> +#ifdef CONFIG_SOC_K2E
> +U_BOOT_CMD(
> + pllset, 5, 0, do_pll_cmd,
> + "set pll multiplier and pre divider",
> + "<pa|ddr3> <mult> <div> <OD>\n"
> +);
> +#endif
>
> int do_getclk_cmd(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
> {
> @@ -79,7 +95,12 @@ U_BOOT_CMD(
> getclk, 2, 0, do_getclk_cmd,
> "get clock rate",
> "<clk index>\n"
> - "See the 'enum clk_e' in the k2hk clock.h for clk indexes\n"
> +#ifdef CONFIG_SOC_K2HK
> + "See the 'enum clk_e' in the clock-k2hk.h for clk indexes\n"
> +#endif
> +#ifdef CONFIG_SOC_K2E
> + "See the 'enum clk_e' in the clock-k2e.h for clk indexes\n"
> +#endif
> );
>
> int do_psc_cmd(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
> diff --git a/arch/arm/include/asm/arch-keystone/clock-k2e.h b/arch/arm/include/asm/arch-keystone/clock-k2e.h
> new file mode 100644
> index 0000000..4147811
> --- /dev/null
> +++ b/arch/arm/include/asm/arch-keystone/clock-k2e.h
> @@ -0,0 +1,68 @@
> +/*
> + * K2E: Clock management APIs
> + *
> + * (C) Copyright 2012-2014
> + * Texas Instruments Incorporated,<www.ti.com>
> + *
> + * SPDX-License-Identifier: GPL-2.0+
> + */
> +
> +#ifndef __ASM_ARCH_CLOCK_K2E_H
> +#define __ASM_ARCH_CLOCK_K2E_H
> +
> +enum ext_clk_e {
> + sys_clk,
> + alt_core_clk,
> + pa_clk,
> + ddr3_clk,
> + mcm_clk,
> + pcie_clk,
> + sgmii_clk,
> + xgmii_clk,
> + usb_clk,
> + ext_clk_count /* number of external clocks */
> +};
> +
> +extern unsigned int external_clk[ext_clk_count];
> +
> +enum clk_e {
> + core_pll_clk,
> + pass_pll_clk,
> + ddr3_pll_clk,
> + sys_clk0_clk,
> + sys_clk0_1_clk,
> + sys_clk0_2_clk,
> + sys_clk0_3_clk,
> + sys_clk0_4_clk,
> + sys_clk0_6_clk,
> + sys_clk0_8_clk,
> + sys_clk0_12_clk,
> + sys_clk0_24_clk,
> + sys_clk1_clk,
> + sys_clk1_3_clk,
> + sys_clk1_4_clk,
> + sys_clk1_6_clk,
> + sys_clk1_12_clk,
> + sys_clk2_clk,
> + sys_clk3_clk
> +};
> +
> +#define KS2_CLK1_6 sys_clk0_6_clk
> +
> +/* PLL identifiers */
> +enum pll_type_e {
> + CORE_PLL,
> + PASS_PLL,
> + DDR3_PLL,
> +};
> +
> +#define CORE_PLL_800 {CORE_PLL, 16, 1, 2}
> +#define CORE_PLL_1000 {CORE_PLL, 20, 1, 2}
> +#define CORE_PLL_1200 {CORE_PLL, 24, 1, 2}
> +#define PASS_PLL_1000 {PASS_PLL, 20, 1, 2}
> +#define DDR3_PLL_200 {DDR3_PLL, 4, 1, 2}
> +#define DDR3_PLL_400 {DDR3_PLL, 16, 1, 4}
> +#define DDR3_PLL_800 {DDR3_PLL, 16, 1, 2}
> +#define DDR3_PLL_333 {DDR3_PLL, 20, 1, 6}
> +
> +#endif
> diff --git a/arch/arm/include/asm/arch-keystone/clock.h b/arch/arm/include/asm/arch-keystone/clock.h
> index c7da352..1513c76 100644
> --- a/arch/arm/include/asm/arch-keystone/clock.h
> +++ b/arch/arm/include/asm/arch-keystone/clock.h
> @@ -16,6 +16,10 @@
> #include<asm/arch/clock-k2hk.h>
> #endif
>
> +#ifdef CONFIG_SOC_K2E
> +#include<asm/arch/clock-k2e.h>
> +#endif
> +
> #define MAIN_PLL CORE_PLL
>
> #include<asm/types.h>
> diff --git a/include/configs/ks2_evm.h b/include/configs/ks2_evm.h
> index 29f0b9b..43db581 100644
> --- a/include/configs/ks2_evm.h
> +++ b/include/configs/ks2_evm.h
> @@ -80,7 +80,7 @@
> #define CONFIG_SPI_FLASH_STMICRO
> #define CONFIG_DAVINCI_SPI
> #define CONFIG_CMD_SPI
> -#define CONFIG_SYS_SPI_CLK clk_get_rate(KS2_LPSC_EMIF25_SPI)
> +#define CONFIG_SYS_SPI_CLK clk_get_rate(KS2_CLK1_6)
> #define CONFIG_SF_DEFAULT_SPEED 30000000
> #define CONFIG_ENV_SPI_MAX_HZ CONFIG_SF_DEFAULT_SPEED
> #define CONFIG_SYS_SPI0
^ permalink raw reply [flat|nested] 16+ messages in thread
* [U-Boot] [U-boot] [Patch 2/6] ARM: keystone2: clock: add K2E clock support
2014-09-04 14:08 ` [U-Boot] [U-boot] [Patch " Murali Karicheri
@ 2014-09-04 15:04 ` Ivan Khoronzhuk
0 siblings, 0 replies; 16+ messages in thread
From: Ivan Khoronzhuk @ 2014-09-04 15:04 UTC (permalink / raw)
To: u-boot
On 09/04/2014 05:08 PM, Murali Karicheri wrote:
> On 07/15/2014 05:59 PM, Ivan Khoronzhuk wrote:
>> From: Hao Zhang<hzhang@ti.com>
>>
>> This patch adds clock definitions and commands to support Keystone2
>> K2E SOC.
>>
>> Signed-off-by: Hao Zhang<hzhang@ti.com>
>> Signed-off-by: Ivan Khoronzhuk<ivan.khoronzhuk@ti.com>
>> ---
>> arch/arm/cpu/armv7/keystone/Makefile | 1 +
>> arch/arm/cpu/armv7/keystone/clock-k2e.c | 101
>> +++++++++++++++++++++++++
>> arch/arm/cpu/armv7/keystone/clock.c | 2 +
>> arch/arm/cpu/armv7/keystone/cmd_clock.c | 31 ++++++--
>> arch/arm/include/asm/arch-keystone/clock-k2e.h | 68 +++++++++++++++++
>> arch/arm/include/asm/arch-keystone/clock.h | 4 +
>> include/configs/ks2_evm.h | 2 +-
>> 7 files changed, 203 insertions(+), 6 deletions(-)
>> create mode 100644 arch/arm/cpu/armv7/keystone/clock-k2e.c
>> create mode 100644 arch/arm/include/asm/arch-keystone/clock-k2e.h
>>
>> diff --git a/arch/arm/cpu/armv7/keystone/Makefile
>> b/arch/arm/cpu/armv7/keystone/Makefile
>> index 74c5160..f8519c0 100644
>> --- a/arch/arm/cpu/armv7/keystone/Makefile
>> +++ b/arch/arm/cpu/armv7/keystone/Makefile
>> @@ -9,6 +9,7 @@ obj-y += init.o
>> obj-y += psc.o
>> obj-y += clock.o
>> obj-$(CONFIG_SOC_K2HK) += clock-k2hk.o
>> +obj-$(CONFIG_SOC_K2E) += clock-k2e.o
>> obj-y += cmd_clock.o
>> obj-y += cmd_mon.o
>> obj-$(CONFIG_DRIVER_TI_KEYSTONE_NET) += keystone_nav.o
>> diff --git a/arch/arm/cpu/armv7/keystone/clock-k2e.c
>> b/arch/arm/cpu/armv7/keystone/clock-k2e.c
>> new file mode 100644
>> index 0000000..42092e1
>> --- /dev/null
>> +++ b/arch/arm/cpu/armv7/keystone/clock-k2e.c
>> @@ -0,0 +1,101 @@
>> +/*
>> + * Keystone2: get clk rate for K2E
>> + *
>> + * (C) Copyright 2012-2014
>> + * Texas Instruments Incorporated,<www.ti.com>
>> + *
>> + * SPDX-License-Identifier: GPL-2.0+
>> + */
>> +
>> +#include<common.h>
>> +#include<asm/arch/clock.h>
>> +#include<asm/arch/clock_defs.h>
>> +
>> +const struct keystone_pll_regs keystone_pll_regs[] = {
>> + [CORE_PLL] = {KS2_MAINPLLCTL0, KS2_MAINPLLCTL1},
>> + [PASS_PLL] = {KS2_PASSPLLCTL0, KS2_PASSPLLCTL1},
>> + [DDR3_PLL] = {KS2_DDR3APLLCTL0, KS2_DDR3APLLCTL1},
>> +};
>> +
>> +/**
>> + * pll_freq_get - get pll frequency
>> + * Fout = Fref * NF(mult) / NR(prediv) / OD
>> + * @pll: pll identifier
>> + */
>> +static unsigned long pll_freq_get(int pll)
>> +{
>> + unsigned long mult = 1, prediv = 1, output_div = 2;
>> + unsigned long ret;
>> + u32 tmp, reg;
>> +
>> + if (pll == CORE_PLL) {
>> + ret = external_clk[sys_clk];
>> + if (pllctl_reg_read(pll, ctl)& PLLCTL_PLLEN) {
>> + /* PLL mode */
>> + tmp = __raw_readl(KS2_MAINPLLCTL0);
>> + prediv = (tmp& PLL_DIV_MASK) + 1;
>> + mult = (((tmp& PLLM_MULT_HI_SMASK)>> 6) |
>> + (pllctl_reg_read(pll, mult)&
>> + PLLM_MULT_LO_MASK)) + 1;
>> + output_div = ((pllctl_reg_read(pll, secctl)>>
>> + PLL_CLKOD_SHIFT)& PLL_CLKOD_MASK) + 1;
>> +
>> + ret = ret / prediv / output_div * mult;
>> + }
>> + } else {
>> + switch (pll) {
>> + case PASS_PLL:
>> + ret = external_clk[pa_clk];
>> + reg = KS2_PASSPLLCTL0;
>> + break;
>> + case DDR3_PLL:
>> + ret = external_clk[ddr3_clk];
>> + reg = KS2_DDR3APLLCTL0;
>> + break;
>> + default:
>> + return 0;
>> + }
>> +
>> + tmp = __raw_readl(reg);
>> +
> Please remove this line as below is part of this and should be in a
> block IMO. With this change,
>
> Acked-by: Murali Karicheri <m-karicheri2@ti.com>
Murali,
This patch is already applied.
I will remove this line in separate patch.
Thanks.
> + if (!(tmp& PLLCTL_BYPASS)) {
>> + /* Bypass disabled */
>> + prediv = (tmp& PLL_DIV_MASK) + 1;
>> + mult = ((tmp>> PLL_MULT_SHIFT)& PLL_MULT_MASK) + 1;
>> + output_div = ((tmp>> PLL_CLKOD_SHIFT)&
>> + PLL_CLKOD_MASK) + 1;
>> + ret = ((ret / prediv) * mult) / output_div;
>> + }
>> + }
>> +
>> + return ret;
>> +}
>> +
>> +unsigned long clk_get_rate(unsigned int clk)
>> +{
>> + switch (clk) {
>> + case core_pll_clk: return pll_freq_get(CORE_PLL);
>> + case pass_pll_clk: return pll_freq_get(PASS_PLL);
>> + case ddr3_pll_clk: return pll_freq_get(DDR3_PLL);
>> + case sys_clk0_1_clk:
>> + case sys_clk0_clk: return pll_freq_get(CORE_PLL) /
>> pll0div_read(1);
>> + case sys_clk1_clk: return pll_freq_get(CORE_PLL) /
>> pll0div_read(2);
>> + case sys_clk2_clk: return pll_freq_get(CORE_PLL) /
>> pll0div_read(3);
>> + case sys_clk3_clk: return pll_freq_get(CORE_PLL) /
>> pll0div_read(4);
>> + case sys_clk0_2_clk: return clk_get_rate(sys_clk0_clk) / 2;
>> + case sys_clk0_3_clk: return clk_get_rate(sys_clk0_clk) / 3;
>> + case sys_clk0_4_clk: return clk_get_rate(sys_clk0_clk) / 4;
>> + case sys_clk0_6_clk: return clk_get_rate(sys_clk0_clk) / 6;
>> + case sys_clk0_8_clk: return clk_get_rate(sys_clk0_clk) / 8;
>> + case sys_clk0_12_clk: return clk_get_rate(sys_clk0_clk) / 12;
>> + case sys_clk0_24_clk: return clk_get_rate(sys_clk0_clk) / 24;
>> + case sys_clk1_3_clk: return clk_get_rate(sys_clk1_clk) / 3;
>> + case sys_clk1_4_clk: return clk_get_rate(sys_clk1_clk) / 4;
>> + case sys_clk1_6_clk: return clk_get_rate(sys_clk1_clk) / 6;
>> + case sys_clk1_12_clk: return clk_get_rate(sys_clk1_clk) / 12;
>> + default:
>> + break;
>> + }
>> +
>> + return 0;
>> +}
>> diff --git a/arch/arm/cpu/armv7/keystone/clock.c
>> b/arch/arm/cpu/armv7/keystone/clock.c
>> index 42b664b..03c1d9f 100644
>> --- a/arch/arm/cpu/armv7/keystone/clock.c
>> +++ b/arch/arm/cpu/armv7/keystone/clock.c
>> @@ -106,6 +106,7 @@ void init_pll(const struct pll_init_data *data)
>>
>> tmp = pllctl_reg_setbits(data->pll, ctl, PLLCTL_PLLEN);
>>
>> +#ifndef CONFIG_SOC_K2E
>> } else if (data->pll == TETRIS_PLL) {
>> bwadj = pllm>> 1;
>> /* 1.5 Set PLLCTL0[BYPASS] =1 (enable bypass), */
>> @@ -156,6 +157,7 @@ void init_pll(const struct pll_init_data *data)
>> * only applicable for Kepler
>> */
>> setbits_le32(KS2_MISC_CTRL, KS2_ARM_PLL_EN);
>> +#endif
>> } else {
>> setbits_le32(keystone_pll_regs[data->pll].reg1, PLLCTL_ENSAT);
>> /*
>> diff --git a/arch/arm/cpu/armv7/keystone/cmd_clock.c
>> b/arch/arm/cpu/armv7/keystone/cmd_clock.c
>> index afd30f3..d97c95b 100644
>> --- a/arch/arm/cpu/armv7/keystone/cmd_clock.c
>> +++ b/arch/arm/cpu/armv7/keystone/cmd_clock.c
>> @@ -14,10 +14,10 @@
>> #include<asm/arch/psc_defs.h>
>>
>> struct pll_init_data cmd_pll_data = {
>> - .pll = MAIN_PLL,
>> - .pll_m = 16,
>> - .pll_d = 1,
>> - .pll_od = 2,
>> + .pll = MAIN_PLL,
>> + .pll_m = 16,
>> + .pll_d = 1,
>> + .pll_od = 2,
>> };
>>
>> int do_pll_cmd(cmd_tbl_t *cmdtp, int flag, int argc, char * const
>> argv[])
>> @@ -27,12 +27,19 @@ int do_pll_cmd(cmd_tbl_t *cmdtp, int flag, int
>> argc, char * const argv[])
>>
>> if (strncmp(argv[1], "pa", 2) == 0)
>> cmd_pll_data.pll = PASS_PLL;
>> +#ifndef CONFIG_SOC_K2E
>> else if (strncmp(argv[1], "arm", 3) == 0)
>> cmd_pll_data.pll = TETRIS_PLL;
>> +#endif
>> +#ifdef CONFIG_SOC_K2HK
>> else if (strncmp(argv[1], "ddr3a", 5) == 0)
>> cmd_pll_data.pll = DDR3A_PLL;
>> else if (strncmp(argv[1], "ddr3b", 5) == 0)
>> cmd_pll_data.pll = DDR3B_PLL;
>> +#else
>> + else if (strncmp(argv[1], "ddr3", 4) == 0)
>> + cmd_pll_data.pll = DDR3_PLL;
>> +#endif
>> else
>> goto pll_cmd_usage;
>>
>> @@ -51,11 +58,20 @@ pll_cmd_usage:
>> return cmd_usage(cmdtp);
>> }
>>
>> +#ifdef CONFIG_SOC_K2HK
>> U_BOOT_CMD(
>> pllset, 5, 0, do_pll_cmd,
>> "set pll multiplier and pre divider",
>> "<pa|arm|ddr3a|ddr3b> <mult> <div> <OD>\n"
>> );
>> +#endif
>> +#ifdef CONFIG_SOC_K2E
>> +U_BOOT_CMD(
>> + pllset, 5, 0, do_pll_cmd,
>> + "set pll multiplier and pre divider",
>> + "<pa|ddr3> <mult> <div> <OD>\n"
>> +);
>> +#endif
>>
>> int do_getclk_cmd(cmd_tbl_t *cmdtp, int flag, int argc, char *
>> const argv[])
>> {
>> @@ -79,7 +95,12 @@ U_BOOT_CMD(
>> getclk, 2, 0, do_getclk_cmd,
>> "get clock rate",
>> "<clk index>\n"
>> - "See the 'enum clk_e' in the k2hk clock.h for clk indexes\n"
>> +#ifdef CONFIG_SOC_K2HK
>> + "See the 'enum clk_e' in the clock-k2hk.h for clk indexes\n"
>> +#endif
>> +#ifdef CONFIG_SOC_K2E
>> + "See the 'enum clk_e' in the clock-k2e.h for clk indexes\n"
>> +#endif
>> );
>>
>> int do_psc_cmd(cmd_tbl_t *cmdtp, int flag, int argc, char * const
>> argv[])
>> diff --git a/arch/arm/include/asm/arch-keystone/clock-k2e.h
>> b/arch/arm/include/asm/arch-keystone/clock-k2e.h
>> new file mode 100644
>> index 0000000..4147811
>> --- /dev/null
>> +++ b/arch/arm/include/asm/arch-keystone/clock-k2e.h
>> @@ -0,0 +1,68 @@
>> +/*
>> + * K2E: Clock management APIs
>> + *
>> + * (C) Copyright 2012-2014
>> + * Texas Instruments Incorporated,<www.ti.com>
>> + *
>> + * SPDX-License-Identifier: GPL-2.0+
>> + */
>> +
>> +#ifndef __ASM_ARCH_CLOCK_K2E_H
>> +#define __ASM_ARCH_CLOCK_K2E_H
>> +
>> +enum ext_clk_e {
>> + sys_clk,
>> + alt_core_clk,
>> + pa_clk,
>> + ddr3_clk,
>> + mcm_clk,
>> + pcie_clk,
>> + sgmii_clk,
>> + xgmii_clk,
>> + usb_clk,
>> + ext_clk_count /* number of external clocks */
>> +};
>> +
>> +extern unsigned int external_clk[ext_clk_count];
>> +
>> +enum clk_e {
>> + core_pll_clk,
>> + pass_pll_clk,
>> + ddr3_pll_clk,
>> + sys_clk0_clk,
>> + sys_clk0_1_clk,
>> + sys_clk0_2_clk,
>> + sys_clk0_3_clk,
>> + sys_clk0_4_clk,
>> + sys_clk0_6_clk,
>> + sys_clk0_8_clk,
>> + sys_clk0_12_clk,
>> + sys_clk0_24_clk,
>> + sys_clk1_clk,
>> + sys_clk1_3_clk,
>> + sys_clk1_4_clk,
>> + sys_clk1_6_clk,
>> + sys_clk1_12_clk,
>> + sys_clk2_clk,
>> + sys_clk3_clk
>> +};
>> +
>> +#define KS2_CLK1_6 sys_clk0_6_clk
>> +
>> +/* PLL identifiers */
>> +enum pll_type_e {
>> + CORE_PLL,
>> + PASS_PLL,
>> + DDR3_PLL,
>> +};
>> +
>> +#define CORE_PLL_800 {CORE_PLL, 16, 1, 2}
>> +#define CORE_PLL_1000 {CORE_PLL, 20, 1, 2}
>> +#define CORE_PLL_1200 {CORE_PLL, 24, 1, 2}
>> +#define PASS_PLL_1000 {PASS_PLL, 20, 1, 2}
>> +#define DDR3_PLL_200 {DDR3_PLL, 4, 1, 2}
>> +#define DDR3_PLL_400 {DDR3_PLL, 16, 1, 4}
>> +#define DDR3_PLL_800 {DDR3_PLL, 16, 1, 2}
>> +#define DDR3_PLL_333 {DDR3_PLL, 20, 1, 6}
>> +
>> +#endif
>> diff --git a/arch/arm/include/asm/arch-keystone/clock.h
>> b/arch/arm/include/asm/arch-keystone/clock.h
>> index c7da352..1513c76 100644
>> --- a/arch/arm/include/asm/arch-keystone/clock.h
>> +++ b/arch/arm/include/asm/arch-keystone/clock.h
>> @@ -16,6 +16,10 @@
>> #include<asm/arch/clock-k2hk.h>
>> #endif
>>
>> +#ifdef CONFIG_SOC_K2E
>> +#include<asm/arch/clock-k2e.h>
>> +#endif
>> +
>> #define MAIN_PLL CORE_PLL
>>
>> #include<asm/types.h>
>> diff --git a/include/configs/ks2_evm.h b/include/configs/ks2_evm.h
>> index 29f0b9b..43db581 100644
>> --- a/include/configs/ks2_evm.h
>> +++ b/include/configs/ks2_evm.h
>> @@ -80,7 +80,7 @@
>> #define CONFIG_SPI_FLASH_STMICRO
>> #define CONFIG_DAVINCI_SPI
>> #define CONFIG_CMD_SPI
>> -#define CONFIG_SYS_SPI_CLK clk_get_rate(KS2_LPSC_EMIF25_SPI)
>> +#define CONFIG_SYS_SPI_CLK clk_get_rate(KS2_CLK1_6)
>> #define CONFIG_SF_DEFAULT_SPEED 30000000
>> #define CONFIG_ENV_SPI_MAX_HZ CONFIG_SF_DEFAULT_SPEED
>> #define CONFIG_SYS_SPI0
>
--
Regards,
Ivan Khoronzhuk
^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2014-09-04 15:04 UTC | newest]
Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-07-15 21:59 [U-Boot] [U-boot] [Patch 0/6] Add support for k2e SoC and EVM Ivan Khoronzhuk
2014-07-15 21:59 ` [U-Boot] [U-boot] [Patch 1/6] ARM: keystone2: add K2E SoC hardware definitions Ivan Khoronzhuk
2014-07-26 1:27 ` [U-Boot] [U-Boot, U-boot, " Tom Rini
2014-07-26 1:27 ` Tom Rini
2014-07-15 21:59 ` [U-Boot] [U-boot] [Patch 2/6] ARM: keystone2: clock: add K2E clock support Ivan Khoronzhuk
2014-07-26 1:27 ` [U-Boot] [U-Boot, U-boot, " Tom Rini
2014-09-04 14:08 ` [U-Boot] [U-boot] [Patch " Murali Karicheri
2014-09-04 15:04 ` Ivan Khoronzhuk
2014-07-15 21:59 ` [U-Boot] [U-boot] [Patch 3/6] ARM: keystone2: add MSMC cache coherency support for K2E SOC Ivan Khoronzhuk
2014-07-26 1:27 ` [U-Boot] [U-Boot, U-boot, " Tom Rini
2014-07-15 21:59 ` [U-Boot] [U-boot] [Patch 4/6] keystone2: use CONFIG_SOC_KEYSTONE in common places Ivan Khoronzhuk
2014-07-26 1:27 ` [U-Boot] [U-Boot, U-boot, " Tom Rini
2014-07-15 21:59 ` [U-Boot] [U-boot] [Patch 5/6] ARM: keystone2: spl: add K2E SoC support Ivan Khoronzhuk
2014-07-26 1:27 ` [U-Boot] [U-Boot, U-boot, " Tom Rini
2014-07-15 21:59 ` [U-Boot] [U-boot] [Patch 6/6] board: k2e-evm: add board support Ivan Khoronzhuk
2014-07-26 1:28 ` [U-Boot] [U-Boot,U-boot,6/6] " Tom Rini
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox