diff options
Diffstat (limited to 'roms/u-boot/board/microchip')
-rw-r--r-- | roms/u-boot/board/microchip/mpfs_icicle/Kconfig | 49 | ||||
-rw-r--r-- | roms/u-boot/board/microchip/mpfs_icicle/MAINTAINERS | 7 | ||||
-rw-r--r-- | roms/u-boot/board/microchip/mpfs_icicle/Makefile | 7 | ||||
-rw-r--r-- | roms/u-boot/board/microchip/mpfs_icicle/mpfs_icicle.c | 125 | ||||
-rw-r--r-- | roms/u-boot/board/microchip/pic32mzda/Kconfig | 16 | ||||
-rw-r--r-- | roms/u-boot/board/microchip/pic32mzda/MAINTAINERS | 6 | ||||
-rw-r--r-- | roms/u-boot/board/microchip/pic32mzda/Makefile | 7 | ||||
-rw-r--r-- | roms/u-boot/board/microchip/pic32mzda/README | 22 | ||||
-rw-r--r-- | roms/u-boot/board/microchip/pic32mzda/pic32mzda.c | 43 |
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 |