Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/arch/arm/boot/compressed/misc.c b/arch/arm/boot/compressed/misc.c
- index d4f891f..fa9876a 100644
- --- a/arch/arm/boot/compressed/misc.c
- +++ b/arch/arm/boot/compressed/misc.c
- @@ -25,6 +25,14 @@ unsigned int __machine_arch_type;
- static void putstr(const char *ptr);
- extern void error(char *x);
- +
- +#define MEMIO32_WRITE(addr, data) \
- + ((*((volatile unsigned int *)(addr))) = ((unsigned int)(data)))
- +
- +#define MEMIO32_READ(addr) \
- + ((*((volatile unsigned int *)(addr))))
- +
- +
- #include CONFIG_UNCOMPRESS_INCLUDE
- #ifdef CONFIG_DEBUG_ICEDCC
- @@ -141,6 +149,21 @@ void __stack_chk_fail(void)
- extern int do_decompress(u8 *input, int len, u8 *output, void (*error)(char *x));
- +void sleep1(int sec)
- +{
- + unsigned int init_time = MEMIO32_READ(0xf10a380c);
- + unsigned int cur_time = 0;
- + unsigned long i = 0;
- + for (i = 0; i < 12000000; i++) // 5000000: nearly 3 seconds, 9000000: almost 5 seconds
- + {
- + cur_time = MEMIO32_READ(0xf10a380c);
- + if ((cur_time - init_time) > sec)
- + break;
- + }
- +
- + if (i == 12000000)
- + putstr("over 12000000 loops\n");
- +}
- void
- decompress_kernel(unsigned long output_start, unsigned long free_mem_ptr_p,
- @@ -149,6 +172,38 @@ decompress_kernel(unsigned long output_start, unsigned long free_mem_ptr_p,
- {
- int ret;
- +#define REG_GPIO_LOW_DATA_OUT 0xF1018100 // GPIO[31,0]
- +#define REG_GPIO_HIGH_DATA_OUT 0xF1018140 // GPIO[59,32]
- +
- +#define REG_GPIO_DATA_OUT(gpio_bit) ((gpio_bit > 31) ? REG_GPIO_HIGH_DATA_OUT : REG_GPIO_LOW_DATA_OUT)
- +
- +#define GPIO_POWER_ON_HDD1 45
- +#define GPIO_POWER_ON_HDD2 29
- +#define GPIO_POWER_ON_USB 43
- +
- +#define VALUE_POWER_ON_HDD1 0x00002000 // GPIO45 reg high
- +#define VALUE_POWER_ON_HDD2 0x20000000 // GPIO29 reg low
- +#define VALUE_POWER_ON_USB 0x00000800 // GPIO43 reg high
- +
- + unsigned int regvalue = 0;
- +
- + // power on HDD1
- + putstr("Power on HDD1 ...\n");
- + regvalue = MEMIO32_READ(REG_GPIO_DATA_OUT(GPIO_POWER_ON_HDD1)); // get original reg value
- + MEMIO32_WRITE(REG_GPIO_DATA_OUT(GPIO_POWER_ON_HDD1), regvalue|VALUE_POWER_ON_HDD1);
- + sleep1(6);
- +
- + // power on HDD2
- + putstr("Power on HDD2 ...\n");
- + regvalue = MEMIO32_READ(REG_GPIO_DATA_OUT(GPIO_POWER_ON_HDD2)); // get original reg value
- + MEMIO32_WRITE(REG_GPIO_DATA_OUT(GPIO_POWER_ON_HDD2), regvalue|VALUE_POWER_ON_HDD2);
- + sleep1(6);
- +
- + // power on USB
- + putstr("Power on USB ...\n\n");
- + regvalue = MEMIO32_READ(REG_GPIO_DATA_OUT(GPIO_POWER_ON_USB)); // get original reg value
- + MEMIO32_WRITE(REG_GPIO_DATA_OUT(GPIO_POWER_ON_USB), regvalue|VALUE_POWER_ON_USB);
- +
- __stack_chk_guard_setup();
- output_data = (unsigned char *)output_start;
- diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
- index faacd52..580e270 100644
- --- a/arch/arm/boot/dts/Makefile
- +++ b/arch/arm/boot/dts/Makefile
- @@ -882,6 +882,7 @@ dtb-$(CONFIG_MACH_ARMADA_370) += \
- dtb-$(CONFIG_MACH_ARMADA_375) += \
- armada-375-db.dtb
- dtb-$(CONFIG_MACH_ARMADA_38X) += \
- + armada-380-zyxel-nas326.dtb \
- armada-385-db-ap.dtb \
- armada-385-linksys-caiman.dtb \
- armada-385-linksys-cobra.dtb \
- diff --git a/arch/arm/boot/dts/armada-380-zyxel-nas326.dts b/arch/arm/boot/dts/armada-380-zyxel-nas326.dts
- new file mode 100644
- index 0000000..19387c9
- --- /dev/null
- +++ b/arch/arm/boot/dts/armada-380-zyxel-nas326.dts
- @@ -0,0 +1,175 @@
- +/*
- + * Device Tree file for Marvell Armada 380 - STG-328
- + *
- + * Copyright (C) 2016 Henrik Andersson <henrik.4e@gmail.com>
- + *
- + *
- + * This file is licensed under the terms of the GNU General Public
- + * License version 2. This program is licensed "as is" without any
- + * warranty of any kind, whether express or implied.
- + */
- +
- +/dts-v1/;
- +#include "armada-380.dtsi"
- +
- +/ {
- + model = "Marvell Armada 380 STG-328";
- + compatible = "marvell,armada380", "marvell,armada38x";
- +
- + chosen {
- + bootargs = "console=ttyS0,115200";
- + };
- +
- + memory {
- + device_type = "memory";
- + reg = <0x00000000 0x10000000>; /* 256 MB */
- + };
- +
- + soc {
- + ranges = <MBUS_ID(0xf0, 0x01) 0 0xf1000000 0x100000
- + MBUS_ID(0x01, 0x1d) 0 0xfff00000 0x100000
- + MBUS_ID(0x09, 0x19) 0 0xf1100000 0x10000 /* CESA0: PHYS=0xf1100000
- + size 64K */
- + MBUS_ID(0x09, 0x15) 0 0xf1110000 0x10000>; /* CESA1: PHYS=0xf1110000
- + size 64K */
- +
- + internal-regs {
- + ethernet@70000 {
- + status = "okay";
- + phy-mode = "rgmii";
- + fixed-link {
- + speed = <1000>;
- + full-duplex;
- + };
- + };
- +
- + i2c0: i2c@11000 {
- + status = "okay";
- + clock-frequency = <100000>;
- + };
- +
- + i2c1: i2c@11100 {
- + status = "okay";
- + clock-frequency = <100000>;
- + };
- +
- + mdio {
- + status = "okay";
- + };
- +
- + sata@a8000 {
- + status = "okay";
- + };
- +
- +
- + sdhci@d8000 {
- + broken-cd;
- + wp-inverted;
- + bus-width = <8>;
- + status = "okay";
- + };
- +
- + serial@12000 {
- + status = "okay";
- + };
- +
- + spi0: spi@10600 {
- + status = "okay";
- +
- + spi-flash@0 {
- + #address-cells = <1>;
- + #size-cells = <1>;
- + compatible = "w25q32";
- + reg = <0>; /* Chip select 0 */
- + spi-max-frequency = <108000000>;
- + };
- + };
- +
- + usb@58000 {
- + status = "okay";
- + };
- +
- + usb3@f0000 {
- + status = "okay";
- + };
- +
- + usb3@f8000 {
- + status = "okay";
- + };
- +
- + /*
- + * 1GB Flash via NFC NAND controller
- + * by defeault disabled, because NFC
- + * shares same pins with SPI0 and
- + * requires SLM-1358 jumper
- + */
- + nfc: nand@d0000 {
- + #address-cells = <1>;
- + #size-cells = <1>;
- + clock-frequency = <200000000>;
- + status = "okay"; //BLUE_ADD...
- +
- + nfc,nfc-mode = "normal"; /* normal or ganged */
- + nfc,nfc-dma = <0>; /* 0 for no, 1 for dma */
- + nfc,nfc-width = <8>;
- + nfc,ecc-type = <1>; /* 4 bit */
- + nfc,num-cs = <1>;
- +
- + mtd0@00000000 {
- + label = "U-Boot";
- + reg = <0x00000000 0x00200000>; /* 2 MB */
- + };
- +
- + mtd1@00200000 {
- + label = "U-Boot env";
- + reg = <0x00200000 0x00200000>; /* 2 MB */
- + };
- +
- + mtd2@00400000 {
- + label = "Config";
- + reg = <0x00400000 0x00A00000>; /* 10 MB */
- + };
- +
- + mtd3@00600000 {
- + label = "Kernel-1";
- + reg = <0x00E00000 0x00F00000>; /* 15 MB */
- + };
- +
- + mtd4@01500000 {
- + label = "RootFS-1";
- + reg = <0x01D00000 0x06A00000>; /* 106 MB */
- + };
- +
- + mtd5@08300000 {
- + label = "Kernel-2";
- + reg = <0x08700000 0x00F00000>; /* 15 MB */
- + };
- +
- + mtd6@09200000 {
- + label = "RootFS-2";
- + reg = <0x09600000 0x06A00000>; /* 106 MB */
- + };
- + };
- +
- + crypto@9D000 {
- + status = "okay";
- + };
- + };
- +
- + pcie-controller {
- + status = "okay";
- + /*
- + * The two PCIe units are accessible through
- + * standard PCIe slots on the board.
- + */
- + pcie@1,0 {
- + /* Port 0, Lane 0 */
- + status = "okay";
- + };
- + pcie@2,0 {
- + /* Port 1, Lane 0 */
- + status = "okay";
- + };
- + };
- + };
- +};
- diff --git a/arch/arm/configs/nas326_defconfig b/arch/arm/configs/nas326_defconfig
- new file mode 100644
- index 0000000..b99fcec
- --- /dev/null
- +++ b/arch/arm/configs/nas326_defconfig
- @@ -0,0 +1,196 @@
- +CONFIG_AEABI=y
- +CONFIG_AHCI_MVEBU=y
- +CONFIG_ARCH_MVEBU=y
- +CONFIG_ARMADA_THERMAL=y
- +CONFIG_ARM_APPENDED_DTB=y
- +CONFIG_ARM_ATAG_DTB_COMPAT=y
- +CONFIG_ARM_MVEBU_V7_CPUIDLE=y
- +CONFIG_ATA=y
- +CONFIG_AUTOFS4_FS=y
- +CONFIG_BLK_CGROUP=y
- +CONFIG_BLK_DEV_INITRD=y
- +CONFIG_BLK_DEV_SD=y
- +CONFIG_BLK_DEV_MD=y
- +CONFIG_BLK_DEV_DM=y
- +CONFIG_CFG80211=y
- +CONFIG_CGROUPS=y
- +CONFIG_CGROUP_CPUACCT=y
- +CONFIG_CGROUP_DEBUG=y
- +CONFIG_CGROUP_DEVICE=y
- +CONFIG_CGROUP_FREEZER=y
- +CONFIG_CGROUP_PERF=y
- +CONFIG_CGROUP_PIDS=y
- +CONFIG_CGROUP_SCHED=y
- +CONFIG_CGROUP_WRITEBACK=y
- +CONFIG_CPUFREQ_DT=y
- +CONFIG_CPU_FREQ=y
- +CONFIG_CPU_IDLE=y
- +CONFIG_CRYPTO_DEV_MARVELL_CESA=y
- +CONFIG_DEBUG_FS=y
- +CONFIG_DEBUG_INFO=y
- +CONFIG_DEBUG_USER=y
- +CONFIG_DEVTMPFS=y
- +CONFIG_DEVTMPFS_MOUNT=y
- +CONFIG_DM=y
- +CONFIG_DM_CRYPT=y
- +CONFIG_DM_MIRROR=y
- +CONFIG_DM_UEVENT=y
- +CONFIG_DMADEVICES=y
- +CONFIG_EEPROM_AT24=y
- +CONFIG_EXPERT=y
- +CONFIG_EXT4_FS=y
- +CONFIG_FHANDLE=y
- +CONFIG_FIXED_PHY=y
- +CONFIG_GPIO_PCA953X=y
- +CONFIG_GPIO_SYSFS=y
- +CONFIG_HIGHMEM=y
- +CONFIG_HIGH_RES_TIMERS=y
- +CONFIG_I2C=y
- +CONFIG_I2C_BOARDINFO=y
- +CONFIG_I2C_CHARDEV=y
- +CONFIG_I2C_COMPAT=y
- +CONFIG_I2C_HELPER_AUTO=y
- +CONFIG_I2C_MV64XXX=y
- +CONFIG_INET=y
- +CONFIG_INPUT_EVDEV=y
- +CONFIG_IP_PNP=y
- +CONFIG_IP_PNP_BOOTP=y
- +CONFIG_IP_PNP_DHCP=y
- +CONFIG_IRQ_DOMAIN_DEBUG=y
- +CONFIG_ISO9660_FS=y
- +CONFIG_JOLIET=y
- +CONFIG_KEYBOARD_GPIO=y
- +CONFIG_LEDS_CLASS=y
- +CONFIG_LEDS_GPIO=y
- +CONFIG_LEDS_TRIGGERS=y
- +CONFIG_LEDS_TRIGGER_HEARTBEAT=y
- +CONFIG_LEDS_TRIGGER_TIMER=y
- +CONFIG_LOG_BUF_SHIFT=14
- +CONFIG_MACH_ARMADA_370=y
- +CONFIG_MACH_ARMADA_375=y
- +CONFIG_MACH_ARMADA_38X=y
- +CONFIG_MACH_ARMADA_39X=y
- +CONFIG_MACH_ARMADA_XP=y
- +CONFIG_MACH_DOVE=y
- +CONFIG_MAGIC_SYSRQ=y
- +CONFIG_MARVELL_PHY=y
- +CONFIG_MD=y
- +CONFIG_MD_AUTODETECT=y
- +CONFIG_MD_LINEAR=y
- +CONFIG_MD_RAID0=y
- +CONFIG_MD_RAID1=y
- +CONFIG_MD_RAID456=y
- +CONFIG_MEMORY=y
- +CONFIG_MODULES=y
- +CONFIG_MODULE_UNLOAD=y
- +CONFIG_MSDOS_FS=y
- +CONFIG_MTD=y
- +CONFIG_MTD_BLOCK=y
- +CONFIG_MTD_CFI=y
- +CONFIG_MTD_CFI_AMDSTD=y
- +CONFIG_MTD_CFI_INTELEXT=y
- +CONFIG_MTD_CFI_STAA=y
- +CONFIG_MTD_M25P80=y
- +CONFIG_MTD_NAND=y
- +CONFIG_MTD_NAND_PXA3xx=y
- +CONFIG_MTD_PHYSMAP_OF=y
- +CONFIG_MTD_SPI_NOR=y
- +CONFIG_MTD_UBI=y
- +CONFIG_MTD_UBI_WL_THRESHOLD=4096
- +CONFIG_MV643XX_ETH=y
- +CONFIG_MVNETA=y
- +CONFIG_MVPP2=y
- +CONFIG_MV_XOR=y
- +CONFIG_MWIFIEX=y
- +CONFIG_MWIFIEX_SDIO=y
- +CONFIG_NEON=y
- +CONFIG_NET=y
- +CONFIG_NETDEVICES=y
- +CONFIG_NET_DSA_MV88E6XXX=y
- +CONFIG_NEW_LEDS=y
- +CONFIG_NFSD_V3=y
- +CONFIG_NFSD_V4=y
- +CONFIG_NFS_COMMON=y
- +CONFIG_NFS_FS=y
- +CONFIG_NFS_USE_KERNEL_DNS=y
- +CONFIG_NFS_V2=y
- +CONFIG_NFS_V3=y
- +CONFIG_NFS_V4=y
- +CONFIG_NLS_CODEPAGE_437=y
- +CONFIG_NLS_CODEPAGE_850=y
- +CONFIG_NLS_ISO8859_1=y
- +CONFIG_NLS_ISO8859_2=y
- +CONFIG_NLS_UTF8=y
- +CONFIG_NOP_USB_XCEIV=y
- +CONFIG_ORION_WATCHDOG=y
- +CONFIG_PACKET=y
- +CONFIG_PCI=y
- +CONFIG_PCI_MSI=y
- +CONFIG_PCI_MVEBU=y
- +CONFIG_PERF_EVENTS=y
- +CONFIG_PM=y
- +CONFIG_PM_CLK=y
- +CONFIG_PM_SLEEP=y
- +CONFIG_POWER_RESET=y
- +CONFIG_POWER_RESET_GPIO=y
- +CONFIG_POWER_SUPPLY=y
- +CONFIG_PRINTK_TIME=y
- +CONFIG_REGULATOR=y
- +CONFIG_REGULATOR_FIXED_VOLTAGE=y
- +CONFIG_ROOT_NFS=y
- +CONFIG_RTC_CLASS=y
- +CONFIG_RTC_DRV_ARMADA38X=y
- +CONFIG_RTC_DRV_DS1307=y
- +CONFIG_RTC_DRV_MV=y
- +CONFIG_RTC_DRV_PCF8563=y
- +CONFIG_RTC_DRV_S35390A=y
- +CONFIG_RTC_HCTOSYS=y
- +CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
- +CONFIG_RTC_INTF_DEV=y
- +CONFIG_RTC_INTF_PROC=y
- +CONFIG_RTC_INTF_SYSFS=y
- +CONFIG_RTC_LIB=y
- +CONFIG_RTC_SYSTOHC=y
- +CONFIG_SATA_AHCI=y
- +CONFIG_SATA_MV=y
- +CONFIG_SATA_PMP=y
- +CONFIG_SENSORS_GPIO_FAN=y
- +CONFIG_SCSI=y
- +CONFIG_SCSI_DMA=y
- +CONFIG_SCSI_LOWLEVEL=y
- +CONFIG_SCSI_MOD=y
- +CONFIG_SCSI_PROC_FS=y
- +CONFIG_SERIAL_8250=y
- +CONFIG_SERIAL_8250_CONSOLE=y
- +CONFIG_SERIAL_8250_DW=y
- +CONFIG_SERIAL_OF_PLATFORM=y
- +CONFIG_SLAB=y
- +CONFIG_SMP=y
- +CONFIG_SPI=y
- +CONFIG_SPI_ORION=y
- +CONFIG_SRAM=y
- +CONFIG_SYSVIPC=y
- +CONFIG_THERMAL=y
- +CONFIG_TIMER_STATS=y
- +CONFIG_TMPFS=y
- +CONFIG_TMPFS_XATTR=y
- +CONFIG_UBIFS_FS=y
- +CONFIG_UBIFS_FS_LZO=y
- +CONFIG_UBIFS_FS_ZLIB=y
- +CONFIG_UDF_FS=y
- +CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
- +CONFIG_UNIX=y
- +CONFIG_USB=y
- +CONFIG_USB_EHCI_HCD=y
- +CONFIG_USB_EHCI_ROOT_HUB_TT=y
- +CONFIG_USB_HIDDEV=y
- +CONFIG_USB_PRINTER=y
- +CONFIG_USB_STORAGE=y
- +CONFIG_USB_XHCI_HCD=y
- +CONFIG_USB_XHCI_MVEBU=y
- +CONFIG_VFAT_FS=y
- +CONFIG_VFP=y
- +CONFIG_VLAN_8021Q=y
- +CONFIG_WATCHDOG=y
- +CONFIG_ZBOOT_ROM_BSS=0x0
- +CONFIG_ZBOOT_ROM_TEXT=0x0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement