]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - board/ti/beagle/beagle.c
Merge branch 'tom' of git://git.denx.de/u-boot-x86
[karo-tx-uboot.git] / board / ti / beagle / beagle.c
index 58bd55620847d1a352d61f32028065b8b811f0ed..0674afdc0946b0311081525a87d6441a121f8e30 100644 (file)
  *     Syed Mohammed Khasim <khasim@ti.com>
  *
  *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
+ * SPDX-License-Identifier:    GPL-2.0+
  */
 #include <common.h>
 #ifdef CONFIG_STATUS_LED
@@ -108,13 +92,14 @@ int board_init(void)
 /*
  * Routine: get_board_revision
  * Description: Detect if we are running on a Beagle revision Ax/Bx,
- *             C1/2/3, C4 or xM. This can be done by reading
+ *             C1/2/3, C4, xM Ax/Bx or xM Cx. This can be done by reading
  *             the level of GPIO173, GPIO172 and GPIO171. This should
  *             result in
  *             GPIO173, GPIO172, GPIO171: 1 1 1 => Ax/Bx
  *             GPIO173, GPIO172, GPIO171: 1 1 0 => C1/2/3
  *             GPIO173, GPIO172, GPIO171: 1 0 1 => C4
- *             GPIO173, GPIO172, GPIO171: 0 0 0 => xM
+ *             GPIO173, GPIO172, GPIO171: 0 1 0 => xM Cx
+ *             GPIO173, GPIO172, GPIO171: 0 0 0 => xM Ax/Bx
  */
 static int get_board_revision(void)
 {
@@ -181,8 +166,7 @@ void get_board_mem_timings(struct board_sdrc_timings *timings)
                        timings->rfr_ctrl = SDP_3430_SDRC_RFR_CTRL_200MHz;
                        break;
                }
-       case REVISION_XM_A:
-       case REVISION_XM_B:
+       case REVISION_XM_AB:
        case REVISION_XM_C:
                if (pop_mfr == 0) {
                        /* 256MB DDR */
@@ -255,8 +239,7 @@ static void beagle_display_init(void)
        case REVISION_C4:
                omap3_dss_panel_config(&dvid_cfg);
                break;
-       case REVISION_XM_A:
-       case REVISION_XM_B:
+       case REVISION_XM_AB:
        case REVISION_XM_C:
        default:
                omap3_dss_panel_config(&dvid_cfg_xm);
@@ -275,12 +258,11 @@ static void beagle_dvi_pup(void)
        case REVISION_AXBX:
        case REVISION_CX:
        case REVISION_C4:
-       case REVISION_XM_A:
                gpio_request(170, "");
                gpio_direction_output(170, 0);
                gpio_set_value(170, 1);
                break;
-       case REVISION_XM_B:
+       case REVISION_XM_AB:
        case REVISION_XM_C:
        default:
                #define GPIODATADIR1 (TWL4030_BASEADD_GPIO+3)
@@ -334,6 +316,7 @@ int misc_init_r(void)
        struct gpio *gpio5_base = (struct gpio *)OMAP34XX_GPIO5_BASE;
        struct gpio *gpio6_base = (struct gpio *)OMAP34XX_GPIO6_BASE;
        struct control_prog_io *prog_io_base = (struct control_prog_io *)OMAP34XX_CTRL_BASE;
+       bool generate_fake_mac = false;
 
        /* Enable i2c2 pullup resisters */
        writel(~(PRG_I2C2_PULLUPRESX), &prog_io_base->io1);
@@ -358,25 +341,16 @@ int misc_init_r(void)
                                        TWL4030_PM_RECEIVER_VAUX2_DEV_GRP,
                                        TWL4030_PM_RECEIVER_DEV_GRP_P1);
                break;
