#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
{ 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
{ 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
{ 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