aboutsummaryrefslogtreecommitdiffstats
path: root/recipes/u-boot/u-boot-git/beagleboard/0002-OMAP3-add-board-revision-detection-for-Overo.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes/u-boot/u-boot-git/beagleboard/0002-OMAP3-add-board-revision-detection-for-Overo.patch')
-rw-r--r--recipes/u-boot/u-boot-git/beagleboard/0002-OMAP3-add-board-revision-detection-for-Overo.patch187
1 files changed, 187 insertions, 0 deletions
diff --git a/recipes/u-boot/u-boot-git/beagleboard/0002-OMAP3-add-board-revision-detection-for-Overo.patch b/recipes/u-boot/u-boot-git/beagleboard/0002-OMAP3-add-board-revision-detection-for-Overo.patch
new file mode 100644
index 0000000000..255d72574c
--- /dev/null
+++ b/recipes/u-boot/u-boot-git/beagleboard/0002-OMAP3-add-board-revision-detection-for-Overo.patch
@@ -0,0 +1,187 @@
+From 59c9245c9a52954c8c084e257bbe55443201614b Mon Sep 17 00:00:00 2001
+From: Steve Sakoman <steve@sakoman.com>
+Date: Wed, 10 Feb 2010 14:40:56 -0800
+Subject: [PATCH 02/37] OMAP3: add board revision detection for Overo
+
+---
+ board/overo/overo.c | 90 +++++++++++++++++++++++++++++++++++++++++++++++++++
+ board/overo/overo.h | 43 +++++++++++++++++++++---
+ 2 files changed, 127 insertions(+), 6 deletions(-)
+
+diff --git a/board/overo/overo.c b/board/overo/overo.c
+index e85be7d..3df1a12 100644
+--- a/board/overo/overo.c
++++ b/board/overo/overo.c
+@@ -61,11 +61,101 @@ int board_init(void)
+ }
+
+ /*
++ * Routine: get_sdio2_config
++ * Description: Return information about the wifi module connection
++ * Returns 0 if the module connects though a level translator
++ * Returns 1 if the module connects directly
++ */
++int get_sdio2_config(void) {
++ int sdio_direct;
++
++ if (!omap_request_gpio(130) && !omap_request_gpio(139)){
++
++ omap_set_gpio_direction(130, 0);
++ omap_set_gpio_direction(139, 1);
++
++ sdio_direct = 1;
++ omap_set_gpio_dataout(130, 0);
++ if (omap_get_gpio_datain(139) == 0) {
++ omap_set_gpio_dataout(130, 1);
++ if (omap_get_gpio_datain(139) == 1)
++ sdio_direct = 0;
++ }
++
++ omap_free_gpio(130);
++ omap_free_gpio(139);
++ } else {
++ printf("Error: unable to acquire sdio2 clk GPIOs\n");
++ sdio_direct=-1;
++ }
++
++ return sdio_direct;
++}
++
++/*
++ * Routine: get_board_revision
++ * Description: Returns the board revision
++ */
++int get_board_revision(void) {
++ int revision;
++
++ if (!omap_request_gpio(126) && !omap_request_gpio(127) &&
++ !omap_request_gpio(128) && !omap_request_gpio(129)){
++
++ omap_set_gpio_direction(126, 1);
++ omap_set_gpio_direction(127, 1);
++ omap_set_gpio_direction(128, 1);
++ omap_set_gpio_direction(129, 1);
++
++ revision = 0;
++ if (omap_get_gpio_datain(126) == 0)
++ revision += 1;
++ if (omap_get_gpio_datain(127) == 0)
++ revision += 2;
++ if (omap_get_gpio_datain(128) == 0)
++ revision += 4;
++ if (omap_get_gpio_datain(129) == 0)
++ revision += 8;
++
++ omap_free_gpio(126);
++ omap_free_gpio(127);
++ omap_free_gpio(128);
++ omap_free_gpio(129);
++ } else {
++ printf("Error: unable to acquire board revision GPIOs\n");
++ revision=-1;
++ }
++
++ return revision;
++}
++
++/*
+ * Routine: misc_init_r
+ * Description: Configure board specific parts
+ */
+ int misc_init_r(void)
+ {
++ printf("Board revision: ");
++ switch (get_board_revision()) {
++ case 0:
++ case 1:
++ switch (get_sdio2_config()) {
++ case 0:
++ printf(" 0\n");
++ MUX_OVERO_SDIO2_TRANSCEIVER();
++ break;
++ case 1:
++ printf(" 1\n");
++ MUX_OVERO_SDIO2_DIRECT();
++ break;
++ default:
++ printf(" unknown\n");
++ }
++ break;
++ default:
++ printf(" unsupported\n");
++ }
++
+ twl4030_power_init();
+ twl4030_led_init(TWL4030_LED_LEDEN_LEDAON | TWL4030_LED_LEDEN_LEDBON);
+
+diff --git a/board/overo/overo.h b/board/overo/overo.h
+index 1873523..e120e09 100644
+--- a/board/overo/overo.h
++++ b/board/overo/overo.h
+@@ -206,12 +206,12 @@ const omap3_sysinfo sysinfo = {
+ MUX_VAL(CP(MMC1_DAT1), (IEN | PTU | EN | M0)) /*MMC1_DAT1*/\
+ MUX_VAL(CP(MMC1_DAT2), (IEN | PTU | EN | M0)) /*MMC1_DAT2*/\
+ MUX_VAL(CP(MMC1_DAT3), (IEN | PTU | EN | M0)) /*MMC1_DAT3*/\
+- MUX_VAL(CP(MMC1_DAT4), (IEN | PTU | EN | M0)) /*MMC1_DAT4*/\
+- MUX_VAL(CP(MMC1_DAT5), (IEN | PTU | EN | M0)) /*MMC1_DAT5*/\
+- MUX_VAL(CP(MMC1_DAT6), (IEN | PTU | EN | M0)) /*MMC1_DAT6*/\
+- MUX_VAL(CP(MMC1_DAT7), (IEN | PTU | EN | M0)) /*MMC1_DAT7*/\
++ MUX_VAL(CP(MMC1_DAT4), (IEN | PTU | EN | M4)) /*GPIO_126*/\
++ MUX_VAL(CP(MMC1_DAT5), (IEN | PTU | EN | M4)) /*GPIO_127*/\
++ MUX_VAL(CP(MMC1_DAT6), (IEN | PTU | EN | M4)) /*GPIO_128*/\
++ MUX_VAL(CP(MMC1_DAT7), (IEN | PTU | EN | M4)) /*GPIO_129*/\
+ /*Wireless LAN */\
+- MUX_VAL(CP(MMC2_CLK), (IEN | PTU | EN | M0)) /*MMC2_CLK*/\
++ MUX_VAL(CP(MMC2_CLK), (IEN | PTU | EN | M4)) /*GPIO_130*/\
+ MUX_VAL(CP(MMC2_CMD), (IEN | PTU | EN | M0)) /*MMC2_CMD*/\
+ MUX_VAL(CP(MMC2_DAT0), (IEN | PTU | EN | M0)) /*MMC2_DAT0*/\
+ MUX_VAL(CP(MMC2_DAT1), (IEN | PTU | EN | M0)) /*MMC2_DAT1*/\
+@@ -220,7 +220,7 @@ const omap3_sysinfo sysinfo = {
+ MUX_VAL(CP(MMC2_DAT4), (IEN | PTU | EN | M1)) /*MMC2_DIR_DAT0*/\
+ MUX_VAL(CP(MMC2_DAT5), (IEN | PTU | EN | M1)) /*MMC2_DIR_DAT1*/\
+ MUX_VAL(CP(MMC2_DAT6), (IEN | PTU | EN | M1)) /*MMC2_DIR_CMD*/\
+- MUX_VAL(CP(MMC2_DAT7), (IEN | PTU | EN | M1)) /*MMC2_CLKIN*/\
++ MUX_VAL(CP(MMC2_DAT7), (IEN | PTU | EN | M4)) /*GPIO_139*/\
+ /*Bluetooth*/\
+ MUX_VAL(CP(MCBSP3_DX), (IEN | PTD | DIS | M1)) /*UART2_CTS*/\
+ MUX_VAL(CP(MCBSP3_DR), (IDIS | PTD | DIS | M1)) /*UART2_RTS*/\
+@@ -387,5 +387,36 @@ const omap3_sysinfo sysinfo = {
+ MUX_VAL(CP(SDRC_CKE0), (IDIS | PTU | EN | M0)) /*sdrc_cke0*/\
+ MUX_VAL(CP(SDRC_CKE1), (IDIS | PTU | EN | M0)) /*sdrc_cke1*/
+
++#define MUX_OVERO_SDIO2_DIRECT() \
++ MUX_VAL(CP(MMC2_CLK), (IEN | PTU | EN | M0)) /*MMC2_CLK*/\
++ MUX_VAL(CP(MMC2_CMD), (IEN | PTU | EN | M0)) /*MMC2_CMD*/\
++ MUX_VAL(CP(MMC2_DAT0), (IEN | PTU | EN | M0)) /*MMC2_DAT0*/\
++ MUX_VAL(CP(MMC2_DAT1), (IEN | PTU | EN | M0)) /*MMC2_DAT1*/\
++ MUX_VAL(CP(MMC2_DAT2), (IEN | PTU | EN | M0)) /*MMC2_DAT2*/\
++ MUX_VAL(CP(MMC2_DAT3), (IEN | PTU | EN | M0)) /*MMC2_DAT3*/\
++ MUX_VAL(CP(MMC2_DAT4), (IEN | PTU | EN | M0)) /*MMC2_DAT4*/\
++ MUX_VAL(CP(MMC2_DAT5), (IEN | PTU | EN | M0)) /*MMC2_DAT5*/\
++ MUX_VAL(CP(MMC2_DAT6), (IEN | PTU | EN | M0)) /*MMC2_DAT6*/\
++ MUX_VAL(CP(MMC2_DAT7), (IEN | PTU | EN | M0)) /*MMC2_DAT7*/\
++ MUX_VAL(CP(MMC1_DAT4), (IEN | PTD | EN | M4)) /*GPIO_126*/\
++ MUX_VAL(CP(MMC1_DAT5), (IEN | PTU | EN | M4)) /*GPIO_127*/\
++ MUX_VAL(CP(MMC1_DAT6), (IEN | PTU | EN | M4)) /*GPIO_128*/\
++ MUX_VAL(CP(MMC1_DAT7), (IEN | PTU | EN | M4)) /*GPIO_129*/
++
++#define MUX_OVERO_SDIO2_TRANSCEIVER() \
++ MUX_VAL(CP(MMC2_CLK), (IEN | PTU | EN | M0)) /*MMC2_CLK*/\
++ MUX_VAL(CP(MMC2_CMD), (IEN | PTU | EN | M0)) /*MMC2_CMD*/\
++ MUX_VAL(CP(MMC2_DAT0), (IEN | PTU | EN | M0)) /*MMC2_DAT0*/\
++ MUX_VAL(CP(MMC2_DAT1), (IEN | PTU | EN | M0)) /*MMC2_DAT1*/\
++ MUX_VAL(CP(MMC2_DAT2), (IEN | PTU | EN | M0)) /*MMC2_DAT2*/\
++ MUX_VAL(CP(MMC2_DAT3), (IEN | PTU | EN | M0)) /*MMC2_DAT3*/\
++ MUX_VAL(CP(MMC2_DAT4), (IEN | PTU | EN | M1)) /*MMC2_DIR_DAT0*/\
++ MUX_VAL(CP(MMC2_DAT5), (IEN | PTU | EN | M1)) /*MMC2_DIR_DAT1*/\
++ MUX_VAL(CP(MMC2_DAT6), (IEN | PTU | EN | M1)) /*MMC2_DIR_CMD*/\
++ MUX_VAL(CP(MMC2_DAT7), (IEN | PTU | EN | M1)) /*MMC2_CLKIN*/\
++ MUX_VAL(CP(MMC1_DAT4), (IEN | PTU | EN | M4)) /*GPIO_126*/\
++ MUX_VAL(CP(MMC1_DAT5), (IEN | PTU | EN | M4)) /*GPIO_127*/\
++ MUX_VAL(CP(MMC1_DAT6), (IEN | PTU | EN | M4)) /*GPIO_128*/\
++ MUX_VAL(CP(MMC1_DAT7), (IEN | PTU | EN | M4)) /*GPIO_129*/
+
+ #endif
+--
+1.6.6.1
+