summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mainboard/google/herobrine/mainboard.c10
-rw-r--r--src/mainboard/google/mistral/mainboard.c9
-rw-r--r--src/mainboard/google/trogdor/mainboard.c11
-rw-r--r--src/soc/qualcomm/qcs405/include/soc/addressmap.h3
-rw-r--r--src/soc/qualcomm/sc7180/include/soc/addressmap.h4
-rw-r--r--src/soc/qualcomm/sc7280/include/soc/addressmap.h4
6 files changed, 41 insertions, 0 deletions
diff --git a/src/mainboard/google/herobrine/mainboard.c b/src/mainboard/google/herobrine/mainboard.c
index dc60e6e2c4..6f8d19d8d1 100644
--- a/src/mainboard/google/herobrine/mainboard.c
+++ b/src/mainboard/google/herobrine/mainboard.c
@@ -6,15 +6,25 @@
#include <soc/clock.h>
#include <console/console.h>
#include <device/device.h>
+#include <device/mmio.h>
#include <bootblock_common.h>
#include <soc/clock.h>
+static void configure_sdhci(void)
+{
+ /* Program eMMC drive strength to 16/10/10 mA */
+ write32((void *)SDC1_TLMM_CFG_ADDR, 0x9FE4);
+ /* Program SD card drive strength to 16/10/10 mA */
+ write32((void *)SDC2_TLMM_CFG_ADDR, 0x1FE4);
+}
+
static void mainboard_init(struct device *dev)
{
/* Configure clock for eMMC */
clock_configure_sdcc(1, 384 * MHz);
/* Configure clock for SD card */
clock_configure_sdcc(2, 50 * MHz);
+ configure_sdhci();
}
static void mainboard_enable(struct device *dev)
diff --git a/src/mainboard/google/mistral/mainboard.c b/src/mainboard/google/mistral/mainboard.c
index 804afb4135..e45ff8fef6 100644
--- a/src/mainboard/google/mistral/mainboard.c
+++ b/src/mainboard/google/mistral/mainboard.c
@@ -1,8 +1,10 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#include <device/device.h>
+#include <device/mmio.h>
#include <vendorcode/google/chromeos/chromeos.h>
#include <soc/usb.h>
+#include <soc/addressmap.h>
static struct usb_board_data usb1_board_data = {
.parameter_override_x0 = 0x63,
@@ -17,6 +19,12 @@ static void setup_usb(void)
setup_usb_host(HSUSB_HS_PORT_1, &usb1_board_data);
}
+static void configure_sdhci(void)
+{
+ /* Program eMMC drive strength to 16/10/10 mA */
+ write32((void *)SDC1_TLMM_CFG_ADDR, 0x9FE4);
+}
+
static void mainboard_init(struct device *dev)
{
/* Copy WIFI calibration data into CBMEM. */
@@ -24,6 +32,7 @@ static void mainboard_init(struct device *dev)
cbmem_add_vpd_calibration_data();
setup_usb();
+ configure_sdhci();
}
static void mainboard_enable(struct device *dev)
diff --git a/src/mainboard/google/trogdor/mainboard.c b/src/mainboard/google/trogdor/mainboard.c
index 41bef2b3e7..982c1c1dae 100644
--- a/src/mainboard/google/trogdor/mainboard.c
+++ b/src/mainboard/google/trogdor/mainboard.c
@@ -6,6 +6,7 @@
#include <delay.h>
#include <device/device.h>
#include <device/i2c_simple.h>
+#include <device/mmio.h>
#include <mipi/panel.h>
#include <drivers/ti/sn65dsi86bridge/sn65dsi86bridge.h>
#include <edid.h>
@@ -19,6 +20,7 @@
#include <types.h>
#include "board.h"
+#include <soc/addressmap.h>
#define BRIDGE_BUS 0x2
#define BRIDGE_CHIP 0x2d
@@ -202,6 +204,14 @@ static void display_startup(void)
}
}
+static void configure_sdhci(void)
+{
+ /* Program eMMC drive strength to 16/16/16 mA */
+ write32((void *)SDC1_TLMM_CFG_ADDR, 0x9FFF);
+ /* Program SD card drive strength to 16/10/10 mA */
+ write32((void *)SDC2_TLMM_CFG_ADDR, 0x1FE4);
+}
+
static void mainboard_init(struct device *dev)
{
/* Take FPMCU out of reset. Power was already applied
@@ -213,6 +223,7 @@ static void mainboard_init(struct device *dev)
qi2s_configure_gpios();
load_qup_fw();
display_startup();
+ configure_sdhci();
}
static void mainboard_enable(struct device *dev)
diff --git a/src/soc/qualcomm/qcs405/include/soc/addressmap.h b/src/soc/qualcomm/qcs405/include/soc/addressmap.h
index b21ae26b71..637a059b07 100644
--- a/src/soc/qualcomm/qcs405/include/soc/addressmap.h
+++ b/src/soc/qualcomm/qcs405/include/soc/addressmap.h
@@ -9,4 +9,7 @@
#define TLMM_SOUTH_TILE_BASE 0x1000000
#define GCC_BASE 0x01800000
+/* SDHC TLMM Registers */
+#define SDC1_TLMM_CFG_ADDR 0x010C2000
+
#endif /* __SOC_QUALCOMM_QCS405_ADDRESS_MAP_H__ */
diff --git a/src/soc/qualcomm/sc7180/include/soc/addressmap.h b/src/soc/qualcomm/sc7180/include/soc/addressmap.h
index e360e8a30e..f295ceea22 100644
--- a/src/soc/qualcomm/sc7180/include/soc/addressmap.h
+++ b/src/soc/qualcomm/sc7180/include/soc/addressmap.h
@@ -56,4 +56,8 @@
#define GPIO_FUNC_QSPI_DATA_1 GPIO65_FUNC_QSPI_DATA_1
#define GPIO_FUNC_QSPI_CLK GPIO63_FUNC_QSPI_CLK
+/* SDHC TLMM Registers */
+#define SDC1_TLMM_CFG_ADDR 0x03D7A000
+#define SDC2_TLMM_CFG_ADDR 0x03D7B000
+
#endif /* __SOC_QUALCOMM_SC7180_ADDRESS_MAP_H__ */
diff --git a/src/soc/qualcomm/sc7280/include/soc/addressmap.h b/src/soc/qualcomm/sc7280/include/soc/addressmap.h
index 6ef653375e..14c83fe7da 100644
--- a/src/soc/qualcomm/sc7280/include/soc/addressmap.h
+++ b/src/soc/qualcomm/sc7280/include/soc/addressmap.h
@@ -24,4 +24,8 @@
#define GPIO_FUNC_QSPI_DATA_1 GPIO13_FUNC_QSPI_DATA_1
#define GPIO_FUNC_QSPI_CLK GPIO14_FUNC_QSPI_CLK
+/* SDHC TLMM Registers */
+#define SDC1_TLMM_CFG_ADDR 0x0F1B3000
+#define SDC2_TLMM_CFG_ADDR 0x0F1B4000
+
#endif /* __SOC_QUALCOMM_SC7280_ADDRESS_MAP_H__ */