Minor cleanups and new devices
This commit is contained in:
parent
494158a8a1
commit
7a98996733
|
@ -0,0 +1,587 @@
|
|||
From 202d830b11d88335652a7b25ccd023a860e4e66f Mon Sep 17 00:00:00 2001
|
||||
From: Stephen Warren <swarren@wwwdotorg.org>
|
||||
Date: Sat, 5 Mar 2016 13:15:04 -0700
|
||||
Subject: [PATCH] WIP: RPi 3 (32-bit) port
|
||||
|
||||
FIXME:
|
||||
- split up into n patches
|
||||
- describe
|
||||
|
||||
Signed-off-by: Stephen Warren <swarren@wwwdotorg.org>
|
||||
---
|
||||
arch/arm/mach-bcm283x/Kconfig | 6 ++
|
||||
arch/arm/mach-bcm283x/include/mach/aux.h | 25 +++++
|
||||
arch/arm/mach-bcm283x/include/mach/gpio.h | 2 +-
|
||||
arch/arm/mach-bcm283x/include/mach/mbox.h | 2 +-
|
||||
arch/arm/mach-bcm283x/include/mach/sdhci.h | 2 +-
|
||||
arch/arm/mach-bcm283x/include/mach/timer.h | 2 +-
|
||||
arch/arm/mach-bcm283x/include/mach/wdog.h | 2 +-
|
||||
arch/arm/mach-bcm283x/phys2bus.c | 2 +-
|
||||
board/raspberrypi/rpi/rpi.c | 51 +++++++++-
|
||||
board/raspberrypi/rpi_3_32b/MAINTAINERS | 6 ++
|
||||
board/raspberrypi/rpi_3_32b/Makefile | 7 ++
|
||||
configs/rpi_3_32b_defconfig | 9 ++
|
||||
drivers/serial/Makefile | 1 +
|
||||
drivers/serial/serial_bcm283x_mu.c | 138 +++++++++++++++++++++++++++
|
||||
include/configs/rpi-common.h | 12 ++-
|
||||
include/configs/rpi.h | 1 +
|
||||
include/configs/rpi_3_32b.h | 18 ++++
|
||||
include/dm/platform_data/serial_bcm283x_mu.h | 22 +++++
|
||||
18 files changed, 297 insertions(+), 11 deletions(-)
|
||||
create mode 100644 arch/arm/mach-bcm283x/include/mach/aux.h
|
||||
create mode 100644 board/raspberrypi/rpi_3_32b/MAINTAINERS
|
||||
create mode 100644 board/raspberrypi/rpi_3_32b/Makefile
|
||||
create mode 100644 configs/rpi_3_32b_defconfig
|
||||
create mode 100644 drivers/serial/serial_bcm283x_mu.c
|
||||
create mode 100644 include/configs/rpi_3_32b.h
|
||||
create mode 100644 include/dm/platform_data/serial_bcm283x_mu.h
|
||||
|
||||
diff --git a/arch/arm/mach-bcm283x/Kconfig b/arch/arm/mach-bcm283x/Kconfig
|
||||
index 2315a13..aa2cf28 100644
|
||||
--- a/arch/arm/mach-bcm283x/Kconfig
|
||||
+++ b/arch/arm/mach-bcm283x/Kconfig
|
||||
@@ -13,11 +13,16 @@ config TARGET_RPI_2
|
||||
bool "Raspberry Pi 2"
|
||||
select CPU_V7
|
||||
|
||||
+config TARGET_RPI_3_32B
|
||||
+ bool "Raspberry Pi 3 32-bit build"
|
||||
+ select CPU_V7
|
||||
+
|
||||
endchoice
|
||||
|
||||
config SYS_BOARD
|
||||
default "rpi" if TARGET_RPI
|
||||
default "rpi_2" if TARGET_RPI_2
|
||||
+ default "rpi_3_32b" if TARGET_RPI_3_32B
|
||||
|
||||
config SYS_VENDOR
|
||||
default "raspberrypi"
|
||||
@@ -28,5 +33,6 @@ config SYS_SOC
|
||||
config SYS_CONFIG_NAME
|
||||
default "rpi" if TARGET_RPI
|
||||
default "rpi_2" if TARGET_RPI_2
|
||||
+ default "rpi_3_32b" if TARGET_RPI_3_32B
|
||||
|
||||
endmenu
|
||||
diff --git a/arch/arm/mach-bcm283x/include/mach/aux.h b/arch/arm/mach-bcm283x/include/mach/aux.h
|
||||
new file mode 100644
|
||||
index 0000000..0f97e5c
|
||||
--- /dev/null
|
||||
+++ b/arch/arm/mach-bcm283x/include/mach/aux.h
|
||||
@@ -0,0 +1,25 @@
|
||||
+/*
|
||||
+ * (C) Copyright 2016 Stephen Warren <swarren@wwwdotorg.org>
|
||||
+ *
|
||||
+ * SPDX-License-Identifier: GPL-2.0+
|
||||
+ */
|
||||
+
|
||||
+#ifndef _BCM2835_AUX_H_
|
||||
+#define _BCM2835_AUX_H_
|
||||
+
|
||||
+#ifndef CONFIG_BCM2835
|
||||
+#define BCM2835_AUX_BASE 0x3f215000
|
||||
+#else
|
||||
+#define BCM2835_AUX_BASE 0x20215000
|
||||
+#endif
|
||||
+
|
||||
+#define BCM2835_AUX_ENABLES_SPI2 BIT(0)
|
||||
+#define BCM2835_AUX_ENABLES_SPI1 BIT(0)
|
||||
+#define BCM2835_AUX_ENABLES_MINI_UART BIT(0)
|
||||
+
|
||||
+struct bcm2835_aux_regs {
|
||||
+ u32 irq;
|
||||
+ u32 enables;
|
||||
+};
|
||||
+
|
||||
+#endif /* _BCM2835_AXU_H_ */
|
||||
diff --git a/arch/arm/mach-bcm283x/include/mach/gpio.h b/arch/arm/mach-bcm283x/include/mach/gpio.h
|
||||
index c8ef8f5..e6e5d16 100644
|
||||
--- a/arch/arm/mach-bcm283x/include/mach/gpio.h
|
||||
+++ b/arch/arm/mach-bcm283x/include/mach/gpio.h
|
||||
@@ -9,7 +9,7 @@
|
||||
#ifndef _BCM2835_GPIO_H_
|
||||
#define _BCM2835_GPIO_H_
|
||||
|
||||
-#ifdef CONFIG_BCM2836
|
||||
+#ifndef CONFIG_BCM2835
|
||||
#define BCM2835_GPIO_BASE 0x3f200000
|
||||
#else
|
||||
#define BCM2835_GPIO_BASE 0x20200000
|
||||
diff --git a/arch/arm/mach-bcm283x/include/mach/mbox.h b/arch/arm/mach-bcm283x/include/mach/mbox.h
|
||||
index 4a14391..627acb8 100644
|
||||
--- a/arch/arm/mach-bcm283x/include/mach/mbox.h
|
||||
+++ b/arch/arm/mach-bcm283x/include/mach/mbox.h
|
||||
@@ -38,7 +38,7 @@
|
||||
|
||||
/* Raw mailbox HW */
|
||||
|
||||
-#ifdef CONFIG_BCM2836
|
||||
+#ifndef CONFIG_BCM2835
|
||||
#define BCM2835_MBOX_PHYSADDR 0x3f00b880
|
||||
#else
|
||||
#define BCM2835_MBOX_PHYSADDR 0x2000b880
|
||||
diff --git a/arch/arm/mach-bcm283x/include/mach/sdhci.h b/arch/arm/mach-bcm283x/include/mach/sdhci.h
|
||||
index 2a21ccb..64e582c 100644
|
||||
--- a/arch/arm/mach-bcm283x/include/mach/sdhci.h
|
||||
+++ b/arch/arm/mach-bcm283x/include/mach/sdhci.h
|
||||
@@ -7,7 +7,7 @@
|
||||
#ifndef _BCM2835_SDHCI_H_
|
||||
#define _BCM2835_SDHCI_H_
|
||||
|
||||
-#ifdef CONFIG_BCM2836
|
||||
+#ifndef CONFIG_BCM2835
|
||||
#define BCM2835_SDHCI_BASE 0x3f300000
|
||||
#else
|
||||
#define BCM2835_SDHCI_BASE 0x20300000
|
||||
diff --git a/arch/arm/mach-bcm283x/include/mach/timer.h b/arch/arm/mach-bcm283x/include/mach/timer.h
|
||||
index 004c24b..2a85f23 100644
|
||||
--- a/arch/arm/mach-bcm283x/include/mach/timer.h
|
||||
+++ b/arch/arm/mach-bcm283x/include/mach/timer.h
|
||||
@@ -7,7 +7,7 @@
|
||||
#ifndef _BCM2835_TIMER_H
|
||||
#define _BCM2835_TIMER_H
|
||||
|
||||
-#ifdef CONFIG_BCM2836
|
||||
+#ifndef CONFIG_BCM2835
|
||||
#define BCM2835_TIMER_PHYSADDR 0x3f003000
|
||||
#else
|
||||
#define BCM2835_TIMER_PHYSADDR 0x20003000
|
||||
diff --git a/arch/arm/mach-bcm283x/include/mach/wdog.h b/arch/arm/mach-bcm283x/include/mach/wdog.h
|
||||
index cbc350e..7741d7b 100644
|
||||
--- a/arch/arm/mach-bcm283x/include/mach/wdog.h
|
||||
+++ b/arch/arm/mach-bcm283x/include/mach/wdog.h
|
||||
@@ -7,7 +7,7 @@
|
||||
#ifndef _BCM2835_WDOG_H
|
||||
#define _BCM2835_WDOG_H
|
||||
|
||||
-#ifdef CONFIG_BCM2836
|
||||
+#ifndef CONFIG_BCM2835
|
||||
#define BCM2835_WDOG_PHYSADDR 0x3f100000
|
||||
#else
|
||||
#define BCM2835_WDOG_PHYSADDR 0x20100000
|
||||
diff --git a/arch/arm/mach-bcm283x/phys2bus.c b/arch/arm/mach-bcm283x/phys2bus.c
|
||||
index fc1c299..8e9f492 100644
|
||||
--- a/arch/arm/mach-bcm283x/phys2bus.c
|
||||
+++ b/arch/arm/mach-bcm283x/phys2bus.c
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
unsigned long phys_to_bus(unsigned long phys)
|
||||
{
|
||||
-#ifdef CONFIG_BCM2836
|
||||
+#ifndef CONFIG_BCM2835
|
||||
return 0xc0000000 | phys;
|
||||
#else
|
||||
return 0x40000000 | phys;
|
||||
diff --git a/board/raspberrypi/rpi/rpi.c b/board/raspberrypi/rpi/rpi.c
|
||||
index 776a958..1abf0bd 100644
|
||||
--- a/board/raspberrypi/rpi/rpi.c
|
||||
+++ b/board/raspberrypi/rpi/rpi.c
|
||||
@@ -13,11 +13,14 @@
|
||||
#include <lcd.h>
|
||||
#include <memalign.h>
|
||||
#include <mmc.h>
|
||||
+#include <asm/io.h>
|
||||
#include <asm/gpio.h>
|
||||
+#include <asm/arch/aux.h>
|
||||
#include <asm/arch/mbox.h>
|
||||
#include <asm/arch/sdhci.h>
|
||||
#include <asm/global_data.h>
|
||||
#include <dm/platform_data/serial_pl01x.h>
|
||||
+#include <dm/platform_data/serial_bcm283x_mu.h>
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
@@ -30,8 +33,9 @@ U_BOOT_DEVICE(bcm2835_gpios) = {
|
||||
.platdata = &gpio_platdata,
|
||||
};
|
||||
|
||||
+#if defined(CONFIG_BCM2835) || defined(CONFIG_BCM2836)
|
||||
static const struct pl01x_serial_platdata serial_platdata = {
|
||||
-#ifdef CONFIG_BCM2836
|
||||
+#ifndef CONFIG_BCM2835
|
||||
.base = 0x3f201000,
|
||||
#else
|
||||
.base = 0x20201000,
|
||||
@@ -43,6 +47,16 @@ U_BOOT_DEVICE(bcm2835_serials) = {
|
||||
.name = "serial_pl01x",
|
||||
.platdata = &serial_platdata,
|
||||
};
|
||||
+#else
|
||||
+static const struct bcm283x_mu_serial_platdata serial_platdata = {
|
||||
+ .base = 0x3f215040,
|
||||
+};
|
||||
+
|
||||
+U_BOOT_DEVICE(bcm2837_serials) = {
|
||||
+ .name = "serial_bcm283x_mu",
|
||||
+ .platdata = &serial_platdata,
|
||||
+};
|
||||
+#endif
|
||||
|
||||
struct msg_get_arm_mem {
|
||||
struct bcm2835_mbox_hdr hdr;
|
||||
@@ -98,7 +112,9 @@ struct rpi_model {
|
||||
|
||||
static const struct rpi_model rpi_model_unknown = {
|
||||
"Unknown model",
|
||||
-#ifdef CONFIG_BCM2836
|
||||
+#if defined(CONFIG_BCM2837)
|
||||
+ "bcm2837-rpi-other.dtb",
|
||||
+#elif defined(CONFIG_BCM2836)
|
||||
"bcm2836-rpi-other.dtb",
|
||||
#else
|
||||
"bcm2835-rpi-other.dtb",
|
||||
@@ -112,6 +128,11 @@ static const struct rpi_model rpi_models_new_scheme[] = {
|
||||
"bcm2836-rpi-2-b.dtb",
|
||||
true,
|
||||
},
|
||||
+ [0x8] = {
|
||||
+ "3 Model B",
|
||||
+ "bcm2837-rpi-3-b.dtb",
|
||||
+ true,
|
||||
+ },
|
||||
[0x9] = {
|
||||
"Zero",
|
||||
"bcm2835-rpi-zero.dtb",
|
||||
@@ -212,6 +233,32 @@ static uint32_t rev_scheme;
|
||||
static uint32_t rev_type;
|
||||
static const struct rpi_model *model;
|
||||
|
||||
+#ifdef CONFIG_BCM2837
|
||||
+int board_early_init_f(void)
|
||||
+{
|
||||
+ struct bcm2835_gpio_regs *gpior =
|
||||
+ (struct bcm2835_gpio_regs *)BCM2835_GPIO_BASE;
|
||||
+ struct bcm2835_aux_regs *auxr =
|
||||
+ (struct bcm2835_aux_regs *)BCM2835_AUX_BASE;
|
||||
+ u32 val;
|
||||
+
|
||||
+ /* Route mini UART to header UART pins */
|
||||
+ val = readl(&gpior->gpfsel[BCM2835_GPIO_FSEL_BANK(14)]);
|
||||
+ val &= ~(BCM2835_GPIO_FSEL_MASK << BCM2835_GPIO_FSEL_SHIFT(14));
|
||||
+ val |= (BCM2835_GPIO_ALT5 << BCM2835_GPIO_FSEL_SHIFT(14));
|
||||
+ val &= ~(BCM2835_GPIO_FSEL_MASK << BCM2835_GPIO_FSEL_SHIFT(15));
|
||||
+ val |= (BCM2835_GPIO_ALT5 << BCM2835_GPIO_FSEL_SHIFT(15));
|
||||
+ writel(val, &gpior->gpfsel[BCM2835_GPIO_FSEL_BANK(14)]);
|
||||
+
|
||||
+ /* Enable mini UART HW module */
|
||||
+ val = readl(&auxr->enables);
|
||||
+ val |= BCM2835_AUX_ENABLES_MINI_UART;
|
||||
+ writel(val, &auxr->enables);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
int dram_init(void)
|
||||
{
|
||||
ALLOC_CACHE_ALIGN_BUFFER(struct msg_get_arm_mem, msg, 1);
|
||||
diff --git a/board/raspberrypi/rpi_3_32b/MAINTAINERS b/board/raspberrypi/rpi_3_32b/MAINTAINERS
|
||||
new file mode 100644
|
||||
index 0000000..bc9df87
|
||||
--- /dev/null
|
||||
+++ b/board/raspberrypi/rpi_3_32b/MAINTAINERS
|
||||
@@ -0,0 +1,6 @@
|
||||
+RPI_3_32B BOARD
|
||||
+M: Stephen Warren <swarren@wwwdotorg.org>
|
||||
+S: Maintained
|
||||
+F: board/raspberrypi/rpi_3_32b/
|
||||
+F: include/configs/rpi_3_32b.h
|
||||
+F: configs/rpi_3_32b_defconfig
|
||||
diff --git a/board/raspberrypi/rpi_3_32b/Makefile b/board/raspberrypi/rpi_3_32b/Makefile
|
||||
new file mode 100644
|
||||
index 0000000..e569431
|
||||
--- /dev/null
|
||||
+++ b/board/raspberrypi/rpi_3_32b/Makefile
|
||||
@@ -0,0 +1,7 @@
|
||||
+#
|
||||
+# (C) Copyright 2012,2015 Stephen Warren <swarren@wwwdotorg.org>
|
||||
+#
|
||||
+# SPDX-License-Identifier: GPL-2.0
|
||||
+#
|
||||
+
|
||||
+obj-y := ../rpi/rpi.o
|
||||
diff --git a/configs/rpi_3_32b_defconfig b/configs/rpi_3_32b_defconfig
|
||||
new file mode 100644
|
||||
index 0000000..fcb8961
|
||||
--- /dev/null
|
||||
+++ b/configs/rpi_3_32b_defconfig
|
||||
@@ -0,0 +1,9 @@
|
||||
+CONFIG_ARM=y
|
||||
+CONFIG_ARCH_BCM283X=y
|
||||
+CONFIG_TARGET_RPI_3_32B=y
|
||||
+CONFIG_SYS_PROMPT="U-Boot> "
|
||||
+# CONFIG_CMD_IMLS is not set
|
||||
+# CONFIG_CMD_FLASH is not set
|
||||
+# CONFIG_CMD_FPGA is not set
|
||||
+CONFIG_CMD_GPIO=y
|
||||
+CONFIG_PHYS_TO_BUS=y
|
||||
diff --git a/drivers/serial/Makefile b/drivers/serial/Makefile
|
||||
index 05bdf56..ee7147a 100644
|
||||
--- a/drivers/serial/Makefile
|
||||
+++ b/drivers/serial/Makefile
|
||||
@@ -38,6 +38,7 @@ obj-$(CONFIG_UNIPHIER_SERIAL) += serial_uniphier.o
|
||||
obj-$(CONFIG_STM32_SERIAL) += serial_stm32.o
|
||||
obj-$(CONFIG_PIC32_SERIAL) += serial_pic32.o
|
||||
obj-$(CONFIG_STM32X7_SERIAL) += serial_stm32x7.o
|
||||
+obj-$(CONFIG_BCM283X_MU_SERIAL) += serial_bcm283x_mu.o
|
||||
|
||||
ifndef CONFIG_SPL_BUILD
|
||||
obj-$(CONFIG_USB_TTY) += usbtty.o
|
||||
diff --git a/drivers/serial/serial_bcm283x_mu.c b/drivers/serial/serial_bcm283x_mu.c
|
||||
new file mode 100644
|
||||
index 0000000..97b57cc
|
||||
--- /dev/null
|
||||
+++ b/drivers/serial/serial_bcm283x_mu.c
|
||||
@@ -0,0 +1,138 @@
|
||||
+/*
|
||||
+ * (C) Copyright 2016 Stephen Warren <swarren@wwwdotorg.org>
|
||||
+ *
|
||||
+ * Derived from pl01x code:
|
||||
+ *
|
||||
+ * (C) Copyright 2000
|
||||
+ * Rob Taylor, Flying Pig Systems. robt@flyingpig.com.
|
||||
+ *
|
||||
+ * (C) Copyright 2004
|
||||
+ * ARM Ltd.
|
||||
+ * Philippe Robin, <philippe.robin@arm.com>
|
||||
+ *
|
||||
+ * SPDX-License-Identifier: GPL-2.0+
|
||||
+ */
|
||||
+
|
||||
+/* Simple U-Boot driver for the BCM283x mini UART */
|
||||
+
|
||||
+#include <common.h>
|
||||
+#include <dm.h>
|
||||
+#include <errno.h>
|
||||
+#include <watchdog.h>
|
||||
+#include <asm/io.h>
|
||||
+#include <serial.h>
|
||||
+#include <dm/platform_data/serial_bcm283x_mu.h>
|
||||
+#include <linux/compiler.h>
|
||||
+#include <fdtdec.h>
|
||||
+
|
||||
+struct bcm283x_mu_regs {
|
||||
+ u32 io;
|
||||
+ u32 iir;
|
||||
+ u32 ier;
|
||||
+ u32 lcr;
|
||||
+ u32 mcr;
|
||||
+ u32 lsr;
|
||||
+ u32 msr;
|
||||
+ u32 scratch;
|
||||
+ u32 cntl;
|
||||
+ u32 stat;
|
||||
+ u32 baud;
|
||||
+};
|
||||
+
|
||||
+#define BCM283X_MU_LCR_DATA_SIZE_8 3
|
||||
+
|
||||
+#define BCM283X_MU_LSR_TX_IDLE BIT(6)
|
||||
+/* This actually means not full, but is named not empty in the docs */
|
||||
+#define BCM283X_MU_LSR_TX_EMPTY BIT(5)
|
||||
+#define BCM283X_MU_LSR_RX_READY BIT(0)
|
||||
+
|
||||
+struct bcm283x_mu_priv {
|
||||
+ struct bcm283x_mu_regs *regs;
|
||||
+};
|
||||
+
|
||||
+static int bcm283x_mu_serial_setbrg(struct udevice *dev, int baudrate)
|
||||
+{
|
||||
+ struct bcm283x_mu_priv *priv = dev_get_priv(dev);
|
||||
+ struct bcm283x_mu_regs *regs = priv->regs;
|
||||
+ /* FIXME: Get this from plat data later */
|
||||
+ u32 clock_rate = 250000000;
|
||||
+ u32 divider;
|
||||
+
|
||||
+ divider = clock_rate / (baudrate * 8);
|
||||
+
|
||||
+ writel(BCM283X_MU_LCR_DATA_SIZE_8, ®s->lcr);
|
||||
+ writel(divider - 1, ®s->baud);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int bcm283x_mu_serial_probe(struct udevice *dev)
|
||||
+{
|
||||
+ struct bcm283x_mu_serial_platdata *plat = dev_get_platdata(dev);
|
||||
+ struct bcm283x_mu_priv *priv = dev_get_priv(dev);
|
||||
+
|
||||
+ priv->regs = (struct bcm283x_mu_regs *)plat->base;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int bcm283x_mu_serial_getc(struct udevice *dev)
|
||||
+{
|
||||
+ struct bcm283x_mu_priv *priv = dev_get_priv(dev);
|
||||
+ struct bcm283x_mu_regs *regs = priv->regs;
|
||||
+ u32 data;
|
||||
+
|
||||
+ /* Wait until there is data in the FIFO */
|
||||
+ if (!(readl(®s->lsr) & BCM283X_MU_LSR_RX_READY))
|
||||
+ return -EAGAIN;
|
||||
+
|
||||
+ data = readl(®s->io);
|
||||
+
|
||||
+ return (int)data;
|
||||
+}
|
||||
+
|
||||
+static int bcm283x_mu_serial_putc(struct udevice *dev, const char data)
|
||||
+{
|
||||
+ struct bcm283x_mu_priv *priv = dev_get_priv(dev);
|
||||
+ struct bcm283x_mu_regs *regs = priv->regs;
|
||||
+
|
||||
+ /* Wait until there is space in the FIFO */
|
||||
+ if (!(readl(®s->lsr) & BCM283X_MU_LSR_TX_EMPTY))
|
||||
+ return -EAGAIN;
|
||||
+
|
||||
+ /* Send the character */
|
||||
+ writel(data, ®s->io);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int bcm283x_mu_serial_pending(struct udevice *dev, bool input)
|
||||
+{
|
||||
+ struct bcm283x_mu_priv *priv = dev_get_priv(dev);
|
||||
+ struct bcm283x_mu_regs *regs = priv->regs;
|
||||
+ unsigned int lsr = readl(®s->lsr);
|
||||
+
|
||||
+ if (input) {
|
||||
+ WATCHDOG_RESET();
|
||||
+ return lsr & BCM283X_MU_LSR_RX_READY;
|
||||
+ } else {
|
||||
+ return !(lsr & BCM283X_MU_LSR_TX_IDLE);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+static const struct dm_serial_ops bcm283x_mu_serial_ops = {
|
||||
+ .putc = bcm283x_mu_serial_putc,
|
||||
+ .pending = bcm283x_mu_serial_pending,
|
||||
+ .getc = bcm283x_mu_serial_getc,
|
||||
+ .setbrg = bcm283x_mu_serial_setbrg,
|
||||
+};
|
||||
+
|
||||
+U_BOOT_DRIVER(serial_bcm283x_mu) = {
|
||||
+ .name = "serial_bcm283x_mu",
|
||||
+ .id = UCLASS_SERIAL,
|
||||
+ .platdata_auto_alloc_size = sizeof(struct bcm283x_mu_serial_platdata),
|
||||
+ .probe = bcm283x_mu_serial_probe,
|
||||
+ .ops = &bcm283x_mu_serial_ops,
|
||||
+ .flags = DM_FLAG_PRE_RELOC,
|
||||
+ .priv_auto_alloc_size = sizeof(struct bcm283x_mu_priv),
|
||||
+};
|
||||
diff --git a/include/configs/rpi-common.h b/include/configs/rpi-common.h
|
||||
index 9ae6805..30cd319 100644
|
||||
--- a/include/configs/rpi-common.h
|
||||
+++ b/include/configs/rpi-common.h
|
||||
@@ -11,7 +11,6 @@
|
||||
#include <asm/arch/timer.h>
|
||||
|
||||
/* Architecture, CPU, etc.*/
|
||||
-#define CONFIG_BCM2835
|
||||
#define CONFIG_ARCH_CPU_INIT
|
||||
|
||||
#define CONFIG_SYS_TIMER_RATE 1000000
|
||||
@@ -25,8 +24,11 @@
|
||||
* We don't define a machine type for bcm2709/bcm2836 since the RPi Foundation
|
||||
* chose to use someone else's previously registered machine ID (3139, MX51_GGC)
|
||||
* rather than obtaining a valid ID:-/
|
||||
+ *
|
||||
+ * For the bcm2837, hopefully a machine type is not needed, since everything
|
||||
+ * is DT.
|
||||
*/
|
||||
-#ifndef CONFIG_BCM2836
|
||||
+#ifdef CONFIG_BCM2835
|
||||
#define CONFIG_MACH_TYPE MACH_TYPE_BCM2708
|
||||
#endif
|
||||
|
||||
@@ -80,7 +82,7 @@
|
||||
#define CONFIG_CMD_USB
|
||||
#ifdef CONFIG_CMD_USB
|
||||
#define CONFIG_USB_DWC2
|
||||
-#ifdef CONFIG_BCM2836
|
||||
+#ifndef CONFIG_BCM2835
|
||||
#define CONFIG_USB_DWC2_REG_ADDR 0x3f980000
|
||||
#else
|
||||
#define CONFIG_USB_DWC2_REG_ADDR 0x20980000
|
||||
@@ -95,7 +97,11 @@
|
||||
#endif
|
||||
|
||||
/* Console UART */
|
||||
+#ifdef CONFIG_BCM2837
|
||||
+#define CONFIG_BCM283X_MU_SERIAL
|
||||
+#else
|
||||
#define CONFIG_PL01X_SERIAL
|
||||
+#endif
|
||||
#define CONFIG_CONS_INDEX 0
|
||||
#define CONFIG_BAUDRATE 115200
|
||||
|
||||
diff --git a/include/configs/rpi.h b/include/configs/rpi.h
|
||||
index 86422e3..a788ce4 100644
|
||||
--- a/include/configs/rpi.h
|
||||
+++ b/include/configs/rpi.h
|
||||
@@ -7,6 +7,7 @@
|
||||
#ifndef __CONFIG_H
|
||||
#define __CONFIG_H
|
||||
|
||||
+#define CONFIG_BCM2835
|
||||
#define CONFIG_SYS_CACHELINE_SIZE 32
|
||||
|
||||
#include "rpi-common.h"
|
||||
diff --git a/include/configs/rpi_3_32b.h b/include/configs/rpi_3_32b.h
|
||||
new file mode 100644
|
||||
index 0000000..5343e33
|
||||
--- /dev/null
|
||||
+++ b/include/configs/rpi_3_32b.h
|
||||
@@ -0,0 +1,18 @@
|
||||
+/*
|
||||
+ * (C) Copyright 2012,2015-2016 Stephen Warren <swarren@wwwdotorg.org>
|
||||
+ *
|
||||
+ * SPDX-License-Identifier: GPL-2.0
|
||||
+ */
|
||||
+
|
||||
+#ifndef __CONFIG_H
|
||||
+#define __CONFIG_H
|
||||
+
|
||||
+#define CONFIG_SKIP_LOWLEVEL_INIT
|
||||
+#define CONFIG_BOARD_EARLY_INIT_F
|
||||
+#define CONFIG_BCM2837
|
||||
+#define CONFIG_SYS_CACHELINE_SIZE 64
|
||||
+#define CONFIG_SYS_DCACHE_OFF
|
||||
+
|
||||
+#include "rpi-common.h"
|
||||
+
|
||||
+#endif
|
||||
diff --git a/include/dm/platform_data/serial_bcm283x_mu.h b/include/dm/platform_data/serial_bcm283x_mu.h
|
||||
new file mode 100644
|
||||
index 0000000..4415945
|
||||
--- /dev/null
|
||||
+++ b/include/dm/platform_data/serial_bcm283x_mu.h
|
||||
@@ -0,0 +1,22 @@
|
||||
+/*
|
||||
+ * (C) Copyright 2016 Stephen Warren <swarren@wwwdotorg.org>
|
||||
+ *
|
||||
+ * Derived from pl01x code:
|
||||
+ * Copyright (c) 2014 Google, Inc
|
||||
+ *
|
||||
+ * SPDX-License-Identifier: GPL-2.0+
|
||||
+ */
|
||||
+
|
||||
+#ifndef __serial_bcm283x_mu_h
|
||||
+#define __serial_bcm283x_mu_h
|
||||
+
|
||||
+/*
|
||||
+ *Information about a serial port
|
||||
+ *
|
||||
+ * @base: Register base address
|
||||
+ */
|
||||
+struct bcm283x_mu_serial_platdata {
|
||||
+ unsigned long base;
|
||||
+};
|
||||
+
|
||||
+#endif
|
||||
--
|
||||
2.5.0
|
||||
|
15
armv7-boards
15
armv7-boards
|
@ -57,27 +57,28 @@ novena
|
|||
nyan-big
|
||||
odroid
|
||||
odroid-xu3
|
||||
Orangepi
|
||||
Orangepi_mini
|
||||
orangepi_pc
|
||||
orangepi_plus
|
||||
omap3_beagle
|
||||
omap3_pandora
|
||||
omap4_panda
|
||||
omap5_uevm
|
||||
Orangepi
|
||||
Orangepi_mini
|
||||
orangepi_pc
|
||||
orangepi_plus
|
||||
origen
|
||||
paz00
|
||||
peach-pi
|
||||
peach-pit
|
||||
pov_protab2_ips9
|
||||
q8_a13_tablet
|
||||
q8_a23_tablet_800x480
|
||||
q8_a33_tablet_1024x600
|
||||
q8_a33_tablet_800x480
|
||||
paz00
|
||||
peach-pi
|
||||
peach-pit
|
||||
r7-tv-dongle
|
||||
riotboard
|
||||
rock2
|
||||
rpi_2
|
||||
rpi_3_32b
|
||||
smdkv310
|
||||
snow
|
||||
spring
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
Name: uboot-tools
|
||||
Version: 2016.03
|
||||
Release: 0.3%{?candidate:.%{candidate}}%{?dist}
|
||||
Release: 0.4%{?candidate:.%{candidate}}%{?dist}
|
||||
Summary: U-Boot utilities
|
||||
|
||||
Group: Development/Tools
|
||||
|
@ -15,6 +15,7 @@ Patch1: 0004-Add-BOOTENV_INIT_COMMAND-for-commands-that-may-be-ne.patch
|
|||
Patch2: 0005-port-utilite-to-distro-generic-boot-commands.patch
|
||||
Patch3: 0001-Copy-gcc5-over-to-compiler-gcc6.h-as-a-beginning-of-.patch
|
||||
Patch4: mvebu-enable-generic-distro-boot-config.patch
|
||||
Patch5: 0001-WIP-RPi-3-32-bit-port.patch
|
||||
|
||||
BuildRequires: bc
|
||||
BuildRequires: dtc
|
||||
|
@ -164,7 +165,10 @@ install -p -m 0644 tools/env/fw_env.config $RPM_BUILD_ROOT%{_sysconfdir}
|
|||
%endif
|
||||
|
||||
%changelog
|
||||
* Tue Mar 1 2016 Peter Robinson <pbrobinson@fedoraproject.org> 2016.03-0.2rc3
|
||||
* Sun Mar 6 2016 Peter Robinson <pbrobinson@fedoraproject.org> 2016.03-0.4rc3
|
||||
- Minor cleanups and new devices
|
||||
|
||||
* Tue Mar 1 2016 Peter Robinson <pbrobinson@fedoraproject.org> 2016.03-0.3rc3
|
||||
- Update to 2016.03 RC3
|
||||
|
||||
* Tue Feb 16 2016 Peter Robinson <pbrobinson@fedoraproject.org> 2016.03-0.2rc2
|
||||
|
|
Loading…
Reference in New Issue