aboutsummaryrefslogtreecommitdiffstats
path: root/roms/u-boot/board/microchip
diff options
context:
space:
mode:
Diffstat (limited to 'roms/u-boot/board/microchip')
-rw-r--r--roms/u-boot/board/microchip/mpfs_icicle/Kconfig49
-rw-r--r--roms/u-boot/board/microchip/mpfs_icicle/MAINTAINERS7
-rw-r--r--roms/u-boot/board/microchip/mpfs_icicle/Makefile7
-rw-r--r--roms/u-boot/board/microchip/mpfs_icicle/mpfs_icicle.c125
-rw-r--r--roms/u-boot/board/microchip/pic32mzda/Kconfig16
-rw-r--r--roms/u-boot/board/microchip/pic32mzda/MAINTAINERS6
-rw-r--r--roms/u-boot/board/microchip/pic32mzda/Makefile7
-rw-r--r--roms/u-boot/board/microchip/pic32mzda/README22
-rw-r--r--roms/u-boot/board/microchip/pic32mzda/pic32mzda.c43
9 files changed, 282 insertions, 0 deletions
diff --git a/roms/u-boot/board/microchip/mpfs_icicle/Kconfig b/roms/u-boot/board/microchip/mpfs_icicle/Kconfig
new file mode 100644
index 000000000..467846237
--- /dev/null
+++ b/roms/u-boot/board/microchip/mpfs_icicle/Kconfig
@@ -0,0 +1,49 @@
+if TARGET_MICROCHIP_ICICLE
+
+config SYS_BOARD
+ default "mpfs_icicle"
+
+config SYS_VENDOR
+ default "microchip"
+
+config SYS_CPU
+ default "generic"
+
+config SYS_CONFIG_NAME
+ default "microchip_mpfs_icicle"
+
+config SYS_TEXT_BASE
+ default 0x80000000 if !RISCV_SMODE
+ default 0x80200000 if RISCV_SMODE
+
+config BOARD_SPECIFIC_OPTIONS # dummy
+ def_bool y
+ select GENERIC_RISCV
+ select BOARD_EARLY_INIT_F
+ select BOARD_LATE_INIT
+ imply SMP
+ imply CLK_CCF
+ imply CLK_MPFS
+ imply SYS_NS16550
+ imply CMD_DHCP
+ imply CMD_EXT2
+ imply CMD_EXT4
+ imply CMD_FAT
+ imply CMD_FS_GENERIC
+ imply CMD_NET
+ imply CMD_PING
+ imply CMD_MMC
+ imply DOS_PARTITION
+ imply EFI_PARTITION
+ imply IP_DYN
+ imply ISO_PARTITION
+ imply MACB
+ imply MII
+ imply PHY_LIB
+ imply PHY_VITESSE
+ imply MMC
+ imply MMC_WRITE
+ imply MMC_SDHCI
+ imply MMC_SDHCI_CADENCE
+
+endif
diff --git a/roms/u-boot/board/microchip/mpfs_icicle/MAINTAINERS b/roms/u-boot/board/microchip/mpfs_icicle/MAINTAINERS
new file mode 100644
index 000000000..22f3b97d8
--- /dev/null
+++ b/roms/u-boot/board/microchip/mpfs_icicle/MAINTAINERS
@@ -0,0 +1,7 @@
+Microchip MPFS icicle
+M: Padmarao Begari <padmarao.begari@microchip.com>
+M: Cyril Jean <cyril.jean@microchip.com>
+S: Maintained
+F: board/microchip/mpfs_icicle/
+F: include/configs/microchip_mpfs_icicle.h
+F: configs/microchip_mpfs_icicle_defconfig
diff --git a/roms/u-boot/board/microchip/mpfs_icicle/Makefile b/roms/u-boot/board/microchip/mpfs_icicle/Makefile
new file mode 100644
index 000000000..72b0410dd
--- /dev/null
+++ b/roms/u-boot/board/microchip/mpfs_icicle/Makefile
@@ -0,0 +1,7 @@
+# SPDX-License-Identifier: GPL-2.0+
+#
+# Copyright (C) 2019 Microchip Technology Inc.
+# Padmarao Begari <padmarao.begari@microchip.com>
+#
+
+obj-y += mpfs_icicle.o
diff --git a/roms/u-boot/board/microchip/mpfs_icicle/mpfs_icicle.c b/roms/u-boot/board/microchip/mpfs_icicle/mpfs_icicle.c
new file mode 100644
index 000000000..afef719df
--- /dev/null
+++ b/roms/u-boot/board/microchip/mpfs_icicle/mpfs_icicle.c
@@ -0,0 +1,125 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright (C) 2019 Microchip Technology Inc.
+ * Padmarao Begari <padmarao.begari@microchip.com>
+ */
+
+#include <common.h>
+#include <dm.h>
+#include <env.h>
+#include <init.h>
+#include <asm/global_data.h>
+#include <asm/io.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+#define MPFS_SYSREG_SOFT_RESET ((unsigned int *)0x20002088)
+#define MPFS_SYS_SERVICE_CR ((unsigned int *)0x37020050)
+#define MPFS_SYS_SERVICE_SR ((unsigned int *)0x37020054)
+#define MPFS_SYS_SERVICE_MAILBOX ((unsigned char *)0x37020800)
+
+#define PERIPH_RESET_VALUE 0x1e8u
+#define SERVICE_CR_REQ 0x1u
+#define SERVICE_SR_BUSY 0x2u
+
+static void read_device_serial_number(u8 *response, u8 response_size)
+{
+ u8 idx;
+ u8 *response_buf;
+ unsigned int val;
+
+ response_buf = (u8 *)response;
+
+ writel(SERVICE_CR_REQ, MPFS_SYS_SERVICE_CR);
+ /*
+ * REQ bit will remain set till the system controller starts
+ * processing.
+ */
+ do {
+ val = readl(MPFS_SYS_SERVICE_CR);
+ } while (SERVICE_CR_REQ == (val & SERVICE_CR_REQ));
+
+ /*
+ * Once system controller starts processing the busy bit will
+ * go high and service is completed when busy bit is gone low
+ */
+ do {
+ val = readl(MPFS_SYS_SERVICE_SR);
+ } while (SERVICE_SR_BUSY == (val & SERVICE_SR_BUSY));
+
+ for (idx = 0; idx < response_size; idx++)
+ response_buf[idx] = readb(MPFS_SYS_SERVICE_MAILBOX + idx);
+}
+
+int board_init(void)
+{
+ /* For now nothing to do here. */
+
+ return 0;
+}
+
+int board_early_init_f(void)
+{
+ unsigned int val;
+
+ /* Reset uart, mmc peripheral */
+ val = readl(MPFS_SYSREG_SOFT_RESET);
+ val = (val & ~(PERIPH_RESET_VALUE));
+ writel(val, MPFS_SYSREG_SOFT_RESET);
+
+ return 0;
+}
+
+int board_late_init(void)
+{
+ u32 ret;
+ u32 node;
+ u8 idx;
+ u8 device_serial_number[16] = { 0 };
+ unsigned char mac_addr[6];
+ char icicle_mac_addr[20];
+ void *blob = (void *)gd->fdt_blob;
+
+ node = fdt_path_offset(blob, "ethernet0");
+ if (node < 0) {
+ printf("No ethernet0 path offset\n");
+ return -ENODEV;
+ }
+
+ ret = fdtdec_get_byte_array(blob, node, "local-mac-address", mac_addr, 6);
+ if (ret) {
+ printf("No local-mac-address property\n");
+ return -EINVAL;
+ }
+
+ read_device_serial_number(device_serial_number, 16);
+
+ /* Update MAC address with device serial number */
+ mac_addr[0] = 0x00;
+ mac_addr[1] = 0x04;
+ mac_addr[2] = 0xA3;
+ mac_addr[3] = device_serial_number[2];
+ mac_addr[4] = device_serial_number[1];
+ mac_addr[5] = device_serial_number[0];
+
+ ret = fdt_setprop(blob, node, "local-mac-address", mac_addr, 6);
+ if (ret) {
+ printf("Error setting local-mac-address property\n");
+ return -ENODEV;
+ }
+
+ icicle_mac_addr[0] = '[';
+
+ sprintf(&icicle_mac_addr[1], "%pM", mac_addr);
+
+ icicle_mac_addr[18] = ']';
+ icicle_mac_addr[19] = '\0';
+
+ for (idx = 0; idx < 20; idx++) {
+ if (icicle_mac_addr[idx] == ':')
+ icicle_mac_addr[idx] = ' ';
+ }
+ env_set("icicle_mac_addr", icicle_mac_addr);
+
+ return 0;
+}
diff --git a/roms/u-boot/board/microchip/pic32mzda/Kconfig b/roms/u-boot/board/microchip/pic32mzda/Kconfig
new file mode 100644
index 000000000..4f08e98b9
--- /dev/null
+++ b/roms/u-boot/board/microchip/pic32mzda/Kconfig
@@ -0,0 +1,16 @@
+
+if TARGET_PIC32MZDASK
+
+config SYS_BOARD
+ default "pic32mzda"
+
+config SYS_VENDOR
+ default "microchip"
+
+config SYS_CONFIG_NAME
+ default "pic32mzdask"
+
+config SYS_TEXT_BASE
+ default 0x9d004000
+
+endif
diff --git a/roms/u-boot/board/microchip/pic32mzda/MAINTAINERS b/roms/u-boot/board/microchip/pic32mzda/MAINTAINERS
new file mode 100644
index 000000000..c934f1a1f
--- /dev/null
+++ b/roms/u-boot/board/microchip/pic32mzda/MAINTAINERS
@@ -0,0 +1,6 @@
+PIC32MZDASK BOARD
+M: Purna Chandra Mandal <purna.mandal@microchip.com>
+S: Maintained
+F: board/microchip/pic32mzda/
+F: include/configs/pic32mzdask.h
+F: configs/pic32mzdask_defconfig
diff --git a/roms/u-boot/board/microchip/pic32mzda/Makefile b/roms/u-boot/board/microchip/pic32mzda/Makefile
new file mode 100644
index 000000000..36295302a
--- /dev/null
+++ b/roms/u-boot/board/microchip/pic32mzda/Makefile
@@ -0,0 +1,7 @@
+#
+# (C) Copyright 2015
+# Purna Chandra Mandal, purna.mandal@microchip.com.
+#
+# SPDX-License-Identifier: GPL-2.0+
+#
+obj-y := pic32mzda.o
diff --git a/roms/u-boot/board/microchip/pic32mzda/README b/roms/u-boot/board/microchip/pic32mzda/README
new file mode 100644
index 000000000..91d16ab7d
--- /dev/null
+++ b/roms/u-boot/board/microchip/pic32mzda/README
@@ -0,0 +1,22 @@
+/*
+ * (c) 2015 Purna Chandra Mandal <purna.mandal@microchip.com>
+ */
+
+PIC32MZ[DA] Starter Kit
+----------------------------------------
+PIC32MZ[DA] Starter Kit is based on PIC32MZ[DA] family of micro-controller.
+This family is powered by MIPS M14KEC 32bit general purpose core and has
+advanced microcontroller features and peripherals.
+
+This processor boots with proprietary stage1 bootloader running from internal
+boot-flash. Stage1 bootloader inturns locates and jumps to U-Boot programmed
+on internal program-flash. Finally U-Boot loads OS image (along with other
+required files for booting) from either uSD card, or ethernet, or from USB
+storage.
+
+To boot Linux following three files are mandatory - uEnv.txt (custom U-Boot
+environment file), uImage, *.dtb (platform device-tree-blob file).
+
+U-Boot jumps to Linux using UHI specification.
+
+Visit http://microchip.com for details.
diff --git a/roms/u-boot/board/microchip/pic32mzda/pic32mzda.c b/roms/u-boot/board/microchip/pic32mzda/pic32mzda.c
new file mode 100644
index 000000000..e7337deea
--- /dev/null
+++ b/roms/u-boot/board/microchip/pic32mzda/pic32mzda.c
@@ -0,0 +1,43 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Microchip PIC32MZ[DA] Starter Kit board
+ *
+ * Copyright (C) 2015, Microchip Technology Inc.
+ * Purna Chandra Mandal <purna.mandal@microchip.com>
+ *
+ */
+
+#include <common.h>
+#include <dm.h>
+#include <clk.h>
+#include <init.h>
+#include <malloc.h>
+#include <dt-bindings/clock/microchip,clock.h>
+#include <mach/pic32.h>
+
+#ifdef CONFIG_DISPLAY_BOARDINFO
+int checkboard(void)
+{
+ ulong rate;
+ struct udevice *dev;
+ struct clk clk;
+ int ret;
+
+ printf("Core: %s\n", get_core_name());
+
+ if (uclass_get_device(UCLASS_CLK, 0, &dev))
+ return 0;
+
+ clk.id = PB7CLK;
+ ret = clk_request(dev, &clk);
+ if (ret < 0)
+ return 0;
+
+ rate = clk_get_rate(&clk);
+ printf("CPU Speed: %lu MHz\n", rate / 1000000);
+
+ clk_free(&clk);
+
+ return 0;
+}
+#endif