|
@@ -0,0 +1,199 @@
|
|
|
+diff -Naur a/board/ti/am335x/board.c b/board/ti/am335x/board.c
|
|
|
+--- a/board/ti/am335x/board.c 2013-10-16 19:08:12.000000000 +0200
|
|
|
++++ b/board/ti/am335x/board.c 2017-10-14 15:42:36.164008177 +0200
|
|
|
+@@ -76,6 +76,14 @@
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
++ puts("BOARD EEPROMID : ");
|
|
|
++ {
|
|
|
++ char cc[HDR_NAME_LEN + 1];
|
|
|
++ memset(cc, 0, sizeof(cc));
|
|
|
++ memcpy(cc, header->name, HDR_NAME_LEN);
|
|
|
++ puts(cc);
|
|
|
++ }
|
|
|
++ puts("\n");
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+@@ -148,6 +156,14 @@
|
|
|
+ .datadldiff0 = PHY_DLL_LOCK_DIFF,
|
|
|
+ };
|
|
|
+
|
|
|
++static const struct ddr_data ddr3_beaglepocket_data = {
|
|
|
++ .datardsratio0 = MT41K256M16HA125E_RD_DQS,
|
|
|
++ .datawdsratio0 = MT41K256M16HA125E_WR_DQS,
|
|
|
++ .datafwsratio0 = MT41K256M16HA125E_PHY_FIFO_WE,
|
|
|
++ .datawrsratio0 = MT41K256M16HA125E_PHY_WR_DATA,
|
|
|
++ .datadldiff0 = PHY_DLL_LOCK_DIFF,
|
|
|
++};
|
|
|
++
|
|
|
+ static const struct ddr_data ddr3_evm_data = {
|
|
|
+ .datardsratio0 = MT41J512M8RH125_RD_DQS,
|
|
|
+ .datawdsratio0 = MT41J512M8RH125_WR_DQS,
|
|
|
+@@ -184,6 +200,20 @@
|
|
|
+ .cmd2iclkout = MT41K256M16HA125E_INVERT_CLKOUT,
|
|
|
+ };
|
|
|
+
|
|
|
++static const struct cmd_control ddr3_beaglepocket_cmd_ctrl_data = {
|
|
|
++ .cmd0csratio = MT41K256M16HA125E_RATIO,
|
|
|
++ .cmd0dldiff = MT41K256M16HA125E_DLL_LOCK_DIFF,
|
|
|
++ .cmd0iclkout = MT41K256M16HA125E_INVERT_CLKOUT,
|
|
|
++
|
|
|
++ .cmd1csratio = MT41K256M16HA125E_RATIO,
|
|
|
++ .cmd1dldiff = MT41K256M16HA125E_DLL_LOCK_DIFF,
|
|
|
++ .cmd1iclkout = MT41K256M16HA125E_INVERT_CLKOUT,
|
|
|
++
|
|
|
++ .cmd2csratio = MT41K256M16HA125E_RATIO,
|
|
|
++ .cmd2dldiff = MT41K256M16HA125E_DLL_LOCK_DIFF,
|
|
|
++ .cmd2iclkout = MT41K256M16HA125E_INVERT_CLKOUT,
|
|
|
++};
|
|
|
++
|
|
|
+ static const struct cmd_control ddr3_evm_cmd_ctrl_data = {
|
|
|
+ .cmd0csratio = MT41J512M8RH125_RATIO,
|
|
|
+ .cmd0dldiff = MT41J512M8RH125_DLL_LOCK_DIFF,
|
|
|
+@@ -219,6 +249,16 @@
|
|
|
+ .emif_ddr_phy_ctlr_1 = MT41K256M16HA125E_EMIF_READ_LATENCY,
|
|
|
+ };
|
|
|
+
|
|
|
++static struct emif_regs ddr3_beaglepocket_emif_reg_data = {
|
|
|
++ .sdram_config = MT41K256M16HA125E_EMIF_SDCFG,
|
|
|
++ .ref_ctrl = MT41K256M16HA125E_EMIF_SDREF,
|
|
|
++ .sdram_tim1 = MT41K256M16HA125E_EMIF_TIM1,
|
|
|
++ .sdram_tim2 = MT41K256M16HA125E_EMIF_TIM2,
|
|
|
++ .sdram_tim3 = MT41K256M16HA125E_EMIF_TIM3,
|
|
|
++ .zq_config = MT41K256M16HA125E_ZQ_CFG,
|
|
|
++ .emif_ddr_phy_ctlr_1 = MT41K256M16HA125E_EMIF_READ_LATENCY,
|
|
|
++};
|
|
|
++
|
|
|
+ static struct emif_regs ddr3_evm_emif_reg_data = {
|
|
|
+ .sdram_config = MT41J512M8RH125_EMIF_SDCFG,
|
|
|
+ .ref_ctrl = MT41J512M8RH125_EMIF_SDREF,
|
|
|
+@@ -245,6 +285,8 @@
|
|
|
+ 303, OSC-1, 1, -1, -1, -1, -1};
|
|
|
+ const struct dpll_params dpll_ddr_bone_black = {
|
|
|
+ 400, OSC-1, 1, -1, -1, -1, -1};
|
|
|
++const struct dpll_params dpll_ddr_bone_pocket = {
|
|
|
++ 400, OSC-1, 1, -1, -1, -1, -1};
|
|
|
+
|
|
|
+ void am33xx_spl_board_init(void)
|
|
|
+ {
|
|
|
+@@ -257,7 +299,8 @@
|
|
|
+ /* Get the frequency */
|
|
|
+ dpll_mpu_opp100.m = am335x_get_efuse_mpu_max_freq(cdev);
|
|
|
+
|
|
|
+- if (board_is_bone(&header) || board_is_bone_lt(&header)) {
|
|
|
++ if (board_is_bone(&header) || board_is_bone_lt(&header) ||
|
|
|
++ board_is_bone_pocket(&header)) {
|
|
|
+ /* BeagleBone PMIC Code */
|
|
|
+ int usb_cur_lim;
|
|
|
+
|
|
|
+@@ -291,7 +334,7 @@
|
|
|
+ * Override what we have detected since we know if we have
|
|
|
+ * a Beaglebone Black it supports 1GHz.
|
|
|
+ */
|
|
|
+- if (board_is_bone_lt(&header))
|
|
|
++ if (board_is_bone_lt(&header) || board_is_bone_pocket(&header))
|
|
|
+ dpll_mpu_opp100.m = MPUPLL_M_1000;
|
|
|
+
|
|
|
+ /*
|
|
|
+@@ -403,6 +446,8 @@
|
|
|
+ return &dpll_ddr_evm_sk;
|
|
|
+ else if (board_is_bone_lt(&header))
|
|
|
+ return &dpll_ddr_bone_black;
|
|
|
++ else if (board_is_bone_pocket(&header))
|
|
|
++ return &dpll_ddr_bone_pocket;
|
|
|
+ else if (board_is_evm_15_or_later(&header))
|
|
|
+ return &dpll_ddr_evm_sk;
|
|
|
+ else
|
|
|
+@@ -465,6 +510,11 @@
|
|
|
+ &ddr3_beagleblack_data,
|
|
|
+ &ddr3_beagleblack_cmd_ctrl_data,
|
|
|
+ &ddr3_beagleblack_emif_reg_data, 0);
|
|
|
++ else if (board_is_bone_pocket(&header))
|
|
|
++ config_ddr(400, MT41K256M16HA125E_IOCTRL_VALUE,
|
|
|
++ &ddr3_beaglepocket_data,
|
|
|
++ &ddr3_beaglepocket_cmd_ctrl_data,
|
|
|
++ &ddr3_beaglepocket_emif_reg_data, 0);
|
|
|
+ else if (board_is_evm_15_or_later(&header))
|
|
|
+ config_ddr(303, MT41J512M8RH125_IOCTRL_VALUE, &ddr3_evm_data,
|
|
|
+ &ddr3_evm_cmd_ctrl_data, &ddr3_evm_emif_reg_data, 0);
|
|
|
+@@ -597,7 +647,7 @@
|
|
|
+ puts("Could not get board ID.\n");
|
|
|
+
|
|
|
+ if (board_is_bone(&header) || board_is_bone_lt(&header) ||
|
|
|
+- board_is_idk(&header)) {
|
|
|
++ board_is_idk(&header) || board_is_bone_pocket(&header)) {
|
|
|
+ writel(MII_MODE_ENABLE, &cdev->miisel);
|
|
|
+ cpsw_slaves[0].phy_if = cpsw_slaves[1].phy_if =
|
|
|
+ PHY_INTERFACE_MODE_MII;
|
|
|
+diff -Naur a/board/ti/am335x/board.h b/board/ti/am335x/board.h
|
|
|
+--- a/board/ti/am335x/board.h 2013-10-16 19:08:12.000000000 +0200
|
|
|
++++ b/board/ti/am335x/board.h 2017-10-14 15:30:35.318501215 +0200
|
|
|
+@@ -36,7 +36,12 @@
|
|
|
+
|
|
|
+ static inline int board_is_bone_lt(struct am335x_baseboard_id *header)
|
|
|
+ {
|
|
|
+- return !strncmp(header->name, "A335BNLT", HDR_NAME_LEN);
|
|
|
++ return !strncmp(header->name, "A335BNLT", HDR_NAME_LEN);
|
|
|
++}
|
|
|
++
|
|
|
++static inline int board_is_bone_pocket(struct am335x_baseboard_id *header)
|
|
|
++{
|
|
|
++ return !strncmp(header->name, "A335PBGL", HDR_NAME_LEN);
|
|
|
+ }
|
|
|
+
|
|
|
+ static inline int board_is_evm_sk(struct am335x_baseboard_id *header)
|
|
|
+diff -Naur a/board/ti/am335x/mux.c b/board/ti/am335x/mux.c
|
|
|
+--- a/board/ti/am335x/mux.c 2013-10-16 19:08:12.000000000 +0200
|
|
|
++++ b/board/ti/am335x/mux.c 2017-10-14 15:24:51.513779688 +0200
|
|
|
+@@ -333,6 +333,7 @@
|
|
|
+ /* Do board-specific muxes. */
|
|
|
+ if (board_is_bone(header)) {
|
|
|
+ /* Beaglebone pinmux */
|
|
|
++ puts("is_bone setup\n");
|
|
|
+ configure_module_pin_mux(i2c1_pin_mux);
|
|
|
+ configure_module_pin_mux(mii1_pin_mux);
|
|
|
+ configure_module_pin_mux(mmc0_pin_mux);
|
|
|
+@@ -344,6 +345,7 @@
|
|
|
+ #endif
|
|
|
+ } else if (board_is_gp_evm(header)) {
|
|
|
+ /* General Purpose EVM */
|
|
|
++ puts("is_gp_evm setup\n");
|
|
|
+ unsigned short profile = detect_daughter_board_profile();
|
|
|
+ configure_module_pin_mux(rgmii1_pin_mux);
|
|
|
+ configure_module_pin_mux(mmc0_pin_mux);
|
|
|
+@@ -364,22 +366,32 @@
|
|
|
+ * So u-boot mus be build with CONFIG_SERIAL4 and
|
|
|
+ * CONFIG_CONS_INDEX=4
|
|
|
+ */
|
|
|
++ puts("is_idk setup\n");
|
|
|
+ configure_module_pin_mux(mii1_pin_mux);
|
|
|
+ configure_module_pin_mux(mmc0_no_cd_pin_mux);
|
|
|
+ } else if (board_is_evm_sk(header)) {
|
|
|
+ /* Starter Kit EVM */
|
|
|
++ puts("is_evm_sk setup\n");
|
|
|
+ configure_module_pin_mux(i2c1_pin_mux);
|
|
|
+ configure_module_pin_mux(gpio0_7_pin_mux);
|
|
|
+ configure_module_pin_mux(rgmii1_pin_mux);
|
|
|
+ configure_module_pin_mux(mmc0_pin_mux_sk_evm);
|
|
|
+ } else if (board_is_bone_lt(header)) {
|
|
|
+ /* Beaglebone LT pinmux */
|
|
|
++ puts("is_bone_lt setup\n");
|
|
|
++ configure_module_pin_mux(i2c1_pin_mux);
|
|
|
++ configure_module_pin_mux(mii1_pin_mux);
|
|
|
++ configure_module_pin_mux(mmc0_pin_mux);
|
|
|
++ configure_module_pin_mux(mmc1_pin_mux);
|
|
|
++ } else if (board_is_bone_pocket(header)) {
|
|
|
++ /* Beaglebone pocket pinmux */
|
|
|
++ puts("is_bone_pocket setup\n");
|
|
|
+ configure_module_pin_mux(i2c1_pin_mux);
|
|
|
+ configure_module_pin_mux(mii1_pin_mux);
|
|
|
+ configure_module_pin_mux(mmc0_pin_mux);
|
|
|
+ configure_module_pin_mux(mmc1_pin_mux);
|
|
|
+ } else {
|
|
|
+- puts("Unknown board, cannot configure pinmux.");
|
|
|
++ puts("Unknown board, cannot configure pinmux.\n");
|
|
|
+ hang();
|
|
|
+ }
|
|
|
+ }
|