-       case REVISION_XM_A:
-               printf("Beagle xM Rev A\n");
-               setenv("beaglerev", "xMA");
-               MUX_BEAGLE_XM();
-               /* Set VAUX2 to 1.8V for EHCI PHY */
-               twl4030_pmrecv_vsel_cfg(TWL4030_PM_RECEIVER_VAUX2_DEDICATED,
-                                       TWL4030_PM_RECEIVER_VAUX2_VSEL_18,
-                                       TWL4030_PM_RECEIVER_VAUX2_DEV_GRP,
-                                       TWL4030_PM_RECEIVER_DEV_GRP_P1);
-               break;
-       case REVISION_XM_B:
-               printf("Beagle xM Rev B\n");
-               setenv("beaglerev", "xMB");
+       case REVISION_XM_AB:
+               printf("Beagle xM Rev A/B\n");
+               setenv("beaglerev", "xMAB");
                MUX_BEAGLE_XM();
                /* Set VAUX2 to 1.8V for EHCI PHY */
                twl4030_pmrecv_vsel_cfg(TWL4030_PM_RECEIVER_VAUX2_DEDICATED,
                                        TWL4030_PM_RECEIVER_VAUX2_VSEL_18,
                                        TWL4030_PM_RECEIVER_VAUX2_DEV_GRP,
                                        TWL4030_PM_RECEIVER_DEV_GRP_P1);
+               generate_fake_mac = true;
                break;
        case REVISION_XM_C:
                printf("Beagle xM Rev C\n");
@@ -387,6 +361,7 @@ int misc_init_r(void)
                                        TWL4030_PM_RECEIVER_VAUX2_VSEL_18,
                                        TWL4030_PM_RECEIVER_VAUX2_DEV_GRP,
                                        TWL4030_PM_RECEIVER_DEV_GRP_P1);
+               generate_fake_mac = true;
                break;
        default:
                printf("Beagle unknown 0x%02x\n", get_board_revision());
@@ -396,6 +371,7 @@ int misc_init_r(void)
                                        TWL4030_PM_RECEIVER_VAUX2_VSEL_18,
                                        TWL4030_PM_RECEIVER_VAUX2_DEV_GRP,
                                        TWL4030_PM_RECEIVER_DEV_GRP_P1);
+               generate_fake_mac = true;
        }
 
        switch (get_expansion_id()) {
@@ -483,8 +459,7 @@ int misc_init_r(void)
 
        twl4030_power_init();
        switch (get_board_revision()) {
-       case REVISION_XM_A:
-       case REVISION_XM_B:
+       case REVISION_XM_AB:
                twl4030_led_init(TWL4030_LED_LEDEN_LEDBON);
                break;
        default:
@@ -515,6 +490,13 @@ int misc_init_r(void)
        musb_register(&musb_plat, &musb_board_data, (void *)MUSB_BASE);
 #endif
 
+       if (generate_fake_mac) {
+               u32 id[4];
+
+               get_dieid(id);
+               usb_fake_mac_from_die_id(id);
+       }
+
        return 0;
 }
 
@@ -532,8 +514,7 @@ void set_muxconf_regs(void)
 #if defined(CONFIG_GENERIC_MMC) && !defined(CONFIG_SPL_BUILD)
 int board_mmc_init(bd_t *bis)
 {
-       omap_mmc_init(0, 0, 0);
-       return 0;
+       return omap_mmc_init(0, 0, 0, -1, -1);
 }
 #endif
 
@@ -551,9 +532,10 @@ static struct omap_usbhs_board_data usbhs_bdata = {
        .port_mode[2] = OMAP_USBHS_PORT_MODE_UNUSED
 };
 
-int ehci_hcd_init(int index, struct ehci_hccr **hccr, struct ehci_hcor **hcor)
+int ehci_hcd_init(int index, enum usb_init_type init,
+               struct ehci_hccr **hccr, struct ehci_hcor **hcor)
 {
-       return omap_ehci_hcd_init(&usbhs_bdata, hccr, hcor);
+       return omap_ehci_hcd_init(index, &usbhs_bdata, hccr, hcor);
 }
 
 int ehci_hcd_stop(int index)