Patrick Georgi (pgeorgi(a)google.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/11403
-gerrit
commit ccafe1c3c106f89386cbbf0da7efd40826b62ec9
Author: Julius Werner <jwerner(a)chromium.org>
Date: Thu Aug 20 14:36:34 2015 -0700
arm64: xcompile: Add support for A53 erratum 843419
This patch adds support to enable a linker workaround to a hardware
erratum on some early Cortex-A53 revisions. Since the linker option was
added very recently, we use xcompile to test whether the toolchain
supports it first. It is also guarded by a Kconfig since only a few
ARM64 SoCs will need this and it incurs a performance penalty.
BRANCH=none
BUG=none
TEST=Turned it on or off for Smaug and confirmed that it (dis)appeared
in verbose make output accordingly.
Change-Id: I01c9642d3cf489134645f0db6f79f1c788ddb00d
Signed-off-by: Patrick Georgi <patrick(a)georgi-clan.de>
Original-Commit-Id: 57128785760c4dfa32d6e6d764756443a9323cb7
Original-Change-Id: Ia5dd124f484e38460d75fb864304e7e8b18d16b7
Original-Signed-off-by: Julius Werner <jwerner(a)chromium.org>
Original-Reviewed-on: https://chromium-review.googlesource.com/294745
Original-Reviewed-by: Patrick Georgi <pgeorgi(a)chromium.org>
---
payloads/libpayload/arch/arm64/Kconfig | 8 ++++++++
payloads/libpayload/bin/lpgcc | 6 ++++++
src/arch/arm64/Kconfig | 9 +++++++++
util/xcompile/xcompile | 20 ++++++++++++++++++++
4 files changed, 43 insertions(+)
diff --git a/payloads/libpayload/arch/arm64/Kconfig b/payloads/libpayload/arch/arm64/Kconfig
index d2f8e56..a28a1f2 100644
--- a/payloads/libpayload/arch/arm64/Kconfig
+++ b/payloads/libpayload/arch/arm64/Kconfig
@@ -33,6 +33,14 @@ config ARCH_SPECIFIC_OPTIONS # dummy
def_bool y
select LITTLE_ENDIAN
+config ARM64_A53_ERRATUM_843419
+ bool "Enable Cortex-A53 erratum 843419 linker workaround"
+ default n
+ help
+ Some early Cortex-A53 revisions had a hardware bug that results in
+ incorrect address calculations in rare cases. This option enables a
+ linker workaround to avoid those cases if your toolchain supports it.
+
config DMA_LIM_EXCL
hex "DMA address limit(exclusive) in MiB units"
default 0x1000
diff --git a/payloads/libpayload/bin/lpgcc b/payloads/libpayload/bin/lpgcc
index 17d8eda..8d0260b 100755
--- a/payloads/libpayload/bin/lpgcc
+++ b/payloads/libpayload/bin/lpgcc
@@ -181,6 +181,12 @@ else
echo "Could not find head.o"
exit 1
fi
+
+ if grep -q ARM64_A53_ERRATUM_843419=y $BASE/../libpayload.config &&
+ grep -q fix-cortex-a53-843419 $BASE/../libpayload.xcompile; then
+ _LDFLAGS+=" -Wl,--fix-cortex-a53-843419"
+ fi
+
if [ $DEBUGME -eq 1 ]; then
echo "$DEFAULT_CC $_LDFLAGS $HEAD_O $CMDLINE $_CFLAGS -lpayload $_LIBGCC"
fi
diff --git a/src/arch/arm64/Kconfig b/src/arch/arm64/Kconfig
index b7cdc12..f2adf5c 100644
--- a/src/arch/arm64/Kconfig
+++ b/src/arch/arm64/Kconfig
@@ -55,3 +55,12 @@ config ARM64_SECURE_OS_FILE
depends on ARM64_USE_SECURE_OS
help
Secure OS binary file.
+
+config ARM64_A53_ERRATUM_843419
+ bool
+ default n
+ help
+ Some early Cortex-A53 revisions had a hardware bug that results in
+ incorrect address calculations in rare cases. This option enables a
+ linker workaround to avoid those cases if your toolchain supports it.
+ Should be selected automatically by SoCs that are affected.
diff --git a/util/xcompile/xcompile b/util/xcompile/xcompile
index e712ac3..46a30d1 100755
--- a/util/xcompile/xcompile
+++ b/util/xcompile/xcompile
@@ -87,6 +87,18 @@ testcc() {
$1 -nostdlib -Werror $2 -c "$tmp_c" -o "$tmp_o" >/dev/null 2>&1
}
+testld() {
+ local gcc="$1"
+ local cflags="$2"
+ local ld="$3"
+ local ldflags="$4"
+ local tmp_o="$TMPFILE.o"
+ local tmp_elf="$TMPFILE.elf"
+ rm -f "$tmp_elf"
+ testcc $1 $2 &&
+ $3 -nostdlib -static $4 -o "$tmp_elf" "$tmp_o" >/dev/null 2>&1
+}
+
testas() {
local gccprefix="$1"
local twidth="$2"
@@ -163,6 +175,11 @@ detect_special_flags() {
;;
x64)
;;
+ arm64)
+ testld "$GCC" "$CFLAGS_GCC" "${GCCPREFIX}ld${LINKER_SUFFIX}" \
+ "$LDFLAGS --fix-cortex-a53-843419" && \
+ LDFLAGS_ARM64_A53_ERRATUM_843419+=" --fix-cortex-a53-843419"
+ ;;
mipsel)
testcc "$GCC" "$CFLAGS_GCC -mno-abicalls -fno-pic" && \
CFLAGS_GCC+=" -mno-abicalls -fno-pic"
@@ -203,6 +220,9 @@ endif
CPP_${TARCH}:=${GCCPREFIX}cpp
AS_${TARCH}:=${GCCPREFIX}as ${ASFLAGS}
LD_${TARCH}:=${GCCPREFIX}ld${LINKER_SUFFIX} ${LDFLAGS}
+ifeq (\$(CONFIG_ARM64_A53_ERRATUM_843419)\$(CONFIG_LP_ARM64_A53_ERRATUM_843419),y)
+LD_${TARCH}+=${LDFLAGS_ARM64_A53_ERRATUM_843419}
+endif
NM_${TARCH}:=${GCCPREFIX}nm
OBJCOPY_${TARCH}:=${GCCPREFIX}objcopy
OBJDUMP_${TARCH}:=${GCCPREFIX}objdump
Patrick Georgi (pgeorgi(a)google.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/11396
-gerrit
commit 01f9fb2b72246a04789cb4e5f38e7a96f11bb8c3
Author: jinkun.hong <jinkun.hong(a)rock-chips.com>
Date: Thu Aug 13 10:52:52 2015 +0800
veyron: mickey sdram-lpddr3-samsung-2GB.inc enable odt
only modify the MR3 value, there will always be some mickey not working properly.
After enable ODT, we use many mickey do tests, now functioning properly.
BRANCH=None
BUG=chrome-os-partner:43626
TEST=My mickey now boots up
Signed-off-by: Patrick Georgi <patrick(a)georgi-clan.de>
Original-Commit-Id: 681c169d59f5638d35b777eb2b7543e3b0dd90c8
Original-Change-Id: Ieb2b8a56054f91b6be81260e4c574425fb72fed3
Original-Signed-off-by: jinkun.hong <jinkun.hong(a)rock-chips.com>
Original-Reviewed-on: https://chromium-review.googlesource.com/293324
Original-Reviewed-by: Douglas Anderson <dianders(a)chromium.org>
Original-Commit-Queue: Douglas Anderson <dianders(a)chromium.org>
Original-Trybot-Ready: Douglas Anderson <dianders(a)chromium.org>
Original-Tested-by: Douglas Anderson <dianders(a)chromium.org>
Original-(cherry picked from commit 5397c2f32f5851b9f514b0bd2ae68999a77cabbf)
Original-Reviewed-on: https://chromium-review.googlesource.com/294126
Change-Id: Icb3c839bebebfcae54fc6e96e9958c7020d49eff
---
.../google/veyron_mickey/sdram_inf/sdram-lpddr3-samsung-2GB.inc | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/mainboard/google/veyron_mickey/sdram_inf/sdram-lpddr3-samsung-2GB.inc b/src/mainboard/google/veyron_mickey/sdram_inf/sdram-lpddr3-samsung-2GB.inc
index 666b12f..89dfd69 100644
--- a/src/mainboard/google/veyron_mickey/sdram_inf/sdram-lpddr3-samsung-2GB.inc
+++ b/src/mainboard/google/veyron_mickey/sdram_inf/sdram-lpddr3-samsung-2GB.inc
@@ -75,5 +75,5 @@
.dramtype = LPDDR3,
.num_channels = 2,
.stride = 9,
- .odt = 0,
+ .odt = 1,
},
Patrick Georgi (pgeorgi(a)google.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/11398
-gerrit
commit 05466895ba0f80fabad974dd45f8021151a428d2
Author: Alexandru M Stan <amstan(a)chromium.org>
Date: Mon Aug 17 17:32:06 2015 -0700
veyron_rialto: Turn on all leds
Without this, the leds would be stuck to whatever the pullup/down states the
pins come with on rk3288.
Ready2_LED, an orange led, is one of the leds in this state.
This might confuse some users thinking there's an error.
Turn all of them on instead.
Later on depthcharge will use the same LEDs to indicate dev mode status.
BUG=chrome-os-partner:44274
BRANCH=master
TEST=Boot firmware without anything else, note all leds on
Change-Id: I5cf19aabd2a59a61699ef491ae11424cf5a0c874
Signed-off-by: Patrick Georgi <patrick(a)georgi-clan.de>
Original-Commit-Id: 2e1a332a5653fb76bbf8fe624274ec64d2b443a5
Original-Change-Id: I4c4e8940dd9cf1ac0301ac00bfc5992ba16e1589
Original-Signed-off-by: Alexandru M Stan <amstan(a)chromium.org>
Original-Reviewed-on: https://chromium-review.googlesource.com/294065
Original-Reviewed-by: David Hendricks <dhendrix(a)chromium.org>
---
src/mainboard/google/veyron_rialto/bootblock.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/src/mainboard/google/veyron_rialto/bootblock.c b/src/mainboard/google/veyron_rialto/bootblock.c
index 849bc95..38ae277 100644
--- a/src/mainboard/google/veyron_rialto/bootblock.c
+++ b/src/mainboard/google/veyron_rialto/bootblock.c
@@ -48,6 +48,12 @@ void bootblock_mainboard_init(void)
if (rkclk_was_watchdog_reset())
reboot_from_watchdog();
+ /* Turn on all leds */
+ gpio_output(GPIO(7, A, 0), 1); /* LED_READY */
+ gpio_output(GPIO(7, B, 5), 1); /* Ready2_LED */
+ gpio_output(GPIO(7, B, 3), 1); /* LED_SYNCING */
+ gpio_output(GPIO(7, B, 7), 1); /* LED_ERROR */
+
/* Up VDD_CPU (BUCK1) to 1.4V to support max CPU frequency (1.8GHz). */
setbits_le32(&rk3288_pmu->iomux_i2c0scl, IOMUX_I2C0SCL);
setbits_le32(&rk3288_pmu->iomux_i2c0sda, IOMUX_I2C0SDA);
Patrick Georgi (pgeorgi(a)google.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/11392
-gerrit
commit 60600e5ce9d301ef28014d5affd86f46c059fd03
Author: Yakir Yang <ykk(a)rock-chips.com>
Date: Wed Jul 29 08:54:14 2015 -0500
rk3288: Set HDMI display mode to 480p
If an HDMI display is detected (EDID can be read), set the
display mode to 480p. If for some reason 480p is not supported
then we'll fall back to the automatically detected display mode.
BUG=chrome-os-partner:42946
BRANCH=firmware-veyron
TEST=dev mode screen shows up on Mickey at 480p resolution
Change-Id: I2c431eff6673392d3c09e1b66c66ba12ecc6eeb0
Signed-off-by: Patrick Georgi <patrick(a)georgi-clan.de>
Original-Commit-Id: 76203a683c4501f368c50fe24101f68746ddb7f0
Original-Change-Id: I90dea37daa2d78628230d7d47f7ef0e917cbd7bb
Original-Signed-off-by: David Hendricks <dhendrix(a)chromium.org>
Original-Reviewed-on: https://chromium-review.googlesource.com/290554
Original-Reviewed-by: Julius Werner <jwerner(a)chromium.org>
---
src/soc/rockchip/rk3288/hdmi.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/soc/rockchip/rk3288/hdmi.c b/src/soc/rockchip/rk3288/hdmi.c
index e5bebe3..a520399 100644
--- a/src/soc/rockchip/rk3288/hdmi.c
+++ b/src/soc/rockchip/rk3288/hdmi.c
@@ -793,6 +793,10 @@ int rk_hdmi_get_edid(struct edid *edid)
if (decode_edid(edid_buf, edid_size, edid))
hdmi_debug("failed to decode edid.\n");
+ /* Try 480p for best compatibility. */
+ if (set_display_mode(edid, EDID_MODE_640x480_60Hz))
+ hdmi_debug("failed to set mode to 640x480@60Hz\n");
+
return 0;
}