aboutsummaryrefslogtreecommitdiff
path: root/board
diff options
context:
space:
mode:
authorTom Rini <trini@konsulko.com>2021-02-05 09:39:31 -0500
committerTom Rini <trini@konsulko.com>2021-02-05 09:39:31 -0500
commit8308a28af821d6498186b3dd7463db9874cd2daf (patch)
tree660426244992e77c43b3d1ce5be3e19f061a589b /board
parent55ffabec7f9108060350fae29b932fbd832f8296 (diff)
parent6239cc8c4e8484d908afc555eb59441a16a58b53 (diff)
downloadu-boot-8308a28af821d6498186b3dd7463db9874cd2daf.zip
u-boot-8308a28af821d6498186b3dd7463db9874cd2daf.tar.gz
u-boot-8308a28af821d6498186b3dd7463db9874cd2daf.tar.bz2
Merge tag 'ti-v2021.04-rc2' of https://gitlab.denx.de/u-boot/custodians/u-boot-tiWIP/05Feb2021
- Sync DTS from Linux kernel for all K3 platforms - Add MMC higher speed nodes for AM65x, J721e, J7200 - Convert Nokia RX-51 to use CONFIG_DM_MMC - Minor fixes for LEGO MINDSTORMS
Diffstat (limited to 'board')
-rw-r--r--board/lego/ev3/legoev3.c89
-rw-r--r--board/nokia/rx51/rx51.c33
2 files changed, 57 insertions, 65 deletions
diff --git a/board/lego/ev3/legoev3.c b/board/lego/ev3/legoev3.c
index 51b669a..e30e2e8 100644
--- a/board/lego/ev3/legoev3.c
+++ b/board/lego/ev3/legoev3.c
@@ -13,6 +13,7 @@
*/
#include <common.h>
+#include <env.h>
#include <i2c.h>
#include <init.h>
#include <spi.h>
@@ -28,11 +29,9 @@
DECLARE_GLOBAL_DATA_PTR;
-u8 board_rev;
-
#define EEPROM_I2C_ADDR 0x50
#define EEPROM_REV_OFFSET 0x3F00
-#define EEPROM_MAC_OFFSET 0x3F06
+#define EEPROM_BDADDR_OFFSET 0x3F06
const struct pinmux_resource pinmuxes[] = {
PINMUX_ITEM(spi0_pins_base),
@@ -52,59 +51,46 @@ const struct lpsc_resource lpsc[] = {
const int lpsc_size = ARRAY_SIZE(lpsc);
-u32 get_board_rev(void)
-{
- u8 buf[2];
-
- if (!board_rev) {
- if (i2c_read(EEPROM_I2C_ADDR, EEPROM_REV_OFFSET, 2, buf, 2)) {
- printf("\nBoard revision read failed!\n");
- } else {
- /*
- * Board rev 3 has MAC address at EEPROM_REV_OFFSET.
- * Other revisions have checksum at EEPROM_REV_OFFSET+1
- * to detect this.
- */
- if ((buf[0] ^ buf[1]) == 0xFF)
- board_rev = buf[0];
- else
- board_rev = 3;
- }
- }
-
- return board_rev;
-}
-
/*
- * The Bluetooth MAC address serves as the board serial number.
+ * The Bluetooth address serves as the board serial number.
*/
-void get_board_serial(struct tag_serialnr *serialnr)
+static void setup_serial_number(void)
{
u32 offset;
+ char serial_number[13];
u8 buf[6];
+ u8 eeprom_rev;
+
+ if (env_get("serial#"))
+ return;
- if (!board_rev)
- board_rev = get_board_rev();
+ if (i2c_read(EEPROM_I2C_ADDR, EEPROM_REV_OFFSET, 2, buf, 2)) {
+ printf("\nEEPROM revision read failed!\n");
+ return;
+ }
- /* Board rev 3 has MAC address where rev should be */
- offset = (board_rev == 3) ? EEPROM_REV_OFFSET : EEPROM_MAC_OFFSET;
+ /*
+ * EEPROM rev 3 has Bluetooth address at EEPROM_REV_OFFSET.
+ * Other revisions have checksum at EEPROM_REV_OFFSET+1
+ * to detect this.
+ */
+ if ((buf[0] ^ buf[1]) == 0xFF)
+ eeprom_rev = buf[0];
+ else
+ eeprom_rev = 3;
+
+ /* EEPROM rev 3 has Bluetooth address where rev should be */
+ offset = (eeprom_rev == 3) ? EEPROM_REV_OFFSET : EEPROM_BDADDR_OFFSET;
if (i2c_read(EEPROM_I2C_ADDR, offset, 2, buf, 6)) {
- printf("\nBoard serial read failed!\n");
- } else {
- u8 *nr;
-
- nr = (u8 *)&serialnr->low;
- nr[0] = buf[5];
- nr[1] = buf[4];
- nr[2] = buf[3];
- nr[3] = buf[2];
- nr = (u8 *)&serialnr->high;
- nr[0] = buf[1];
- nr[1] = buf[0];
- nr[2] = 0;
- nr[3] = 0;
+ printf("\nEEPROM serial read failed!\n");
+ return;
}
+
+ sprintf(serial_number, "%02X%02X%02X%02X%02X%02X",
+ buf[0], buf[1], buf[2], buf[3], buf[4], buf[5]);
+
+ env_set("serial#", serial_number);
}
int board_early_init_f(void)
@@ -130,10 +116,6 @@ int board_init(void)
{
irq_init();
- /* arch number of the board */
- /* LEGO didn't register for a unique number and uses da850evm */
- gd->bd->bi_arch_number = MACH_TYPE_DAVINCI_DA850_EVM;
-
/* address of boot parameters */
gd->bd->bi_boot_params = LINUX_BOOT_PARAM_ADDR;
@@ -150,3 +132,10 @@ int board_init(void)
return 0;
}
+
+int board_late_init(void)
+{
+ setup_serial_number();
+
+ return 0;
+}
diff --git a/board/nokia/rx51/rx51.c b/board/nokia/rx51/rx51.c
index ceb4317..84739ae 100644
--- a/board/nokia/rx51/rx51.c
+++ b/board/nokia/rx51/rx51.c
@@ -415,6 +415,8 @@ int misc_init_r(void)
/* initialize twl4030 power managment */
twl4030_power_init();
+ twl4030_power_mmc_init(0);
+ twl4030_power_mmc_init(1);
/* set VSIM to 1.8V */
twl4030_pmrecv_vsel_cfg(TWL4030_PM_RECEIVER_VSIM_DEDICATED,
@@ -686,22 +688,23 @@ int rx51_kp_getc(struct stdio_dev *sdev)
return keybuf[keybuf_head++];
}
-/*
- * Routine: board_mmc_init
- * Description: Initialize mmc devices.
- */
-int board_mmc_init(struct bd_info *bis)
-{
- omap_mmc_init(0, 0, 0, -1, -1);
- omap_mmc_init(1, 0, 0, -1, -1);
- return 0;
-}
+static const struct mmc_config rx51_mmc_cfg = {
+ .host_caps = MMC_MODE_4BIT | MMC_MODE_HS_52MHz | MMC_MODE_HS,
+ .f_min = 400000,
+ .f_max = 52000000,
+ .b_max = CONFIG_SYS_MMC_MAX_BLK_COUNT,
+ .voltages = MMC_VDD_32_33 | MMC_VDD_33_34 | MMC_VDD_165_195,
+};
-void board_mmc_power_init(void)
-{
- twl4030_power_mmc_init(0);
- twl4030_power_mmc_init(1);
-}
+static const struct omap_hsmmc_plat rx51_mmc[] = {
+ { rx51_mmc_cfg, (struct hsmmc *)OMAP_HSMMC1_BASE },
+ { rx51_mmc_cfg, (struct hsmmc *)OMAP_HSMMC2_BASE },
+};
+
+U_BOOT_DRVINFOS(rx51_mmc) = {
+ { "omap_hsmmc", &rx51_mmc[0] },
+ { "omap_hsmmc", &rx51_mmc[1] },
+};
static const struct omap_i2c_plat rx51_i2c[] = {
{ I2C_BASE1, 100000, OMAP_I2C_REV_V1 },