]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BeagleBoardPkg/Library/BeagleBoardLib/PadConfiguration.c
Omap35xxPkg, BeagleBoardPkg: Use Pcd for INTERRUPT_BASE
[mirror_edk2.git] / BeagleBoardPkg / Library / BeagleBoardLib / PadConfiguration.c
old mode 100755 (executable)
new mode 100644 (file)
index ddd9296..e6f7cc5
@@ -1,7 +1,7 @@
 /** @file\r
 \r
   Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>\r
-  \r
+\r
   This program and the accompanying materials\r
   are licensed and made available under the terms and conditions of the BSD License\r
   which accompanies this distribution.  The full text of the license may be found at\r
 #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