Merge branch '2019-04-11-ti-master-imports'
[oweals/u-boot.git] / board / ti / am335x / board.h
index 062c34512f4d5a6c250790aca889fd2b5bb2d478..48df914af96cfdc4b05a4ef5bac552b3577bf2da 100644 (file)
@@ -1,16 +1,28 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
 /*
  * board.h
  *
  * TI AM335x boards information header
  *
  * Copyright (C) 2011, Texas Instruments, Incorporated - http://www.ti.com/
- *
- * SPDX-License-Identifier:    GPL-2.0+
  */
 
 #ifndef _BOARD_H_
 #define _BOARD_H_
 
+/**
+ * AM335X (EMIF_4D) EMIF REG_COS_COUNT_1, REG_COS_COUNT_2, and
+ * REG_PR_OLD_COUNT values to avoid LCDC DMA FIFO underflows and Frame
+ * Synchronization Lost errors. The values are the biggest that work
+ * reliably with offered video modes and the memory subsystem on the
+ * boards. These register have are briefly documented in "7.3.3.5.2
+ * Command Starvation" section of AM335x TRM. The REG_COS_COUNT_1 and
+ * REG_COS_COUNT_2 do not have any effect on current versions of
+ * AM335x.
+ */
+#define EMIF_OCP_CONFIG_BEAGLEBONE_BLACK       0x00141414
+#define EMIF_OCP_CONFIG_AM335X_EVM             0x003d3d3d
+
 static inline int board_is_bone(void)
 {
        return board_ti_is("A335BONE");
@@ -21,11 +33,27 @@ static inline int board_is_bone_lt(void)
        return board_ti_is("A335BNLT");
 }
 
+static inline int board_is_pb(void)
+{
+       return board_ti_is("A335PBGL");
+}
+
 static inline int board_is_bbg1(void)
 {
        return board_is_bone_lt() && !strncmp(board_ti_get_rev(), "BBG1", 4);
 }
 
+static inline int board_is_bben(void)
+{
+       return board_is_bone_lt() && !strncmp(board_ti_get_rev(), "SE", 2);
+}
+
+static inline int board_is_beaglebonex(void)
+{
+       return board_is_pb() || board_is_bone() || board_is_bone_lt() ||
+              board_is_bbg1() || board_is_bben();
+}
+
 static inline int board_is_evm_sk(void)
 {
        return board_ti_is("A335X_SK");
@@ -47,6 +75,11 @@ static inline int board_is_evm_15_or_later(void)
                strncmp("1.5", board_ti_get_rev(), 3) <= 0);
 }
 
+static inline int board_is_icev2(void)
+{
+       return board_ti_is("A335_ICE") && !strncmp("2", board_ti_get_rev(), 1);
+}
+
 /*
  * We have three pin mux functions that must exist.  We must be able to enable
  * uart0, for initial output and i2c0 to read the main EEPROM.  We then have a