]> git.proxmox.com Git - mirror_edk2.git/commitdiff
BeagleBoardPkg: Set paddings following the BeagleBoard revision (A, B, xM, etc)
authoroliviermartin <oliviermartin@6f19259b-4bc3-4df7-8a09-765794883524>
Thu, 22 Sep 2011 23:23:54 +0000 (23:23 +0000)
committeroliviermartin <oliviermartin@6f19259b-4bc3-4df7-8a09-765794883524>
Thu, 22 Sep 2011 23:23:54 +0000 (23:23 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12431 6f19259b-4bc3-4df7-8a09-765794883524

BeagleBoardPkg/Include/BeagleBoard.h
BeagleBoardPkg/Library/BeagleBoardLib/BeagleBoard.c
BeagleBoardPkg/Library/BeagleBoardLib/PadConfiguration.c
Omap35xxPkg/Include/Omap3530/Omap3530PadConfiguration.h
Omap35xxPkg/Include/TPS65950.h

index 532d6e4ca6f4590ef69440e2241c012298b20781..cdd724233104505153409912e50226a31bba5859 100755 (executable)
 #define ARM_EB_EFI_MEMORY_REGION_SZ             0x1000000\r
 #endif\r
 \r
+typedef enum {\r
+  REVISION_XM,\r
+  REVISION_UNKNOWN0,\r
+  REVISION_UNKNOWN1,\r
+  REVISION_UNKNOWN2,\r
+  REVISION_UNKNOWN3,\r
+  REVISION_C4,\r
+  REVISION_C123,\r
+  REVISION_AB,\r
+} BEAGLEBOARD_REVISION;\r
+\r
 #endif \r
index 5a40ccea91c45e3f98753c5f13fbb80116ed53c7..8acb6d9710dcb1ae8b9cc1c406ffd597ed535be0 100755 (executable)
 #include <Library/PcdLib.h>
 
 #include <Omap3530/Omap3530.h>
+#include <BeagleBoard.h>
 
 VOID
 PadConfiguration (
-  VOID
+  BEAGLEBOARD_REVISION Revision
   );
 
 VOID
@@ -29,6 +30,30 @@ ClockInit (
   VOID
   );
 
+/**
+  Detect board revision
+
+  @return Board revision
+**/
+BEAGLEBOARD_REVISION
+BeagleBoardGetRevision (
+  VOID
+  )
+{
+  UINT32 OldPinDir;
+  UINT32 Revision;
+
+  // Read GPIO 171, 172, 173
+  OldPinDir = MmioRead32 (GPIO6_BASE + GPIO_OE);
+  MmioWrite32(GPIO6_BASE + GPIO_OE, (OldPinDir | BIT11 | BIT12 | BIT13));
+  Revision = MmioRead32 (GPIO6_BASE + GPIO_DATAIN);
+  
+  // Restore I/O settings
+  MmioWrite32 (GPIO6_BASE + GPIO_OE, OldPinDir);
+  
+  return (BEAGLEBOARD_REVISION)((Revision >> 11) & 0x7);
+}
+
 /**
   Return if Trustzone is supported by your platform
 
@@ -105,8 +130,12 @@ ArmPlatformNormalInitialize (
   VOID
   )
 {
-  //Set up Pin muxing.
-  PadConfiguration ();
+  BEAGLEBOARD_REVISION Revision;
+
+  Revision = BeagleBoardGetRevision();
+
+  // Set up Pin muxing.
+  PadConfiguration (Revision);
 
   // Set up system clocking
   ClockInit ();
index ddd92961208b319351887ccafbd0bd12bba77eab..45438023d2ca5807c617321cadda160f26740ca0 100755 (executable)
 #include <Library/IoLib.h>\r
 #include <Library/DebugLib.h>\r
 #include <Omap3530/Omap3530.h>\r
+#include <BeagleBoard.h>\r
 \r
-#define NUM_PINS 238\r
+#define NUM_PINS_SHARED 232\r
+#define NUM_PINS_ABC 6\r
+#define NUM_PINS_XM 12\r
 \r
-PAD_CONFIGURATION PadConfigurationTable[NUM_PINS] = {\r
+PAD_CONFIGURATION PadConfigurationTableShared[] = {\r
   //Pin,           MuxMode,    PullConfig,                      InputEnable\r
   { SDRC_D0,       MUXMODE0,   PULL_DISABLED,                INPUT  },\r
   { SDRC_D1,       MUXMODE0,   PULL_DISABLED,                INPUT  },\r
@@ -127,12 +130,6 @@ PAD_CONFIGURATION PadConfigurationTable[NUM_PINS] = {
   { DSS_DATA15,    MUXMODE0,   PULL_DISABLED,                OUTPUT },\r
   { DSS_DATA16,    MUXMODE0,   PULL_DISABLED,                OUTPUT },\r
   { DSS_DATA17,    MUXMODE0,   PULL_DISABLED,                OUTPUT },\r
-  { DSS_DATA18,    MUXMODE0,   PULL_DISABLED,                OUTPUT },\r
-  { DSS_DATA19,    MUXMODE0,   PULL_DISABLED,                OUTPUT },\r
-  { DSS_DATA20,    MUXMODE0,   PULL_DISABLED,                OUTPUT },\r
-  { DSS_DATA21,    MUXMODE0,   PULL_DISABLED,                OUTPUT },\r
-  { DSS_DATA22,    MUXMODE0,   PULL_DISABLED,                OUTPUT },\r
-  { DSS_DATA23,    MUXMODE0,   PULL_DISABLED,                OUTPUT },\r
   { CAM_HS,        MUXMODE0,   PULL_UP_SELECTED,             INPUT },\r
   { CAM_VS,        MUXMODE0,   PULL_UP_SELECTED,             INPUT },\r
   { CAM_XCLKA,     MUXMODE0,   PULL_DISABLED,                OUTPUT },\r
@@ -226,7 +223,7 @@ PAD_CONFIGURATION PadConfigurationTable[NUM_PINS] = {
   { I2C2_SDA,      MUXMODE4,   PULL_UP_SELECTED,             INPUT  },\r
   { I2C3_SCL,      MUXMODE0,   PULL_UP_SELECTED,             INPUT  },\r
   { I2C3_SDA,      MUXMODE0,   PULL_UP_SELECTED,             INPUT  },\r
-  { HDQ_SIO,       MUXMODE4,   PULL_UP_SELECTED,             OUTPUT },\r
+  { HDQ_SIO,       MUXMODE4,   PULL_DISABLED,                OUTPUT },\r
   { MCSPI1_CLK,    MUXMODE4,   PULL_UP_SELECTED,             INPUT  },\r
   { MCSPI1_SIMO,   MUXMODE4,   PULL_UP_SELECTED,             INPUT  },\r
   { MCSPI1_SOMI,   MUXMODE0,   PULL_DISABLED,                INPUT  },\r
@@ -261,22 +258,65 @@ PAD_CONFIGURATION PadConfigurationTable[NUM_PINS] = {
   { ETK_D15,       MUXMODE3,   PULL_UP_SELECTED,             INPUT  }\r
 };\r
 \r
+PAD_CONFIGURATION PadConfigurationTableAbc[] = {\r
+  { DSS_DATA18,    MUXMODE0,   PULL_DISABLED,                OUTPUT },\r
+  { DSS_DATA19,    MUXMODE0,   PULL_DISABLED,                OUTPUT },\r
+  { DSS_DATA20,    MUXMODE0,   PULL_DISABLED,                OUTPUT },\r
+  { DSS_DATA21,    MUXMODE0,   PULL_DISABLED,                OUTPUT },\r
+  { DSS_DATA22,    MUXMODE0,   PULL_DISABLED,                OUTPUT },\r
+  { DSS_DATA23,    MUXMODE0,   PULL_DISABLED,                OUTPUT }\r
+};\r
+\r
+PAD_CONFIGURATION PadConfigurationTableXm[] = {\r
+  { DSS_DATA18,    MUXMODE3,   PULL_DISABLED,                OUTPUT },\r
+  { DSS_DATA19,    MUXMODE3,   PULL_DISABLED,                OUTPUT },\r
+  { DSS_DATA20,    MUXMODE3,   PULL_DISABLED,                OUTPUT },\r
+  { DSS_DATA21,    MUXMODE3,   PULL_DISABLED,                OUTPUT },\r
+  { DSS_DATA22,    MUXMODE3,   PULL_DISABLED,                OUTPUT },\r
+  { DSS_DATA23,    MUXMODE3,   PULL_DISABLED,                OUTPUT },\r
+  { SYS_BOOT0,     MUXMODE3,   PULL_DISABLED,                OUTPUT },\r
+  { SYS_BOOT1,     MUXMODE3,   PULL_DISABLED,                OUTPUT },\r
+  { SYS_BOOT3,     MUXMODE3,   PULL_DISABLED,                OUTPUT },\r
+  { SYS_BOOT4,     MUXMODE3,   PULL_DISABLED,                OUTPUT },\r
+  { SYS_BOOT5,     MUXMODE3,   PULL_DISABLED,                OUTPUT },\r
+  { SYS_BOOT6,     MUXMODE3,   PULL_DISABLED,                OUTPUT }\r
+};\r
+\r
 VOID\r
 PadConfiguration (\r
-  VOID\r
+  BEAGLEBOARD_REVISION Revision\r
   )\r
 {\r
-  UINTN  Index;\r
-  UINT16 PadConfiguration;\r
-  UINTN  NumPinsToConfigure = sizeof(PadConfigurationTable)/sizeof(PAD_CONFIGURATION);\r
+  UINTN             Index;\r
+  UINT16            PadConfiguration;\r
+  PAD_CONFIGURATION *BoardConfiguration;\r
+  UINTN             NumPinsToConfigure;\r
+\r
+  for (Index = 0; Index < NUM_PINS_SHARED; Index++) {\r
+    // Set up Pad configuration for particular pin.\r
+    PadConfiguration =  (PadConfigurationTableShared[Index].MuxMode << MUXMODE_OFFSET);\r
+    PadConfiguration |= (PadConfigurationTableShared[Index].PullConfig << PULL_CONFIG_OFFSET);\r
+    PadConfiguration |= (PadConfigurationTableShared[Index].InputEnable << INPUTENABLE_OFFSET);\r
+\r
+    // Configure the pin with specific Pad configuration.\r
+    MmioWrite16(PadConfigurationTableShared[Index].Pin, PadConfiguration);\r
+  }\r
+\r
+  if (Revision == REVISION_XM) {\r
+    BoardConfiguration = PadConfigurationTableXm;\r
+    NumPinsToConfigure = NUM_PINS_XM;\r
+  } else {\r
+    BoardConfiguration = PadConfigurationTableAbc;\r
+    NumPinsToConfigure = NUM_PINS_ABC;\r
+  }\r
 \r
   for (Index = 0; Index < NumPinsToConfigure; Index++) {\r
     //Set up Pad configuration for particular pin.\r
-    PadConfiguration =  (PadConfigurationTable[Index].MuxMode << MUXMODE_OFFSET);\r
-    PadConfiguration |= (PadConfigurationTable[Index].PullConfig << PULL_CONFIG_OFFSET);\r
-    PadConfiguration |= (PadConfigurationTable[Index].InputEnable << INPUTENABLE_OFFSET);\r
+    PadConfiguration =  (BoardConfiguration[Index].MuxMode << MUXMODE_OFFSET);\r
+    PadConfiguration |= (BoardConfiguration[Index].PullConfig << PULL_CONFIG_OFFSET);\r
+    PadConfiguration |= (BoardConfiguration[Index].InputEnable << INPUTENABLE_OFFSET);\r
 \r
     //Configure the pin with specific Pad configuration.\r
-    MmioWrite16(PadConfigurationTable[Index].Pin, PadConfiguration);\r
+    MmioWrite16(BoardConfiguration[Index].Pin, PadConfiguration);\r
   }\r
 }\r
index 613209d2dc704fb6e823414d05a83e0c94270852..d23156cf0836630e827d558888d4976e801cec7e 100644 (file)
 #define ETK_D13             (SYSTEM_CONTROL_MODULE_BASE + 0x5F6)
 #define ETK_D14             (SYSTEM_CONTROL_MODULE_BASE + 0x5F8)
 #define ETK_D15             (SYSTEM_CONTROL_MODULE_BASE + 0x5FA)
+#define SYS_BOOT0           (SYSTEM_CONTROL_MODULE_BASE + 0xA0A)
+#define SYS_BOOT1           (SYSTEM_CONTROL_MODULE_BASE + 0xA0C)
+#define SYS_BOOT3           (SYSTEM_CONTROL_MODULE_BASE + 0xA10)
+#define SYS_BOOT4           (SYSTEM_CONTROL_MODULE_BASE + 0xA12)
+#define SYS_BOOT5           (SYSTEM_CONTROL_MODULE_BASE + 0xA14)
+#define SYS_BOOT6           (SYSTEM_CONTROL_MODULE_BASE + 0xA16)
 
 //Mux modes
 #define MUXMODE0            (0x0UL)
index 977219f747eca64d91794d1820e0419f3fd97929..cd708d9793134e78624e42d88af4e0c0d233625d 100644 (file)
 #define VAUX2_DEDICATED       0x79
 #define VAUX2_DEV_GRP         0x76
 
+#define VAUX_DEV_GRP_NONE     0x00
 #define VAUX_DEV_GRP_P1       0x20
+#define VAUX_DEV_GRP_P2       0x40
+#define VAUX_DEV_GRP_P3       0x80
 #define VAUX_DEDICATED_18V    0x05
 
+// Display subsystem
+#define VPLL2_DEDICATED       0x91
+#define VPLL2_DEV_GRP         0x8E
+
+#define GPIODATADIR1          0x9B
+#define SETGPIODATAOUT1       0xA4
+
 #endif //__TPS65950_H__