* [U-Boot] [PATCH 01/10] am33xx: convert defines from am33xx-specific to generic names
2013-02-13 14:43 [U-Boot] [PATCH 00/10] Add TI814x EVM Support Matt Porter
@ 2013-02-13 14:43 ` Matt Porter
2013-02-15 16:36 ` Tom Rini
2013-02-13 14:43 ` [U-Boot] [PATCH 02/10] am33xx: refactor emif4/ddr to support multiple EMIF instances Matt Porter
` (8 subsequent siblings)
9 siblings, 1 reply; 37+ messages in thread
From: Matt Porter @ 2013-02-13 14:43 UTC (permalink / raw)
To: u-boot
Eliminate AM33xx specific names to prepare for TI814x support
within AM33xx-land.
Signed-off-by: Matt Porter <mporter@ti.com>
---
arch/arm/cpu/armv7/am33xx/board.c | 4 ++--
arch/arm/include/asm/arch-am33xx/hardware.h | 10 +++++-----
board/ti/am335x/board.c | 6 +++---
3 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/arch/arm/cpu/armv7/am33xx/board.c b/arch/arm/cpu/armv7/am33xx/board.c
index ab31326..b186b32 100644
--- a/arch/arm/cpu/armv7/am33xx/board.c
+++ b/arch/arm/cpu/armv7/am33xx/board.c
@@ -141,11 +141,11 @@ int arch_misc_init(void)
{
#ifdef CONFIG_AM335X_USB0
musb_register(&otg0_plat, &otg0_board_data,
- (void *)AM335X_USB0_OTG_BASE);
+ (void *)USB0_OTG_BASE);
#endif
#ifdef CONFIG_AM335X_USB1
musb_register(&otg1_plat, &otg1_board_data,
- (void *)AM335X_USB1_OTG_BASE);
+ (void *)USB1_OTG_BASE);
#endif
return 0;
}
diff --git a/arch/arm/include/asm/arch-am33xx/hardware.h b/arch/arm/include/asm/arch-am33xx/hardware.h
index 6dd3296..7016e25 100644
--- a/arch/arm/include/asm/arch-am33xx/hardware.h
+++ b/arch/arm/include/asm/arch-am33xx/hardware.h
@@ -84,14 +84,14 @@
#define GPMC_BASE 0x50000000
/* CPSW Config space */
-#define AM335X_CPSW_BASE 0x4A100000
-#define AM335X_CPSW_MDIO_BASE 0x4A101000
+#define CPSW_BASE 0x4A100000
+#define CPSW_MDIO_BASE 0x4A101000
/* RTC base address */
-#define AM335X_RTC_BASE 0x44E3E000
+#define RTC_BASE 0x44E3E000
/* OTG */
-#define AM335X_USB0_OTG_BASE 0x47401000
-#define AM335X_USB1_OTG_BASE 0x47401800
+#define USB0_OTG_BASE 0x47401000
+#define USB1_OTG_BASE 0x47401800
#endif /* __AM33XX_HARDWARE_H */
diff --git a/board/ti/am335x/board.c b/board/ti/am335x/board.c
index ed4229e..1e698df 100644
--- a/board/ti/am335x/board.c
+++ b/board/ti/am335x/board.c
@@ -123,7 +123,7 @@ static int read_eeprom(void)
static void rtc32k_enable(void)
{
- struct rtc_regs *rtc = (struct rtc_regs *)AM335X_RTC_BASE;
+ struct rtc_regs *rtc = (struct rtc_regs *)RTC_BASE;
/*
* Unlock the RTC's registers. For more details please see the
@@ -365,8 +365,8 @@ static struct cpsw_slave_data cpsw_slaves[] = {
};
static struct cpsw_platform_data cpsw_data = {
- .mdio_base = AM335X_CPSW_MDIO_BASE,
- .cpsw_base = AM335X_CPSW_BASE,
+ .mdio_base = CPSW_MDIO_BASE,
+ .cpsw_base = CPSW_BASE,
.mdio_div = 0xff,
.channels = 8,
.cpdma_reg_ofs = 0x800,
--
1.7.9.5
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [U-Boot] [PATCH 02/10] am33xx: refactor emif4/ddr to support multiple EMIF instances
2013-02-13 14:43 [U-Boot] [PATCH 00/10] Add TI814x EVM Support Matt Porter
2013-02-13 14:43 ` [U-Boot] [PATCH 01/10] am33xx: convert defines from am33xx-specific to generic names Matt Porter
@ 2013-02-13 14:43 ` Matt Porter
2013-02-15 16:37 ` Tom Rini
2013-02-13 14:43 ` [U-Boot] [PATCH 03/10] am33xx: refactor am33xx clocks and add ti814x support Matt Porter
` (7 subsequent siblings)
9 siblings, 1 reply; 37+ messages in thread
From: Matt Porter @ 2013-02-13 14:43 UTC (permalink / raw)
To: u-boot
The AM33xx emif4/ddr support closely matches what is need to support
TI814x except that TI814x has two EMIF instances. Refactor all the
emif4 helper calls and the config_ddr() init function to use an
additional instance number argument.
Signed-off-by: Matt Porter <mporter@ti.com>
---
arch/arm/cpu/armv7/am33xx/ddr.c | 99 ++++++++++++++++-----------
arch/arm/cpu/armv7/am33xx/emif4.c | 38 +++++-----
arch/arm/include/asm/arch-am33xx/ddr_defs.h | 52 ++++++++++++--
arch/arm/include/asm/arch-am33xx/hardware.h | 18 ++++-
board/ti/am335x/board.c | 4 +-
5 files changed, 143 insertions(+), 68 deletions(-)
diff --git a/arch/arm/cpu/armv7/am33xx/ddr.c b/arch/arm/cpu/armv7/am33xx/ddr.c
index fd9fc4a..493b99b 100644
--- a/arch/arm/cpu/armv7/am33xx/ddr.c
+++ b/arch/arm/cpu/armv7/am33xx/ddr.c
@@ -24,15 +24,20 @@ http://www.ti.com/
/**
* Base address for EMIF instances
*/
-static struct emif_reg_struct *emif_reg = {
- (struct emif_reg_struct *)EMIF4_0_CFG_BASE};
+static struct emif_reg_struct *emif_reg[2] = {
+ (struct emif_reg_struct *)EMIF4_0_CFG_BASE,
+ (struct emif_reg_struct *)EMIF4_1_CFG_BASE};
/**
- * Base address for DDR instance
+ * Base addresses for DDR PHY cmd/data regs
*/
-static struct ddr_regs *ddr_reg[2] = {
- (struct ddr_regs *)DDR_PHY_BASE_ADDR,
- (struct ddr_regs *)DDR_PHY_BASE_ADDR2};
+static struct ddr_cmd_regs *ddr_cmd_reg[2] = {
+ (struct ddr_regs *)DDR_PHY_CMD_ADDR,
+ (struct ddr_regs *)DDR_PHY_CMD_ADDR2};
+
+static struct ddr_data_regs *ddr_data_reg[2] = {
+ (struct ddr_regs *)DDR_PHY_DATA_ADDR,
+ (struct ddr_regs *)DDR_PHY_DATA_ADDR2};
/**
* Base address for ddr io control instances
@@ -43,70 +48,84 @@ static struct ddr_cmdtctrl *ioctrl_reg = {
/**
* Configure SDRAM
*/
-void config_sdram(const struct emif_regs *regs)
+void config_sdram(const struct emif_regs *regs, int nr)
{
- writel(regs->ref_ctrl, &emif_reg->emif_sdram_ref_ctrl);
- writel(regs->ref_ctrl, &emif_reg->emif_sdram_ref_ctrl_shdw);
+ writel(regs->ref_ctrl, &emif_reg[nr]->emif_sdram_ref_ctrl);
+ writel(regs->ref_ctrl, &emif_reg[nr]->emif_sdram_ref_ctrl_shdw);
if (regs->zq_config){
- writel(regs->zq_config, &emif_reg->emif_zq_config);
+ writel(regs->zq_config, &emif_reg[nr]->emif_zq_config);
writel(regs->sdram_config, &cstat->secure_emif_sdram_config);
}
- writel(regs->sdram_config, &emif_reg->emif_sdram_config);
+ writel(regs->sdram_config, &emif_reg[nr]->emif_sdram_config);
}
/**
* Set SDRAM timings
*/
-void set_sdram_timings(const struct emif_regs *regs)
+void set_sdram_timings(const struct emif_regs *regs, int nr)
{
- writel(regs->sdram_tim1, &emif_reg->emif_sdram_tim_1);
- writel(regs->sdram_tim1, &emif_reg->emif_sdram_tim_1_shdw);
- writel(regs->sdram_tim2, &emif_reg->emif_sdram_tim_2);
- writel(regs->sdram_tim2, &emif_reg->emif_sdram_tim_2_shdw);
- writel(regs->sdram_tim3, &emif_reg->emif_sdram_tim_3);
- writel(regs->sdram_tim3, &emif_reg->emif_sdram_tim_3_shdw);
+ writel(regs->sdram_tim1, &emif_reg[nr]->emif_sdram_tim_1);
+ writel(regs->sdram_tim1, &emif_reg[nr]->emif_sdram_tim_1_shdw);
+ writel(regs->sdram_tim2, &emif_reg[nr]->emif_sdram_tim_2);
+ writel(regs->sdram_tim2, &emif_reg[nr]->emif_sdram_tim_2_shdw);
+ writel(regs->sdram_tim3, &emif_reg[nr]->emif_sdram_tim_3);
+ writel(regs->sdram_tim3, &emif_reg[nr]->emif_sdram_tim_3_shdw);
}
/**
* Configure DDR PHY
*/
-void config_ddr_phy(const struct emif_regs *regs)
+void config_ddr_phy(const struct emif_regs *regs, int nr)
{
- writel(regs->emif_ddr_phy_ctlr_1, &emif_reg->emif_ddr_phy_ctrl_1);
- writel(regs->emif_ddr_phy_ctlr_1, &emif_reg->emif_ddr_phy_ctrl_1_shdw);
+ writel(regs->emif_ddr_phy_ctlr_1,
+ &emif_reg[nr]->emif_ddr_phy_ctrl_1);
+ writel(regs->emif_ddr_phy_ctlr_1,
+ &emif_reg[nr]->emif_ddr_phy_ctrl_1_shdw);
}
/**
* Configure DDR CMD control registers
*/
-void config_cmd_ctrl(const struct cmd_control *cmd)
+void config_cmd_ctrl(const struct cmd_control *cmd, int nr)
{
- writel(cmd->cmd0csratio, &ddr_reg[0]->cm0csratio);
- writel(cmd->cmd0dldiff, &ddr_reg[0]->cm0dldiff);
- writel(cmd->cmd0iclkout, &ddr_reg[0]->cm0iclkout);
+ writel(cmd->cmd0csratio, &ddr_cmd_reg[nr]->cm0csratio);
+ writel(cmd->cmd0dldiff, &ddr_cmd_reg[nr]->cm0dldiff);
+ writel(cmd->cmd0iclkout, &ddr_cmd_reg[nr]->cm0iclkout);
- writel(cmd->cmd1csratio, &ddr_reg[0]->cm1csratio);
- writel(cmd->cmd1dldiff, &ddr_reg[0]->cm1dldiff);
- writel(cmd->cmd1iclkout, &ddr_reg[0]->cm1iclkout);
+ writel(cmd->cmd1csratio, &ddr_cmd_reg[nr]->cm1csratio);
+ writel(cmd->cmd1dldiff, &ddr_cmd_reg[nr]->cm1dldiff);
+ writel(cmd->cmd1iclkout, &ddr_cmd_reg[nr]->cm1iclkout);
- writel(cmd->cmd2csratio, &ddr_reg[0]->cm2csratio);
- writel(cmd->cmd2dldiff, &ddr_reg[0]->cm2dldiff);
- writel(cmd->cmd2iclkout, &ddr_reg[0]->cm2iclkout);
+ writel(cmd->cmd2csratio, &ddr_cmd_reg[nr]->cm2csratio);
+ writel(cmd->cmd2dldiff, &ddr_cmd_reg[nr]->cm2dldiff);
+ writel(cmd->cmd2iclkout, &ddr_cmd_reg[nr]->cm2iclkout);
}
/**
* Configure DDR DATA registers
*/
-void config_ddr_data(int macrono, const struct ddr_data *data)
+void config_ddr_data(const struct ddr_data *data, int nr)
{
- writel(data->datardsratio0, &ddr_reg[macrono]->dt0rdsratio0);
- writel(data->datawdsratio0, &ddr_reg[macrono]->dt0wdsratio0);
- writel(data->datawiratio0, &ddr_reg[macrono]->dt0wiratio0);
- writel(data->datagiratio0, &ddr_reg[macrono]->dt0giratio0);
- writel(data->datafwsratio0, &ddr_reg[macrono]->dt0fwsratio0);
- writel(data->datawrsratio0, &ddr_reg[macrono]->dt0wrsratio0);
- writel(data->datauserank0delay, &ddr_reg[macrono]->dt0rdelays0);
- writel(data->datadldiff0, &ddr_reg[macrono]->dt0dldiff0);
+ int i;
+
+ for (i = 0; i < DDR_DATA_REGS_NR; i++) {
+ writel(data->datardsratio0,
+ &(ddr_data_reg[nr]+i)->dt0rdsratio0);
+ writel(data->datawdsratio0,
+ &(ddr_data_reg[nr]+i)->dt0wdsratio0);
+ writel(data->datawiratio0,
+ &(ddr_data_reg[nr]+i)->dt0wiratio0);
+ writel(data->datagiratio0,
+ &(ddr_data_reg[nr]+i)->dt0giratio0);
+ writel(data->datafwsratio0,
+ &(ddr_data_reg[nr]+i)->dt0fwsratio0);
+ writel(data->datawrsratio0,
+ &(ddr_data_reg[nr]+i)->dt0wrsratio0);
+ writel(data->datauserank0delay,
+ &(ddr_data_reg[nr]+i)->dt0rdelays0);
+ writel(data->datadldiff0,
+ &(ddr_data_reg[nr]+i)->dt0dldiff0);
+ }
}
void config_io_ctrl(unsigned long val)
diff --git a/arch/arm/cpu/armv7/am33xx/emif4.c b/arch/arm/cpu/armv7/am33xx/emif4.c
index 01e3a52..0c617fa 100644
--- a/arch/arm/cpu/armv7/am33xx/emif4.c
+++ b/arch/arm/cpu/armv7/am33xx/emif4.c
@@ -44,44 +44,46 @@ void dram_init_banksize(void)
#ifdef CONFIG_SPL_BUILD
-static struct vtp_reg *vtpreg = (struct vtp_reg *)VTP0_CTRL_ADDR;
+static struct vtp_reg *vtpreg[2] = {
+ (struct vtp_reg *)VTP0_CTRL_ADDR,
+ (struct vtp_reg *)VTP1_CTRL_ADDR};
static struct ddr_ctrl *ddrctrl = (struct ddr_ctrl *)DDR_CTRL_ADDR;
-static void config_vtp(void)
+static void config_vtp(int nr)
{
- writel(readl(&vtpreg->vtp0ctrlreg) | VTP_CTRL_ENABLE,
- &vtpreg->vtp0ctrlreg);
- writel(readl(&vtpreg->vtp0ctrlreg) & (~VTP_CTRL_START_EN),
- &vtpreg->vtp0ctrlreg);
- writel(readl(&vtpreg->vtp0ctrlreg) | VTP_CTRL_START_EN,
- &vtpreg->vtp0ctrlreg);
+ writel(readl(&vtpreg[nr]->vtp0ctrlreg) | VTP_CTRL_ENABLE,
+ &vtpreg[nr]->vtp0ctrlreg);
+ writel(readl(&vtpreg[nr]->vtp0ctrlreg) & (~VTP_CTRL_START_EN),
+ &vtpreg[nr]->vtp0ctrlreg);
+ writel(readl(&vtpreg[nr]->vtp0ctrlreg) | VTP_CTRL_START_EN,
+ &vtpreg[nr]->vtp0ctrlreg);
/* Poll for READY */
- while ((readl(&vtpreg->vtp0ctrlreg) & VTP_CTRL_READY) !=
+ while ((readl(&vtpreg[nr]->vtp0ctrlreg) & VTP_CTRL_READY) !=
VTP_CTRL_READY)
;
}
void config_ddr(unsigned int pll, unsigned int ioctrl,
const struct ddr_data *data, const struct cmd_control *ctrl,
- const struct emif_regs *regs)
+ const struct emif_regs *regs, int nr)
{
enable_emif_clocks();
ddr_pll_config(pll);
- config_vtp();
- config_cmd_ctrl(ctrl);
-
- config_ddr_data(0, data);
- config_ddr_data(1, data);
+ config_vtp(nr);
+ config_cmd_ctrl(ctrl, nr);
+ config_ddr_data(data, nr);
+#ifdef CONFIG_AM33XX
config_io_ctrl(ioctrl);
/* Set CKE to be controlled by EMIF/DDR PHY */
writel(DDR_CKE_CTRL_NORMAL, &ddrctrl->ddrckectrl);
+#endif
/* Program EMIF instance */
- config_ddr_phy(regs);
- set_sdram_timings(regs);
- config_sdram(regs);
+ config_ddr_phy(regs, nr);
+ set_sdram_timings(regs, nr);
+ config_sdram(regs, nr);
}
#endif
diff --git a/arch/arm/include/asm/arch-am33xx/ddr_defs.h b/arch/arm/include/asm/arch-am33xx/ddr_defs.h
index 8e69fb6..8bf25a0 100644
--- a/arch/arm/include/asm/arch-am33xx/ddr_defs.h
+++ b/arch/arm/include/asm/arch-am33xx/ddr_defs.h
@@ -68,17 +68,57 @@
/**
* Configure SDRAM
*/
-void config_sdram(const struct emif_regs *regs);
+void config_sdram(const struct emif_regs *regs, int nr);
/**
* Set SDRAM timings
*/
-void set_sdram_timings(const struct emif_regs *regs);
+void set_sdram_timings(const struct emif_regs *regs, int nr);
/**
* Configure DDR PHY
*/
-void config_ddr_phy(const struct emif_regs *regs);
+void config_ddr_phy(const struct emif_regs *regs, int nr);
+
+struct ddr_cmd_regs {
+ unsigned int resv0[7];
+ unsigned int cm0csratio; /* offset 0x01C */
+ unsigned int resv1[2];
+ unsigned int cm0dldiff; /* offset 0x028 */
+ unsigned int cm0iclkout; /* offset 0x02C */
+ unsigned int resv2[8];
+ unsigned int cm1csratio; /* offset 0x050 */
+ unsigned int resv3[2];
+ unsigned int cm1dldiff; /* offset 0x05C */
+ unsigned int cm1iclkout; /* offset 0x060 */
+ unsigned int resv4[8];
+ unsigned int cm2csratio; /* offset 0x084 */
+ unsigned int resv5[2];
+ unsigned int cm2dldiff; /* offset 0x090 */
+ unsigned int cm2iclkout; /* offset 0x094 */
+ unsigned int resv6[3];
+};
+
+struct ddr_data_regs {
+ unsigned int dt0rdsratio0; /* offset 0x0C8 */
+ unsigned int resv1[4];
+ unsigned int dt0wdsratio0; /* offset 0x0DC */
+ unsigned int resv2[4];
+ unsigned int dt0wiratio0; /* offset 0x0F0 */
+ unsigned int resv3;
+ unsigned int dt0wimode0; /* offset 0x0F8 */
+ unsigned int dt0giratio0; /* offset 0x0FC */
+ unsigned int resv4;
+ unsigned int dt0gimode0; /* offset 0x104 */
+ unsigned int dt0fwsratio0; /* offset 0x108 */
+ unsigned int resv5[4];
+ unsigned int dt0dqoffset; /* offset 0x11C */
+ unsigned int dt0wrsratio0; /* offset 0x120 */
+ unsigned int resv6[4];
+ unsigned int dt0rdelays0; /* offset 0x134 */
+ unsigned int dt0dldiff0; /* offset 0x138 */
+ unsigned int resv7[12];
+};
/**
* This structure represents the DDR registers on AM33XX devices.
@@ -159,12 +199,12 @@ struct ddr_data {
/**
* Configure DDR CMD control registers
*/
-void config_cmd_ctrl(const struct cmd_control *cmd);
+void config_cmd_ctrl(const struct cmd_control *cmd, int nr);
/**
* Configure DDR DATA registers
*/
-void config_ddr_data(int data_macrono, const struct ddr_data *data);
+void config_ddr_data(const struct ddr_data *data, int nr);
/**
* This structure represents the DDR io control on AM33XX devices.
@@ -192,6 +232,6 @@ struct ddr_ctrl {
void config_ddr(unsigned int pll, unsigned int ioctrl,
const struct ddr_data *data, const struct cmd_control *ctrl,
- const struct emif_regs *regs);
+ const struct emif_regs *regs, int nr);
#endif /* _DDR_DEFS_H */
diff --git a/arch/arm/include/asm/arch-am33xx/hardware.h b/arch/arm/include/asm/arch-am33xx/hardware.h
index 7016e25..41ab2c0 100644
--- a/arch/arm/include/asm/arch-am33xx/hardware.h
+++ b/arch/arm/include/asm/arch-am33xx/hardware.h
@@ -66,13 +66,27 @@
#define PRM_DEVICE 0x44E00F00
/* VTP Base address */
+#ifdef CONFIG_AM33XX
#define VTP0_CTRL_ADDR 0x44E10E0C
+#elif defined(CONFIG_TI814X)
+#define VTP0_CTRL_ADDR 0x48140E0C
+#endif
+#define VTP1_CTRL_ADDR 0x48140E10
/* DDR Base address */
#define DDR_CTRL_ADDR 0x44E10E04
#define DDR_CONTROL_BASE_ADDR 0x44E11404
-#define DDR_PHY_BASE_ADDR 0x44E12000
-#define DDR_PHY_BASE_ADDR2 0x44E120A4
+#ifdef CONFIG_AM33XX
+#define DDR_PHY_CMD_ADDR 0x44E12000
+#define DDR_PHY_DATA_ADDR 0x44E120C8
+#define DDR_DATA_REGS_NR 2
+#elif defined(CONFIG_TI814X)
+#define DDR_PHY_CMD_ADDR 0x47C0C400
+#define DDR_PHY_DATA_ADDR 0x47C0C4C8
+#define DDR_DATA_REGS_NR 4
+#endif
+#define DDR_PHY_CMD_ADDR2 0x47C0C800
+#define DDR_PHY_DATA_ADDR2 0x47C0C8C8
/* UART */
#define DEFAULT_UART_BASE UART0_BASE
diff --git a/board/ti/am335x/board.c b/board/ti/am335x/board.c
index 1e698df..3189408 100644
--- a/board/ti/am335x/board.c
+++ b/board/ti/am335x/board.c
@@ -300,10 +300,10 @@ void s_init(void)
if (board_is_evm_sk() || board_is_bone_lt())
config_ddr(303, MT41J128MJT125_IOCTRL_VALUE, &ddr3_data,
- &ddr3_cmd_ctrl_data, &ddr3_emif_reg_data);
+ &ddr3_cmd_ctrl_data, &ddr3_emif_reg_data, 0);
else
config_ddr(266, MT47H128M16RT25E_IOCTRL_VALUE, &ddr2_data,
- &ddr2_cmd_ctrl_data, &ddr2_emif_reg_data);
+ &ddr2_cmd_ctrl_data, &ddr2_emif_reg_data, 0);
#endif
}
--
1.7.9.5
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [U-Boot] [PATCH 03/10] am33xx: refactor am33xx clocks and add ti814x support
2013-02-13 14:43 [U-Boot] [PATCH 00/10] Add TI814x EVM Support Matt Porter
2013-02-13 14:43 ` [U-Boot] [PATCH 01/10] am33xx: convert defines from am33xx-specific to generic names Matt Porter
2013-02-13 14:43 ` [U-Boot] [PATCH 02/10] am33xx: refactor emif4/ddr to support multiple EMIF instances Matt Porter
@ 2013-02-13 14:43 ` Matt Porter
2013-02-15 16:37 ` Tom Rini
` (2 more replies)
2013-02-13 14:43 ` [U-Boot] [PATCH 04/10] am33xx: refactor am33xx mux support " Matt Porter
` (6 subsequent siblings)
9 siblings, 3 replies; 37+ messages in thread
From: Matt Porter @ 2013-02-13 14:43 UTC (permalink / raw)
To: u-boot
Split clock.c for am335x and ti814x and add the ti814x include file.
Signed-off-by: Matt Porter <mporter@ti.com>
---
arch/arm/cpu/armv7/am33xx/Makefile | 3 +-
arch/arm/cpu/armv7/am33xx/clock-am335x.c | 374 ++++++++++++++++++++++
arch/arm/cpu/armv7/am33xx/clock-ti814x.c | 234 ++++++++++++++
arch/arm/cpu/armv7/am33xx/clock.c | 374 ----------------------
arch/arm/include/asm/arch-am33xx/clock.h | 4 +
arch/arm/include/asm/arch-am33xx/clocks_ti814x.h | 112 +++++++
6 files changed, 726 insertions(+), 375 deletions(-)
create mode 100644 arch/arm/cpu/armv7/am33xx/clock-am335x.c
create mode 100644 arch/arm/cpu/armv7/am33xx/clock-ti814x.c
delete mode 100644 arch/arm/cpu/armv7/am33xx/clock.c
create mode 100644 arch/arm/include/asm/arch-am33xx/clocks_ti814x.h
diff --git a/arch/arm/cpu/armv7/am33xx/Makefile b/arch/arm/cpu/armv7/am33xx/Makefile
index 70c443e..7051029 100644
--- a/arch/arm/cpu/armv7/am33xx/Makefile
+++ b/arch/arm/cpu/armv7/am33xx/Makefile
@@ -16,7 +16,8 @@ include $(TOPDIR)/config.mk
LIB = $(obj)lib$(SOC).o
-COBJS += clock.o
+COBJS-$(CONFIG_AM33XX) += clock-am335x.o
+COBJS-$(CONFIG_TI814X) += clock-ti814x.o
COBJS += sys_info.o
COBJS += mem.o
COBJS += ddr.o
diff --git a/arch/arm/cpu/armv7/am33xx/clock-am335x.c b/arch/arm/cpu/armv7/am33xx/clock-am335x.c
new file mode 100644
index 0000000..d7d98d1
--- /dev/null
+++ b/arch/arm/cpu/armv7/am33xx/clock-am335x.c
@@ -0,0 +1,374 @@
+/*
+ * clock.c
+ *
+ * clocks for AM33XX based boards
+ *
+ * Copyright (C) 2011, Texas Instruments, Incorporated - http://www.ti.com/
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR /PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#include <common.h>
+#include <asm/arch/cpu.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/hardware.h>
+#include <asm/io.h>
+
+#define PRCM_MOD_EN 0x2
+#define PRCM_FORCE_WAKEUP 0x2
+#define PRCM_FUNCTL 0x0
+
+#define PRCM_EMIF_CLK_ACTIVITY BIT(2)
+#define PRCM_L3_GCLK_ACTIVITY BIT(4)
+
+#define PLL_BYPASS_MODE 0x4
+#define ST_MN_BYPASS 0x00000100
+#define ST_DPLL_CLK 0x00000001
+#define CLK_SEL_MASK 0x7ffff
+#define CLK_DIV_MASK 0x1f
+#define CLK_DIV2_MASK 0x7f
+#define CLK_SEL_SHIFT 0x8
+#define CLK_MODE_SEL 0x7
+#define CLK_MODE_MASK 0xfffffff8
+#define CLK_DIV_SEL 0xFFFFFFE0
+#define CPGMAC0_IDLE 0x30000
+#define DPLL_CLKDCOLDO_GATE_CTRL 0x300
+
+const struct cm_perpll *cmper = (struct cm_perpll *)CM_PER;
+const struct cm_wkuppll *cmwkup = (struct cm_wkuppll *)CM_WKUP;
+const struct cm_dpll *cmdpll = (struct cm_dpll *)CM_DPLL;
+const struct cm_rtc *cmrtc = (struct cm_rtc *)CM_RTC;
+
+static void enable_interface_clocks(void)
+{
+ /* Enable all the Interconnect Modules */
+ writel(PRCM_MOD_EN, &cmper->l3clkctrl);
+ while (readl(&cmper->l3clkctrl) != PRCM_MOD_EN)
+ ;
+
+ writel(PRCM_MOD_EN, &cmper->l4lsclkctrl);
+ while (readl(&cmper->l4lsclkctrl) != PRCM_MOD_EN)
+ ;
+
+ writel(PRCM_MOD_EN, &cmper->l4fwclkctrl);
+ while (readl(&cmper->l4fwclkctrl) != PRCM_MOD_EN)
+ ;
+
+ writel(PRCM_MOD_EN, &cmwkup->wkl4wkclkctrl);
+ while (readl(&cmwkup->wkl4wkclkctrl) != PRCM_MOD_EN)
+ ;
+
+ writel(PRCM_MOD_EN, &cmper->l3instrclkctrl);
+ while (readl(&cmper->l3instrclkctrl) != PRCM_MOD_EN)
+ ;
+
+ writel(PRCM_MOD_EN, &cmper->l4hsclkctrl);
+ while (readl(&cmper->l4hsclkctrl) != PRCM_MOD_EN)
+ ;
+
+ writel(PRCM_MOD_EN, &cmwkup->wkgpio0clkctrl);
+ while (readl(&cmwkup->wkgpio0clkctrl) != PRCM_MOD_EN)
+ ;
+}
+
+/*
+ * Force power domain wake up transition
+ * Ensure that the corresponding interface clock is active before
+ * using the peripheral
+ */
+static void power_domain_wkup_transition(void)
+{
+ writel(PRCM_FORCE_WAKEUP, &cmper->l3clkstctrl);
+ writel(PRCM_FORCE_WAKEUP, &cmper->l4lsclkstctrl);
+ writel(PRCM_FORCE_WAKEUP, &cmwkup->wkclkstctrl);
+ writel(PRCM_FORCE_WAKEUP, &cmper->l4fwclkstctrl);
+ writel(PRCM_FORCE_WAKEUP, &cmper->l3sclkstctrl);
+}
+
+/*
+ * Enable the peripheral clock for required peripherals
+ */
+static void enable_per_clocks(void)
+{
+ /* Enable the control module though RBL would have done it*/
+ writel(PRCM_MOD_EN, &cmwkup->wkctrlclkctrl);
+ while (readl(&cmwkup->wkctrlclkctrl) != PRCM_MOD_EN)
+ ;
+
+ /* Enable the module clock */
+ writel(PRCM_MOD_EN, &cmper->timer2clkctrl);
+ while (readl(&cmper->timer2clkctrl) != PRCM_MOD_EN)
+ ;
+
+ /* Select the Master osc 24 MHZ as Timer2 clock source */
+ writel(0x1, &cmdpll->clktimer2clk);
+
+ /* UART0 */
+ writel(PRCM_MOD_EN, &cmwkup->wkup_uart0ctrl);
+ while (readl(&cmwkup->wkup_uart0ctrl) != PRCM_MOD_EN)
+ ;
+
+ /* UART1 */
+#ifdef CONFIG_SERIAL2
+ writel(PRCM_MOD_EN, &cmper->uart1clkctrl);
+ while (readl(&cmper->uart1clkctrl) != PRCM_MOD_EN)
+ ;
+#endif /* CONFIG_SERIAL2 */
+
+ /* UART2 */
+#ifdef CONFIG_SERIAL3
+ writel(PRCM_MOD_EN, &cmper->uart2clkctrl);
+ while (readl(&cmper->uart2clkctrl) != PRCM_MOD_EN)
+ ;
+#endif /* CONFIG_SERIAL3 */
+
+ /* UART3 */
+#ifdef CONFIG_SERIAL4
+ writel(PRCM_MOD_EN, &cmper->uart3clkctrl);
+ while (readl(&cmper->uart3clkctrl) != PRCM_MOD_EN)
+ ;
+#endif /* CONFIG_SERIAL4 */
+
+ /* UART4 */
+#ifdef CONFIG_SERIAL5
+ writel(PRCM_MOD_EN, &cmper->uart4clkctrl);
+ while (readl(&cmper->uart4clkctrl) != PRCM_MOD_EN)
+ ;
+#endif /* CONFIG_SERIAL5 */
+
+ /* UART5 */
+#ifdef CONFIG_SERIAL6
+ writel(PRCM_MOD_EN, &cmper->uart5clkctrl);
+ while (readl(&cmper->uart5clkctrl) != PRCM_MOD_EN)
+ ;
+#endif /* CONFIG_SERIAL6 */
+
+ /* GPMC */
+ writel(PRCM_MOD_EN, &cmper->gpmcclkctrl);
+ while (readl(&cmper->gpmcclkctrl) != PRCM_MOD_EN)
+ ;
+
+ /* ELM */
+ writel(PRCM_MOD_EN, &cmper->elmclkctrl);
+ while (readl(&cmper->elmclkctrl) != PRCM_MOD_EN)
+ ;
+
+ /* MMC0*/
+ writel(PRCM_MOD_EN, &cmper->mmc0clkctrl);
+ while (readl(&cmper->mmc0clkctrl) != PRCM_MOD_EN)
+ ;
+
+ /* i2c0 */
+ writel(PRCM_MOD_EN, &cmwkup->wkup_i2c0ctrl);
+ while (readl(&cmwkup->wkup_i2c0ctrl) != PRCM_MOD_EN)
+ ;
+
+ /* gpio1 module */
+ writel(PRCM_MOD_EN, &cmper->gpio1clkctrl);
+ while (readl(&cmper->gpio1clkctrl) != PRCM_MOD_EN)
+ ;
+
+ /* gpio2 module */
+ writel(PRCM_MOD_EN, &cmper->gpio2clkctrl);
+ while (readl(&cmper->gpio2clkctrl) != PRCM_MOD_EN)
+ ;
+
+ /* gpio3 module */
+ writel(PRCM_MOD_EN, &cmper->gpio3clkctrl);
+ while (readl(&cmper->gpio3clkctrl) != PRCM_MOD_EN)
+ ;
+
+ /* i2c1 */
+ writel(PRCM_MOD_EN, &cmper->i2c1clkctrl);
+ while (readl(&cmper->i2c1clkctrl) != PRCM_MOD_EN)
+ ;
+
+ /* Ethernet */
+ writel(PRCM_MOD_EN, &cmper->cpgmac0clkctrl);
+ while ((readl(&cmper->cpgmac0clkctrl) & CPGMAC0_IDLE) != PRCM_FUNCTL)
+ ;
+
+ /* spi0 */
+ writel(PRCM_MOD_EN, &cmper->spi0clkctrl);
+ while (readl(&cmper->spi0clkctrl) != PRCM_MOD_EN)
+ ;
+
+ /* RTC */
+ writel(PRCM_MOD_EN, &cmrtc->rtcclkctrl);
+ while (readl(&cmrtc->rtcclkctrl) != PRCM_MOD_EN)
+ ;
+
+ /* MUSB */
+ writel(PRCM_MOD_EN, &cmper->usb0clkctrl);
+ while (readl(&cmper->usb0clkctrl) != PRCM_MOD_EN)
+ ;
+}
+
+static void mpu_pll_config(void)
+{
+ u32 clkmode, clksel, div_m2;
+
+ clkmode = readl(&cmwkup->clkmoddpllmpu);
+ clksel = readl(&cmwkup->clkseldpllmpu);
+ div_m2 = readl(&cmwkup->divm2dpllmpu);
+
+ /* Set the PLL to bypass Mode */
+ writel(PLL_BYPASS_MODE, &cmwkup->clkmoddpllmpu);
+ while (readl(&cmwkup->idlestdpllmpu) != ST_MN_BYPASS)
+ ;
+
+ clksel = clksel & (~CLK_SEL_MASK);
+ clksel = clksel | ((MPUPLL_M << CLK_SEL_SHIFT) | MPUPLL_N);
+ writel(clksel, &cmwkup->clkseldpllmpu);
+
+ div_m2 = div_m2 & ~CLK_DIV_MASK;
+ div_m2 = div_m2 | MPUPLL_M2;
+ writel(div_m2, &cmwkup->divm2dpllmpu);
+
+ clkmode = clkmode | CLK_MODE_SEL;
+ writel(clkmode, &cmwkup->clkmoddpllmpu);
+
+ while (readl(&cmwkup->idlestdpllmpu) != ST_DPLL_CLK)
+ ;
+}
+
+static void core_pll_config(void)
+{
+ u32 clkmode, clksel, div_m4, div_m5, div_m6;
+
+ clkmode = readl(&cmwkup->clkmoddpllcore);
+ clksel = readl(&cmwkup->clkseldpllcore);
+ div_m4 = readl(&cmwkup->divm4dpllcore);
+ div_m5 = readl(&cmwkup->divm5dpllcore);
+ div_m6 = readl(&cmwkup->divm6dpllcore);
+
+ /* Set the PLL to bypass Mode */
+ writel(PLL_BYPASS_MODE, &cmwkup->clkmoddpllcore);
+
+ while (readl(&cmwkup->idlestdpllcore) != ST_MN_BYPASS)
+ ;
+
+ clksel = clksel & (~CLK_SEL_MASK);
+ clksel = clksel | ((COREPLL_M << CLK_SEL_SHIFT) | COREPLL_N);
+ writel(clksel, &cmwkup->clkseldpllcore);
+
+ div_m4 = div_m4 & ~CLK_DIV_MASK;
+ div_m4 = div_m4 | COREPLL_M4;
+ writel(div_m4, &cmwkup->divm4dpllcore);
+
+ div_m5 = div_m5 & ~CLK_DIV_MASK;
+ div_m5 = div_m5 | COREPLL_M5;
+ writel(div_m5, &cmwkup->divm5dpllcore);
+
+ div_m6 = div_m6 & ~CLK_DIV_MASK;
+ div_m6 = div_m6 | COREPLL_M6;
+ writel(div_m6, &cmwkup->divm6dpllcore);
+
+ clkmode = clkmode | CLK_MODE_SEL;
+ writel(clkmode, &cmwkup->clkmoddpllcore);
+
+ while (readl(&cmwkup->idlestdpllcore) != ST_DPLL_CLK)
+ ;
+}
+
+static void per_pll_config(void)
+{
+ u32 clkmode, clksel, div_m2;
+
+ clkmode = readl(&cmwkup->clkmoddpllper);
+ clksel = readl(&cmwkup->clkseldpllper);
+ div_m2 = readl(&cmwkup->divm2dpllper);
+
+ /* Set the PLL to bypass Mode */
+ writel(PLL_BYPASS_MODE, &cmwkup->clkmoddpllper);
+
+ while (readl(&cmwkup->idlestdpllper) != ST_MN_BYPASS)
+ ;
+
+ clksel = clksel & (~CLK_SEL_MASK);
+ clksel = clksel | ((PERPLL_M << CLK_SEL_SHIFT) | PERPLL_N);
+ writel(clksel, &cmwkup->clkseldpllper);
+
+ div_m2 = div_m2 & ~CLK_DIV2_MASK;
+ div_m2 = div_m2 | PERPLL_M2;
+ writel(div_m2, &cmwkup->divm2dpllper);
+
+ clkmode = clkmode | CLK_MODE_SEL;
+ writel(clkmode, &cmwkup->clkmoddpllper);
+
+ while (readl(&cmwkup->idlestdpllper) != ST_DPLL_CLK)
+ ;
+
+ writel(DPLL_CLKDCOLDO_GATE_CTRL, &cmwkup->clkdcoldodpllper);
+}
+
+void ddr_pll_config(unsigned int ddrpll_m)
+{
+ u32 clkmode, clksel, div_m2;
+
+ clkmode = readl(&cmwkup->clkmoddpllddr);
+ clksel = readl(&cmwkup->clkseldpllddr);
+ div_m2 = readl(&cmwkup->divm2dpllddr);
+
+ /* Set the PLL to bypass Mode */
+ clkmode = (clkmode & CLK_MODE_MASK) | PLL_BYPASS_MODE;
+ writel(clkmode, &cmwkup->clkmoddpllddr);
+
+ /* Wait till bypass mode is enabled */
+ while ((readl(&cmwkup->idlestdpllddr) & ST_MN_BYPASS)
+ != ST_MN_BYPASS)
+ ;
+
+ clksel = clksel & (~CLK_SEL_MASK);
+ clksel = clksel | ((ddrpll_m << CLK_SEL_SHIFT) | DDRPLL_N);
+ writel(clksel, &cmwkup->clkseldpllddr);
+
+ div_m2 = div_m2 & CLK_DIV_SEL;
+ div_m2 = div_m2 | DDRPLL_M2;
+ writel(div_m2, &cmwkup->divm2dpllddr);
+
+ clkmode = (clkmode & CLK_MODE_MASK) | CLK_MODE_SEL;
+ writel(clkmode, &cmwkup->clkmoddpllddr);
+
+ /* Wait till dpll is locked */
+ while ((readl(&cmwkup->idlestdpllddr) & ST_DPLL_CLK) != ST_DPLL_CLK)
+ ;
+}
+
+void enable_emif_clocks(void)
+{
+ /* Enable the EMIF_FW Functional clock */
+ writel(PRCM_MOD_EN, &cmper->emiffwclkctrl);
+ /* Enable EMIF0 Clock */
+ writel(PRCM_MOD_EN, &cmper->emifclkctrl);
+ /* Poll if module is functional */
+ while ((readl(&cmper->emifclkctrl)) != PRCM_MOD_EN)
+ ;
+}
+
+/*
+ * Configure the PLL/PRCM for necessary peripherals
+ */
+void pll_init()
+{
+ mpu_pll_config();
+ core_pll_config();
+ per_pll_config();
+
+ /* Enable the required interconnect clocks */
+ enable_interface_clocks();
+
+ /* Power domain wake up transition */
+ power_domain_wkup_transition();
+
+ /* Enable the required peripherals */
+ enable_per_clocks();
+}
diff --git a/arch/arm/cpu/armv7/am33xx/clock-ti814x.c b/arch/arm/cpu/armv7/am33xx/clock-ti814x.c
new file mode 100644
index 0000000..2b63e84
--- /dev/null
+++ b/arch/arm/cpu/armv7/am33xx/clock-ti814x.c
@@ -0,0 +1,234 @@
+/*
+ * clock.c
+ *
+ * clocks for TI814X based boards
+ *
+ * Copyright (C) 2011, Texas Instruments, Incorporated - http://www.ti.com/
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR /PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#include <common.h>
+#include <asm/arch/cpu.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/hardware.h>
+#include <asm/io.h>
+
+/*
+ * Enable the peripheral clock for required peripherals
+ */
+static void enable_per_clocks(void)
+{
+ u32 temp;
+
+ /* Selects OSC0 (20MHz) for DMTIMER1 */
+ temp = readl(DMTIMER_CLKSRC);
+ temp &= ~(0x7 << 3);
+ temp |= (0x4 << 3);
+ writel(temp, DMTIMER_CLKSRC);
+
+ writel(0x2, DM_TIMER1_BASE + 0x54);
+ while (readl(DM_TIMER1_BASE + 0x10) & 1)
+ ;
+
+ writel(0x1, DM_TIMER1_BASE + 0x38);
+
+ /* UARTs */
+ writel(0x2, CM_ALWON_UART_0_CLKCTRL);
+ while (readl(CM_ALWON_UART_0_CLKCTRL) != 0x2)
+ ;
+
+ /* HSMMC */
+ writel(0x2, CM_ALWON_HSMMC_CLKCTRL);
+ while (readl(CM_ALWON_HSMMC_CLKCTRL) != 0x2)
+ ;
+}
+
+/*
+ * select the HS1 or HS2 for DCO Freq
+ * return : CLKCTRL
+ */
+static u32 pll_dco_freq_sel(u32 clkout_dco)
+{
+ if (clkout_dco >= DCO_HS2_MIN && clkout_dco < DCO_HS2_MAX)
+ return SELFREQDCO_HS2;
+ else if (clkout_dco >= DCO_HS1_MIN && clkout_dco < DCO_HS1_MAX)
+ return SELFREQDCO_HS1;
+ else
+ return -1;
+
+}
+
+/*
+ * select the sigma delta config
+ * return: sigma delta val
+ */
+static u32 pll_sigma_delta_val(u32 clkout_dco)
+{
+ u32 sig_val = 0;
+ float frac_div;
+
+ frac_div = (float) clkout_dco / 250;
+ frac_div = frac_div + 0.90;
+ sig_val = (int)frac_div;
+ sig_val = sig_val << 24;
+
+ return sig_val;
+}
+
+/*
+ * configure individual ADPLLJ
+ */
+static void pll_config(u32 base, u32 n, u32 m, u32 m2,
+ u32 clkctrl_val, int adpllj)
+{
+ u32 m2nval, mn2val, read_clkctrl = 0, clkout_dco = 0;
+ u32 sig_val = 0, hs_mod = 0;
+
+ m2nval = (m2 << 16) | n;
+ mn2val = m;
+
+ /* calculate clkout_dco */
+ clkout_dco = ((OSC_0_FREQ / (n+1)) * m);
+
+ /* sigma delta & Hs mode selection skip for ADPLLS*/
+ if (adpllj) {
+ sig_val = pll_sigma_delta_val(clkout_dco);
+ hs_mod = pll_dco_freq_sel(clkout_dco);
+ }
+
+ /* by-pass pll */
+ read_clkctrl = readl(base + ADPLLJ_CLKCTRL);
+ writel((read_clkctrl | 0x00800000), (base + ADPLLJ_CLKCTRL));
+ while ((readl(base + ADPLLJ_STATUS) & 0x101) != 0x101)
+ ;
+
+ /* Clear TINITZ */
+ read_clkctrl = readl(base + ADPLLJ_CLKCTRL);
+ writel((read_clkctrl & 0xfffffffe), (base + ADPLLJ_CLKCTRL));
+
+ /*
+ * ref_clk = 20/(n + 1);
+ * clkout_dco = ref_clk * m;
+ * clk_out = clkout_dco/m2;
+ */
+
+ read_clkctrl = readl(base + ADPLLJ_CLKCTRL) & 0xffffe3ff;
+ writel(m2nval, (base + ADPLLJ_M2NDIV));
+ writel(mn2val, (base + ADPLLJ_MN2DIV));
+
+ /* Skip for modena(ADPLLS) */
+ if (adpllj) {
+ writel(sig_val, (base + ADPLLJ_FRACDIV));
+ writel((read_clkctrl | hs_mod), (base + ADPLLJ_CLKCTRL));
+ }
+
+ /* Load M2, N2 dividers of ADPLL */
+ writel(0x1, (base + ADPLLJ_TENABLEDIV));
+ writel(0x0, (base + ADPLLJ_TENABLEDIV));
+
+ /* Load M, N dividers of ADPLL */
+ writel(0x1, (base + ADPLLJ_TENABLE));
+ writel(0x0, (base + ADPLLJ_TENABLE));
+
+ /* Configure CLKDCOLDOEN,CLKOUTLDOEN,CLKOUT Enable BITS */
+ read_clkctrl = readl(base + ADPLLJ_CLKCTRL) & 0xdfe5ffff;
+ if (adpllj)
+ writel((read_clkctrl | ADPLLJ_CLKCTRL_CLKDCO),
+ base + ADPLLJ_CLKCTRL);
+
+ /* Enable TINTZ and disable IDLE(PLL in Active & Locked Mode */
+ read_clkctrl = readl(base + ADPLLJ_CLKCTRL) & 0xff7fffff;
+ writel((read_clkctrl | 0x1), base + ADPLLJ_CLKCTRL);
+
+ /* Wait for phase and freq lock */
+ while ((readl(base + ADPLLJ_STATUS) & 0x600) != 0x600)
+ ;
+
+}
+
+static void unlock_pll_control_mmr(void)
+{
+ /* TRM 2.10.1.4 and 3.2.7-3.2.11 */
+ writel(0x1EDA4C3D, 0x481C5040);
+ writel(0x2FF1AC2B, 0x48140060);
+ writel(0xF757FDC0, 0x48140064);
+ writel(0xE2BC3A6D, 0x48140068);
+ writel(0x1EBF131D, 0x4814006c);
+ writel(0x6F361E05, 0x48140070);
+}
+
+static void mpu_pll_config(void)
+{
+ pll_config(MPU_PLL_BASE, MPU_N, MPU_M, MPU_M2, MPU_CLKCTRL, 0);
+}
+
+static void l3_pll_config(void)
+{
+ u32 l3_osc_src, rd_osc_src = 0;
+
+ l3_osc_src = L3_OSC_SRC;
+ rd_osc_src = readl(OSC_SRC_CTRL);
+
+ if (OSC_SRC0 == l3_osc_src)
+ writel((rd_osc_src & 0xfffffffe)|0x0, OSC_SRC_CTRL);
+ else
+ writel((rd_osc_src & 0xfffffffe)|0x1, OSC_SRC_CTRL);
+
+ pll_config(L3_PLL_BASE, L3_N, L3_M, L3_M2, L3_CLKCTRL, 1);
+}
+
+void ddr_pll_config(unsigned int ddrpll_m)
+{
+ pll_config(DDR_PLL_BASE, DDR_N, DDR_M, DDR_M2, DDR_CLKCTRL, 1);
+}
+
+void enable_dmm_clocks(void)
+{
+ writel(0x2, CM_DEFAULT_FW_CLKCTRL);
+ writel(0x2, CM_DEFAULT_L3_FAST_CLKSTCTRL);
+ while ((readl(CM_DEFAULT_L3_FAST_CLKSTCTRL) & 0x300) != 0x300)
+ ;
+ writel(0x2, CM_ALWON_L3_SLOW_CLKSTCTRL);
+ while ((readl(CM_ALWON_L3_SLOW_CLKSTCTRL) & 0x2100) != 0x2100)
+ ;
+ writel(0x2, CM_DEFAULT_DMM_CLKCTRL);
+ while ((readl(CM_DEFAULT_DMM_CLKCTRL)) != 0x2)
+ ;
+}
+
+void enable_emif_clocks(void)
+{
+ writel(0x2, CM_DEFAULT_EMIF_0_CLKCTRL);
+ while ((readl(CM_DEFAULT_EMIF_0_CLKCTRL)) != 0x2)
+ ;
+ writel(0x2, CM_DEFAULT_EMIF_1_CLKCTRL);
+ while ((readl(CM_DEFAULT_EMIF_1_CLKCTRL)) != 0x2)
+ ;
+}
+
+/*
+ * Configure the PLL/PRCM for necessary peripherals
+ */
+void pll_init()
+{
+ unlock_pll_control_mmr();
+
+ /* Enable the control module */
+ writel(0x2, CM_ALWON_CONTROL_CLKCTRL);
+
+ mpu_pll_config();
+
+ l3_pll_config();
+
+ /* Enable the required peripherals */
+ enable_per_clocks();
+}
diff --git a/arch/arm/cpu/armv7/am33xx/clock.c b/arch/arm/cpu/armv7/am33xx/clock.c
deleted file mode 100644
index d7d98d1..0000000
--- a/arch/arm/cpu/armv7/am33xx/clock.c
+++ /dev/null
@@ -1,374 +0,0 @@
-/*
- * clock.c
- *
- * clocks for AM33XX based boards
- *
- * Copyright (C) 2011, Texas Instruments, Incorporated - http://www.ti.com/
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR /PURPOSE. See the
- * GNU General Public License for more details.
- */
-
-#include <common.h>
-#include <asm/arch/cpu.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/hardware.h>
-#include <asm/io.h>
-
-#define PRCM_MOD_EN 0x2
-#define PRCM_FORCE_WAKEUP 0x2
-#define PRCM_FUNCTL 0x0
-
-#define PRCM_EMIF_CLK_ACTIVITY BIT(2)
-#define PRCM_L3_GCLK_ACTIVITY BIT(4)
-
-#define PLL_BYPASS_MODE 0x4
-#define ST_MN_BYPASS 0x00000100
-#define ST_DPLL_CLK 0x00000001
-#define CLK_SEL_MASK 0x7ffff
-#define CLK_DIV_MASK 0x1f
-#define CLK_DIV2_MASK 0x7f
-#define CLK_SEL_SHIFT 0x8
-#define CLK_MODE_SEL 0x7
-#define CLK_MODE_MASK 0xfffffff8
-#define CLK_DIV_SEL 0xFFFFFFE0
-#define CPGMAC0_IDLE 0x30000
-#define DPLL_CLKDCOLDO_GATE_CTRL 0x300
-
-const struct cm_perpll *cmper = (struct cm_perpll *)CM_PER;
-const struct cm_wkuppll *cmwkup = (struct cm_wkuppll *)CM_WKUP;
-const struct cm_dpll *cmdpll = (struct cm_dpll *)CM_DPLL;
-const struct cm_rtc *cmrtc = (struct cm_rtc *)CM_RTC;
-
-static void enable_interface_clocks(void)
-{
- /* Enable all the Interconnect Modules */
- writel(PRCM_MOD_EN, &cmper->l3clkctrl);
- while (readl(&cmper->l3clkctrl) != PRCM_MOD_EN)
- ;
-
- writel(PRCM_MOD_EN, &cmper->l4lsclkctrl);
- while (readl(&cmper->l4lsclkctrl) != PRCM_MOD_EN)
- ;
-
- writel(PRCM_MOD_EN, &cmper->l4fwclkctrl);
- while (readl(&cmper->l4fwclkctrl) != PRCM_MOD_EN)
- ;
-
- writel(PRCM_MOD_EN, &cmwkup->wkl4wkclkctrl);
- while (readl(&cmwkup->wkl4wkclkctrl) != PRCM_MOD_EN)
- ;
-
- writel(PRCM_MOD_EN, &cmper->l3instrclkctrl);
- while (readl(&cmper->l3instrclkctrl) != PRCM_MOD_EN)
- ;
-
- writel(PRCM_MOD_EN, &cmper->l4hsclkctrl);
- while (readl(&cmper->l4hsclkctrl) != PRCM_MOD_EN)
- ;
-
- writel(PRCM_MOD_EN, &cmwkup->wkgpio0clkctrl);
- while (readl(&cmwkup->wkgpio0clkctrl) != PRCM_MOD_EN)
- ;
-}
-
-/*
- * Force power domain wake up transition
- * Ensure that the corresponding interface clock is active before
- * using the peripheral
- */
-static void power_domain_wkup_transition(void)
-{
- writel(PRCM_FORCE_WAKEUP, &cmper->l3clkstctrl);
- writel(PRCM_FORCE_WAKEUP, &cmper->l4lsclkstctrl);
- writel(PRCM_FORCE_WAKEUP, &cmwkup->wkclkstctrl);
- writel(PRCM_FORCE_WAKEUP, &cmper->l4fwclkstctrl);
- writel(PRCM_FORCE_WAKEUP, &cmper->l3sclkstctrl);
-}
-
-/*
- * Enable the peripheral clock for required peripherals
- */
-static void enable_per_clocks(void)
-{
- /* Enable the control module though RBL would have done it*/
- writel(PRCM_MOD_EN, &cmwkup->wkctrlclkctrl);
- while (readl(&cmwkup->wkctrlclkctrl) != PRCM_MOD_EN)
- ;
-
- /* Enable the module clock */
- writel(PRCM_MOD_EN, &cmper->timer2clkctrl);
- while (readl(&cmper->timer2clkctrl) != PRCM_MOD_EN)
- ;
-
- /* Select the Master osc 24 MHZ as Timer2 clock source */
- writel(0x1, &cmdpll->clktimer2clk);
-
- /* UART0 */
- writel(PRCM_MOD_EN, &cmwkup->wkup_uart0ctrl);
- while (readl(&cmwkup->wkup_uart0ctrl) != PRCM_MOD_EN)
- ;
-
- /* UART1 */
-#ifdef CONFIG_SERIAL2
- writel(PRCM_MOD_EN, &cmper->uart1clkctrl);
- while (readl(&cmper->uart1clkctrl) != PRCM_MOD_EN)
- ;
-#endif /* CONFIG_SERIAL2 */
-
- /* UART2 */
-#ifdef CONFIG_SERIAL3
- writel(PRCM_MOD_EN, &cmper->uart2clkctrl);
- while (readl(&cmper->uart2clkctrl) != PRCM_MOD_EN)
- ;
-#endif /* CONFIG_SERIAL3 */
-
- /* UART3 */
-#ifdef CONFIG_SERIAL4
- writel(PRCM_MOD_EN, &cmper->uart3clkctrl);
- while (readl(&cmper->uart3clkctrl) != PRCM_MOD_EN)
- ;
-#endif /* CONFIG_SERIAL4 */
-
- /* UART4 */
-#ifdef CONFIG_SERIAL5
- writel(PRCM_MOD_EN, &cmper->uart4clkctrl);
- while (readl(&cmper->uart4clkctrl) != PRCM_MOD_EN)
- ;
-#endif /* CONFIG_SERIAL5 */
-
- /* UART5 */
-#ifdef CONFIG_SERIAL6
- writel(PRCM_MOD_EN, &cmper->uart5clkctrl);
- while (readl(&cmper->uart5clkctrl) != PRCM_MOD_EN)
- ;
-#endif /* CONFIG_SERIAL6 */
-
- /* GPMC */
- writel(PRCM_MOD_EN, &cmper->gpmcclkctrl);
- while (readl(&cmper->gpmcclkctrl) != PRCM_MOD_EN)
- ;
-
- /* ELM */
- writel(PRCM_MOD_EN, &cmper->elmclkctrl);
- while (readl(&cmper->elmclkctrl) != PRCM_MOD_EN)
- ;
-
- /* MMC0*/
- writel(PRCM_MOD_EN, &cmper->mmc0clkctrl);
- while (readl(&cmper->mmc0clkctrl) != PRCM_MOD_EN)
- ;
-
- /* i2c0 */
- writel(PRCM_MOD_EN, &cmwkup->wkup_i2c0ctrl);
- while (readl(&cmwkup->wkup_i2c0ctrl) != PRCM_MOD_EN)
- ;
-
- /* gpio1 module */
- writel(PRCM_MOD_EN, &cmper->gpio1clkctrl);
- while (readl(&cmper->gpio1clkctrl) != PRCM_MOD_EN)
- ;
-
- /* gpio2 module */
- writel(PRCM_MOD_EN, &cmper->gpio2clkctrl);
- while (readl(&cmper->gpio2clkctrl) != PRCM_MOD_EN)
- ;
-
- /* gpio3 module */
- writel(PRCM_MOD_EN, &cmper->gpio3clkctrl);
- while (readl(&cmper->gpio3clkctrl) != PRCM_MOD_EN)
- ;
-
- /* i2c1 */
- writel(PRCM_MOD_EN, &cmper->i2c1clkctrl);
- while (readl(&cmper->i2c1clkctrl) != PRCM_MOD_EN)
- ;
-
- /* Ethernet */
- writel(PRCM_MOD_EN, &cmper->cpgmac0clkctrl);
- while ((readl(&cmper->cpgmac0clkctrl) & CPGMAC0_IDLE) != PRCM_FUNCTL)
- ;
-
- /* spi0 */
- writel(PRCM_MOD_EN, &cmper->spi0clkctrl);
- while (readl(&cmper->spi0clkctrl) != PRCM_MOD_EN)
- ;
-
- /* RTC */
- writel(PRCM_MOD_EN, &cmrtc->rtcclkctrl);
- while (readl(&cmrtc->rtcclkctrl) != PRCM_MOD_EN)
- ;
-
- /* MUSB */
- writel(PRCM_MOD_EN, &cmper->usb0clkctrl);
- while (readl(&cmper->usb0clkctrl) != PRCM_MOD_EN)
- ;
-}
-
-static void mpu_pll_config(void)
-{
- u32 clkmode, clksel, div_m2;
-
- clkmode = readl(&cmwkup->clkmoddpllmpu);
- clksel = readl(&cmwkup->clkseldpllmpu);
- div_m2 = readl(&cmwkup->divm2dpllmpu);
-
- /* Set the PLL to bypass Mode */
- writel(PLL_BYPASS_MODE, &cmwkup->clkmoddpllmpu);
- while (readl(&cmwkup->idlestdpllmpu) != ST_MN_BYPASS)
- ;
-
- clksel = clksel & (~CLK_SEL_MASK);
- clksel = clksel | ((MPUPLL_M << CLK_SEL_SHIFT) | MPUPLL_N);
- writel(clksel, &cmwkup->clkseldpllmpu);
-
- div_m2 = div_m2 & ~CLK_DIV_MASK;
- div_m2 = div_m2 | MPUPLL_M2;
- writel(div_m2, &cmwkup->divm2dpllmpu);
-
- clkmode = clkmode | CLK_MODE_SEL;
- writel(clkmode, &cmwkup->clkmoddpllmpu);
-
- while (readl(&cmwkup->idlestdpllmpu) != ST_DPLL_CLK)
- ;
-}
-
-static void core_pll_config(void)
-{
- u32 clkmode, clksel, div_m4, div_m5, div_m6;
-
- clkmode = readl(&cmwkup->clkmoddpllcore);
- clksel = readl(&cmwkup->clkseldpllcore);
- div_m4 = readl(&cmwkup->divm4dpllcore);
- div_m5 = readl(&cmwkup->divm5dpllcore);
- div_m6 = readl(&cmwkup->divm6dpllcore);
-
- /* Set the PLL to bypass Mode */
- writel(PLL_BYPASS_MODE, &cmwkup->clkmoddpllcore);
-
- while (readl(&cmwkup->idlestdpllcore) != ST_MN_BYPASS)
- ;
-
- clksel = clksel & (~CLK_SEL_MASK);
- clksel = clksel | ((COREPLL_M << CLK_SEL_SHIFT) | COREPLL_N);
- writel(clksel, &cmwkup->clkseldpllcore);
-
- div_m4 = div_m4 & ~CLK_DIV_MASK;
- div_m4 = div_m4 | COREPLL_M4;
- writel(div_m4, &cmwkup->divm4dpllcore);
-
- div_m5 = div_m5 & ~CLK_DIV_MASK;
- div_m5 = div_m5 | COREPLL_M5;
- writel(div_m5, &cmwkup->divm5dpllcore);
-
- div_m6 = div_m6 & ~CLK_DIV_MASK;
- div_m6 = div_m6 | COREPLL_M6;
- writel(div_m6, &cmwkup->divm6dpllcore);
-
- clkmode = clkmode | CLK_MODE_SEL;
- writel(clkmode, &cmwkup->clkmoddpllcore);
-
- while (readl(&cmwkup->idlestdpllcore) != ST_DPLL_CLK)
- ;
-}
-
-static void per_pll_config(void)
-{
- u32 clkmode, clksel, div_m2;
-
- clkmode = readl(&cmwkup->clkmoddpllper);
- clksel = readl(&cmwkup->clkseldpllper);
- div_m2 = readl(&cmwkup->divm2dpllper);
-
- /* Set the PLL to bypass Mode */
- writel(PLL_BYPASS_MODE, &cmwkup->clkmoddpllper);
-
- while (readl(&cmwkup->idlestdpllper) != ST_MN_BYPASS)
- ;
-
- clksel = clksel & (~CLK_SEL_MASK);
- clksel = clksel | ((PERPLL_M << CLK_SEL_SHIFT) | PERPLL_N);
- writel(clksel, &cmwkup->clkseldpllper);
-
- div_m2 = div_m2 & ~CLK_DIV2_MASK;
- div_m2 = div_m2 | PERPLL_M2;
- writel(div_m2, &cmwkup->divm2dpllper);
-
- clkmode = clkmode | CLK_MODE_SEL;
- writel(clkmode, &cmwkup->clkmoddpllper);
-
- while (readl(&cmwkup->idlestdpllper) != ST_DPLL_CLK)
- ;
-
- writel(DPLL_CLKDCOLDO_GATE_CTRL, &cmwkup->clkdcoldodpllper);
-}
-
-void ddr_pll_config(unsigned int ddrpll_m)
-{
- u32 clkmode, clksel, div_m2;
-
- clkmode = readl(&cmwkup->clkmoddpllddr);
- clksel = readl(&cmwkup->clkseldpllddr);
- div_m2 = readl(&cmwkup->divm2dpllddr);
-
- /* Set the PLL to bypass Mode */
- clkmode = (clkmode & CLK_MODE_MASK) | PLL_BYPASS_MODE;
- writel(clkmode, &cmwkup->clkmoddpllddr);
-
- /* Wait till bypass mode is enabled */
- while ((readl(&cmwkup->idlestdpllddr) & ST_MN_BYPASS)
- != ST_MN_BYPASS)
- ;
-
- clksel = clksel & (~CLK_SEL_MASK);
- clksel = clksel | ((ddrpll_m << CLK_SEL_SHIFT) | DDRPLL_N);
- writel(clksel, &cmwkup->clkseldpllddr);
-
- div_m2 = div_m2 & CLK_DIV_SEL;
- div_m2 = div_m2 | DDRPLL_M2;
- writel(div_m2, &cmwkup->divm2dpllddr);
-
- clkmode = (clkmode & CLK_MODE_MASK) | CLK_MODE_SEL;
- writel(clkmode, &cmwkup->clkmoddpllddr);
-
- /* Wait till dpll is locked */
- while ((readl(&cmwkup->idlestdpllddr) & ST_DPLL_CLK) != ST_DPLL_CLK)
- ;
-}
-
-void enable_emif_clocks(void)
-{
- /* Enable the EMIF_FW Functional clock */
- writel(PRCM_MOD_EN, &cmper->emiffwclkctrl);
- /* Enable EMIF0 Clock */
- writel(PRCM_MOD_EN, &cmper->emifclkctrl);
- /* Poll if module is functional */
- while ((readl(&cmper->emifclkctrl)) != PRCM_MOD_EN)
- ;
-}
-
-/*
- * Configure the PLL/PRCM for necessary peripherals
- */
-void pll_init()
-{
- mpu_pll_config();
- core_pll_config();
- per_pll_config();
-
- /* Enable the required interconnect clocks */
- enable_interface_clocks();
-
- /* Power domain wake up transition */
- power_domain_wkup_transition();
-
- /* Enable the required peripherals */
- enable_per_clocks();
-}
diff --git a/arch/arm/include/asm/arch-am33xx/clock.h b/arch/arm/include/asm/arch-am33xx/clock.h
index 872ff82..786eecf 100644
--- a/arch/arm/include/asm/arch-am33xx/clock.h
+++ b/arch/arm/include/asm/arch-am33xx/clock.h
@@ -19,6 +19,10 @@
#ifndef _CLOCKS_H_
#define _CLOCKS_H_
+#ifdef CONFIG_AM33XX
#include <asm/arch/clocks_am33xx.h>
+#elif defined(CONFIG_TI814X)
+#include <asm/arch/clocks_ti814x.h>
+#endif
#endif
diff --git a/arch/arm/include/asm/arch-am33xx/clocks_ti814x.h b/arch/arm/include/asm/arch-am33xx/clocks_ti814x.h
new file mode 100644
index 0000000..4d37470
--- /dev/null
+++ b/arch/arm/include/asm/arch-am33xx/clocks_ti814x.h
@@ -0,0 +1,112 @@
+/*
+ * (C) Copyright 2006-2008
+ * Texas Instruments, <www.ti.com>
+ * Richard Woodruff <r-woodruff2@ti.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR /PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+#ifndef _CLOCKS_TI814X_H_
+#define _CLOCKS_TI814X_H_
+
+#define DDR_PLL_400 /* Values supported 400,533 */
+
+/* CLK_SRC */
+#define OSC_SRC0 0
+#define OSC_SRC1 1
+
+#define L3_OSC_SRC OSC_SRC0
+
+#define OSC_0_FREQ 20
+
+#define DCO_HS2_MIN 500
+#define DCO_HS2_MAX 1000
+#define DCO_HS1_MIN 1000
+#define DCO_HS1_MAX 2000
+
+#define SELFREQDCO_HS2 0x00000801
+#define SELFREQDCO_HS1 0x00001001
+
+#define MPU_N 0x1
+#define MPU_M 0x3C
+#define MPU_M2 1
+#define MPU_CLKCTRL 0x1
+
+#define L3_N 19
+#define L3_M 880
+#define L3_M2 4
+#define L3_CLKCTRL 0x801
+
+#define DDR_N 19
+#define DDR_M 666
+#define DDR_M2 2
+#define DDR_CLKCTRL 0x801
+
+/* Clocks are derived from ADPLLJ */
+#define ADPLLJ_CLKCTRL 0x4
+#define ADPLLJ_TENABLE 0x8
+#define ADPLLJ_TENABLEDIV 0xC
+#define ADPLLJ_M2NDIV 0x10
+#define ADPLLJ_MN2DIV 0x14
+#define ADPLLJ_FRACDIV 0x18
+#define ADPLLJ_STATUS 0x24
+
+/* ADPLLJ register values */
+#define ADPLLJ_CLKCTRL_HS2 0x00000801 /* HS2 mode, TINT2 = 1 */
+#define ADPLLJ_CLKCTRL_HS1 0x00001001 /* HS1 mode, TINT2 = 1 */
+#define ADPLLJ_CLKCTRL_CLKDCO 0x201A0000
+
+#define MPU_PLL_BASE (PLL_SUBSYS_BASE + 0x048)
+#define L3_PLL_BASE (PLL_SUBSYS_BASE + 0x110)
+#define USB_PLL_BASE (PLL_SUBSYS_BASE + 0x260)
+#define DDR_PLL_BASE (PLL_SUBSYS_BASE + 0x290)
+
+#define OSC_SRC_CTRL (PLL_SUBSYS_BASE + 0x2C0)
+#define OSC_SRC (PLL_SUBSYS_BASE + 0x2C0)
+#define ARM_CLKSRC (PLL_SUBSYS_BASE + 0x2C4)
+#define MLB_ATL_CLKSRC (PLL_SUBSYS_BASE + 0x2CC)
+#define DMTIMER_CLKSRC (PLL_SUBSYS_BASE + 0x2E0)
+#define CLKOUT_MUX (PLL_SUBSYS_BASE + 0x2E4)
+#define SYSCLK18_SRC (PLL_SUBSYS_BASE + 0x2F0)
+#define WDT0_CLKSRC (PLL_SUBSYS_BASE + 0x2F4)
+
+/* PRCM */
+#define CM_DPLL_OFFSET (PRCM_BASE + 0x0300)
+
+/*EMIF4 PRCM Defintion*/
+#define CM_DEFAULT_L3_FAST_CLKSTCTRL (PRCM_BASE + 0x0508)
+#define CM_DEFAULT_EMIF_0_CLKCTRL (PRCM_BASE + 0x0520)
+#define CM_DEFAULT_EMIF_1_CLKCTRL (PRCM_BASE + 0x0524)
+#define CM_DEFAULT_DMM_CLKCTRL (PRCM_BASE + 0x0528)
+#define CM_DEFAULT_FW_CLKCTRL (PRCM_BASE + 0x052C)
+
+#define CM_ALWON_L3_SLOW_CLKSTCTRL (PRCM_BASE + 0x1400)
+#define CM_ALWON_UART_0_CLKCTRL (PRCM_BASE + 0x1550)
+#define CM_ALWON_UART_1_CLKCTRL (PRCM_BASE + 0x1554)
+#define CM_ALWON_UART_2_CLKCTRL (PRCM_BASE + 0x1558)
+#define CM_ALWON_GPIO_0_CLKCTRL (PRCM_BASE + 0x155c)
+#define CM_ALWON_GPIO_0_OPTFCLKEN_DBCLK (PRCM_BASE + 0x155c)
+#define CM_ALWON_WDTIMER_CLKCTRL (PRCM_BASE + 0x158C)
+#define CM_ALWON_SPI_CLKCTRL (PRCM_BASE + 0x1590)
+#define CM_ALWON_CONTROL_CLKCTRL (PRCM_BASE + 0x15C4)
+#define CM_ALWON_HSMMC_CLKCTRL (PRCM_BASE + 0x1620)
+
+#define CM_DLL_CTRL_NO_OVERRIDE 0
+
+extern void pll_init(void);
+extern void enable_emif_clocks(void);
+extern void enable_dmm_clocks(void);
+
+#endif /* endif _CLOCKS_TI814X_H_ */
--
1.7.9.5
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [U-Boot] [PATCH 03/10] am33xx: refactor am33xx clocks and add ti814x support
2013-02-13 14:43 ` [U-Boot] [PATCH 03/10] am33xx: refactor am33xx clocks and add ti814x support Matt Porter
@ 2013-02-15 16:37 ` Tom Rini
[not found] ` <2cc71ab85c654e688082a434442f08d8@DLEE74.ent.ti.com>
2013-02-17 20:17 ` Peter Korsgaard
2 siblings, 0 replies; 37+ messages in thread
From: Tom Rini @ 2013-02-15 16:37 UTC (permalink / raw)
To: u-boot
On Wed, Feb 13, 2013 at 09:43:57AM -0500, Matt Porter wrote:
> Split clock.c for am335x and ti814x and add the ti814x include file.
>
> Signed-off-by: Matt Porter <mporter@ti.com>
[snip]
> +++ b/arch/arm/cpu/armv7/am33xx/clock-am335x.c
[snip]
> +#define PRCM_MOD_EN 0x2
> +#define PRCM_FORCE_WAKEUP 0x2
> +#define PRCM_FUNCTL 0x0
> +
> +#define PRCM_EMIF_CLK_ACTIVITY BIT(2)
> +#define PRCM_L3_GCLK_ACTIVITY BIT(4)
> +
> +#define PLL_BYPASS_MODE 0x4
> +#define ST_MN_BYPASS 0x00000100
> +#define ST_DPLL_CLK 0x00000001
> +#define CLK_SEL_MASK 0x7ffff
> +#define CLK_DIV_MASK 0x1f
> +#define CLK_DIV2_MASK 0x7f
> +#define CLK_SEL_SHIFT 0x8
> +#define CLK_MODE_SEL 0x7
> +#define CLK_MODE_MASK 0xfffffff8
> +#define CLK_DIV_SEL 0xFFFFFFE0
> +#define CPGMAC0_IDLE 0x30000
> +#define DPLL_CLKDCOLDO_GATE_CTRL 0x300
[snip]
> +++ b/arch/arm/cpu/armv7/am33xx/clock-ti814x.c
[snip]
> + /* Selects OSC0 (20MHz) for DMTIMER1 */
> + temp = readl(DMTIMER_CLKSRC);
> + temp &= ~(0x7 << 3);
> + temp |= (0x4 << 3);
> + writel(temp, DMTIMER_CLKSRC);
> +
> + writel(0x2, DM_TIMER1_BASE + 0x54);
Magic values are defined for clock-am335x.c but not in clock-ti814x.c,
please fix clock-ti814x.c to define out the magic values ala am335x.c.
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/20130215/fdda41c8/attachment.pgp>
^ permalink raw reply [flat|nested] 37+ messages in thread
[parent not found: <2cc71ab85c654e688082a434442f08d8@DLEE74.ent.ti.com>]
* [U-Boot] [PATCH 03/10] am33xx: refactor am33xx clocks and add ti814x support
[not found] ` <2cc71ab85c654e688082a434442f08d8@DLEE74.ent.ti.com>
@ 2013-02-15 21:16 ` Matt Porter
0 siblings, 0 replies; 37+ messages in thread
From: Matt Porter @ 2013-02-15 21:16 UTC (permalink / raw)
To: u-boot
On Fri, Feb 15, 2013 at 04:37:33PM +0000, Tom Rini wrote:
> On Wed, Feb 13, 2013 at 09:43:57AM -0500, Matt Porter wrote:
>
> > Split clock.c for am335x and ti814x and add the ti814x include file.
> >
> > Signed-off-by: Matt Porter <mporter@ti.com>
>
> [snip]
> > +++ b/arch/arm/cpu/armv7/am33xx/clock-am335x.c
> [snip]
> > +#define PRCM_MOD_EN 0x2
> > +#define PRCM_FORCE_WAKEUP 0x2
> > +#define PRCM_FUNCTL 0x0
> > +
> > +#define PRCM_EMIF_CLK_ACTIVITY BIT(2)
> > +#define PRCM_L3_GCLK_ACTIVITY BIT(4)
> > +
> > +#define PLL_BYPASS_MODE 0x4
> > +#define ST_MN_BYPASS 0x00000100
> > +#define ST_DPLL_CLK 0x00000001
> > +#define CLK_SEL_MASK 0x7ffff
> > +#define CLK_DIV_MASK 0x1f
> > +#define CLK_DIV2_MASK 0x7f
> > +#define CLK_SEL_SHIFT 0x8
> > +#define CLK_MODE_SEL 0x7
> > +#define CLK_MODE_MASK 0xfffffff8
> > +#define CLK_DIV_SEL 0xFFFFFFE0
> > +#define CPGMAC0_IDLE 0x30000
> > +#define DPLL_CLKDCOLDO_GATE_CTRL 0x300
> [snip]
> > +++ b/arch/arm/cpu/armv7/am33xx/clock-ti814x.c
> [snip]
> > + /* Selects OSC0 (20MHz) for DMTIMER1 */
> > + temp = readl(DMTIMER_CLKSRC);
> > + temp &= ~(0x7 << 3);
> > + temp |= (0x4 << 3);
> > + writel(temp, DMTIMER_CLKSRC);
> > +
> > + writel(0x2, DM_TIMER1_BASE + 0x54);
>
> Magic values are defined for clock-am335x.c but not in clock-ti814x.c,
> please fix clock-ti814x.c to define out the magic values ala am335x.c.
> Thanks!
Ok, will clean this up.
-Matt
^ permalink raw reply [flat|nested] 37+ messages in thread
* [U-Boot] [PATCH 03/10] am33xx: refactor am33xx clocks and add ti814x support
2013-02-13 14:43 ` [U-Boot] [PATCH 03/10] am33xx: refactor am33xx clocks and add ti814x support Matt Porter
2013-02-15 16:37 ` Tom Rini
[not found] ` <2cc71ab85c654e688082a434442f08d8@DLEE74.ent.ti.com>
@ 2013-02-17 20:17 ` Peter Korsgaard
2013-02-25 14:31 ` Matt Porter
2 siblings, 1 reply; 37+ messages in thread
From: Peter Korsgaard @ 2013-02-17 20:17 UTC (permalink / raw)
To: u-boot
>>>>> "Matt" == Matt Porter <mporter@ti.com> writes:
Matt> Split clock.c for am335x and ti814x and add the ti814x include file.
Matt> Signed-off-by: Matt Porter <mporter@ti.com>
Matt> ---
Matt> arch/arm/cpu/armv7/am33xx/Makefile | 3 +-
Matt> arch/arm/cpu/armv7/am33xx/clock-am335x.c | 374 ++++++++++++++++++++++
Matt> arch/arm/cpu/armv7/am33xx/clock-ti814x.c | 234 ++++++++++++++
Matt> arch/arm/cpu/armv7/am33xx/clock.c | 374 ----------------------
Matt> arch/arm/include/asm/arch-am33xx/clock.h | 4 +
Matt> arch/arm/include/asm/arch-am33xx/clocks_ti814x.h | 112 +++++++
Matt> 6 files changed, 726 insertions(+), 375 deletions(-)
Matt> create mode 100644 arch/arm/cpu/armv7/am33xx/clock-am335x.c
Matt> create mode 100644 arch/arm/cpu/armv7/am33xx/clock-ti814x.c
Matt> delete mode 100644 arch/arm/cpu/armv7/am33xx/clock.c
Matt> create mode 100644 arch/arm/include/asm/arch-am33xx/clocks_ti814x.h
Do you have rename detection enabled? I would have imagined
clock-am335x.c to show up as a copy of clock.c
Matt> +++ b/arch/arm/cpu/armv7/am33xx/clock-am335x.c
Matt> @@ -0,0 +1,374 @@
Matt> +/*
Matt> + * clock.c
Matt> + *
Matt> + * clocks for AM33XX based boards
Matt> + *
Matt> + * Copyright (C) 2011, Texas Instruments, Incorporated - http://www.ti.com/
This is no longer clock.c or 2011. Care to update the header?
Matt> +++ b/arch/arm/cpu/armv7/am33xx/clock-ti814x.c
Matt> @@ -0,0 +1,234 @@
Matt> +/*
Matt> + * clock.c
Matt> + *
Matt> + * clocks for TI814X based boards
Matt> + *
Matt> + * Copyright (C) 2011, Texas Instruments, Incorporated - http://www.ti.com/
Same here.
--
Bye, Peter Korsgaard
^ permalink raw reply [flat|nested] 37+ messages in thread
* [U-Boot] [PATCH 03/10] am33xx: refactor am33xx clocks and add ti814x support
2013-02-17 20:17 ` Peter Korsgaard
@ 2013-02-25 14:31 ` Matt Porter
0 siblings, 0 replies; 37+ messages in thread
From: Matt Porter @ 2013-02-25 14:31 UTC (permalink / raw)
To: u-boot
On Sun, Feb 17, 2013 at 09:17:01PM +0100, Peter Korsgaard wrote:
> >>>>> "Matt" == Matt Porter <mporter@ti.com> writes:
>
> Matt> Split clock.c for am335x and ti814x and add the ti814x include file.
> Matt> Signed-off-by: Matt Porter <mporter@ti.com>
> Matt> ---
> Matt> arch/arm/cpu/armv7/am33xx/Makefile | 3 +-
> Matt> arch/arm/cpu/armv7/am33xx/clock-am335x.c | 374 ++++++++++++++++++++++
> Matt> arch/arm/cpu/armv7/am33xx/clock-ti814x.c | 234 ++++++++++++++
> Matt> arch/arm/cpu/armv7/am33xx/clock.c | 374 ----------------------
> Matt> arch/arm/include/asm/arch-am33xx/clock.h | 4 +
> Matt> arch/arm/include/asm/arch-am33xx/clocks_ti814x.h | 112 +++++++
> Matt> 6 files changed, 726 insertions(+), 375 deletions(-)
> Matt> create mode 100644 arch/arm/cpu/armv7/am33xx/clock-am335x.c
> Matt> create mode 100644 arch/arm/cpu/armv7/am33xx/clock-ti814x.c
> Matt> delete mode 100644 arch/arm/cpu/armv7/am33xx/clock.c
> Matt> create mode 100644 arch/arm/include/asm/arch-am33xx/clocks_ti814x.h
Hi Peter...thanks for reviewing this.
> Do you have rename detection enabled? I would have imagined
> clock-am335x.c to show up as a copy of clock.c
On any given day I forget to format-patch with rename detection enabled.
You caught me...will be fixed in v2.
> Matt> +++ b/arch/arm/cpu/armv7/am33xx/clock-am335x.c
> Matt> @@ -0,0 +1,374 @@
> Matt> +/*
> Matt> + * clock.c
> Matt> + *
> Matt> + * clocks for AM33XX based boards
> Matt> + *
> Matt> + * Copyright (C) 2011, Texas Instruments, Incorporated - http://www.ti.com/
>
> This is no longer clock.c or 2011. Care to update the header?
Ok
>
> Matt> +++ b/arch/arm/cpu/armv7/am33xx/clock-ti814x.c
> Matt> @@ -0,0 +1,234 @@
> Matt> +/*
> Matt> + * clock.c
> Matt> + *
> Matt> + * clocks for TI814X based boards
> Matt> + *
> Matt> + * Copyright (C) 2011, Texas Instruments, Incorporated - http://www.ti.com/
>
> Same here.
Ok
-Matt
^ permalink raw reply [flat|nested] 37+ messages in thread
* [U-Boot] [PATCH 04/10] am33xx: refactor am33xx mux support and add ti814x support
2013-02-13 14:43 [U-Boot] [PATCH 00/10] Add TI814x EVM Support Matt Porter
` (2 preceding siblings ...)
2013-02-13 14:43 ` [U-Boot] [PATCH 03/10] am33xx: refactor am33xx clocks and add ti814x support Matt Porter
@ 2013-02-13 14:43 ` Matt Porter
2013-02-15 16:37 ` Tom Rini
` (2 more replies)
2013-02-13 14:43 ` [U-Boot] [PATCH 05/10] am33xx: add ti814x specific register definitions Matt Porter
` (5 subsequent siblings)
9 siblings, 3 replies; 37+ messages in thread
From: Matt Porter @ 2013-02-13 14:43 UTC (permalink / raw)
To: u-boot
AM33XX and TI814X have a similar mux though the pinmux register
layout and address space differ. Add a separate ti814x mux include
to support the TI814X-specific differences.
Signed-off-by: Matt Porter <mporter@ti.com>
---
arch/arm/include/asm/arch-am33xx/mux-am335x.h | 246 ++++++++++++++++++++
arch/arm/include/asm/arch-am33xx/mux-ti814x.h | 310 +++++++++++++++++++++++++
arch/arm/include/asm/arch-am33xx/mux.h | 230 +-----------------
3 files changed, 562 insertions(+), 224 deletions(-)
create mode 100644 arch/arm/include/asm/arch-am33xx/mux-am335x.h
create mode 100644 arch/arm/include/asm/arch-am33xx/mux-ti814x.h
diff --git a/arch/arm/include/asm/arch-am33xx/mux-am335x.h b/arch/arm/include/asm/arch-am33xx/mux-am335x.h
new file mode 100644
index 0000000..7258135
--- /dev/null
+++ b/arch/arm/include/asm/arch-am33xx/mux-am335x.h
@@ -0,0 +1,246 @@
+/*
+ * mux.h
+ *
+ * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation version 2.
+ *
+ * This program is distributed "as is" WITHOUT ANY WARRANTY of any
+ * kind, whether express or implied; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#ifndef _MUX_AM335X_H_
+#define _MUX_AM335X_H_
+
+#include <common.h>
+#include <asm/io.h>
+
+#define MUX_CFG(value, offset) \
+ __raw_writel(value, (CTRL_BASE + offset));
+
+/* PAD Control Fields */
+#define SLEWCTRL (0x1 << 6)
+#define RXACTIVE (0x1 << 5)
+#define PULLUP_EN (0x1 << 4) /* Pull UP Selection */
+#define PULLUDEN (0x0 << 3) /* Pull up enabled */
+#define PULLUDDIS (0x1 << 3) /* Pull up disabled */
+#define MODE(val) val /* used for Readability */
+
+/*
+ * PAD CONTROL OFFSETS
+ * Field names corresponds to the pad signal name
+ */
+struct pad_signals {
+ int gpmc_ad0;
+ int gpmc_ad1;
+ int gpmc_ad2;
+ int gpmc_ad3;
+ int gpmc_ad4;
+ int gpmc_ad5;
+ int gpmc_ad6;
+ int gpmc_ad7;
+ int gpmc_ad8;
+ int gpmc_ad9;
+ int gpmc_ad10;
+ int gpmc_ad11;
+ int gpmc_ad12;
+ int gpmc_ad13;
+ int gpmc_ad14;
+ int gpmc_ad15;
+ int gpmc_a0;
+ int gpmc_a1;
+ int gpmc_a2;
+ int gpmc_a3;
+ int gpmc_a4;
+ int gpmc_a5;
+ int gpmc_a6;
+ int gpmc_a7;
+ int gpmc_a8;
+ int gpmc_a9;
+ int gpmc_a10;
+ int gpmc_a11;
+ int gpmc_wait0;
+ int gpmc_wpn;
+ int gpmc_be1n;
+ int gpmc_csn0;
+ int gpmc_csn1;
+ int gpmc_csn2;
+ int gpmc_csn3;
+ int gpmc_clk;
+ int gpmc_advn_ale;
+ int gpmc_oen_ren;
+ int gpmc_wen;
+ int gpmc_be0n_cle;
+ int lcd_data0;
+ int lcd_data1;
+ int lcd_data2;
+ int lcd_data3;
+ int lcd_data4;
+ int lcd_data5;
+ int lcd_data6;
+ int lcd_data7;
+ int lcd_data8;
+ int lcd_data9;
+ int lcd_data10;
+ int lcd_data11;
+ int lcd_data12;
+ int lcd_data13;
+ int lcd_data14;
+ int lcd_data15;
+ int lcd_vsync;
+ int lcd_hsync;
+ int lcd_pclk;
+ int lcd_ac_bias_en;
+ int mmc0_dat3;
+ int mmc0_dat2;
+ int mmc0_dat1;
+ int mmc0_dat0;
+ int mmc0_clk;
+ int mmc0_cmd;
+ int mii1_col;
+ int mii1_crs;
+ int mii1_rxerr;
+ int mii1_txen;
+ int mii1_rxdv;
+ int mii1_txd3;
+ int mii1_txd2;
+ int mii1_txd1;
+ int mii1_txd0;
+ int mii1_txclk;
+ int mii1_rxclk;
+ int mii1_rxd3;
+ int mii1_rxd2;
+ int mii1_rxd1;
+ int mii1_rxd0;
+ int rmii1_refclk;
+ int mdio_data;
+ int mdio_clk;
+ int spi0_sclk;
+ int spi0_d0;
+ int spi0_d1;
+ int spi0_cs0;
+ int spi0_cs1;
+ int ecap0_in_pwm0_out;
+ int uart0_ctsn;
+ int uart0_rtsn;
+ int uart0_rxd;
+ int uart0_txd;
+ int uart1_ctsn;
+ int uart1_rtsn;
+ int uart1_rxd;
+ int uart1_txd;
+ int i2c0_sda;
+ int i2c0_scl;
+ int mcasp0_aclkx;
+ int mcasp0_fsx;
+ int mcasp0_axr0;
+ int mcasp0_ahclkr;
+ int mcasp0_aclkr;
+ int mcasp0_fsr;
+ int mcasp0_axr1;
+ int mcasp0_ahclkx;
+ int xdma_event_intr0;
+ int xdma_event_intr1;
+ int nresetin_out;
+ int porz;
+ int nnmi;
+ int osc0_in;
+ int osc0_out;
+ int rsvd1;
+ int tms;
+ int tdi;
+ int tdo;
+ int tck;
+ int ntrst;
+ int emu0;
+ int emu1;
+ int osc1_in;
+ int osc1_out;
+ int pmic_power_en;
+ int rtc_porz;
+ int rsvd2;
+ int ext_wakeup;
+ int enz_kaldo_1p8v;
+ int usb0_dm;
+ int usb0_dp;
+ int usb0_ce;
+ int usb0_id;
+ int usb0_vbus;
+ int usb0_drvvbus;
+ int usb1_dm;
+ int usb1_dp;
+ int usb1_ce;
+ int usb1_id;
+ int usb1_vbus;
+ int usb1_drvvbus;
+ int ddr_resetn;
+ int ddr_csn0;
+ int ddr_cke;
+ int ddr_ck;
+ int ddr_nck;
+ int ddr_casn;
+ int ddr_rasn;
+ int ddr_wen;
+ int ddr_ba0;
+ int ddr_ba1;
+ int ddr_ba2;
+ int ddr_a0;
+ int ddr_a1;
+ int ddr_a2;
+ int ddr_a3;
+ int ddr_a4;
+ int ddr_a5;
+ int ddr_a6;
+ int ddr_a7;
+ int ddr_a8;
+ int ddr_a9;
+ int ddr_a10;
+ int ddr_a11;
+ int ddr_a12;
+ int ddr_a13;
+ int ddr_a14;
+ int ddr_a15;
+ int ddr_odt;
+ int ddr_d0;
+ int ddr_d1;
+ int ddr_d2;
+ int ddr_d3;
+ int ddr_d4;
+ int ddr_d5;
+ int ddr_d6;
+ int ddr_d7;
+ int ddr_d8;
+ int ddr_d9;
+ int ddr_d10;
+ int ddr_d11;
+ int ddr_d12;
+ int ddr_d13;
+ int ddr_d14;
+ int ddr_d15;
+ int ddr_dqm0;
+ int ddr_dqm1;
+ int ddr_dqs0;
+ int ddr_dqsn0;
+ int ddr_dqs1;
+ int ddr_dqsn1;
+ int ddr_vref;
+ int ddr_vtp;
+ int ddr_strben0;
+ int ddr_strben1;
+ int ain7;
+ int ain6;
+ int ain5;
+ int ain4;
+ int ain3;
+ int ain2;
+ int ain1;
+ int ain0;
+ int vrefp;
+ int vrefn;
+};
+
+#endif
diff --git a/arch/arm/include/asm/arch-am33xx/mux-ti814x.h b/arch/arm/include/asm/arch-am33xx/mux-ti814x.h
new file mode 100644
index 0000000..df66354
--- /dev/null
+++ b/arch/arm/include/asm/arch-am33xx/mux-ti814x.h
@@ -0,0 +1,310 @@
+/*
+ * mux-ti814x.h
+ *
+ * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation version 2.
+ *
+ * This program is distributed "as is" WITHOUT ANY WARRANTY of any
+ * kind, whether express or implied; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#ifndef _MUX_TI814X_H_
+#define _MUX_TI814X_H_
+
+/* PAD Control Fields */
+#define PINCNTL_RSV_MSK (0x3 << 18) /* Reserved bitmask */
+#define PULLUP_EN (0x1 << 17) /* Pull UP Selection */
+#define PULLUDEN (0x0 << 16) /* Pull up enabled */
+#define PULLUDDIS (0x1 << 16) /* Pull up disabled */
+#define MODE(val) val /* used for Readability */
+
+#define MUX_CFG(value, offset) \
+{ \
+ int tmp; \
+ tmp = __raw_readl(CTRL_BASE + offset); \
+ tmp &= PINCNTL_RSV_MSK; \
+ __raw_writel(tmp | value, (CTRL_BASE + offset));\
+}
+
+/*
+ * PAD CONTROL OFFSETS
+ * Field names corresponds to the pad signal name
+ */
+struct pad_signals {
+ int pincntl1;
+ int pincntl2;
+ int pincntl3;
+ int pincntl4;
+ int pincntl5;
+ int pincntl6;
+ int pincntl7;
+ int pincntl8;
+ int pincntl9;
+ int pincntl10;
+ int pincntl11;
+ int pincntl12;
+ int pincntl13;
+ int pincntl14;
+ int pincntl15;
+ int pincntl16;
+ int pincntl17;
+ int pincntl18;
+ int pincntl19;
+ int pincntl20;
+ int pincntl21;
+ int pincntl22;
+ int pincntl23;
+ int pincntl24;
+ int pincntl25;
+ int pincntl26;
+ int pincntl27;
+ int pincntl28;
+ int pincntl29;
+ int pincntl30;
+ int pincntl31;
+ int pincntl32;
+ int pincntl33;
+ int pincntl34;
+ int pincntl35;
+ int pincntl36;
+ int pincntl37;
+ int pincntl38;
+ int pincntl39;
+ int pincntl40;
+ int pincntl41;
+ int pincntl42;
+ int pincntl43;
+ int pincntl44;
+ int pincntl45;
+ int pincntl46;
+ int pincntl47;
+ int pincntl48;
+ int pincntl49;
+ int pincntl50;
+ int pincntl51;
+ int pincntl52;
+ int pincntl53;
+ int pincntl54;
+ int pincntl55;
+ int pincntl56;
+ int pincntl57;
+ int pincntl58;
+ int pincntl59;
+ int pincntl60;
+ int pincntl61;
+ int pincntl62;
+ int pincntl63;
+ int pincntl64;
+ int pincntl65;
+ int pincntl66;
+ int pincntl67;
+ int pincntl68;
+ int pincntl69;
+ int pincntl70;
+ int pincntl71;
+ int pincntl72;
+ int pincntl73;
+ int pincntl74;
+ int pincntl75;
+ int pincntl76;
+ int pincntl77;
+ int pincntl78;
+ int pincntl79;
+ int pincntl80;
+ int pincntl81;
+ int pincntl82;
+ int pincntl83;
+ int pincntl84;
+ int pincntl85;
+ int pincntl86;
+ int pincntl87;
+ int pincntl88;
+ int pincntl89;
+ int pincntl90;
+ int pincntl91;
+ int pincntl92;
+ int pincntl93;
+ int pincntl94;
+ int pincntl95;
+ int pincntl96;
+ int pincntl97;
+ int pincntl98;
+ int pincntl99;
+ int pincntl100;
+ int pincntl101;
+ int pincntl102;
+ int pincntl103;
+ int pincntl104;
+ int pincntl105;
+ int pincntl106;
+ int pincntl107;
+ int pincntl108;
+ int pincntl109;
+ int pincntl110;
+ int pincntl111;
+ int pincntl112;
+ int pincntl113;
+ int pincntl114;
+ int pincntl115;
+ int pincntl116;
+ int pincntl117;
+ int pincntl118;
+ int pincntl119;
+ int pincntl120;
+ int pincntl121;
+ int pincntl122;
+ int pincntl123;
+ int pincntl124;
+ int pincntl125;
+ int pincntl126;
+ int pincntl127;
+ int pincntl128;
+ int pincntl129;
+ int pincntl130;
+ int pincntl131;
+ int pincntl132;
+ int pincntl133;
+ int pincntl134;
+ int pincntl135;
+ int pincntl136;
+ int pincntl137;
+ int pincntl138;
+ int pincntl139;
+ int pincntl140;
+ int pincntl141;
+ int pincntl142;
+ int pincntl143;
+ int pincntl144;
+ int pincntl145;
+ int pincntl146;
+ int pincntl147;
+ int pincntl148;
+ int pincntl149;
+ int pincntl150;
+ int pincntl151;
+ int pincntl152;
+ int pincntl153;
+ int pincntl154;
+ int pincntl155;
+ int pincntl156;
+ int pincntl157;
+ int pincntl158;
+ int pincntl159;
+ int pincntl160;
+ int pincntl161;
+ int pincntl162;
+ int pincntl163;
+ int pincntl164;
+ int pincntl165;
+ int pincntl166;
+ int pincntl167;
+ int pincntl168;
+ int pincntl169;
+ int pincntl170;
+ int pincntl171;
+ int pincntl172;
+ int pincntl173;
+ int pincntl174;
+ int pincntl175;
+ int pincntl176;
+ int pincntl177;
+ int pincntl178;
+ int pincntl179;
+ int pincntl180;
+ int pincntl181;
+ int pincntl182;
+ int pincntl183;
+ int pincntl184;
+ int pincntl185;
+ int pincntl186;
+ int pincntl187;
+ int pincntl188;
+ int pincntl189;
+ int pincntl190;
+ int pincntl191;
+ int pincntl192;
+ int pincntl193;
+ int pincntl194;
+ int pincntl195;
+ int pincntl196;
+ int pincntl197;
+ int pincntl198;
+ int pincntl199;
+ int pincntl200;
+ int pincntl201;
+ int pincntl202;
+ int pincntl203;
+ int pincntl204;
+ int pincntl205;
+ int pincntl206;
+ int pincntl207;
+ int pincntl208;
+ int pincntl209;
+ int pincntl210;
+ int pincntl211;
+ int pincntl212;
+ int pincntl213;
+ int pincntl214;
+ int pincntl215;
+ int pincntl216;
+ int pincntl217;
+ int pincntl218;
+ int pincntl219;
+ int pincntl220;
+ int pincntl221;
+ int pincntl222;
+ int pincntl223;
+ int pincntl224;
+ int pincntl225;
+ int pincntl226;
+ int pincntl227;
+ int pincntl228;
+ int pincntl229;
+ int pincntl230;
+ int pincntl231;
+ int pincntl232;
+ int pincntl233;
+ int pincntl234;
+ int pincntl235;
+ int pincntl236;
+ int pincntl237;
+ int pincntl238;
+ int pincntl239;
+ int pincntl240;
+ int pincntl241;
+ int pincntl242;
+ int pincntl243;
+ int pincntl244;
+ int pincntl245;
+ int pincntl246;
+ int pincntl247;
+ int pincntl248;
+ int pincntl249;
+ int pincntl250;
+ int pincntl251;
+ int pincntl252;
+ int pincntl253;
+ int pincntl254;
+ int pincntl255;
+ int pincntl256;
+ int pincntl257;
+ int pincntl258;
+ int pincntl259;
+ int pincntl260;
+ int pincntl261;
+ int pincntl262;
+ int pincntl263;
+ int pincntl264;
+ int pincntl265;
+ int pincntl266;
+ int pincntl267;
+ int pincntl268;
+ int pincntl269;
+ int pincntl270;
+};
+#endif
diff --git a/arch/arm/include/asm/arch-am33xx/mux.h b/arch/arm/include/asm/arch-am33xx/mux.h
index aed6b00..47d88b9 100644
--- a/arch/arm/include/asm/arch-am33xx/mux.h
+++ b/arch/arm/include/asm/arch-am33xx/mux.h
@@ -19,233 +19,15 @@
#include <common.h>
#include <asm/io.h>
-#define MUX_CFG(value, offset) \
- __raw_writel(value, (CTRL_BASE + offset));
-
-/* PAD Control Fields */
-#define SLEWCTRL (0x1 << 6)
-#define RXACTIVE (0x1 << 5)
-#define PULLUP_EN (0x1 << 4) /* Pull UP Selection */
-#define PULLUDEN (0x0 << 3) /* Pull up enabled */
-#define PULLUDDIS (0x1 << 3) /* Pull up disabled */
-#define MODE(val) val /* used for Readability */
-
-/*
- * PAD CONTROL OFFSETS
- * Field names corresponds to the pad signal name
- */
-struct pad_signals {
- int gpmc_ad0;
- int gpmc_ad1;
- int gpmc_ad2;
- int gpmc_ad3;
- int gpmc_ad4;
- int gpmc_ad5;
- int gpmc_ad6;
- int gpmc_ad7;
- int gpmc_ad8;
- int gpmc_ad9;
- int gpmc_ad10;
- int gpmc_ad11;
- int gpmc_ad12;
- int gpmc_ad13;
- int gpmc_ad14;
- int gpmc_ad15;
- int gpmc_a0;
- int gpmc_a1;
- int gpmc_a2;
- int gpmc_a3;
- int gpmc_a4;
- int gpmc_a5;
- int gpmc_a6;
- int gpmc_a7;
- int gpmc_a8;
- int gpmc_a9;
- int gpmc_a10;
- int gpmc_a11;
- int gpmc_wait0;
- int gpmc_wpn;
- int gpmc_be1n;
- int gpmc_csn0;
- int gpmc_csn1;
- int gpmc_csn2;
- int gpmc_csn3;
- int gpmc_clk;
- int gpmc_advn_ale;
- int gpmc_oen_ren;
- int gpmc_wen;
- int gpmc_be0n_cle;
- int lcd_data0;
- int lcd_data1;
- int lcd_data2;
- int lcd_data3;
- int lcd_data4;
- int lcd_data5;
- int lcd_data6;
- int lcd_data7;
- int lcd_data8;
- int lcd_data9;
- int lcd_data10;
- int lcd_data11;
- int lcd_data12;
- int lcd_data13;
- int lcd_data14;
- int lcd_data15;
- int lcd_vsync;
- int lcd_hsync;
- int lcd_pclk;
- int lcd_ac_bias_en;
- int mmc0_dat3;
- int mmc0_dat2;
- int mmc0_dat1;
- int mmc0_dat0;
- int mmc0_clk;
- int mmc0_cmd;
- int mii1_col;
- int mii1_crs;
- int mii1_rxerr;
- int mii1_txen;
- int mii1_rxdv;
- int mii1_txd3;
- int mii1_txd2;
- int mii1_txd1;
- int mii1_txd0;
- int mii1_txclk;
- int mii1_rxclk;
- int mii1_rxd3;
- int mii1_rxd2;
- int mii1_rxd1;
- int mii1_rxd0;
- int rmii1_refclk;
- int mdio_data;
- int mdio_clk;
- int spi0_sclk;
- int spi0_d0;
- int spi0_d1;
- int spi0_cs0;
- int spi0_cs1;
- int ecap0_in_pwm0_out;
- int uart0_ctsn;
- int uart0_rtsn;
- int uart0_rxd;
- int uart0_txd;
- int uart1_ctsn;
- int uart1_rtsn;
- int uart1_rxd;
- int uart1_txd;
- int i2c0_sda;
- int i2c0_scl;
- int mcasp0_aclkx;
- int mcasp0_fsx;
- int mcasp0_axr0;
- int mcasp0_ahclkr;
- int mcasp0_aclkr;
- int mcasp0_fsr;
- int mcasp0_axr1;
- int mcasp0_ahclkx;
- int xdma_event_intr0;
- int xdma_event_intr1;
- int nresetin_out;
- int porz;
- int nnmi;
- int osc0_in;
- int osc0_out;
- int rsvd1;
- int tms;
- int tdi;
- int tdo;
- int tck;
- int ntrst;
- int emu0;
- int emu1;
- int osc1_in;
- int osc1_out;
- int pmic_power_en;
- int rtc_porz;
- int rsvd2;
- int ext_wakeup;
- int enz_kaldo_1p8v;
- int usb0_dm;
- int usb0_dp;
- int usb0_ce;
- int usb0_id;
- int usb0_vbus;
- int usb0_drvvbus;
- int usb1_dm;
- int usb1_dp;
- int usb1_ce;
- int usb1_id;
- int usb1_vbus;
- int usb1_drvvbus;
- int ddr_resetn;
- int ddr_csn0;
- int ddr_cke;
- int ddr_ck;
- int ddr_nck;
- int ddr_casn;
- int ddr_rasn;
- int ddr_wen;
- int ddr_ba0;
- int ddr_ba1;
- int ddr_ba2;
- int ddr_a0;
- int ddr_a1;
- int ddr_a2;
- int ddr_a3;
- int ddr_a4;
- int ddr_a5;
- int ddr_a6;
- int ddr_a7;
- int ddr_a8;
- int ddr_a9;
- int ddr_a10;
- int ddr_a11;
- int ddr_a12;
- int ddr_a13;
- int ddr_a14;
- int ddr_a15;
- int ddr_odt;
- int ddr_d0;
- int ddr_d1;
- int ddr_d2;
- int ddr_d3;
- int ddr_d4;
- int ddr_d5;
- int ddr_d6;
- int ddr_d7;
- int ddr_d8;
- int ddr_d9;
- int ddr_d10;
- int ddr_d11;
- int ddr_d12;
- int ddr_d13;
- int ddr_d14;
- int ddr_d15;
- int ddr_dqm0;
- int ddr_dqm1;
- int ddr_dqs0;
- int ddr_dqsn0;
- int ddr_dqs1;
- int ddr_dqsn1;
- int ddr_vref;
- int ddr_vtp;
- int ddr_strben0;
- int ddr_strben1;
- int ain7;
- int ain6;
- int ain5;
- int ain4;
- int ain3;
- int ain2;
- int ain1;
- int ain0;
- int vrefp;
- int vrefn;
-};
+#ifdef CONFIG_AM33XX
+#include <asm/arch/mux-am335x.h>
+#elif defined(CONFIG_TI814X)
+#include <asm/arch/mux-ti814x.h>
+#endif
struct module_pin_mux {
short reg_offset;
- unsigned char val;
+ unsigned int val;
};
/* Pad control register offset */
--
1.7.9.5
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [U-Boot] [PATCH 04/10] am33xx: refactor am33xx mux support and add ti814x support
2013-02-13 14:43 ` [U-Boot] [PATCH 04/10] am33xx: refactor am33xx mux support " Matt Porter
@ 2013-02-15 16:37 ` Tom Rini
2013-02-17 20:18 ` Peter Korsgaard
[not found] ` <463068779ea9433098998cd260b4c550@DFLE73.ent.ti.com>
2 siblings, 0 replies; 37+ messages in thread
From: Tom Rini @ 2013-02-15 16:37 UTC (permalink / raw)
To: u-boot
On Wed, Feb 13, 2013 at 09:43:58AM -0500, Matt Porter wrote:
> AM33XX and TI814X have a similar mux though the pinmux register
> layout and address space differ. Add a separate ti814x mux include
> to support the TI814X-specific differences.
>
> Signed-off-by: Matt Porter <mporter@ti.com>
Reviewed-by: Tom Rini <trini@ti.com>
--
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/20130215/e5e52fcd/attachment.pgp>
^ permalink raw reply [flat|nested] 37+ messages in thread
* [U-Boot] [PATCH 04/10] am33xx: refactor am33xx mux support and add ti814x support
2013-02-13 14:43 ` [U-Boot] [PATCH 04/10] am33xx: refactor am33xx mux support " Matt Porter
2013-02-15 16:37 ` Tom Rini
@ 2013-02-17 20:18 ` Peter Korsgaard
[not found] ` <463068779ea9433098998cd260b4c550@DFLE73.ent.ti.com>
2 siblings, 0 replies; 37+ messages in thread
From: Peter Korsgaard @ 2013-02-17 20:18 UTC (permalink / raw)
To: u-boot
>>>>> "Matt" == Matt Porter <mporter@ti.com> writes:
Matt> AM33XX and TI814X have a similar mux though the pinmux register
Matt> layout and address space differ. Add a separate ti814x mux include
Matt> to support the TI814X-specific differences.
Same comment about the file headers as patch 03, otherwise it looks
good.
Acked-by: Peter Korsgaard <jacmet@sunsite.dk>
--
Bye, Peter Korsgaard
^ permalink raw reply [flat|nested] 37+ messages in thread
[parent not found: <463068779ea9433098998cd260b4c550@DFLE73.ent.ti.com>]
* [U-Boot] [PATCH 04/10] am33xx: refactor am33xx mux support and add ti814x support
[not found] ` <463068779ea9433098998cd260b4c550@DFLE73.ent.ti.com>
@ 2013-02-25 14:32 ` Matt Porter
0 siblings, 0 replies; 37+ messages in thread
From: Matt Porter @ 2013-02-25 14:32 UTC (permalink / raw)
To: u-boot
On Sun, Feb 17, 2013 at 08:18:57PM +0000, Peter Korsgaard wrote:
> >>>>> "Matt" == Matt Porter <mporter@ti.com> writes:
>
> Matt> AM33XX and TI814X have a similar mux though the pinmux register
> Matt> layout and address space differ. Add a separate ti814x mux include
> Matt> to support the TI814X-specific differences.
>
> Same comment about the file headers as patch 03, otherwise it looks
> good.
Will clean the headers.
-Matt
> Acked-by: Peter Korsgaard <jacmet@sunsite.dk>
>
> --
> Bye, Peter Korsgaard
^ permalink raw reply [flat|nested] 37+ messages in thread
* [U-Boot] [PATCH 05/10] am33xx: add ti814x specific register definitions
2013-02-13 14:43 [U-Boot] [PATCH 00/10] Add TI814x EVM Support Matt Porter
` (3 preceding siblings ...)
2013-02-13 14:43 ` [U-Boot] [PATCH 04/10] am33xx: refactor am33xx mux support " Matt Porter
@ 2013-02-13 14:43 ` Matt Porter
2013-02-15 16:37 ` Tom Rini
2013-02-17 20:28 ` Peter Korsgaard
2013-02-13 14:44 ` [U-Boot] [PATCH 06/10] am33xx: add dmm support to emif4 library Matt Porter
` (4 subsequent siblings)
9 siblings, 2 replies; 37+ messages in thread
From: Matt Porter @ 2013-02-13 14:43 UTC (permalink / raw)
To: u-boot
Support the ti814x specific register definitions within
arch-am33xx.
Signed-off-by: Matt Porter <mporter@ti.com>
---
arch/arm/cpu/armv7/am33xx/sys_info.c | 3 +++
arch/arm/include/asm/arch-am33xx/cpu.h | 11 +++++----
arch/arm/include/asm/arch-am33xx/hardware.h | 32 +++++++++++++++++++++++++++
arch/arm/include/asm/arch-am33xx/omap.h | 7 ++++++
arch/arm/include/asm/arch-am33xx/spl.h | 5 +++++
5 files changed, 54 insertions(+), 4 deletions(-)
diff --git a/arch/arm/cpu/armv7/am33xx/sys_info.c b/arch/arm/cpu/armv7/am33xx/sys_info.c
index 507b618..402127c 100644
--- a/arch/arm/cpu/armv7/am33xx/sys_info.c
+++ b/arch/arm/cpu/armv7/am33xx/sys_info.c
@@ -98,6 +98,9 @@ int print_cpuinfo(void)
case AM335X:
cpu_s = "AM335X";
break;
+ case TI81XX:
+ cpu_s = "TI81XX";
+ break;
default:
cpu_s = "Unknown cpu type";
break;
diff --git a/arch/arm/include/asm/arch-am33xx/cpu.h b/arch/arm/include/asm/arch-am33xx/cpu.h
index 16e8a80..3d3a7c8 100644
--- a/arch/arm/include/asm/arch-am33xx/cpu.h
+++ b/arch/arm/include/asm/arch-am33xx/cpu.h
@@ -42,9 +42,10 @@
#define HS_DEVICE 0x2
#define GP_DEVICE 0x3
-/* cpu-id for AM33XX family */
+/* cpu-id for AM33XX and TI81XX family */
#define AM335X 0xB944
-#define DEVICE_ID 0x44E10600
+#define TI81XX 0xB81E
+#define DEVICE_ID (CTRL_BASE + 0x0600)
/* This gives the status of the boot mode pins on the evm */
#define SYSBOOT_MASK (BIT(0) | BIT(1) | BIT(2)\
@@ -52,9 +53,11 @@
/* Reset control */
#ifdef CONFIG_AM33XX
-#define PRM_RSTCTRL 0x44E00F00
-#define PRM_RSTST 0x44E00F08
+#define PRM_RSTCTRL (PRCM_BASE + 0x0F00)
+#elif defined(CONFIG_TI814X)
+#define PRM_RSTCTRL (PRCM_BASE + 0x00A0)
#endif
+#define PRM_RSTST (PRM_RSTCTRL + 8)
#define PRM_RSTCTRL_RESET 0x01
#define PRM_RSTST_WARM_RESET_MASK 0x232
diff --git a/arch/arm/include/asm/arch-am33xx/hardware.h b/arch/arm/include/asm/arch-am33xx/hardware.h
index 41ab2c0..786c159 100644
--- a/arch/arm/include/asm/arch-am33xx/hardware.h
+++ b/arch/arm/include/asm/arch-am33xx/hardware.h
@@ -20,9 +20,14 @@
#define __AM33XX_HARDWARE_H
#include <asm/arch/omap.h>
+#include <config.h>
/* Module base addresses */
+#ifdef CONFIG_AM33XX
#define UART0_BASE 0x44E09000
+#elif defined(CONFIG_TI814X)
+#define UART0_BASE 0x48020000
+#endif
/* DM Timer base addresses */
#define DM_TIMER0_BASE 0x4802C000
@@ -37,20 +42,39 @@
/* GPIO Base address */
#define GPIO0_BASE 0x48032000
#define GPIO1_BASE 0x4804C000
+#ifdef CONFIG_AM33XX
#define GPIO2_BASE 0x481AC000
+#endif
/* BCH Error Location Module */
#define ELM_BASE 0x48080000
/* Watchdog Timer */
+#ifdef CONFIG_AM33XX
#define WDT_BASE 0x44E35000
+#elif defined(CONFIG_TI814X)
+#define WDT_BASE 0x481C7000
+#endif
/* Control Module Base Address */
+#ifdef CONFIG_AM33XX
#define CTRL_BASE 0x44E10000
#define CTRL_DEVICE_BASE 0x44E10600
+#elif defined(CONFIG_TI814X)
+#define CTRL_BASE 0x48140000
+#endif
/* PRCM Base Address */
+#ifdef CONFIG_AM33XX
#define PRCM_BASE 0x44E00000
+#elif defined(CONFIG_TI814X)
+#define PRCM_BASE 0x48180000
+#endif
+
+/* PLL Subsystem Base Address */
+#ifdef CONFIG_TI814X
+#define PLL_SUBSYS_BASE 0x481C5000
+#endif
/* EMIF Base address */
#define EMIF4_0_CFG_BASE 0x4C000000
@@ -99,10 +123,18 @@
/* CPSW Config space */
#define CPSW_BASE 0x4A100000
+#ifdef CONFIG_AM33XX
#define CPSW_MDIO_BASE 0x4A101000
+#elif defined(CONFIG_TI814X)
+#define CPSW_MDIO_BASE 0x4A100800
+#endif
/* RTC base address */
+#ifdef CONFIG_AM33XX
#define RTC_BASE 0x44E3E000
+#elif defined(CONFIG_TI814X)
+#define RTC_BASE 0x480C0000
+#endif
/* OTG */
#define USB0_OTG_BASE 0x47401000
diff --git a/arch/arm/include/asm/arch-am33xx/omap.h b/arch/arm/include/asm/arch-am33xx/omap.h
index 850f8a5..ba4f6d2 100644
--- a/arch/arm/include/asm/arch-am33xx/omap.h
+++ b/arch/arm/include/asm/arch-am33xx/omap.h
@@ -23,13 +23,20 @@
#ifndef _OMAP_H_
#define _OMAP_H_
+#include <config.h>
+
/*
* Non-secure SRAM Addresses
* Non-secure RAM starts at 0x40300000 for GP devices. But we keep SRAM_BASE
* at 0x40304000(EMU base) so that our code works for both EMU and GP
*/
+#ifdef CONFIG_AM33XX
#define NON_SECURE_SRAM_START 0x40304000
#define NON_SECURE_SRAM_END 0x4030E000
+#elif defined(CONFIG_TI814X)
+#define NON_SECURE_SRAM_START 0x40300000
+#define NON_SECURE_SRAM_END 0x40320000
+#endif
/* ROM code defines */
/* Boot device */
diff --git a/arch/arm/include/asm/arch-am33xx/spl.h b/arch/arm/include/asm/arch-am33xx/spl.h
index 644ff35..9b5fe9e 100644
--- a/arch/arm/include/asm/arch-am33xx/spl.h
+++ b/arch/arm/include/asm/arch-am33xx/spl.h
@@ -25,8 +25,13 @@
#define BOOT_DEVICE_XIP 2
#define BOOT_DEVICE_NAND 5
+#ifdef CONFIG_AM33XX
#define BOOT_DEVICE_MMC1 8
#define BOOT_DEVICE_MMC2 9 /* eMMC or daughter card */
+#elif defined(CONFIG_TI814X)
+#define BOOT_DEVICE_MMC1 9
+#define BOOT_DEVICE_MMC2 8 /* ROM only supports 2nd instance */
+#endif
#define BOOT_DEVICE_SPI 11
#define BOOT_DEVICE_UART 65
#define BOOT_DEVICE_CPGMAC 70
--
1.7.9.5
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [U-Boot] [PATCH 05/10] am33xx: add ti814x specific register definitions
2013-02-13 14:43 ` [U-Boot] [PATCH 05/10] am33xx: add ti814x specific register definitions Matt Porter
@ 2013-02-15 16:37 ` Tom Rini
2013-02-17 20:28 ` Peter Korsgaard
1 sibling, 0 replies; 37+ messages in thread
From: Tom Rini @ 2013-02-15 16:37 UTC (permalink / raw)
To: u-boot
On Wed, Feb 13, 2013 at 09:43:59AM -0500, Matt Porter wrote:
> Support the ti814x specific register definitions within
> arch-am33xx.
>
> Signed-off-by: Matt Porter <mporter@ti.com>
Reviewed-by: Tom Rini <trini@ti.com>
--
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/20130215/5eb443b6/attachment.pgp>
^ permalink raw reply [flat|nested] 37+ messages in thread
* [U-Boot] [PATCH 05/10] am33xx: add ti814x specific register definitions
2013-02-13 14:43 ` [U-Boot] [PATCH 05/10] am33xx: add ti814x specific register definitions Matt Porter
2013-02-15 16:37 ` Tom Rini
@ 2013-02-17 20:28 ` Peter Korsgaard
2013-02-18 15:18 ` Tom Rini
[not found] ` <bc703446ae2c4dc79a6097dc28327030@DLEE74.ent.ti.com>
1 sibling, 2 replies; 37+ messages in thread
From: Peter Korsgaard @ 2013-02-17 20:28 UTC (permalink / raw)
To: u-boot
>>>>> "Matt" == Matt Porter <mporter@ti.com> writes:
Matt> Support the ti814x specific register definitions within
Matt> arch-am33xx.
Matt> Signed-off-by: Matt Porter <mporter@ti.com>
Matt> ---
Matt> arch/arm/cpu/armv7/am33xx/sys_info.c | 3 +++
Matt> arch/arm/include/asm/arch-am33xx/cpu.h | 11 +++++----
Matt> arch/arm/include/asm/arch-am33xx/hardware.h | 32 +++++++++++++++++++++++++++
Matt> arch/arm/include/asm/arch-am33xx/omap.h | 7 ++++++
Matt> arch/arm/include/asm/arch-am33xx/spl.h | 5 +++++
Matt> 5 files changed, 54 insertions(+), 4 deletions(-)
Matt> diff --git a/arch/arm/include/asm/arch-am33xx/hardware.h b/arch/arm/include/asm/arch-am33xx/hardware.h
Matt> index 41ab2c0..786c159 100644
Matt> --- a/arch/arm/include/asm/arch-am33xx/hardware.h
Matt> +++ b/arch/arm/include/asm/arch-am33xx/hardware.h
Matt> @@ -20,9 +20,14 @@
Matt> #define __AM33XX_HARDWARE_H
Matt> #include <asm/arch/omap.h>
Matt> +#include <config.h>
Quite some of the base addresses are similar, but I wonder if it
wouldn't be cleaner to simply have a hardware-am33xx.h /
hardware-ti814x.h instead of all these ifdef / elif?
Matt> /* Control Module Base Address */
Matt> +#ifdef CONFIG_AM33XX
Matt> #define CTRL_BASE 0x44E10000
Matt> #define CTRL_DEVICE_BASE 0x44E10600
Matt> +#elif defined(CONFIG_TI814X)
Matt> +#define CTRL_BASE 0x48140000
Matt> +#endif
No CTRL_DEVICE_BASE on ti814x?
Matt> --- a/arch/arm/include/asm/arch-am33xx/spl.h
Matt> +++ b/arch/arm/include/asm/arch-am33xx/spl.h
Matt> @@ -25,8 +25,13 @@
Matt> #define BOOT_DEVICE_XIP 2
Matt> #define BOOT_DEVICE_NAND 5
Matt> +#ifdef CONFIG_AM33XX
Matt> #define BOOT_DEVICE_MMC1 8
Matt> #define BOOT_DEVICE_MMC2 9 /* eMMC or daughter card */
Matt> +#elif defined(CONFIG_TI814X)
Matt> +#define BOOT_DEVICE_MMC1 9
Matt> +#define BOOT_DEVICE_MMC2 8 /* ROM only supports 2nd instance */
Argh! Couldn't we just swap the meaning of mmc1/mmc2 or would that be
too confusing?
Matt> +#endif
Matt> #define BOOT_DEVICE_SPI 11
Matt> #define BOOT_DEVICE_UART 65
Matt> #define BOOT_DEVICE_CPGMAC 70
Matt> --
Matt> 1.7.9.5
Matt> _______________________________________________
Matt> U-Boot mailing list
Matt> U-Boot at lists.denx.de
Matt> http://lists.denx.de/mailman/listinfo/u-boot
--
Bye, Peter Korsgaard
^ permalink raw reply [flat|nested] 37+ messages in thread
* [U-Boot] [PATCH 05/10] am33xx: add ti814x specific register definitions
2013-02-17 20:28 ` Peter Korsgaard
@ 2013-02-18 15:18 ` Tom Rini
2013-02-18 15:21 ` Peter Korsgaard
[not found] ` <bc703446ae2c4dc79a6097dc28327030@DLEE74.ent.ti.com>
1 sibling, 1 reply; 37+ messages in thread
From: Tom Rini @ 2013-02-18 15:18 UTC (permalink / raw)
To: u-boot
On Sun, Feb 17, 2013 at 09:28:33PM +0100, Peter Korsgaard wrote:
> >>>>> "Matt" == Matt Porter <mporter@ti.com> writes:
>
> Matt> Support the ti814x specific register definitions within
> Matt> arch-am33xx.
>
> Matt> Signed-off-by: Matt Porter <mporter@ti.com>
> Matt> ---
> Matt> arch/arm/cpu/armv7/am33xx/sys_info.c | 3 +++
> Matt> arch/arm/include/asm/arch-am33xx/cpu.h | 11 +++++----
> Matt> arch/arm/include/asm/arch-am33xx/hardware.h | 32 +++++++++++++++++++++++++++
> Matt> arch/arm/include/asm/arch-am33xx/omap.h | 7 ++++++
> Matt> arch/arm/include/asm/arch-am33xx/spl.h | 5 +++++
> Matt> 5 files changed, 54 insertions(+), 4 deletions(-)
>
> Matt> diff --git a/arch/arm/include/asm/arch-am33xx/hardware.h b/arch/arm/include/asm/arch-am33xx/hardware.h
> Matt> index 41ab2c0..786c159 100644
> Matt> --- a/arch/arm/include/asm/arch-am33xx/hardware.h
> Matt> +++ b/arch/arm/include/asm/arch-am33xx/hardware.h
> Matt> @@ -20,9 +20,14 @@
> Matt> #define __AM33XX_HARDWARE_H
>
> Matt> #include <asm/arch/omap.h>
> Matt> +#include <config.h>
>
> Quite some of the base addresses are similar, but I wonder if it
> wouldn't be cleaner to simply have a hardware-am33xx.h /
> hardware-ti814x.h instead of all these ifdef / elif?
Since I suspect the things common from ti814x and am33xx are also common
to ti816x (which has been left as an exercise to whomever needs that
next), I think we can re-structure this into something like that, but
keeping the common parts within hardware.h still.
> Matt> /* Control Module Base Address */
> Matt> +#ifdef CONFIG_AM33XX
> Matt> #define CTRL_BASE 0x44E10000
> Matt> #define CTRL_DEVICE_BASE 0x44E10600
> Matt> +#elif defined(CONFIG_TI814X)
> Matt> +#define CTRL_BASE 0x48140000
> Matt> +#endif
>
> No CTRL_DEVICE_BASE on ti814x?
I think this is a side-effect of Matt not supporting the things attached
to it (USB in the case of am335x).
> Matt> --- a/arch/arm/include/asm/arch-am33xx/spl.h
> Matt> +++ b/arch/arm/include/asm/arch-am33xx/spl.h
> Matt> @@ -25,8 +25,13 @@
>
> Matt> #define BOOT_DEVICE_XIP 2
> Matt> #define BOOT_DEVICE_NAND 5
> Matt> +#ifdef CONFIG_AM33XX
> Matt> #define BOOT_DEVICE_MMC1 8
> Matt> #define BOOT_DEVICE_MMC2 9 /* eMMC or daughter card */
> Matt> +#elif defined(CONFIG_TI814X)
> Matt> +#define BOOT_DEVICE_MMC1 9
> Matt> +#define BOOT_DEVICE_MMC2 8 /* ROM only supports 2nd instance */
>
> Argh! Couldn't we just swap the meaning of mmc1/mmc2 or would that be
> too confusing?
IMHO, that will lead to further confusion down the line. I talked with
Matt about this before and well, it's funky.
--
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/20130218/8a90135f/attachment.pgp>
^ permalink raw reply [flat|nested] 37+ messages in thread
* [U-Boot] [PATCH 05/10] am33xx: add ti814x specific register definitions
2013-02-18 15:18 ` Tom Rini
@ 2013-02-18 15:21 ` Peter Korsgaard
2013-02-21 22:08 ` Brian Hutchinson
0 siblings, 1 reply; 37+ messages in thread
From: Peter Korsgaard @ 2013-02-18 15:21 UTC (permalink / raw)
To: u-boot
>>>>> "Tom" == Tom Rini <trini@ti.com> writes:
Hi,
>> Quite some of the base addresses are similar, but I wonder if it
>> wouldn't be cleaner to simply have a hardware-am33xx.h /
>> hardware-ti814x.h instead of all these ifdef / elif?
Tom> Since I suspect the things common from ti814x and am33xx are also common
Tom> to ti816x (which has been left as an exercise to whomever needs that
Tom> next), I think we can re-structure this into something like that, but
Tom> keeping the common parts within hardware.h still.
FYI, I might very well be that guy as I've recently started work on a
ti816x based project.
>> Argh! Couldn't we just swap the meaning of mmc1/mmc2 or would that be
>> too confusing?
Tom> IMHO, that will lead to further confusion down the line. I talked with
Tom> Matt about this before and well, it's funky.
Ok.
--
Bye, Peter Korsgaard
^ permalink raw reply [flat|nested] 37+ messages in thread
* [U-Boot] [PATCH 05/10] am33xx: add ti814x specific register definitions
2013-02-18 15:21 ` Peter Korsgaard
@ 2013-02-21 22:08 ` Brian Hutchinson
2013-02-22 15:37 ` Peter Korsgaard
0 siblings, 1 reply; 37+ messages in thread
From: Brian Hutchinson @ 2013-02-21 22:08 UTC (permalink / raw)
To: u-boot
I need ti816x u-boot too! Maybe I can help too. Need 3.x kernel too but I
guess that is for another list :)
Regards,
Brian
On Feb 18, 2013 7:21 AM, "Peter Korsgaard" <jacmet@sunsite.dk> wrote:
>
> >>>>> "Tom" == Tom Rini <trini@ti.com> writes:
>
> Hi,
>
> >> Quite some of the base addresses are similar, but I wonder if it
> >> wouldn't be cleaner to simply have a hardware-am33xx.h /
> >> hardware-ti814x.h instead of all these ifdef / elif?
>
> Tom> Since I suspect the things common from ti814x and am33xx are also
common
> Tom> to ti816x (which has been left as an exercise to whomever needs that
> Tom> next), I think we can re-structure this into something like that,
but
> Tom> keeping the common parts within hardware.h still.
>
> FYI, I might very well be that guy as I've recently started work on a
> ti816x based project.
>
> >> Argh! Couldn't we just swap the meaning of mmc1/mmc2 or would that be
> >> too confusing?
>
> Tom> IMHO, that will lead to further confusion down the line. I talked
with
> Tom> Matt about this before and well, it's funky.
>
> Ok.
>
> --
> Bye, Peter Korsgaard
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
^ permalink raw reply [flat|nested] 37+ messages in thread
* [U-Boot] [PATCH 05/10] am33xx: add ti814x specific register definitions
2013-02-21 22:08 ` Brian Hutchinson
@ 2013-02-22 15:37 ` Peter Korsgaard
2013-02-22 15:51 ` Tom Rini
0 siblings, 1 reply; 37+ messages in thread
From: Peter Korsgaard @ 2013-02-22 15:37 UTC (permalink / raw)
To: u-boot
>>>>> "Brian" == Brian Hutchinson <b.hutchman@gmail.com> writes:
Hi,
Brian> I need ti816x u-boot too!? Maybe I can help too. Need 3.x kernel
Brian> too but I guess that is for another list :)
Antoine is working on it, and the basics are running:
U-Boot SPL 2013.01-00297-gf592f9c-dirty (Feb 22 2013 - 16:25:01)
OMAP SD/MMC: 0
boot mode - FAT
reading u-boot.img
reading u-boot.img
U-Boot 2013.01-00297-gf592f9c-dirty (Feb 22 2013 - 16:25:01)
AMTI81XX-GP rev 1
DRAM: 1 GiB
WARNING: Caches not enabled
MMC: OMAP SD/MMC: 0
Using default environment
Net: DaVinci-EMAC
Hit any key to stop autoboot: 0
I'm looking at the emac driver at the moment. It still needs some more
work and cleanup, but I would imagine an early series could be posted
next week or so is Antoine agrees.
--
Bye, Peter Korsgaard
^ permalink raw reply [flat|nested] 37+ messages in thread
* [U-Boot] [PATCH 05/10] am33xx: add ti814x specific register definitions
2013-02-22 15:37 ` Peter Korsgaard
@ 2013-02-22 15:51 ` Tom Rini
2013-02-22 16:34 ` Peter Korsgaard
0 siblings, 1 reply; 37+ messages in thread
From: Tom Rini @ 2013-02-22 15:51 UTC (permalink / raw)
To: u-boot
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On 02/22/2013 10:37 AM, Peter Korsgaard wrote:
>>>>>> "Brian" == Brian Hutchinson <b.hutchman@gmail.com>
>>>>>> writes:
>
> Hi,
>
> Brian> I need ti816x u-boot too! Maybe I can help too. Need 3.x
> kernel Brian> too but I guess that is for another list :)
>
> Antoine is working on it, and the basics are running:
>
> U-Boot SPL 2013.01-00297-gf592f9c-dirty (Feb 22 2013 - 16:25:01)
> OMAP SD/MMC: 0 boot mode - FAT reading u-boot.img reading
> u-boot.img
>
>
> U-Boot 2013.01-00297-gf592f9c-dirty (Feb 22 2013 - 16:25:01)
>
> AMTI81XX-GP rev 1 DRAM: 1 GiB WARNING: Caches not enabled MMC:
> OMAP SD/MMC: 0 Using default environment
>
> Net: DaVinci-EMAC Hit any key to stop autoboot: 0
>
> I'm looking at the emac driver at the moment. It still needs some
> more work and cleanup, but I would imagine an early series could be
> posted next week or so is Antoine agrees.
Can we please make the emac driver switch to phylib while you're in
there? Thanks!
- --
Tom
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/
iQIcBAEBAgAGBQJRJ5PvAAoJENk4IS6UOR1WbzMP/jj3pbTEdKtC3ZVoPIPAXSt7
cOqiqgEZT8eeP9EPOTuM/Gp11W5ARHhxbD9x/6QG3fVqDSO+aMR5RBcfvRllIMXP
3KqI0hrGrrW5l0mkN/y0TH9A2rwGeqs4NxkV0QK6USQz7ei11iqSf9bW4fhQ6/9i
BkzCxrK4Jl1BMcPHx8x4EnTAzscteQQeKmQGrPjI1HjdPeQ7R9v/Azl7rtBbNeGd
JwSBGWiiZAL6C3tYQi5N90zgeGlk1lChJkTB3knunD2IGnFL1KpAy2I7q/IEf55i
sc6R4TNZlKpp/IOEvd69KYjAQzefcAMryiLQJsMlw8L6XTDuVEC2H1EztfLqawGZ
pUkVUDRKqKXzZYZQNgv0f/+euUWB04IOzSw1lI0SqLK43h8Mkdh0UTcRIOEFhlR/
j7LKi2Nw3PTwub9tCXHd3a9iOtUtMT55CuPOFaj3jBOBU3PADiFoD9zvD49oir8Z
ruc7Mtm/stvTnAsW/IsPuXXyxhv3wO5YrMO2AzbaZTqf3hvNcaIQStWVCZLdjs7U
rsvDW5P4ocoYgQfexXsg4/sOuJfu7JCIzmejovuNsJMxJREjuCIdMrQlW0SaGuf6
5wZKakYgNKyITyJFDtM9FatflOwpYTLP4MnnDNnFuup0/yuUHwYHoCyaiiscDsYv
7eaCMGN9K0g6q1+EWhCR
=WPpm
-----END PGP SIGNATURE-----
^ permalink raw reply [flat|nested] 37+ messages in thread
* [U-Boot] [PATCH 05/10] am33xx: add ti814x specific register definitions
2013-02-22 15:51 ` Tom Rini
@ 2013-02-22 16:34 ` Peter Korsgaard
0 siblings, 0 replies; 37+ messages in thread
From: Peter Korsgaard @ 2013-02-22 16:34 UTC (permalink / raw)
To: u-boot
>>>>> "Tom" == Tom Rini <trini@ti.com> writes:
Hi,
>> I'm looking at the emac driver at the moment. It still needs some
>> more work and cleanup, but I would imagine an early series could be
>> posted next week or so is Antoine agrees.
Tom> Can we please make the emac driver switch to phylib while you're
Tom> in there? Thanks!
I can have a look, but I don't have access to any of the older devices
using the driver.
--
Bye, Peter Korsgaard
^ permalink raw reply [flat|nested] 37+ messages in thread
[parent not found: <bc703446ae2c4dc79a6097dc28327030@DLEE74.ent.ti.com>]
* [U-Boot] [PATCH 05/10] am33xx: add ti814x specific register definitions
[not found] ` <bc703446ae2c4dc79a6097dc28327030@DLEE74.ent.ti.com>
@ 2013-02-25 14:46 ` Matt Porter
0 siblings, 0 replies; 37+ messages in thread
From: Matt Porter @ 2013-02-25 14:46 UTC (permalink / raw)
To: u-boot
On Mon, Feb 18, 2013 at 03:18:42PM +0000, Tom Rini wrote:
> On Sun, Feb 17, 2013 at 09:28:33PM +0100, Peter Korsgaard wrote:
> > >>>>> "Matt" == Matt Porter <mporter@ti.com> writes:
> >
> > Matt> Support the ti814x specific register definitions within
> > Matt> arch-am33xx.
> >
> > Matt> Signed-off-by: Matt Porter <mporter@ti.com>
> > Matt> ---
> > Matt> arch/arm/cpu/armv7/am33xx/sys_info.c | 3 +++
> > Matt> arch/arm/include/asm/arch-am33xx/cpu.h | 11 +++++----
> > Matt> arch/arm/include/asm/arch-am33xx/hardware.h | 32 +++++++++++++++++++++++++++
> > Matt> arch/arm/include/asm/arch-am33xx/omap.h | 7 ++++++
> > Matt> arch/arm/include/asm/arch-am33xx/spl.h | 5 +++++
> > Matt> 5 files changed, 54 insertions(+), 4 deletions(-)
> >
> > Matt> diff --git a/arch/arm/include/asm/arch-am33xx/hardware.h b/arch/arm/include/asm/arch-am33xx/hardware.h
> > Matt> index 41ab2c0..786c159 100644
> > Matt> --- a/arch/arm/include/asm/arch-am33xx/hardware.h
> > Matt> +++ b/arch/arm/include/asm/arch-am33xx/hardware.h
> > Matt> @@ -20,9 +20,14 @@
> > Matt> #define __AM33XX_HARDWARE_H
> >
> > Matt> #include <asm/arch/omap.h>
> > Matt> +#include <config.h>
> >
> > Quite some of the base addresses are similar, but I wonder if it
> > wouldn't be cleaner to simply have a hardware-am33xx.h /
> > hardware-ti814x.h instead of all these ifdef / elif?
>
> Since I suspect the things common from ti814x and am33xx are also common
> to ti816x (which has been left as an exercise to whomever needs that
> next), I think we can re-structure this into something like that, but
> keeping the common parts within hardware.h still.
Sounds good. I'll restructure with only the common parts in hardware.h.
> > Matt> /* Control Module Base Address */
> > Matt> +#ifdef CONFIG_AM33XX
> > Matt> #define CTRL_BASE 0x44E10000
> > Matt> #define CTRL_DEVICE_BASE 0x44E10600
> > Matt> +#elif defined(CONFIG_TI814X)
> > Matt> +#define CTRL_BASE 0x48140000
> > Matt> +#endif
> >
> > No CTRL_DEVICE_BASE on ti814x?
>
> I think this is a side-effect of Matt not supporting the things attached
> to it (USB in the case of am335x).
I tried to avoid defining things I'm not yet using. For CTRL_DEVICE_BASE,
I would add it once I get to adding cpsw support as we need to read the
efused macid value from that area.
> > Matt> --- a/arch/arm/include/asm/arch-am33xx/spl.h
> > Matt> +++ b/arch/arm/include/asm/arch-am33xx/spl.h
> > Matt> @@ -25,8 +25,13 @@
> >
> > Matt> #define BOOT_DEVICE_XIP 2
> > Matt> #define BOOT_DEVICE_NAND 5
> > Matt> +#ifdef CONFIG_AM33XX
> > Matt> #define BOOT_DEVICE_MMC1 8
> > Matt> #define BOOT_DEVICE_MMC2 9 /* eMMC or daughter card */
> > Matt> +#elif defined(CONFIG_TI814X)
> > Matt> +#define BOOT_DEVICE_MMC1 9
> > Matt> +#define BOOT_DEVICE_MMC2 8 /* ROM only supports 2nd instance */
> >
> > Argh! Couldn't we just swap the meaning of mmc1/mmc2 or would that be
> > too confusing?
>
> IMHO, that will lead to further confusion down the line. I talked with
> Matt about this before and well, it's funky.
This is definitely a quirky area wrt TI814x. AFAIK it's the only
OMAP-ish part where the ROM only allows boot from a single MMC instance.
Further, that single MMC instance is actually the 2nd one as noted in
the comment. This means to keep all the existing SPL mmc init logic
intact, we need to define as above so that the unimplemented first MMC
instance (which does exist on the part) does not get intialized when the
ROM drops a bootdevice of "8".
-Matt
^ permalink raw reply [flat|nested] 37+ messages in thread
* [U-Boot] [PATCH 06/10] am33xx: add dmm support to emif4 library
2013-02-13 14:43 [U-Boot] [PATCH 00/10] Add TI814x EVM Support Matt Porter
` (4 preceding siblings ...)
2013-02-13 14:43 ` [U-Boot] [PATCH 05/10] am33xx: add ti814x specific register definitions Matt Porter
@ 2013-02-13 14:44 ` Matt Porter
2013-02-15 16:38 ` Tom Rini
2013-02-13 14:44 ` [U-Boot] [PATCH 07/10] ti814x_evm: add ti814x evm board support Matt Porter
` (3 subsequent siblings)
9 siblings, 1 reply; 37+ messages in thread
From: Matt Porter @ 2013-02-13 14:44 UTC (permalink / raw)
To: u-boot
Adds a config_dmm() routine to support TI814X DMM configuration.
Signed-off-by: Matt Porter <mporter@ti.com>
---
arch/arm/cpu/armv7/am33xx/emif4.c | 17 +++++++++++++++++
arch/arm/include/asm/arch-am33xx/ddr_defs.h | 5 +++++
2 files changed, 22 insertions(+)
diff --git a/arch/arm/cpu/armv7/am33xx/emif4.c b/arch/arm/cpu/armv7/am33xx/emif4.c
index 0c617fa..27547be 100644
--- a/arch/arm/cpu/armv7/am33xx/emif4.c
+++ b/arch/arm/cpu/armv7/am33xx/emif4.c
@@ -44,11 +44,28 @@ void dram_init_banksize(void)
#ifdef CONFIG_SPL_BUILD
+static struct dmm_lisa_map_regs *hw_lisa_map_regs =
+ (struct dmm_lisa_map_regs *)DMM_BASE;
static struct vtp_reg *vtpreg[2] = {
(struct vtp_reg *)VTP0_CTRL_ADDR,
(struct vtp_reg *)VTP1_CTRL_ADDR};
static struct ddr_ctrl *ddrctrl = (struct ddr_ctrl *)DDR_CTRL_ADDR;
+void config_dmm(const struct dmm_lisa_map_regs *regs)
+{
+ enable_dmm_clocks();
+
+ writel(0, &hw_lisa_map_regs->dmm_lisa_map_3);
+ writel(0, &hw_lisa_map_regs->dmm_lisa_map_2);
+ writel(0, &hw_lisa_map_regs->dmm_lisa_map_1);
+ writel(0, &hw_lisa_map_regs->dmm_lisa_map_0);
+
+ writel(regs->dmm_lisa_map_3, &hw_lisa_map_regs->dmm_lisa_map_3);
+ writel(regs->dmm_lisa_map_2, &hw_lisa_map_regs->dmm_lisa_map_2);
+ writel(regs->dmm_lisa_map_1, &hw_lisa_map_regs->dmm_lisa_map_1);
+ writel(regs->dmm_lisa_map_0, &hw_lisa_map_regs->dmm_lisa_map_0);
+}
+
static void config_vtp(int nr)
{
writel(readl(&vtpreg[nr]->vtp0ctrlreg) | VTP_CTRL_ENABLE,
diff --git a/arch/arm/include/asm/arch-am33xx/ddr_defs.h b/arch/arm/include/asm/arch-am33xx/ddr_defs.h
index 8bf25a0..943b4ce 100644
--- a/arch/arm/include/asm/arch-am33xx/ddr_defs.h
+++ b/arch/arm/include/asm/arch-am33xx/ddr_defs.h
@@ -66,6 +66,11 @@
#define MT41J128MJT125_IOCTRL_VALUE 0x18B
/**
+ * Configure DMM
+ */
+void config_dmm(const struct dmm_lisa_map_regs *regs);
+
+/**
* Configure SDRAM
*/
void config_sdram(const struct emif_regs *regs, int nr);
--
1.7.9.5
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [U-Boot] [PATCH 07/10] ti814x_evm: add ti814x evm board support
2013-02-13 14:43 [U-Boot] [PATCH 00/10] Add TI814x EVM Support Matt Porter
` (5 preceding siblings ...)
2013-02-13 14:44 ` [U-Boot] [PATCH 06/10] am33xx: add dmm support to emif4 library Matt Porter
@ 2013-02-13 14:44 ` Matt Porter
2013-02-15 16:38 ` Tom Rini
[not found] ` <e0c6e2fe1afd4a5887b85c5b7d1877ce@DLEE74.ent.ti.com>
2013-02-13 14:44 ` [U-Boot] [PATCH 08/10] ns16550: enable quirks for ti814x Matt Porter
` (2 subsequent siblings)
9 siblings, 2 replies; 37+ messages in thread
From: Matt Porter @ 2013-02-13 14:44 UTC (permalink / raw)
To: u-boot
Add TI814X EVM board directory and config file.
Signed-off-by: Matt Porter <mporter@ti.com>
---
board/ti/ti814x/Makefile | 46 +++++++++
board/ti/ti814x/evm.c | 198 +++++++++++++++++++++++++++++++++++++++
board/ti/ti814x/evm.h | 7 ++
board/ti/ti814x/mux.c | 51 ++++++++++
include/configs/ti814x_evm.h | 213 ++++++++++++++++++++++++++++++++++++++++++
5 files changed, 515 insertions(+)
create mode 100644 board/ti/ti814x/Makefile
create mode 100644 board/ti/ti814x/evm.c
create mode 100644 board/ti/ti814x/evm.h
create mode 100644 board/ti/ti814x/mux.c
create mode 100644 include/configs/ti814x_evm.h
diff --git a/board/ti/ti814x/Makefile b/board/ti/ti814x/Makefile
new file mode 100644
index 0000000..09d2422
--- /dev/null
+++ b/board/ti/ti814x/Makefile
@@ -0,0 +1,46 @@
+#
+# Makefile
+#
+# Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# This program is distributed "as is" WITHOUT ANY WARRANTY of any
+# kind, whether express or implied; without even the implied warranty
+# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+
+include $(TOPDIR)/config.mk
+
+LIB = $(obj)lib$(BOARD).o
+
+ifdef CONFIG_SPL_BUILD
+COBJS := mux.o
+endif
+
+COBJS += evm.o
+SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
+OBJS := $(addprefix $(obj),$(COBJS))
+SOBJS := $(addprefix $(obj),$(SOBJS))
+
+$(LIB): $(obj).depend $(OBJS) $(SOBJS)
+ $(call cmd_link_o_target, $(OBJS) $(SOBJS))
+
+clean:
+ rm -f $(SOBJS) $(OBJS)
+
+distclean: clean
+ rm -f $(LIB) core *.bak $(obj).depend
+
+#########################################################################
+
+# defines $(obj).depend target
+include $(SRCTREE)/rules.mk
+
+sinclude $(obj).depend
+
+#########################################################################
diff --git a/board/ti/ti814x/evm.c b/board/ti/ti814x/evm.c
new file mode 100644
index 0000000..53912d1
--- /dev/null
+++ b/board/ti/ti814x/evm.c
@@ -0,0 +1,198 @@
+/*
+ * evm.c
+ *
+ * Board functions for TI814x EVM
+ *
+ * Copyright (C) 2011, Texas Instruments, Incorporated - http://www.ti.com/
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR /PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#include <common.h>
+#include <errno.h>
+#include <spl.h>
+#include <asm/arch/cpu.h>
+#include <asm/arch/hardware.h>
+#include <asm/arch/omap.h>
+#include <asm/arch/ddr_defs.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/gpio.h>
+#include <asm/arch/mmc_host_def.h>
+#include <asm/arch/sys_proto.h>
+#include <asm/io.h>
+#include <asm/emif.h>
+#include <asm/gpio.h>
+#include "evm.h"
+
+DECLARE_GLOBAL_DATA_PTR;
+
+static struct wd_timer *wdtimer = (struct wd_timer *)WDT_BASE;
+#ifdef CONFIG_SPL_BUILD
+static struct uart_sys *uart_base = (struct uart_sys *)DEFAULT_UART_BASE;
+#endif
+
+/* UART Defines */
+#ifdef CONFIG_SPL_BUILD
+#define UART_RESET (0x1 << 1)
+#define UART_CLK_RUNNING_MASK 0x1
+#define UART_SMART_IDLE_EN (0x1 << 0x3)
+
+static void rtc32k_enable(void)
+{
+ struct rtc_regs *rtc = (struct rtc_regs *)RTC_BASE;
+
+ /*
+ * Unlock the RTC's registers. For more details please see the
+ * RTC_SS section of the TRM. In order to unlock we need to
+ * write these specific values (keys) in this order.
+ */
+ writel(0x83e70b13, &rtc->kick0r);
+ writel(0x95a4f1e0, &rtc->kick1r);
+
+ /* Enable the RTC 32K OSC by setting bits 3 and 6. */
+ writel((1 << 3) | (1 << 6), &rtc->osc);
+}
+
+static void uart_enable(void)
+{
+ u32 regVal;
+
+ /* UART softreset */
+ regVal = readl(&uart_base->uartsyscfg);
+ regVal |= UART_RESET;
+ writel(regVal, &uart_base->uartsyscfg);
+ while ((readl(&uart_base->uartsyssts) &
+ UART_CLK_RUNNING_MASK) != UART_CLK_RUNNING_MASK)
+ ;
+
+ /* Disable smart idle */
+ regVal = readl(&uart_base->uartsyscfg);
+ regVal |= UART_SMART_IDLE_EN;
+ writel(regVal, &uart_base->uartsyscfg);
+}
+
+static void wdt_disable(void)
+{
+ writel(0xAAAA, &wdtimer->wdtwspr);
+ while (readl(&wdtimer->wdtwwps) != 0x0)
+ ;
+ writel(0x5555, &wdtimer->wdtwspr);
+ while (readl(&wdtimer->wdtwwps) != 0x0)
+ ;
+}
+
+static const struct cmd_control evm_ddr2_cctrl_data = {
+ .cmd0csratio = 0x80,
+ .cmd0dldiff = 0x04,
+ .cmd0iclkout = 0x00,
+
+ .cmd1csratio = 0x80,
+ .cmd1dldiff = 0x04,
+ .cmd1iclkout = 0x00,
+
+ .cmd2csratio = 0x80,
+ .cmd2dldiff = 0x04,
+ .cmd2iclkout = 0x00,
+};
+
+static const struct emif_regs evm_ddr2_emif0_regs = {
+ .sdram_config = 0x40801ab2,
+ .ref_ctrl = 0x10000c30,
+ .sdram_tim1 = 0x0aaaf552,
+ .sdram_tim2 = 0x043631d2,
+ .sdram_tim3 = 0x00000327,
+ .emif_ddr_phy_ctlr_1 = 0x00000007
+};
+
+static const struct emif_regs evm_ddr2_emif1_regs = {
+ .sdram_config = 0x40801ab2,
+ .ref_ctrl = 0x10000c30,
+ .sdram_tim1 = 0x0aaaf552,
+ .sdram_tim2 = 0x043631d2,
+ .sdram_tim3 = 0x00000327,
+ .emif_ddr_phy_ctlr_1 = 0x00000007
+};
+
+const struct dmm_lisa_map_regs evm_lisa_map_regs = {
+ .dmm_lisa_map_0 = 0x00000000,
+ .dmm_lisa_map_1 = 0x00000000,
+ .dmm_lisa_map_2 = 0x806c0300,
+ .dmm_lisa_map_3 = 0x806c0300,
+};
+
+static const struct ddr_data evm_ddr2_data = {
+ .datardsratio0 = ((0x35<<10) | (0x35<<0)),
+ .datawdsratio0 = ((0x20<<10) | (0x20<<0)),
+ .datawiratio0 = ((0<<10) | (0<<0)),
+ .datagiratio0 = ((0<<10) | (0<<0)),
+ .datafwsratio0 = ((0x90<<10) | (0x90<<0)),
+ .datawrsratio0 = ((0x50<<10) | (0x50<<0)),
+ .datauserank0delay = 1,
+ .datadldiff0 = 0x4,
+};
+#endif
+
+/*
+ * early system init of muxing and clocks.
+ */
+void s_init(void)
+{
+#ifdef CONFIG_SPL_BUILD
+ /* WDT1 is already running when the bootloader gets control
+ * Disable it to avoid "random" resets
+ */
+ wdt_disable();
+
+ /* Setup the PLLs and the clocks for the peripherals */
+ pll_init();
+
+ /* Enable RTC32K clock */
+ rtc32k_enable();
+
+ /* Set UART pins */
+ enable_uart0_pin_mux();
+
+ /* Set MMC pins */
+ enable_mmc1_pin_mux();
+
+ /* Enable UART */
+ uart_enable();
+
+ gd = &gdata;
+
+ preloader_console_init();
+
+ config_dmm(&evm_lisa_map_regs);
+
+ config_ddr(0, 0, &evm_ddr2_data, &evm_ddr2_cctrl_data,
+ &evm_ddr2_emif0_regs, 0);
+ config_ddr(0, 0, &evm_ddr2_data, &evm_ddr2_cctrl_data,
+ &evm_ddr2_emif1_regs, 1);
+#endif
+}
+
+/*
+ * Basic board specific setup. Pinmux has been handled already.
+ */
+int board_init(void)
+{
+ gd->bd->bi_boot_params = PHYS_DRAM_1 + 0x100;
+ return 0;
+}
+
+#if !defined(CONFIG_SPL_BUILD) && defined(CONFIG_GENERIC_MMC)
+int board_mmc_init(bd_t *bis)
+{
+ omap_mmc_init(1, 0, 0);
+
+ return 0;
+}
+#endif
diff --git a/board/ti/ti814x/evm.h b/board/ti/ti814x/evm.h
new file mode 100644
index 0000000..40f8710
--- /dev/null
+++ b/board/ti/ti814x/evm.h
@@ -0,0 +1,7 @@
+#ifndef _EVM_H
+#define _EVM_H
+
+void enable_uart0_pin_mux(void);
+void enable_mmc1_pin_mux(void);
+
+#endif /* _EVM_H */
diff --git a/board/ti/ti814x/mux.c b/board/ti/ti814x/mux.c
new file mode 100644
index 0000000..137acb4
--- /dev/null
+++ b/board/ti/ti814x/mux.c
@@ -0,0 +1,51 @@
+/*
+ * mux.c
+ *
+ * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation version 2.
+ *
+ * This program is distributed "as is" WITHOUT ANY WARRANTY of any
+ * kind, whether express or implied; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#include <common.h>
+#include <asm/arch/sys_proto.h>
+#include <asm/arch/hardware.h>
+#include <asm/arch/mux.h>
+#include <asm/io.h>
+#include <i2c.h>
+#include "evm.h"
+
+static struct module_pin_mux uart0_pin_mux[] = {
+ {OFFSET(pincntl70), PULLUP_EN | MODE(0x01)}, /* UART0_RXD */
+ {OFFSET(pincntl71), PULLUP_EN | MODE(0x01)}, /* UART0_TXD */
+ {-1},
+};
+
+static struct module_pin_mux mmc1_pin_mux[] = {
+ {OFFSET(pincntl1), PULLUP_EN | MODE(0x01)}, /* SD1_CLK */
+ {OFFSET(pincntl2), PULLUP_EN | MODE(0x01)}, /* SD1_CMD */
+ {OFFSET(pincntl3), PULLUP_EN | MODE(0x01)}, /* SD1_DAT[0] */
+ {OFFSET(pincntl4), PULLUP_EN | MODE(0x01)}, /* SD1_DAT[1] */
+ {OFFSET(pincntl5), PULLUP_EN | MODE(0x01)}, /* SD1_DAT[2] */
+ {OFFSET(pincntl6), PULLUP_EN | MODE(0x01)}, /* SD1_DAT[3] */
+ {OFFSET(pincntl74), PULLUP_EN | MODE(0x40)}, /* SD1_POW */
+ {OFFSET(pincntl75), MODE(0x40)}, /* SD1_SDWP */
+ {OFFSET(pincntl80), PULLUP_EN | MODE(0x02)}, /* SD1_SDCD */
+ {-1},
+};
+
+void enable_uart0_pin_mux(void)
+{
+ configure_module_pin_mux(uart0_pin_mux);
+}
+
+void enable_mmc1_pin_mux(void)
+{
+ configure_module_pin_mux(mmc1_pin_mux);
+}
diff --git a/include/configs/ti814x_evm.h b/include/configs/ti814x_evm.h
new file mode 100644
index 0000000..ca07eb2
--- /dev/null
+++ b/include/configs/ti814x_evm.h
@@ -0,0 +1,213 @@
+#define __CONFIG_TI814X_EVM_H
+
+#define CONFIG_TI81XX
+#define CONFIG_TI814X
+#define CONFIG_SYS_NO_FLASH
+
+#include <asm/arch/cpu.h> /* get chip and board defs */
+#include <asm/arch/hardware.h>
+
+#define CONFIG_DMA_COHERENT
+#define CONFIG_DMA_COHERENT_SIZE (1 << 20)
+
+#define CONFIG_ENV_SIZE (128 << 10) /* 128 KiB */
+#define CONFIG_SYS_MALLOC_LEN (1024 << 10)
+#define CONFIG_SYS_LONGHELP /* undef to save memory */
+#define CONFIG_SYS_HUSH_PARSER /* Use HUSH for command parsing */
+#define CONFIG_SYS_PROMPT "U-Boot# "
+#define CONFIG_SYS_NO_FLASH
+#define CONFIG_MACH_TYPE MACH_TYPE_TI8148EVM
+
+#define CONFIG_OF_LIBFDT
+#define CONFIG_CMDLINE_TAG 1 /* enable passing of ATAGs */
+#define CONFIG_SETUP_MEMORY_TAGS 1
+#define CONFIG_INITRD_TAG 1 /* for ramdisk support */
+
+/* commands to include */
+# include <config_cmd_default.h>
+
+#define CONFIG_CMD_ASKENV
+#define CONFIG_VERSION_VARIABLE
+
+#define CONFIG_BOOTDELAY 1 /* negative for no autoboot */
+#define CONFIG_ENV_VARS_UBOOT_CONFIG
+#define CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
+#define CONFIG_EXTRA_ENV_SETTINGS \
+ "loadaddr=0x80200000\0" \
+ "fdtaddr=0x80F80000\0" \
+ "rdaddr=0x81000000\0" \
+ "bootfile=/boot/uImage\0" \
+ "fdtfile=\0" \
+ "console=ttyO0,115200n8\0" \
+ "optargs=\0" \
+ "mmcdev=0\0" \
+ "mmcroot=/dev/mmcblk0p2 ro\0" \
+ "mmcrootfstype=ext4 rootwait\0" \
+ "ramroot=/dev/ram0 rw ramdisk_size=65536 initrd=${rdaddr},64M\0" \
+ "ramrootfstype=ext2\0" \
+ "mmcargs=setenv bootargs console=${console} " \
+ "${optargs} " \
+ "root=${mmcroot} " \
+ "rootfstype=${mmcrootfstype}\0" \
+ "bootenv=uEnv.txt\0" \
+ "loadbootenv=fatload mmc ${mmcdev} ${loadaddr} ${bootenv}\0" \
+ "importbootenv=echo Importing environment from mmc ...; " \
+ "env import -t $loadaddr $filesize\0" \
+ "ramargs=setenv bootargs console=${console} " \
+ "${optargs} " \
+ "root=${ramroot} " \
+ "rootfstype=${ramrootfstype}\0" \
+ "loadramdisk=fatload mmc ${mmcdev} ${rdaddr} ramdisk.gz\0" \
+ "loaduimagefat=fatload mmc ${mmcdev} ${loadaddr} ${bootfile}\0" \
+ "loaduimage=ext2load mmc ${mmcdev}:2 ${loadaddr} ${bootfile}\0" \
+ "mmcboot=echo Booting from mmc ...; " \
+ "run mmcargs; " \
+ "bootm ${loadaddr}\0" \
+ "ramboot=echo Booting from ramdisk ...; " \
+ "run ramargs; " \
+ "bootm ${loadaddr}\0" \
+ "findfdt="\
+ "if test $board_name = A335BONE; then " \
+ "setenv fdtfile am335x-bone.dtb; fi; " \
+ "if test $board_name = A33515BB; then " \
+ "setenv fdtfile am335x-evm.dtb; fi; " \
+ "if test $board_name = A335X_SK; then " \
+ "setenv fdtfile am335x-evmsk.dtb; fi\0" \
+
+#define CONFIG_BOOTCOMMAND \
+ "mmc dev ${mmcdev}; if mmc rescan; then " \
+ "echo SD/MMC found on device ${mmcdev};" \
+ "if run loadbootenv; then " \
+ "echo Loaded environment from ${bootenv};" \
+ "run importbootenv;" \
+ "fi;" \
+ "if test -n $uenvcmd; then " \
+ "echo Running uenvcmd ...;" \
+ "run uenvcmd;" \
+ "fi;" \
+ "if run loaduimage; then " \
+ "run mmcboot;" \
+ "fi;" \
+ "fi;" \
+
+/* Clock Defines */
+#define V_OSCK 24000000 /* Clock output from T2 */
+#define V_SCLK (V_OSCK >> 1)
+
+#define CONFIG_CMD_ECHO
+
+/* max number of command args */
+#define CONFIG_SYS_MAXARGS 16
+
+/* Console I/O Buffer Size */
+#define CONFIG_SYS_CBSIZE 512
+
+/* Print Buffer Size */
+#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE \
+ + sizeof(CONFIG_SYS_PROMPT) + 16)
+
+/* Boot Argument Buffer Size */
+#define CONFIG_SYS_BARGSIZE CONFIG_SYS_CBSIZE
+
+/* memtest works on 8 MB in DRAM offset 32MB from start of ram disk*/
+#define CONFIG_SYS_MEMTEST_START (PHYS_DRAM_1 + (64 * 1024 * 1024))
+#define CONFIG_SYS_MEMTEST_END (CONFIG_SYS_MEMTEST_START \
+ + (8 * 1024 * 1024))
+
+#define CONFIG_SYS_LOAD_ADDR 0x81000000 /* Default */
+#define CONFIG_SYS_HZ 1000 /* 1ms clock */
+
+#define CONFIG_MMC
+#define CONFIG_GENERIC_MMC
+#define CONFIG_OMAP_HSMMC
+#define CONFIG_CMD_MMC
+#define CONFIG_DOS_PARTITION
+#define CONFIG_CMD_FAT
+#define CONFIG_CMD_EXT2
+
+/**
+ * Physical Memory Map
+ */
+#define CONFIG_NR_DRAM_BANKS 1 /* 1 banks of DRAM */
+#define PHYS_DRAM_1 0x80000000 /* DRAM Bank #1 */
+#define PHYS_DRAM_1_SIZE 0x20000000 /* 512MB */
+#define CONFIG_MAX_RAM_BANK_SIZE (1024 << 20) /* 1024MB */
+
+#define CONFIG_SYS_SDRAM_BASE PHYS_DRAM_1
+#define CONFIG_SYS_INIT_SP_ADDR (NON_SECURE_SRAM_END - \
+ GENERATED_GBL_DATA_SIZE)
+
+/**
+ * Platform/Board specific defs
+ */
+#define CONFIG_SYS_TIMERBASE 0x4802E000
+#define CONFIG_SYS_PTV 2 /* Divisor: 2^(PTV+1) => 8 */
+#define CONFIG_SYS_HZ 1000
+
+#undef CONFIG_NAND_OMAP_GPMC
+
+/* NS16550 Configuration */
+#define CONFIG_SYS_NS16550
+#define CONFIG_SYS_NS16550_SERIAL
+#define CONFIG_SYS_NS16550_REG_SIZE (-4)
+#define CONFIG_SYS_NS16550_CLK (48000000)
+#define CONFIG_SYS_NS16550_COM1 0x48020000 /* Base EVM has UART0 */
+
+#define CONFIG_BAUDRATE 115200
+#define CONFIG_SYS_BAUDRATE_TABLE { 110, 300, 600, 1200, 2400, \
+4800, 9600, 14400, 19200, 28800, 38400, 56000, 57600, 115200 }
+
+#define CONFIG_ENV_OVERWRITE 1
+#define CONFIG_CONS_INDEX 1
+#define CONFIG_SYS_CONSOLE_INFO_QUIET
+
+#define CONFIG_ENV_IS_NOWHERE
+
+/* Defines for SPL */
+#define CONFIG_SPL
+#define CONFIG_SPL_FRAMEWORK
+#define CONFIG_SPL_TEXT_BASE 0x40300000
+#define CONFIG_SPL_MAX_SIZE ((128 - 18) * 1024)
+#define CONFIG_SPL_STACK CONFIG_SYS_INIT_SP_ADDR
+
+#define CONFIG_SPL_BSS_START_ADDR 0x80000000
+#define CONFIG_SPL_BSS_MAX_SIZE 0x80000 /* 512 KB */
+
+#define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR 0x300 /* address 0x60000 */
+#define CONFIG_SYS_U_BOOT_MAX_SIZE_SECTORS 0x200 /* 256 KB */
+#define CONFIG_SYS_MMC_SD_FAT_BOOT_PARTITION 1
+#define CONFIG_SPL_FAT_LOAD_PAYLOAD_NAME "u-boot.img"
+#define CONFIG_SPL_MMC_SUPPORT
+#define CONFIG_SPL_FAT_SUPPORT
+
+#define CONFIG_SPL_LIBCOMMON_SUPPORT
+#define CONFIG_SPL_LIBDISK_SUPPORT
+#define CONFIG_SPL_LIBGENERIC_SUPPORT
+#define CONFIG_SPL_SERIAL_SUPPORT
+#define CONFIG_SPL_GPIO_SUPPORT
+#define CONFIG_SPL_YMODEM_SUPPORT
+#define CONFIG_SYS_SPI_U_BOOT_OFFS 0x20000
+#define CONFIG_SYS_SPI_U_BOOT_SIZE 0x40000
+#define CONFIG_SPL_LDSCRIPT "$(CPUDIR)/omap-common/u-boot-spl.lds"
+
+#define CONFIG_SPL_BOARD_INIT
+
+/*
+ * 1MB into the SDRAM to allow for SPL's bss at the beginning of SDRAM
+ * 64 bytes before this address should be set aside for u-boot.img's
+ * header. That is 0x800FFFC0--0x80800000 should not be used for any
+ * other needs.
+ */
+#define CONFIG_SYS_TEXT_BASE 0x80800000
+#define CONFIG_SYS_SPL_MALLOC_START 0x80208000
+#define CONFIG_SYS_SPL_MALLOC_SIZE 0x100000
+
+/* Since SPL did pll and ddr initialization for us,
+ * we don't need to do it twice.
+ */
+#ifndef CONFIG_SPL_BUILD
+#define CONFIG_SKIP_LOWLEVEL_INIT
+#endif
+
+/* Unsupported features */
+#undef CONFIG_USE_IRQ
--
1.7.9.5
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [U-Boot] [PATCH 07/10] ti814x_evm: add ti814x evm board support
2013-02-13 14:44 ` [U-Boot] [PATCH 07/10] ti814x_evm: add ti814x evm board support Matt Porter
@ 2013-02-15 16:38 ` Tom Rini
[not found] ` <e0c6e2fe1afd4a5887b85c5b7d1877ce@DLEE74.ent.ti.com>
1 sibling, 0 replies; 37+ messages in thread
From: Tom Rini @ 2013-02-15 16:38 UTC (permalink / raw)
To: u-boot
On Wed, Feb 13, 2013 at 09:44:01AM -0500, Matt Porter wrote:
> Add TI814X EVM board directory and config file.
>
> Signed-off-by: Matt Porter <mporter@ti.com>
[snip]
> +++ b/board/ti/ti814x/evm.h
> @@ -0,0 +1,7 @@
> +#ifndef _EVM_H
[snip]
> +++ b/include/configs/ti814x_evm.h
> @@ -0,0 +1,213 @@
> +#define __CONFIG_TI814X_EVM_H
Needs GPLv2 or later boilerplate.
[snip]
> +#define CONFIG_CMDLINE_TAG 1 /* enable passing of ATAGs */
> +#define CONFIG_SETUP_MEMORY_TAGS 1
> +#define CONFIG_INITRD_TAG 1 /* for ramdisk support */
Just #define CONFIG_FOO in these cases (and some others that follow)
[snip]
> + "findfdt="\
> + "if test $board_name = A335BONE; then " \
> + "setenv fdtfile am335x-bone.dtb; fi; " \
> + "if test $board_name = A33515BB; then " \
> + "setenv fdtfile am335x-evm.dtb; fi; " \
> + "if test $board_name = A335X_SK; then " \
> + "setenv fdtfile am335x-evmsk.dtb; fi\0" \
That's not right :)
[snip]
> +/* memtest works on 8 MB in DRAM offset 32MB from start of ram disk*/
> +#define CONFIG_SYS_MEMTEST_START (PHYS_DRAM_1 + (64 * 1024 * 1024))
> +#define CONFIG_SYS_MEMTEST_END (CONFIG_SYS_MEMTEST_START \
> + + (8 * 1024 * 1024))
This isn't your mistake initially, but this should just be start of
memory to smallest possible config the evm can come with - 4MB.
[snip]
> +#undef CONFIG_NAND_OMAP_GPMC
Just leave it out.
> +#define CONFIG_SYS_BAUDRATE_TABLE { 110, 300, 600, 1200, 2400, \
> +4800, 9600, 14400, 19200, 28800, 38400, 56000, 57600, 115200 }
Leave that out and get the generic table. am335x needs to be updated
for that.
[snip]
> +/* Since SPL did pll and ddr initialization for us,
> + * we don't need to do it twice.
> + */
/*
* Must be like
* this.
*/
--
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/20130215/d5e2e3be/attachment.pgp>
^ permalink raw reply [flat|nested] 37+ messages in thread
[parent not found: <e0c6e2fe1afd4a5887b85c5b7d1877ce@DLEE74.ent.ti.com>]
* [U-Boot] [PATCH 07/10] ti814x_evm: add ti814x evm board support
[not found] ` <e0c6e2fe1afd4a5887b85c5b7d1877ce@DLEE74.ent.ti.com>
@ 2013-02-15 21:19 ` Matt Porter
0 siblings, 0 replies; 37+ messages in thread
From: Matt Porter @ 2013-02-15 21:19 UTC (permalink / raw)
To: u-boot
On Fri, Feb 15, 2013 at 04:38:22PM +0000, Tom Rini wrote:
> On Wed, Feb 13, 2013 at 09:44:01AM -0500, Matt Porter wrote:
>
> > Add TI814X EVM board directory and config file.
> >
> > Signed-off-by: Matt Porter <mporter@ti.com>
> [snip]
> > +++ b/board/ti/ti814x/evm.h
> > @@ -0,0 +1,7 @@
> > +#ifndef _EVM_H
> [snip]
> > +++ b/include/configs/ti814x_evm.h
> > @@ -0,0 +1,213 @@
> > +#define __CONFIG_TI814X_EVM_H
>
> Needs GPLv2 or later boilerplate.
Ok.
>
> [snip]
> > +#define CONFIG_CMDLINE_TAG 1 /* enable passing of ATAGs */
> > +#define CONFIG_SETUP_MEMORY_TAGS 1
> > +#define CONFIG_INITRD_TAG 1 /* for ramdisk support */
>
> Just #define CONFIG_FOO in these cases (and some others that follow)
Ok.
>
> [snip]
> > + "findfdt="\
> > + "if test $board_name = A335BONE; then " \
> > + "setenv fdtfile am335x-bone.dtb; fi; " \
> > + "if test $board_name = A33515BB; then " \
> > + "setenv fdtfile am335x-evm.dtb; fi; " \
> > + "if test $board_name = A335X_SK; then " \
> > + "setenv fdtfile am335x-evmsk.dtb; fi\0" \
>
> That's not right :)
LOL, indeed..forgot about that am335x specific stuff. Will fix.
> [snip]
> > +/* memtest works on 8 MB in DRAM offset 32MB from start of ram disk*/
> > +#define CONFIG_SYS_MEMTEST_START (PHYS_DRAM_1 + (64 * 1024 * 1024))
> > +#define CONFIG_SYS_MEMTEST_END (CONFIG_SYS_MEMTEST_START \
> > + + (8 * 1024 * 1024))
>
> This isn't your mistake initially, but this should just be start of
> memory to smallest possible config the evm can come with - 4MB.
Ok.
>
> [snip]
> > +#undef CONFIG_NAND_OMAP_GPMC
>
> Just leave it out.
Ok.
> > +#define CONFIG_SYS_BAUDRATE_TABLE { 110, 300, 600, 1200, 2400, \
> > +4800, 9600, 14400, 19200, 28800, 38400, 56000, 57600, 115200 }
>
> Leave that out and get the generic table. am335x needs to be updated
> for that.
Ok, will do. I even saw something about this and forgot to update this
config.
> [snip]
> > +/* Since SPL did pll and ddr initialization for us,
> > + * we don't need to do it twice.
> > + */
>
> /*
> * Must be like
> * this.
> */
Ok.
^ permalink raw reply [flat|nested] 37+ messages in thread
* [U-Boot] [PATCH 08/10] ns16550: enable quirks for ti814x
2013-02-13 14:43 [U-Boot] [PATCH 00/10] Add TI814x EVM Support Matt Porter
` (6 preceding siblings ...)
2013-02-13 14:44 ` [U-Boot] [PATCH 07/10] ti814x_evm: add ti814x evm board support Matt Porter
@ 2013-02-13 14:44 ` Matt Porter
2013-02-15 16:38 ` Tom Rini
2013-02-13 14:44 ` [U-Boot] [PATCH 09/10] ti814x_evm: enable ti814x evm build Matt Porter
2013-02-13 14:44 ` [U-Boot] [PATCH 10/10] MAINTAINERS: add ti814x_evm maintainer Matt Porter
9 siblings, 1 reply; 37+ messages in thread
From: Matt Porter @ 2013-02-13 14:44 UTC (permalink / raw)
To: u-boot
TI814X requires the same quirks as AM33XX to be enabled.
Signed-off-by: Matt Porter <mporter@ti.com>
---
drivers/serial/ns16550.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/serial/ns16550.c b/drivers/serial/ns16550.c
index 87a0917..02bc85b 100644
--- a/drivers/serial/ns16550.c
+++ b/drivers/serial/ns16550.c
@@ -43,7 +43,7 @@ void NS16550_init(NS16550_t com_port, int baud_divisor)
serial_out(CONFIG_SYS_NS16550_IER, &com_port->ier);
#if (defined(CONFIG_OMAP) && !defined(CONFIG_OMAP3_ZOOM2)) || \
- defined(CONFIG_AM33XX)
+ defined(CONFIG_AM33XX) || defined(CONFIG_TI814X)
serial_out(0x7, &com_port->mdr1); /* mode select reset TL16C750*/
#endif
serial_out(UART_LCR_BKSE | UART_LCRVAL, (ulong)&com_port->lcr);
@@ -57,7 +57,8 @@ void NS16550_init(NS16550_t com_port, int baud_divisor)
serial_out((baud_divisor >> 8) & 0xff, &com_port->dlm);
serial_out(UART_LCRVAL, &com_port->lcr);
#if (defined(CONFIG_OMAP) && !defined(CONFIG_OMAP3_ZOOM2)) || \
- defined(CONFIG_AM33XX) || defined(CONFIG_SOC_DA8XX)
+ defined(CONFIG_AM33XX) || defined(CONFIG_SOC_DA8XX) || \
+ defined(CONFIG_TI814X)
#if defined(CONFIG_APTIX)
/* /13 mode so Aptix 6MHz can hit 115200 */
--
1.7.9.5
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [U-Boot] [PATCH 09/10] ti814x_evm: enable ti814x evm build
2013-02-13 14:43 [U-Boot] [PATCH 00/10] Add TI814x EVM Support Matt Porter
` (7 preceding siblings ...)
2013-02-13 14:44 ` [U-Boot] [PATCH 08/10] ns16550: enable quirks for ti814x Matt Porter
@ 2013-02-13 14:44 ` Matt Porter
2013-02-15 16:39 ` Tom Rini
2013-02-13 14:44 ` [U-Boot] [PATCH 10/10] MAINTAINERS: add ti814x_evm maintainer Matt Porter
9 siblings, 1 reply; 37+ messages in thread
From: Matt Porter @ 2013-02-13 14:44 UTC (permalink / raw)
To: u-boot
Enable TI814X EVM build via ti814x_evm target.
Signed-off-by: Matt Porter <mporter@ti.com>
---
Makefile | 2 +-
arch/arm/cpu/armv7/Makefile | 2 +-
arch/arm/cpu/armv7/omap-common/Makefile | 2 +-
boards.cfg | 1 +
spl/Makefile | 2 +-
5 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/Makefile b/Makefile
index 51bd918..120ab31 100644
--- a/Makefile
+++ b/Makefile
@@ -334,7 +334,7 @@ LIBS-y += api/libapi.o
LIBS-y += post/libpost.o
LIBS-y += test/libtest.o
-ifneq ($(CONFIG_AM33XX)$(CONFIG_OMAP34XX)$(CONFIG_OMAP44XX)$(CONFIG_OMAP54XX),)
+ifneq ($(CONFIG_AM33XX)$(CONFIG_OMAP34XX)$(CONFIG_OMAP44XX)$(CONFIG_OMAP54XX)$(CONFIG_TI814X),)
LIBS-y += $(CPUDIR)/omap-common/libomap-common.o
endif
diff --git a/arch/arm/cpu/armv7/Makefile b/arch/arm/cpu/armv7/Makefile
index 4fdbee4..156a5ba 100644
--- a/arch/arm/cpu/armv7/Makefile
+++ b/arch/arm/cpu/armv7/Makefile
@@ -32,7 +32,7 @@ COBJS += cache_v7.o
COBJS += cpu.o
COBJS += syslib.o
-ifneq ($(CONFIG_AM33XX)$(CONFIG_OMAP44XX)$(CONFIG_OMAP54XX)$(CONFIG_TEGRA20),)
+ifneq ($(CONFIG_AM33XX)$(CONFIG_OMAP44XX)$(CONFIG_OMAP54XX)$(CONFIG_TEGRA20)$(CONFIG_TI814X),)
SOBJS += lowlevel_init.o
endif
diff --git a/arch/arm/cpu/armv7/omap-common/Makefile b/arch/arm/cpu/armv7/omap-common/Makefile
index 0efc80d..55e82ba 100644
--- a/arch/arm/cpu/armv7/omap-common/Makefile
+++ b/arch/arm/cpu/armv7/omap-common/Makefile
@@ -36,7 +36,7 @@ COBJS += emif-common.o
COBJS += vc.o
endif
-ifneq ($(CONFIG_AM33XX)$(CONFIG_OMAP44XX)$(CONFIG_OMAP54XX),)
+ifneq ($(CONFIG_AM33XX)$(CONFIG_OMAP44XX)$(CONFIG_OMAP54XX)$(CONFIG_TI814X),)
COBJS += boot-common.o
SOBJS += lowlevel_init.o
endif
diff --git a/boards.cfg b/boards.cfg
index 98f7a14..0eabae9 100644
--- a/boards.cfg
+++ b/boards.cfg
@@ -236,6 +236,7 @@ am335x_evm_uart2 arm armv7 am335x ti
am335x_evm_uart3 arm armv7 am335x ti am33xx am335x_evm:SERIAL4,CONS_INDEX=4
am335x_evm_uart4 arm armv7 am335x ti am33xx am335x_evm:SERIAL5,CONS_INDEX=5
am335x_evm_uart5 arm armv7 am335x ti am33xx am335x_evm:SERIAL6,CONS_INDEX=6
+ti814x_evm arm armv7 ti814x ti am33xx
highbank arm armv7 highbank - highbank
mx51_efikamx arm armv7 mx51_efikamx genesi mx5 mx51_efikamx:MACH_TYPE=MACH_TYPE_MX51_EFIKAMX,IMX_CONFIG=board/genesi/mx51_efikamx/imximage_mx.cfg
mx51_efikasb arm armv7 mx51_efikamx genesi mx5 mx51_efikamx:MACH_TYPE=MACH_TYPE_MX51_EFIKASB,IMX_CONFIG=board/genesi/mx51_efikamx/imximage_sb.cfg
diff --git a/spl/Makefile b/spl/Makefile
index 6dbb105..9761e7d 100644
--- a/spl/Makefile
+++ b/spl/Makefile
@@ -82,7 +82,7 @@ LIBS-$(CONFIG_SPL_NET_SUPPORT) += net/libnet.o
LIBS-$(CONFIG_SPL_ETH_SUPPORT) += drivers/net/libnet.o
LIBS-$(CONFIG_SPL_ETH_SUPPORT) += drivers/net/phy/libphy.o
-ifneq ($(CONFIG_AM33XX)$(CONFIG_OMAP34XX)$(CONFIG_OMAP44XX)$(CONFIG_OMAP54XX),)
+ifneq ($(CONFIG_AM33XX)$(CONFIG_OMAP34XX)$(CONFIG_OMAP44XX)$(CONFIG_OMAP54XX)$(CONFIG_TI814X),)
LIBS-y += $(CPUDIR)/omap-common/libomap-common.o
endif
--
1.7.9.5
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [U-Boot] [PATCH 09/10] ti814x_evm: enable ti814x evm build
2013-02-13 14:44 ` [U-Boot] [PATCH 09/10] ti814x_evm: enable ti814x evm build Matt Porter
@ 2013-02-15 16:39 ` Tom Rini
2013-02-15 21:20 ` Matt Porter
0 siblings, 1 reply; 37+ messages in thread
From: Tom Rini @ 2013-02-15 16:39 UTC (permalink / raw)
To: u-boot
On Wed, Feb 13, 2013 at 09:44:03AM -0500, Matt Porter wrote:
> Enable TI814X EVM build via ti814x_evm target.
>
> Signed-off-by: Matt Porter <mporter@ti.com>
This should just get squashed into the patch that adds the board code.
Otherwise,
Reviewed-by: Tom Rini <trini@ti.com>
--
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/20130215/3a2e7683/attachment.pgp>
^ permalink raw reply [flat|nested] 37+ messages in thread
* [U-Boot] [PATCH 09/10] ti814x_evm: enable ti814x evm build
2013-02-15 16:39 ` Tom Rini
@ 2013-02-15 21:20 ` Matt Porter
0 siblings, 0 replies; 37+ messages in thread
From: Matt Porter @ 2013-02-15 21:20 UTC (permalink / raw)
To: u-boot
On Fri, Feb 15, 2013 at 11:39:01AM -0500, Tom Rini wrote:
> On Wed, Feb 13, 2013 at 09:44:03AM -0500, Matt Porter wrote:
>
> > Enable TI814X EVM build via ti814x_evm target.
> >
> > Signed-off-by: Matt Porter <mporter@ti.com>
>
> This should just get squashed into the patch that adds the board code.
> Otherwise,
>
> Reviewed-by: Tom Rini <trini@ti.com>
Sounds good. I'll squash it in there.
-Matt
^ permalink raw reply [flat|nested] 37+ messages in thread
* [U-Boot] [PATCH 10/10] MAINTAINERS: add ti814x_evm maintainer
2013-02-13 14:43 [U-Boot] [PATCH 00/10] Add TI814x EVM Support Matt Porter
` (8 preceding siblings ...)
2013-02-13 14:44 ` [U-Boot] [PATCH 09/10] ti814x_evm: enable ti814x evm build Matt Porter
@ 2013-02-13 14:44 ` Matt Porter
2013-02-15 16:39 ` Tom Rini
9 siblings, 1 reply; 37+ messages in thread
From: Matt Porter @ 2013-02-13 14:44 UTC (permalink / raw)
To: u-boot
Add a maintainer entry for the TI814x EVM.
Signed-off-by: Matt Porter <mporter@ti.com>
---
MAINTAINERS | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/MAINTAINERS b/MAINTAINERS
index d3ed390..282dead 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -830,6 +830,10 @@ Stelian Pop <stelian@popies.net>
at91sam9263ek ARM926EJS (AT91SAM9263 SoC)
at91sam9rlek ARM926EJS (AT91SAM9RL SoC)
+Matt Porter <mporter@ti.com>
+
+ ti814x_evm ARM ARMV7 (TI814x Soc)
+
Dave Purdy <david.c.purdy@gmail.com>
pogo_e02 ARM926EJS (Kirkwood SoC)
--
1.7.9.5
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [U-Boot] [PATCH 10/10] MAINTAINERS: add ti814x_evm maintainer
2013-02-13 14:44 ` [U-Boot] [PATCH 10/10] MAINTAINERS: add ti814x_evm maintainer Matt Porter
@ 2013-02-15 16:39 ` Tom Rini
2013-02-15 21:21 ` Matt Porter
0 siblings, 1 reply; 37+ messages in thread
From: Tom Rini @ 2013-02-15 16:39 UTC (permalink / raw)
To: u-boot
On Wed, Feb 13, 2013 at 09:44:04AM -0500, Matt Porter wrote:
> Add a maintainer entry for the TI814x EVM.
>
> Signed-off-by: Matt Porter <mporter@ti.com>
Please squash this into the patch which adds the EVM, 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/20130215/64f0a700/attachment.pgp>
^ permalink raw reply [flat|nested] 37+ messages in thread
* [U-Boot] [PATCH 10/10] MAINTAINERS: add ti814x_evm maintainer
2013-02-15 16:39 ` Tom Rini
@ 2013-02-15 21:21 ` Matt Porter
0 siblings, 0 replies; 37+ messages in thread
From: Matt Porter @ 2013-02-15 21:21 UTC (permalink / raw)
To: u-boot
On Fri, Feb 15, 2013 at 11:39:13AM -0500, Tom Rini wrote:
> On Wed, Feb 13, 2013 at 09:44:04AM -0500, Matt Porter wrote:
>
> > Add a maintainer entry for the TI814x EVM.
> >
> > Signed-off-by: Matt Porter <mporter@ti.com>
>
> Please squash this into the patch which adds the EVM, thanks.
Will do, thanks for the review.
-Matt
^ permalink raw reply [flat|nested] 37+ messages in thread