Initial commit
Some checks failed
Build Kernel / Build all affected Kernels (push) Has been cancelled
Build all core packages / Build all core packages for selected target (push) Has been cancelled
Build and Push prebuilt tools container / Build and Push all prebuilt containers (push) Has been cancelled
Build Toolchains / Build Toolchains for each target (push) Has been cancelled
Build host tools / Build host tools for linux and macos based systems (push) Has been cancelled
Coverity scan build / Coverity x86/64 build (push) Has been cancelled

This commit is contained in:
domenico
2025-06-24 12:51:15 +02:00
commit 27c9d80f51
10493 changed files with 1885777 additions and 0 deletions

View File

@@ -0,0 +1,26 @@
# SPDX-License-Identifier: GPL-2.0-only
include $(TOPDIR)/rules.mk
ARCH:=powerpc
BOARD:=apm821xx
BOARDNAME:=AppliedMicro APM821xx
CPU_TYPE:=464fp
FEATURES:=fpu dt gpio ramdisk squashfs usb
SUBTARGETS:=nand sata
KERNEL_PATCHVER:=6.6
define Target/Description
Build images for AppliedMicro APM821xx based boards.
endef
include $(INCLUDE_DIR)/target.mk
KERNELNAME:=uImage
DEFAULT_PACKAGES += \
kmod-leds-gpio kmod-i2c-core kmod-gpio-button-hotplug uboot-envtools \
kmod-hw-crypto-4xx
$(eval $(call BuildTarget))

View File

@@ -0,0 +1,50 @@
. /lib/functions/uci-defaults.sh
board_config_update
board=$(board_name)
case "$board" in
meraki,mr24)
ucidef_set_led_netdev "wan" "WAN" "green:wan" "eth0"
ucidef_set_led_wlan "wlan5g_1" "WIFI 5GHz-1" "green:wlan-0" "phy1tpt"
ucidef_set_led_wlan "wlan5g_0" "WIFI 5GHz-0" "green:wlan-1" "phy1radio"
ucidef_set_led_wlan "wlan2g_1" "WIFI 2.4GHz-1" "green:wlan-2" "phy0tpt"
ucidef_set_led_wlan "wlan2g_0" "WIFI 2.4GHz-0" "green:wlan-3" "phy0radio"
;;
meraki,mx60)
ucidef_set_led_switch "wan" "WAN" "green:wan" "switch0" "0x20"
ucidef_set_led_switch "lan1" "LAN1" "green:lan-0" "switch0" "0x10"
ucidef_set_led_switch "lan2" "LAN2" "green:lan-1" "switch0" "0x08"
ucidef_set_led_switch "lan3" "LAN3" "green:lan-2" "switch0" "0x04"
ucidef_set_led_switch "lan4" "LAN4" "green:lan-3" "switch0" "0x02"
;;
netgear,wndap620)
ucidef_set_led_switch "lan_act" "LAN (Activity)" "green:activity" "switch0" "0x04" "0x0f" "rx tx"
ucidef_set_led_switch "lan_100" "LAN 100Mbps" "amber:lan" "switch0" "0x04" "0x04" "link"
ucidef_set_led_switch "lan_1000" "LAN 1000Mbps" "green:lan" "switch0" "0x04" "0x08" "link"
;;
netgear,wndap660)
ucidef_set_led_netdev "lan_act" "LAN (Activity)" "green:activity" "eth0"
ucidef_set_led_switch "lan1_100" "LAN 100Mbps" "amber:lan-1" "switch0" "0x02" "0x04" "link"
ucidef_set_led_switch "lan1_1000" "LAN 1000Mbps" "green:lan-1" "switch0" "0x02" "0x08" "link"
ucidef_set_led_switch "lan2_100" "LAN 100Mbps" "amber:lan-2" "switch0" "0x04" "0x04" "link"
ucidef_set_led_switch "lan2_1000" "LAN 1000Mbps" "green:lan-2" "switch0" "0x04" "0x08" "link"
ucidef_set_led_wlan "wlan2g" "WLAN2G" "green:wlan-0" "phy0tpt"
ucidef_set_led_wlan "wlan5g" "WLAN5G" "green:wlan-1" "phy1tpt"
;;
netgear,wndr4700)
ucidef_set_led_switch "wan_green" "WAN (green)" "green:wan" "switch0" "0x20"
ucidef_set_led_netdev "wan_yellow" "WAN (yellow)" "yellow:wan" "eth0.2" "tx rx"
;;
esac
board_config_flush
exit 0

View File

@@ -0,0 +1,34 @@
. /lib/functions/system.sh
. /lib/functions/uci-defaults.sh
board_config_update
board=$(board_name)
case "$board" in
meraki,mr24|\
wd,mybooklive|\
wd,mybooklive-duo)
ucidef_set_interface_lan "eth0" "dhcp"
;;
netgear,wndap620)
ucidef_add_switch "switch0" "2:lan" "5@eth0"
;;
netgear,wndap660)
ucidef_add_switch "switch0" "1:lan" "2:lan" "5@eth0"
;;
meraki,mx60|\
netgear,wndr4700)
ucidef_add_switch "switch0" \
"0@eth0" "4:lan" "3:lan" "2:lan" "1:lan" "5:wan"
;;
*)
ucidef_set_interfaces_lan_wan "eth0" "eth1"
;;
esac
board_config_flush
exit 0

View File

@@ -0,0 +1,50 @@
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0-only
. /lib/functions/leds.sh
get_status_led() {
local status_led_file
status_led_file=$(find /sys/class/leds/ -name "*:power" | head -n1)
if [ -d "$status_led_file" ]; then
basename $status_led_file
return
fi;
}
get_failsafe_led() {
local status_led_file
status_led_file=$(find /sys/class/leds/ -name "*:fault" | head -n1)
if [ -d "$status_led_file" ]; then
basename $status_led_file
return
fi;
}
set_state() {
status_led=$(get_status_led)
[ -z "$status_led" ] && return
case "$1" in
preinit)
status_led_blink_preinit
;;
failsafe)
status_led_off
status_led=$(get_failsafe_led)
status_led_blink_failsafe
;;
preinit_regular)
status_led_blink_preinit_regular
;;
upgrade)
status_led_blink_preinit_regular
;;
done)
status_led_on
;;
esac
}

View File

@@ -0,0 +1,19 @@
#!/bin/ash
[ "$ACTION" = "add" ] || exit 0
PHYNBR=${DEVPATH##*/phy}
[ -n "$PHYNBR" ] || exit 0
. /lib/functions.sh
. /lib/functions/system.sh
board=$(board_name)
case "$board" in
netgear,wndap620|\
netgear,wndap660)
macaddr_add $(mtd_get_mac_ascii u-boot-env baseMAC) $(($PHYNBR + 1)) > /sys${DEVPATH}/macaddress
;;
esac

View File

@@ -0,0 +1,15 @@
#!/bin/sh /etc/rc.common
START=98
boot() {
# configuring onboard temp/fan controller to run the fan on its own
# for more information, please read https://www.kernel.org/doc/Documentation/hwmon/sysfs-interface
case $(board_name) in
netgear,wndr4700)
path_to_hwmon='/sys/devices/platform/plb/plb:opb/4ef600700.i2c/i2c-0/0-001b/hwmon/hwmon1'
echo 1 > "$path_to_hwmon/pwm1_mode"
;;
esac
}

View File

@@ -0,0 +1,4 @@
::sysinit:/etc/init.d/rcS S boot
::shutdown:/etc/init.d/rcS K shutdown
::askconsole:/usr/libexec/login.sh
ttyS0::askfirst:/usr/libexec/login.sh

View File

@@ -0,0 +1,56 @@
. /lib/functions.sh
. /lib/functions/migrations.sh
board=$(board_name)
case "$board" in
meraki,mr24)
migrate_leds "orange:power=amber:fault" \
":wifi1=:wlan-0" \
":wifi2=:wlan-1" \
":wifi3=:wlan-2" \
":wifi4=:wlan-3"
;;
meraki,mx60)
migrate_leds ":lan1=:lan-0" \
":lan2=:lan-1" \
":lan3=:lan-2" \
":lan4=:lan-3" \
"orange:power=amber:power" \
"orange:wan=amber:wan"
;;
netgear,wndap620)
migrate_leds ":activity=:lan-0" \
":test=:fault" \
":wlan2g=:wlan-0" \
":wlan5g=:wlan-1" \
":link100=:lan" \
":link1000=:lan-1"
;;
netgear,wndap660)
migrate_leds ":activity=:lan-0" \
":test=:fault" \
":wlan2g=:wlan-0" \
":wlan5g=:wlan-1" \
":lan1-link100=:lan-1" \
":lan1-link1000=:lan-1" \
":lan2-link100=:lan-2" \
":lan2-link1000=:lan-2"
;;
netgear,wndr4700)
migrate_leds "orange:power=amber:fault" \
"white:logo=white:indicator" \
"green:hd=green:disk" \
"red:hd=red:disk-err"
;;
wd,mybooklive)
migrate_leds "red:power=red:fault" \
"blue:power=blue:disk"
;;
esac
remove_devicename_leds
migrations_apply system
exit 0

View File

@@ -0,0 +1,13 @@
. /lib/functions.sh
case "$(board_name)" in
meraki,mx60|\
netgear,wndap620|\
netgear,wndap660|\
netgear,wndr4700)
uci set system.@system[0].compat_version="2.0"
uci commit system
;;
esac
exit 0

View File

@@ -0,0 +1,13 @@
preinit_set_mac_address() {
. /lib/functions.sh
case $(board_name) in
meraki,mr24|\
meraki,mx60)
mac_lan=$(mtd_get_mac_binary_ubi board-config 0x66)
[ -n "$mac_lan" ] && ip link set eth0 address "$mac_lan"
;;
esac
}
boot_hook_add preinit_main preinit_set_mac_address

View File

@@ -0,0 +1,5 @@
apm821xx_set_preinit_iface() {
ifname=eth0
}
boot_hook_add preinit_main apm821xx_set_preinit_iface

View File

@@ -0,0 +1,18 @@
BOOTPART=/dev/sda1
move_config() {
. /lib/functions.sh
. /lib/upgrade/common.sh
case "$(board_name)" in
wd,mybooklive)
if [ -b $BOOTPART ]; then
mkdir -p /boot
mount -t ext4 -o rw,noatime $BOOTPART /boot
[ -f "/boot/$BACKUP_FILE" ] && mv -f "/boot/$BACKUP_FILE" /
fi
;;
esac
}
boot_hook_add preinit_mount_root move_config

View File

@@ -0,0 +1,47 @@
PART_NAME=firmware
REQUIRE_IMAGE_METADATA=1
platform_check_image() {
local board=$(board_name)
case "$board" in
wd,mybooklive)
mbl_do_platform_check "$1"
return $?;
;;
*)
return 0
;;
esac
}
platform_do_upgrade() {
local board=$(board_name)
case "$board" in
wd,mybooklive)
mbl_do_upgrade "$1"
;;
meraki,mr24|\
meraki,mx60|\
netgear,wndap620|\
netgear,wndap660|\
netgear,wndr4700)
nand_do_upgrade "$1"
;;
*)
default_do_upgrade "$1"
;;
esac
}
platform_copy_config() {
local board=$(board_name)
case "$board" in
wd,mybooklive|\
wd,mybooklive-duo)
mbl_copy_config
;;
esac
}

View File

@@ -0,0 +1,94 @@
. /lib/functions.sh
# copied from x86's platform.sh
mbl_do_platform_check() {
local diskdev partdev diff
[ "$#" -gt 1 ] && return 1
export_bootdevice && export_partdevice diskdev 0 || {
echo "Unable to determine upgrade device"
return 1
}
get_partitions "/dev/$diskdev" bootdisk
#extract the boot sector from the image
get_image "$@" | dd of=/tmp/image.bs count=1 bs=512b 2>/dev/null
get_partitions /tmp/image.bs image
#compare tables
diff="$(grep -F -x -v -f /tmp/partmap.bootdisk /tmp/partmap.image)"
rm -f /tmp/image.bs /tmp/partmap.bootdisk /tmp/partmap.image
if [ -n "$diff" ]; then
echo "Partition layout has changed. Full image will be written."
ask_bool 0 "Abort" && exit 1
return 0
fi
return 0;
}
mbl_do_upgrade() {
local diskdev partdev diff
export_bootdevice && export_partdevice diskdev 0 || {
echo "Unable to determine upgrade device"
return 1
}
sync
if [ "$UPGRADE_OPT_SAVE_PARTITIONS" = "1" ]; then
get_partitions "/dev/$diskdev" bootdisk
#extract the boot sector from the image
get_image "$@" | dd of=/tmp/image.bs count=1 bs=512b
get_partitions /tmp/image.bs image
#compare tables
diff="$(grep -F -x -v -f /tmp/partmap.bootdisk /tmp/partmap.image)"
else
diff=1
fi
if [ -n "$diff" ]; then
get_image "$@" | dd of="/dev/$diskdev" bs=4096 conv=fsync
# Separate removal and addtion is necessary; otherwise, partition 1
# will be missing if it overlaps with the old partition 2
partx -d - "/dev/$diskdev"
partx -a - "/dev/$diskdev"
return 0
fi
#iterate over each partition from the image and write it to the boot disk
while read part start size; do
if export_partdevice partdev $part; then
echo "Writing image to /dev/$partdev..."
get_image "$@" | dd of="/dev/$partdev" ibs="512" obs=1M skip="$start" count="$size" conv=fsync
else
echo "Unable to find partition $part device, skipped."
fi
done < /tmp/partmap.image
#copy partition uuid
echo "Writing new UUID to /dev/$diskdev..."
get_image "$@" | dd of="/dev/$diskdev" bs=1 skip=440 count=4 seek=440 conv=fsync
}
mbl_copy_config() {
local partdev
if export_partdevice partdev 1; then
mount -t ext4 -o rw,noatime "/dev/$partdev" /mnt
cp -af "$UPGRADE_BACKUP" "/mnt/$BACKUP_FILE"
umount /mnt
fi
}

View File

@@ -0,0 +1,274 @@
# CONFIG_40x is not set
# CONFIG_440_CPU is not set
CONFIG_44x=y
CONFIG_464_CPU=y
CONFIG_4xx=y
CONFIG_4xx_SOC=y
# CONFIG_ADVANCED_OPTIONS is not set
CONFIG_APM821xx=y
# CONFIG_APOLLO3G is not set
# CONFIG_ARCHES is not set
CONFIG_ARCH_32BIT_OFF_T=y
CONFIG_ARCH_DMA_ADDR_T_64BIT=y
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
CONFIG_ARCH_KEEP_MEMBLOCK=y
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
CONFIG_ARCH_MIGHT_HAVE_PC_SERIO=y
CONFIG_ARCH_MMAP_RND_BITS=11
CONFIG_ARCH_MMAP_RND_BITS_MAX=17
CONFIG_ARCH_MMAP_RND_BITS_MIN=11
CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=17
CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=11
CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT=y
CONFIG_ARCH_SPLIT_ARG64=y
CONFIG_ARCH_STACKWALK=y
CONFIG_ARCH_SUSPEND_POSSIBLE=y
CONFIG_ARCH_WEAK_RELEASE_ACQUIRE=y
CONFIG_AUDIT_ARCH=y
# CONFIG_BAMBOO is not set
# CONFIG_BLK_DEV_INITRD is not set
CONFIG_BLK_MQ_PCI=y
CONFIG_BLUESTONE=y
CONFIG_BOOKE=y
CONFIG_BOOKE_OR_40x=y
CONFIG_BOOKE_WDT=y
# CONFIG_CANYONLANDS is not set
CONFIG_CLONE_BACKWARDS=y
CONFIG_CMDLINE="rootfstype=squashfs noinitrd"
CONFIG_CMDLINE_FROM_BOOTLOADER=y
CONFIG_COMMON_CLK=y
CONFIG_COMPACT_UNEVICTABLE_DEFAULT=1
CONFIG_COMPAT_32BIT_TIME=y
CONFIG_CPU_BIG_ENDIAN=y
CONFIG_CRC16=y
# CONFIG_CRC32_SARWATE is not set
CONFIG_CRC32_SLICEBY8=y
CONFIG_CRYPTO_DEFLATE=y
CONFIG_CRYPTO_JITTERENTROPY=y
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
CONFIG_CRYPTO_LIB_GF128MUL=y
CONFIG_CRYPTO_LIB_POLY1305_RSIZE=1
CONFIG_CRYPTO_LIB_SHA1=y
CONFIG_CRYPTO_LIB_UTILS=y
CONFIG_CRYPTO_LZO=y
# CONFIG_CRYPTO_MD5_PPC is not set
CONFIG_CRYPTO_RNG=y
CONFIG_CRYPTO_RNG2=y
# CONFIG_CRYPTO_SHA1_PPC is not set
CONFIG_CRYPTO_SHA3=y
CONFIG_DATA_SHIFT=12
CONFIG_DMADEVICES=y
CONFIG_DMA_DIRECT_REMAP=y
CONFIG_DMA_ENGINE=y
CONFIG_DMA_OF=y
CONFIG_DTC=y
CONFIG_DW_DMAC=y
CONFIG_DW_DMAC_CORE=y
CONFIG_EARLY_PRINTK=y
# CONFIG_EBONY is not set
CONFIG_EDAC_ATOMIC_SCRUB=y
CONFIG_EDAC_SUPPORT=y
# CONFIG_EIGER is not set
CONFIG_EXCLUSIVE_SYSTEM_RAM=y
CONFIG_EXTRA_TARGETS="uImage"
CONFIG_FIXED_PHY=y
CONFIG_FORCE_PCI=y
# CONFIG_FSL_LBC is not set
CONFIG_FS_IOMAP=y
CONFIG_FUNCTION_ALIGNMENT=0
CONFIG_FWNODE_MDIO=y
CONFIG_FW_LOADER_PAGED_BUF=y
CONFIG_FW_LOADER_SYSFS=y
CONFIG_GENERIC_ALLOCATOR=y
CONFIG_GENERIC_ATOMIC64=y
CONFIG_GENERIC_BUG=y
CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
CONFIG_GENERIC_CLOCKEVENTS=y
CONFIG_GENERIC_CMOS_UPDATE=y
CONFIG_GENERIC_CPU_AUTOPROBE=y
CONFIG_GENERIC_EARLY_IOREMAP=y
CONFIG_GENERIC_GETTIMEOFDAY=y
CONFIG_GENERIC_IDLE_POLL_SETUP=y
CONFIG_GENERIC_IOREMAP=y
CONFIG_GENERIC_IRQ_SHOW=y
CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
CONFIG_GENERIC_ISA_DMA=y
CONFIG_GENERIC_MSI_IRQ=y
CONFIG_GENERIC_PCI_IOMAP=y
CONFIG_GENERIC_SMP_IDLE_THREAD=y
CONFIG_GENERIC_STRNCPY_FROM_USER=y
CONFIG_GENERIC_STRNLEN_USER=y
CONFIG_GENERIC_TIME_VSYSCALL=y
# CONFIG_GEN_RTC is not set
# CONFIG_GLACIER is not set
CONFIG_GPIO_CDEV=y
CONFIG_GPIO_GENERIC=y
CONFIG_GPIO_GENERIC_PLATFORM=y
CONFIG_HAS_DMA=y
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT=y
CONFIG_HAS_IOPORT_MAP=y
CONFIG_I2C=y
CONFIG_I2C_BOARDINFO=y
CONFIG_I2C_CHARDEV=y
CONFIG_I2C_IBM_IIC=y
CONFIG_IBM_EMAC=y
CONFIG_IBM_EMAC_EMAC4=y
CONFIG_IBM_EMAC_POLL_WEIGHT=32
CONFIG_IBM_EMAC_RGMII=y
CONFIG_IBM_EMAC_RXB=128
CONFIG_IBM_EMAC_RX_COPY_THRESHOLD=256
CONFIG_IBM_EMAC_TAH=y
CONFIG_IBM_EMAC_TXB=128
# CONFIG_ICON is not set
CONFIG_ILLEGAL_POINTER_VALUE=0
CONFIG_IRQCHIP=y
CONFIG_IRQ_DOMAIN=y
CONFIG_IRQ_DOMAIN_HIERARCHY=y
CONFIG_IRQ_FORCED_THREADING=y
CONFIG_IRQ_WORK=y
CONFIG_ISA_DMA_API=y
# CONFIG_JFFS2_FS is not set
# CONFIG_KATMAI is not set
CONFIG_KERNEL_START=0xc0000000
CONFIG_LEDS_TRIGGER_MTD=y
CONFIG_LEDS_TRIGGER_PATTERN=y
CONFIG_LIBFDT=y
CONFIG_LOCK_DEBUGGING_SUPPORT=y
CONFIG_LOWMEM_SIZE=0x30000000
CONFIG_LZO_COMPRESS=y
CONFIG_LZO_DECOMPRESS=y
# CONFIG_MATH_EMULATION is not set
CONFIG_MDIO_BUS=y
CONFIG_MDIO_DEVICE=y
CONFIG_MDIO_DEVRES=y
CONFIG_MIGRATION=y
CONFIG_MMU_GATHER_MERGE_VMAS=y
CONFIG_MMU_GATHER_PAGE_SIZE=y
CONFIG_MMU_LAZY_TLB_REFCOUNT=y
CONFIG_MODULES_USE_ELF_RELA=y
CONFIG_MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS=y
CONFIG_MTD_CFI_ADV_OPTIONS=y
# CONFIG_MTD_CFI_GEOMETRY is not set
# CONFIG_MTD_SPLIT_SQUASHFS_ROOT is not set
CONFIG_NEED_DMA_MAP_STATE=y
CONFIG_NEED_PER_CPU_KM=y
CONFIG_NEED_SG_DMA_LENGTH=y
CONFIG_NET_EGRESS=y
CONFIG_NET_INGRESS=y
CONFIG_NET_SELFTESTS=y
CONFIG_NET_XGRESS=y
CONFIG_NOT_COHERENT_CACHE=y
CONFIG_NO_HZ=y
CONFIG_NO_HZ_COMMON=y
CONFIG_NO_HZ_IDLE=y
CONFIG_NR_CPUS=1
CONFIG_NR_IRQS=512
CONFIG_NVMEM=y
CONFIG_NVMEM_LAYOUTS=y
CONFIG_NVMEM_SYSFS=y
CONFIG_NVMEM_U_BOOT_ENV=y
CONFIG_OF=y
CONFIG_OF_ADDRESS=y
CONFIG_OF_EARLY_FLATTREE=y
CONFIG_OF_FLATTREE=y
CONFIG_OF_GPIO=y
CONFIG_OF_GPIO_MM_GPIOCHIP=y
CONFIG_OF_IRQ=y
CONFIG_OF_KOBJ=y
CONFIG_OF_MDIO=y
CONFIG_OLD_SIGACTION=y
CONFIG_OLD_SIGSUSPEND=y
CONFIG_PACKING=y
CONFIG_PAGE_OFFSET=0xc0000000
CONFIG_PAGE_POOL=y
CONFIG_PAGE_SIZE_LESS_THAN_256KB=y
CONFIG_PAGE_SIZE_LESS_THAN_64KB=y
CONFIG_PAHOLE_HAS_LANG_EXCLUDE=y
CONFIG_PCI=y
CONFIG_PCIEAER=y
CONFIG_PCIEPORTBUS=y
CONFIG_PCI_DISABLE_COMMON_QUIRKS=y
CONFIG_PCI_DOMAINS=y
CONFIG_PCI_MSI=y
CONFIG_PCI_MSI_ARCH_FALLBACKS=y
CONFIG_PGTABLE_LEVELS=2
CONFIG_PHYLIB=y
CONFIG_PHYLIB_LEDS=y
CONFIG_PHYSICAL_START=0x00000000
CONFIG_PHYS_64BIT=y
CONFIG_PHYS_ADDR_T_64BIT=y
# CONFIG_PMU_SYSFS is not set
CONFIG_PPC=y
CONFIG_PPC32=y
CONFIG_PPC44x_SIMPLE=y
CONFIG_PPC4xx_GPIO=y
CONFIG_PPC4xx_PCI_EXPRESS=y
# CONFIG_PPC64 is not set
# CONFIG_PPC_47x is not set
# CONFIG_PPC_85xx is not set
# CONFIG_PPC_8xx is not set
CONFIG_PPC_ADV_DEBUG_DACS=2
CONFIG_PPC_ADV_DEBUG_DAC_RANGE=y
CONFIG_PPC_ADV_DEBUG_DVCS=2
CONFIG_PPC_ADV_DEBUG_IACS=4
CONFIG_PPC_ADV_DEBUG_REGS=y
# CONFIG_PPC_BOOK3S_32 is not set
CONFIG_PPC_DCR=y
CONFIG_PPC_DCR_NATIVE=y
# CONFIG_PPC_EARLY_DEBUG is not set
CONFIG_PPC_FPU=y
CONFIG_PPC_FPU_REGS=y
CONFIG_PPC_INDIRECT_PCI=y
CONFIG_PPC_KUAP=y
# CONFIG_PPC_KUAP_DEBUG is not set
CONFIG_PPC_KUEP=y
CONFIG_PPC_MMU_NOHASH=y
CONFIG_PPC_PAGE_SHIFT=12
# CONFIG_PPC_PCI_BUS_NUM_DOMAIN_DEPENDENT is not set
CONFIG_PPC_UDBG_16550=y
CONFIG_PPC_WERROR=y
CONFIG_PREEMPT_NONE_BUILD=y
CONFIG_PTE_64BIT=y
CONFIG_PTP_1588_CLOCK_OPTIONAL=y
# CONFIG_RAINIER is not set
CONFIG_RANDSTRUCT_NONE=y
CONFIG_RAS=y
CONFIG_RATIONAL=y
CONFIG_REGULATOR=y
CONFIG_RSEQ=y
# CONFIG_SAM440EP is not set
# CONFIG_SCOM_DEBUGFS is not set
# CONFIG_SEQUOIA is not set
# CONFIG_SERIAL_8250_FSL is not set
CONFIG_SERIAL_MCTRL_GPIO=y
CONFIG_SERIAL_OF_PLATFORM=y
CONFIG_SGL_ALLOC=y
# CONFIG_SMT_NUM_THREADS_DYNAMIC is not set
CONFIG_SOFTIRQ_ON_OWN_STACK=y
CONFIG_SPARSE_IRQ=y
# CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU is not set
# CONFIG_STATIC_CALL_SELFTEST is not set
CONFIG_SWPHY=y
CONFIG_SYSCTL_EXCEPTION_TRACE=y
# CONFIG_TAISHAN is not set
CONFIG_TARGET_CPU="464"
CONFIG_TARGET_CPU_BOOL=y
CONFIG_TASK_SIZE=0xc0000000
CONFIG_THREAD_INFO_IN_TASK=y
CONFIG_THREAD_SHIFT=13
CONFIG_TICK_CPU_ACCOUNTING=y
CONFIG_TINY_SRCU=y
# CONFIG_TOOLCHAIN_DEFAULT_CPU is not set
CONFIG_USB_SUPPORT=y
CONFIG_VDSO32=y
# CONFIG_VIRTIO_MENU is not set
# CONFIG_VIRT_CPU_ACCOUNTING_NATIVE is not set
# CONFIG_WARP is not set
CONFIG_WATCHDOG_CORE=y
CONFIG_XZ_DEC_BCJ=y
CONFIG_XZ_DEC_POWERPC=y
# CONFIG_YOSEMITE is not set
CONFIG_ZLIB_DEFLATE=y
CONFIG_ZLIB_INFLATE=y

View File

@@ -0,0 +1,466 @@
// SPDX-License-Identifier: GPL-2.0-or-later
/*
* Device Tree for Bluestone (APM821xx) board.
*
* Copyright (c) 2010, Applied Micro Circuits Corporation
* Author: Tirumala R Marri <tmarri@apm.com>
*/
#include <dt-bindings/dma/dw-dmac.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/gpio/gpio.h>
/ {
#address-cells = <2>;
#size-cells = <1>;
dcr-parent = <&{/cpus/cpu@0}>;
compatible = "apm,bluestone";
aliases {
ethernet0 = &EMAC0; /* needed for BSP u-boot */
};
cpus {
#address-cells = <1>;
#size-cells = <0>;
CPU0: cpu@0 {
device_type = "cpu";
model = "PowerPC,apm82181";
reg = <0x00000000>;
clock-frequency = <0>; /* Filled in by U-Boot */
timebase-frequency = <0>; /* Filled in by U-Boot */
i-cache-line-size = <32>;
d-cache-line-size = <32>;
i-cache-size = <32768>;
d-cache-size = <32768>;
dcr-controller;
dcr-access-method = "native";
next-level-cache = <&L2C0>;
};
};
memory {
device_type = "memory";
reg = <0x00000000 0x00000000 0x00000000>; /* Filled in by U-Boot */
};
UIC0: interrupt-controller0 {
compatible = "apm,uic-apm82181", "ibm,uic";
interrupt-controller;
cell-index = <0>;
dcr-reg = <0x0c0 0x009>;
#address-cells = <0>;
#size-cells = <0>;
#interrupt-cells = <2>;
};
UIC1: interrupt-controller1 {
compatible = "apm,uic-apm82181", "ibm,uic";
interrupt-controller;
cell-index = <1>;
dcr-reg = <0x0d0 0x009>;
#address-cells = <0>;
#size-cells = <0>;
#interrupt-cells = <2>;
interrupts = <0x1e IRQ_TYPE_LEVEL_HIGH>,
<0x1f IRQ_TYPE_LEVEL_HIGH>; /* cascade */
interrupt-parent = <&UIC0>;
};
UIC2: interrupt-controller2 {
compatible = "apm,uic-apm82181", "ibm,uic";
interrupt-controller;
cell-index = <2>;
dcr-reg = <0x0e0 0x009>;
#address-cells = <0>;
#size-cells = <0>;
#interrupt-cells = <2>;
interrupts = <0x0a IRQ_TYPE_LEVEL_HIGH>,
<0x0b IRQ_TYPE_LEVEL_HIGH>; /* cascade */
interrupt-parent = <&UIC0>;
};
UIC3: interrupt-controller3 {
compatible = "apm,uic-apm82181","ibm,uic";
interrupt-controller;
cell-index = <3>;
dcr-reg = <0x0f0 0x009>;
#address-cells = <0>;
#size-cells = <0>;
#interrupt-cells = <2>;
interrupts = <0x10 IRQ_TYPE_LEVEL_HIGH>,
<0x11 IRQ_TYPE_LEVEL_HIGH>; /* cascade */
interrupt-parent = <&UIC0>;
};
OCM1: ocm@400040000 {
compatible = "apm,ocm-apm82181", "ibm,ocm";
status = "okay";
cell-index = <1>;
/* configured in U-Boot */
reg = <4 0x00040000 0x8000>; /* 32K */
};
SDR0: sdr {
compatible = "apm,sdr-apm82181", "ibm,sdr-460ex";
dcr-reg = <0x00e 0x002>;
};
CPR0: cpr {
compatible = "apm,cpr-apm82181", "ibm,cpr-460ex";
dcr-reg = <0x00c 0x002>;
};
L2C0: l2c {
compatible = "ibm,l2-cache-apm82181", "ibm,l2-cache";
dcr-reg = <0x020 0x008
0x030 0x008>;
cache-line-size = <32>;
cache-size = <262144>;
interrupt-parent = <&UIC1>;
interrupts = <0x0b IRQ_TYPE_EDGE_RISING>;
};
CPM0: cpm {
compatible = "ibm,cpm-apm821xx", "ibm,cpm";
cell-index = <0>;
dcr-reg = <0x160 0x003>;
pm-cpu = <0x02000000>;
pm-doze = <0x302570F0>;
pm-nap = <0x302570F0>;
pm-deepsleep = <0x302570F0>;
pm-iic-device = <&IIC0>;
pm-emac-device = <&EMAC0>;
unused-units = <0x00000100>;
idle-doze = <0x02000000>;
standby = <0xfeff791d>;
};
plb {
compatible = "apm,plb-apm82181", "ibm,plb-460ex", "ibm,plb4";
#address-cells = <2>;
#size-cells = <1>;
ranges; /* Filled in by U-Boot */
clock-frequency = <0>; /* Filled in by U-Boot */
SDRAM0: sdram {
compatible = "apm,sdram-apm82181", "ibm,sdram-460ex", "ibm,sdram-405gp";
dcr-reg = <0x010 0x002>;
};
RTC: rtc {
compatible = "ibm,rtc";
dcr-reg = <0x240 0x009>;
interrupts = <0x1a IRQ_TYPE_LEVEL_HIGH>;
interrupt-parent = <&UIC2>;
status = "disabled";
};
TRNG: trng@110000 {
compatible = "amcc,ppc460ex-rng", "ppc4xx-rng", "amcc, ppc4xx-trng";
reg = <4 0x00110000 0x100>;
interrupt-parent = <&UIC1>;
interrupts = <0x03 IRQ_TYPE_LEVEL_HIGH>;
status = "disabled";
};
PKA: pka@114000 {
compatible = "ppc4xx-pka", "amcc,ppc4xx-pka", "amcc, ppc4xx-pka";
reg = <4 0x00114000 0x4000>;
interrupt-parent = <&UIC0>;
interrupts = <0x14 IRQ_TYPE_EDGE_RISING>;
status = "disabled";
};
CRYPTO: crypto@180000 {
compatible = "amcc,ppc460ex-crypto", "amcc,ppc4xx-crypto";
reg = <4 0x00180000 0x80400>;
interrupt-parent = <&UIC0>;
interrupts = <0x1d IRQ_TYPE_LEVEL_HIGH>;
status = "disabled"; /* hardware option */
};
MAL0: mcmal {
compatible = "ibm,mcmal-460ex", "ibm,mcmal2";
descriptor-memory = "ocm";
dcr-reg = <0x180 0x062>;
num-tx-chans = <1>;
num-rx-chans = <1>;
#address-cells = <0>;
#size-cells = <0>;
interrupt-parent = <&UIC2>;
interrupts = <0x06 IRQ_TYPE_LEVEL_HIGH>,
<0x07 IRQ_TYPE_LEVEL_HIGH>,
<0x03 IRQ_TYPE_LEVEL_HIGH>,
<0x04 IRQ_TYPE_LEVEL_HIGH>,
<0x05 IRQ_TYPE_LEVEL_HIGH>,
<0x08 IRQ_TYPE_EDGE_FALLING>,
<0x09 IRQ_TYPE_EDGE_FALLING>,
<0x0c IRQ_TYPE_EDGE_FALLING>,
<0x0d IRQ_TYPE_EDGE_FALLING>;
interrupt-names = "txeob", "rxeob", "serr",
"txde", "rxde",
"tx0coal", "tx1coal",
"rx0coal", "rx1coal";
};
POB0: opb {
compatible = "ibm,opb-460ex", "ibm,opb";
#address-cells = <1>;
#size-cells = <1>;
ranges = <0xb0000000 0x00000004 0xb0000000 0x50000000>;
clock-frequency = <0>; /* Filled in by U-Boot */
EBC0: ebc {
compatible = "ibm,ebc-460ex", "ibm,ebc";
dcr-reg = <0x012 0x002>;
#address-cells = <2>;
#size-cells = <1>;
clock-frequency = <0>; /* Filled in by U-Boot */
/* ranges property is supplied by U-Boot */
ranges = <0x00000003 0x00000000 0xe0000000 0x8000000>;
interrupts = <0x06 IRQ_TYPE_LEVEL_HIGH>;
interrupt-parent = <&UIC1>;
nor_flash@0,0 {
compatible = "cfi-flash";
bank-width = <1>;
reg = <0x00000000 0x00000000 0x00100000>;
#address-cells = <1>;
#size-cells = <1>;
status = "disabled";
};
ndfc: ndfc@1,0 {
compatible = "ibm,ndfc";
reg = <00000003 00000000 00002000>;
ccr = <0x00001000>;
bank-settings = <0x80002222>;
status = "disabled";
nand {
/*
* These are the same fixed "MAGIC" values
* settings as in the drivers code.
* They are the same for all devices that
* have NAND.
*/
nand-ecc-engine = <&ndfc>;
nand-ecc-algo = "hamming";
nand-ecc-step-size = <256>;
nand-ecc-strength = <1>;
};
};
};
UART0: serial@ef600300 {
/*
* AMCC's BSP u-boot scans for the "ns16550"
* compatible, without it, u-boot wouldn't
* set the required "clock-frequency".
*
* The hardware documentation states:
* "Register compatibility with 16750 register set"
*/
compatible = "ns16750", "ns16550";
reg = <0xef600300 0x00000008>;
virtual-reg = <0xef600300>;
clock-frequency = <0>; /* Filled in by U-Boot */
interrupt-parent = <&UIC1>;
interrupts = <0x01 IRQ_TYPE_LEVEL_HIGH>;
status = "disabled";
};
UART1: serial@ef600400 {
/* same "ns16750" as with UART0 */
compatible = "ns16750", "ns16550";
reg = <0xef600400 0x00000008>;
virtual-reg = <0xef600400>;
clock-frequency = <0>; /* Filled in by U-Boot */
interrupt-parent = <&UIC0>;
interrupts = <0x01 IRQ_TYPE_LEVEL_HIGH>;
status = "disabled";
};
IIC0: i2c@ef600700 {
compatible = "ibm,iic-460ex", "ibm,iic";
reg = <0xef600700 0x00000014>;
interrupt-parent = <&UIC0>;
interrupts = <0x02 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
};
IIC1: i2c@ef600800 {
compatible = "ibm,iic-460ex", "ibm,iic";
reg = <0xef600800 0x00000014>;
interrupt-parent = <&UIC0>;
interrupts = <0x03 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
};
GPIO0: gpio@ef600b00 {
compatible = "ibm,ppc4xx-gpio";
reg = <0xef600b00 0x00000048>;
#gpio-cells = <2>;
gpio-controller;
status = "disabled";
};
EMAC0: ethernet@ef600c00 {
device_type = "network";
compatible = "ibm,emac-apm821xx", "ibm,emac4sync";
interrupt-parent = <&EMAC0>;
interrupts = <0 1>;
#interrupt-cells = <1>;
#address-cells = <0>;
#size-cells = <0>;
interrupt-map = <0 &UIC2 0x10 IRQ_TYPE_LEVEL_HIGH>,
<1 &UIC2 0x14 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "status", "wake";
reg = <0xef600c00 0x000000c4>;
local-mac-address = [000000000000]; /* Filled in by U-Boot */
mal-device = <&MAL0>;
mal-tx-channel = <0>;
mal-rx-channel = <0>;
cell-index = <0>;
max-frame-size = <9000>;
rx-fifo-size = <16384>;
tx-fifo-size = <2048>;
phy-mode = "rgmii";
phy-map = <0x00000000>;
rgmii-device = <&RGMII0>;
rgmii-channel = <0>;
tah-device = <&TAH0>;
tah-channel = <0>;
has-inverted-stacr-oc;
has-new-stacr-staopc;
status = "disabled";
};
TAH0: emac-tah@ef601350 {
compatible = "ibm,tah-460ex", "ibm,tah";
reg = <0xef601350 0x00000030>;
};
RGMII0: emac-rgmii@ef601500 {
compatible = "ibm,rgmii-405ex", "ibm,rgmii";
reg = <0xef601500 0x00000008>;
has-mdio;
};
};
USBOTG0: usbotg@bff80000 {
compatible = "amcc,dwc-otg";
reg = <4 0xbff80000 0x10000>;
interrupt-parent = <&USBOTG0>;
interrupts = <0 1 2>;
#interrupt-cells = <1>;
#address-cells = <0>;
#size-cells = <0>;
interrupt-map = <0 &UIC2 0x1c IRQ_TYPE_LEVEL_HIGH>,
<1 &UIC1 0x1a IRQ_TYPE_LEVEL_LOW>,
<2 &UIC0 0x0c IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "usb-otg", "high-power", "dma";
dr_mode = "host";
status = "disabled";
};
AHBDMA0: dma@bffd0800 {
compatible = "snps,dma-spear1340";
reg = <4 0xbffd0800 0x400>;
interrupt-parent = <&UIC0>;
interrupts = <0x19 IRQ_TYPE_LEVEL_HIGH>;
#dma-cells = <3>;
dma-channels = <2>;
dma-masters = <3>;
block_size = <4095>;
data-width = <4>, <4>, <4>;
multi-block = <1>, <1>;
chan_allocation_order = <1>;
chan_priority = <1>;
snps,dma-protection-control =
<(DW_DMAC_HPROT1_PRIVILEGED_MODE |
DW_DMAC_HPROT2_BUFFERABLE)>;
is_memcpy;
};
SATA0: sata@bffd1000 {
compatible = "amcc,sata-460ex";
reg = <4 0xbffd1000 0x800>;
interrupt-parent = <&UIC0>;
interrupts = <0x1a IRQ_TYPE_LEVEL_HIGH>;
dmas = <&AHBDMA0 0 0 1>;
dma-names = "sata-dma";
status = "disabled";
#address-cells = <1>;
#size-cells = <0>;
};
SATA1: sata@bffd1800 {
compatible = "amcc,sata-460ex";
reg = <4 0xbffd1800 0x800>;
interrupt-parent = <&UIC0>;
interrupts = <0x1b IRQ_TYPE_LEVEL_HIGH>;
dmas = <&AHBDMA0 1 0 2>;
dma-names = "sata-dma";
status = "disabled";
#address-cells = <1>;
#size-cells = <0>;
};
PCIE0: pciex@d00000000 {
device_type = "pci"; /* see ppc4xx_pci_find_bridge */
#interrupt-cells = <1>;
#size-cells = <2>;
#address-cells = <3>;
compatible = "ibm,plb-pciex-apm821xx", "ibm,plb-pciex";
primary;
port = <0x0>; /* port number */
reg = <0x0000000d 0x00000000 0x20000000>, /* Config space access */
<0x0000000c 0x08010000 0x00001000>; /* Registers */
dcr-reg = <0x100 0x020>;
sdr-base = <0x300>;
/*
* Outbound ranges, one memory and one IO,
* later cannot be changed
*/
ranges = <0x02000000 0x00000000 0x80000000 0x0000000e 0x00000000 0x00000000 0x80000000>,
<0x02000000 0x00000000 0x00000000 0x0000000f 0x00000000 0x00000000 0x00100000>,
<0x01000000 0x00000000 0x00000000 0x0000000f 0x80000000 0x00000000 0x00010000>;
/* Inbound 2GB range starting at 0 */
dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x0 0x80000000>;
/* This drives busses 0x40 to 0x7f */
bus-range = <0x40 0x7f>;
/*
* Legacy interrupts (note the weird polarity, the bridge seems
* to invert PCIe legacy interrupts).
* We are de-swizzling here because the numbers are actually for
* port of the root complex virtual P2P bridge. But I want
* to avoid putting a node for it in the tree, so the numbers
* below are basically de-swizzled numbers.
* The real slot is on idsel 0, so the swizzling is 1:1
*/
interrupt-map-mask = <0x0 0x0 0x0 0x7>;
interrupt-map =
<0x0 0x0 0x0 0x1 &UIC3 0x0c IRQ_TYPE_LEVEL_HIGH>, /* swizzled int A */
<0x0 0x0 0x0 0x2 &UIC3 0x0d IRQ_TYPE_LEVEL_HIGH>, /* swizzled int B */
<0x0 0x0 0x0 0x3 &UIC3 0x0e IRQ_TYPE_LEVEL_HIGH>, /* swizzled int C */
<0x0 0x0 0x0 0x4 &UIC3 0x0f IRQ_TYPE_LEVEL_HIGH>; /* swizzled int D */
status = "disabled";
};
};
};

View File

@@ -0,0 +1,251 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
* Device Tree Source for Meraki MR24 (Ikarem)
*
* Copyright (C) 2016 Chris Blake <chrisrblake93@gmail.com>
*
* Based on Cisco Meraki GPL Release r23-20150601 MR24 DTS
*/
/dts-v1/;
#include <dt-bindings/leds/common.h>
#include "apm82181.dtsi"
/ {
model = "Meraki MR24 Access Point";
compatible = "meraki,mr24", "meraki,ikarem", "apm,bluestone";
aliases {
serial0 = &UART1;
};
chosen {
stdout-path = "/plb/opb/serial@ef600400";
};
};
&CRYPTO {
status = "okay";
};
&PKA {
status = "okay";
};
&TRNG {
status = "okay";
};
&ndfc {
/* Ikarem has 32MB of NAND */
status = "okay";
nand {
nand-is-boot-medium;
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "u-boot";
reg = <0x00000000 0x00150000>;
read-only;
};
partition@150000 {
/*
* The u-boot environment size is one NAND
* block (16KiB). u-boot allocates four NAND
* blocks (64KiB) in order to have spares
* around for bad block management
*/
label = "u-boot-env";
compatible = "u-boot,env";
reg = <0x00150000 0x00010000>;
read-only;
};
partition@160000 {
/*
* redundant u-boot environment.
* has to be kept it in sync with the
* data in "u-boot-env".
*/
label = "u-boot-env-redundant";
reg = <0x00160000 0x00010000>;
read-only;
};
partition@170000 {
label = "oops";
reg = <0x00170000 0x00010000>;
};
partition@180000 {
label = "ubi";
reg = <0x00180000 0x01e80000>;
};
};
};
};
&UART1 {
status = "okay";
};
&GPIO0 {
status = "okay";
};
&IIC0 {
status = "okay";
/* Boot ROM is at 0x52-0x53, do not touch */
/* Unknown chip at 0x6e, not sure what it is */
};
&EMAC0 {
status = "okay";
phy-mode = "rgmii-id";
phy-map = <0x2>;
phy-address = <0x1>;
phy-handle = <&phy>;
mdio {
#address-cells = <1>;
#size-cells = <0>;
phy: phy@1 {
compatible = "ethernet-phy-ieee802.3-c22";
reg = <1>;
};
};
};
&POB0 {
leds {
compatible = "gpio-leds";
led-0 {
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_POWER;
gpios = <&GPIO0 18 GPIO_ACTIVE_LOW>;
};
led-1 {
color = <LED_COLOR_ID_AMBER>;
function = LED_FUNCTION_FAULT;
gpios = <&GPIO0 19 GPIO_ACTIVE_LOW>;
panic-indicator;
};
led-2 {
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_WAN;
gpios = <&GPIO0 17 GPIO_ACTIVE_LOW>;
};
led-3 {
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_WLAN;
function-enumerator = <0>;
gpios = <&GPIO0 23 GPIO_ACTIVE_LOW>;
};
led-4 {
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_WLAN;
function-enumerator = <1>;
gpios = <&GPIO0 22 GPIO_ACTIVE_LOW>;
};
led-5 {
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_WLAN;
function-enumerator = <2>;
gpios = <&GPIO0 21 GPIO_ACTIVE_LOW>;
};
led-6 {
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_WLAN;
function-enumerator = <3>;
gpios = <&GPIO0 20 GPIO_ACTIVE_LOW>;
};
};
keys {
compatible = "gpio-keys";
button-restart {
/* Label as per Meraki's "MR24 Installation Guide" */
label = "Factory Reset Button";
linux,code = <KEY_RESTART>;
interrupt-parent = <&UIC1>;
interrupts = <0x15 IRQ_TYPE_EDGE_FALLING>;
gpios = <&GPIO0 16 GPIO_ACTIVE_LOW>;
debounce-interval = <60>;
};
};
};
&PCIE0 {
status = "okay";
/*
* relevant lspci topology:
*
* -+-[0000:40]---00.0-[41-7f]----00.0-[42-45]--+-02.0-[43]----00.0
* +-03.0-[44]----00.0
*
*/
bridge@64,0 {
reg = <0x00400000 0 0 0 0>;
#address-cells = <3>;
#size-cells = <2>;
ranges;
bridge@65,0 {
/* IDT PES3T3 PCI Express Switch */
compatible = "pci111d,8039";
reg = <0x00410000 0 0 0 0>;
#address-cells = <3>;
#size-cells = <2>;
ranges;
bridge@66,2 {
compatible = "pci111d,8039";
reg = <0x00421000 0 0 0 0>;
#address-cells = <3>;
#size-cells = <2>;
ranges;
wifi0: wifi@67,0 {
/* Atheros AR9380 2.4GHz */
compatible = "pci168c,0030";
reg = <0x00430000 0 0 0 0>;
interrupts = <3>; /* INTC 4.1.1 */
};
};
bridge@66,3 {
compatible = "pci111d,8039";
reg = <0x00421800 0 0 0 0>;
#address-cells = <3>;
#size-cells = <2>;
ranges;
wifi1: wifi@68,0 {
/* Atheros AR9380 5GHz */
compatible = "pci168c,0030";
reg = <0x00440000 0 0 0 0>;
interrupts = <4>; /* INTD 4.1.1 */
};
};
};
};
};

View File

@@ -0,0 +1,211 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
* Device Tree Source for Meraki MX60/MX60W (Buckminster)
*
* Copyright (C) 2016 Chris Blake <chrisrblake93@gmail.com>
*
* Based on Cisco Meraki DTS extracted from release wired-12-217818
*/
/dts-v1/;
#include <dt-bindings/leds/common.h>
#include "apm82181.dtsi"
/ {
model = "Meraki MX60/MX60W Security Appliance";
compatible = "meraki,mx60", "meraki,buckminster", "apm,bluestone";
aliases {
serial0 = &UART1;
};
chosen {
stdout-path = "/plb/opb/serial@ef600400";
};
};
&CRYPTO {
status = "okay";
};
&PKA {
status = "okay";
};
&TRNG {
status = "okay";
};
&USBOTG0 {
status = "okay";
dr_mode = "host";
};
&ndfc {
/* Buckminster has 1GiB of NAND */
status = "okay";
nand {
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "u-boot";
reg = <0x00000000 0x00100000>;
read-only;
};
partition@100000 {
label = "u-boot-env";
reg = <0x00100000 0x00100000>;
compatible = "u-boot,env";
read-only;
};
partition@200000 {
label = "oops";
reg = <0x00200000 0x00040000>;
};
partition@240000 {
label = "ubi";
reg = <0x00240000 0x3fdc0000>;
};
};
};
};
&UART1 {
status = "okay";
};
&GPIO0 {
status = "okay";
};
&IIC0 {
status = "okay";
};
&EMAC0 {
status = "okay";
phy-handle = <&phy0>;
mdio {
#address-cells = <1>;
#size-cells = <0>;
phy0: ethernet-phy@0 {
compatible = "ethernet-phy-id004d.d034";
reg = <0>;
qca,mib-poll-interval = <500>;
qca,ar8327-initvals = <
0x0010 0x40000000
0x0624 0x007f7f7f
0x0004 0x07a00000 /* PAD0_MODE */
0x000c 0x01000000 /* PAD6_MODE */
0x007c 0x0000007e /* PORT0_STATUS */
>;
};
};
};
&POB0 {
leds {
compatible = "gpio-leds";
led-0 {
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_POWER;
gpios = <&GPIO0 18 GPIO_ACTIVE_LOW>;
};
led-1 {
color = <LED_COLOR_ID_AMBER>;
function = LED_FUNCTION_FAULT;
gpios = <&GPIO0 19 GPIO_ACTIVE_LOW>;
panic-indicator;
};
led-2 {
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_WAN;
gpios = <&GPIO0 17 GPIO_ACTIVE_LOW>;
};
led-3 {
color = <LED_COLOR_ID_AMBER>;
function = LED_FUNCTION_WAN;
gpios = <&GPIO0 15 GPIO_ACTIVE_LOW>;
};
led-4 {
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_LAN;
function-enumerator = <0>;
gpios = <&GPIO0 20 GPIO_ACTIVE_LOW>;
};
led-5 {
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_LAN;
function-enumerator = <1>;
gpios = <&GPIO0 21 GPIO_ACTIVE_LOW>;
};
led-6 {
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_LAN;
function-enumerator = <2>;
gpios = <&GPIO0 22 GPIO_ACTIVE_LOW>;
};
led-7 {
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_LAN;
function-enumerator = <3>;
gpios = <&GPIO0 23 GPIO_ACTIVE_LOW>;
};
};
keys {
compatible = "gpio-keys";
button-restart {
label = "Reset button";
linux,code = <KEY_RESTART>;
gpios = <&GPIO0 16 GPIO_ACTIVE_LOW>;
interrupt-parent = <&UIC1>;
interrupts = <0x15 IRQ_TYPE_EDGE_FALLING>;
debounce-interval = <60>;
};
};
};
&PCIE0 {
/* Leave this enabled as u-boot on the MX60 will disable it for us */
status = "okay";
/*
* relevant lspci topology:
*
* -+-[0000:40]---00.0-[41-7f]----00.0
*/
bridge@64,0 {
reg = <0x00400000 0 0 0 0>;
#address-cells = <3>;
#size-cells = <2>;
ranges;
wifi0: wifi@65,0 {
/* Atheros AR9380 2.4/5GHz */
compatible = "pci168c,0030";
reg = <0x00410000 0 0 0 0>;
interrupts = <1>; /* INTA */
};
};
};

View File

@@ -0,0 +1,47 @@
// SPDX-License-Identifier: GPL-2.0-only
/dts-v1/;
#include "netgear-wndap6x0.dtsi"
/ {
model = "Netgear WNDAP620";
compatible = "netgear,wndap620", "apm,bluestone";
};
&LEDS {
led-5 {
function = LED_FUNCTION_LAN;
function-enumerator = <1>;
color = <LED_COLOR_ID_GREEN>;
gpios = <&GPIO0 9 GPIO_ACTIVE_HIGH>;
};
led-6 {
function = LED_FUNCTION_LAN;
color = <LED_COLOR_ID_AMBER>;
gpios = <&GPIO0 10 GPIO_ACTIVE_HIGH>;
};
};
&PCIE0 {
/*
* relevant lspci topology:
*
* -+-[0000:40]---00.0-[41-7f]----00.0
*/
bridge@64,0 {
reg = <0x00400000 0 0 0 0>;
#address-cells = <3>;
#size-cells = <2>;
ranges;
wifi0: wifi@65,0 {
/* Atheros AR9380 5GHz */
compatible = "pci168c,0030";
reg = <0x00410000 0 0 0 0>;
interrupts = <1>; /* INTA */
};
};
};

View File

@@ -0,0 +1,96 @@
// SPDX-License-Identifier: GPL-2.0-only
/dts-v1/;
#include "netgear-wndap6x0.dtsi"
/ {
model = "Netgear WNDAP660";
compatible = "netgear,wndap660", "apm,bluestone";
};
&LEDS {
led-5 {
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_LAN;
function-enumerator = <1>;
gpios = <&GPIO0 9 GPIO_ACTIVE_HIGH>;
};
led-6 {
color = <LED_COLOR_ID_AMBER>;
function = LED_FUNCTION_LAN;
function-enumerator = <1>;
gpios = <&GPIO0 10 GPIO_ACTIVE_HIGH>;
};
led-7 {
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_LAN;
function-enumerator = <2>;
gpios = <&GPIO0 22 GPIO_ACTIVE_HIGH>;
};
led-8 {
color = <LED_COLOR_ID_AMBER>;
function = LED_FUNCTION_LAN;
function-enumerator = <2>;
gpios = <&GPIO0 23 GPIO_ACTIVE_HIGH>;
};
};
&PCIE0 {
/*
* relevant lspci topology:
*
* -+-[0000:40]---00.0-[41-7f]----00.0-[42-45]--+-02.0-[43]----00.0
* +-03.0-[44]----00.0
*
*/
bridge@64,0 {
reg = <0x00400000 0 0 0 0>;
#address-cells = <3>;
#size-cells = <2>;
ranges;
bridge@65,0 {
/* IDT PES3T3 PCI Express Switch */
compatible = "pci111d,8039";
reg = <0x00410000 0 0 0 0>;
#address-cells = <3>;
#size-cells = <2>;
ranges;
bridge@66,2 {
compatible = "pci111d,8039";
reg = <0x00421000 0 0 0 0>;
#address-cells = <3>;
#size-cells = <2>;
ranges;
wifi0: wifi@67,0 {
/* Atheros AR9380 2.4/5GHz */
compatible = "pci168c,0030";
reg = <0x00430000 0 0 0 0>;
interrupts = <3>; /* INTC */
};
};
bridge@66,3 {
compatible = "pci111d,8039";
reg = <0x00421800 0 0 0 0>;
#address-cells = <3>;
#size-cells = <2>;
ranges;
wifi1: wifi@68,0 {
/* Atheros AR9380 2.4/5GHz */
compatible = "pci168c,0030";
reg = <0x00440000 0 0 0 0>;
interrupts = <4>; /* INTD */
};
};
};
};
};

View File

@@ -0,0 +1,245 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
* Device Tree Source for Netgear WNDAP620 and WNDAP660
*/
#include <dt-bindings/leds/common.h>
#include "apm82181.dtsi"
/ {
aliases {
serial0 = &UART0;
};
chosen {
stdout-path = "/plb/opb/serial@ef600300";
};
};
&CRYPTO {
status = "okay";
};
&PKA {
status = "okay";
};
&TRNG {
status = "okay";
};
&ndfc {
status = "okay";
/* 32 MiB SLC NAND Flash */
nand {
nand-is-boot-medium;
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "u-boot";
reg = <0x00000000 0x00100000>;
read-only;
};
partition@100000 {
compatible = "u-boot,env";
label = "u-boot-env";
reg = <0x00100000 0x0004000>;
read-only;
ethaddr {
};
bootcmd {
};
serno {
};
ProductID {
};
HardwareVer {
};
};
/* 0x104000 - 0x10ffff free */
partition@110000 {
label = "firmware";
reg = <0x00110000 0x01ac0000>;
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
/*
* The u-boot bootloader will look at this
* offset (0x110000) for an uImage binary.
*/
label = "kernel";
reg = <0x00000000 0x005f0000>;
};
partition@5f0000 {
label = "ubi";
reg = <0x005f0000 0x014d0000>;
};
};
partition@1bd0000 {
/*
* original vendor device-tree - do not use or
* overwrite. The original u-boot also supports
* the gzipped legacy monolithic/Multi-File Image
* format, which is a better choice.
*/
label = "device-tree";
reg = <0x01bd0000 0x0010000>;
read-only;
};
partition@1be0000 {
label = "var";
reg = <0x01be0000 0x00400000>;
read-only;
};
partition@1fe0000 {
label = "manudata";
reg = <0x01fe0000 0x00020000>;
read-only;
};
};
};
};
&UART0 {
status = "okay";
};
&GPIO0 {
status = "okay";
};
&EMAC0 {
status = "okay";
fixed-link {
speed = <1000>;
full-duplex;
pause;
asym-pause;
};
mdio0: mdio {
#address-cells = <1>;
#size-cells = <0>;
};
};
&POB0 {
keys {
compatible = "gpio-keys";
button-restart {
label = "Reset Button";
gpios = <&GPIO0 16 GPIO_ACTIVE_LOW>;
linux,code = <KEY_RESTART>;
interrupt-parent = <&UIC1>;
interrupts = <0x15 IRQ_TYPE_EDGE_FALLING>;
debounce-interval = <60>;
};
};
LEDS: leds {
compatible = "gpio-leds";
led-0 {
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_POWER;
gpios = <&GPIO0 18 GPIO_ACTIVE_HIGH>;
};
led-1 {
color = <LED_COLOR_ID_AMBER>;
function = LED_FUNCTION_FAULT;
gpios = <&GPIO0 17 GPIO_ACTIVE_HIGH>;
panic-indicator;
};
led-2 {
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_LAN;
function-enumerator = <0>;
gpios = <&GPIO0 21 GPIO_ACTIVE_HIGH>;
};
led-3 {
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_WLAN;
function-enumerator = <0>;
gpios = <&GPIO0 19 GPIO_ACTIVE_HIGH>;
};
led-4 {
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_WLAN;
function-enumerator = <1>;
gpios = <&GPIO0 20 GPIO_ACTIVE_HIGH>;
};
};
gpio-export {
compatible = "gpio-export";
internal-antenna {
gpio-export,name = "wndap6x0:internal-antenna";
gpio-export,output = <1>;
gpios = <&GPIO0 11 GPIO_ACTIVE_HIGH>;
};
external-antenna {
gpio-export,name = "wndap6x0:external-antenna";
gpio-export,output = <0>;
gpios = <&GPIO0 14 GPIO_ACTIVE_HIGH>;
};
mains-powered {
/*
* Input pin describing what powers the AP
* 0/Low = PoE
* 1/High = 12v mains powered
*/
gpio-export,name = "wndap620:mains-powered";
gpios = <&GPIO0 3 GPIO_ACTIVE_HIGH>;
};
};
rtl8367b {
compatible = "realtek,rtl8367b";
realtek,extif0 = <1 2 1 1 1 1 1 1 2>;
mii-bus = <&mdio0>;
};
};
&PCIE0 {
status = "okay";
};
&IIC0 {
status = "okay";
at24@52 {
compatible = "atmel,24c04";
reg = <0x52>;
pagesize = <16>;
read-only;
};
};

View File

@@ -0,0 +1,577 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
* Device Tree Source for Netgear WNDR4700/WNDR4720 Series
*
* Copyright 2008 DENX Software Engineering, Stefan Roese <sr@denx.de>
*/
/dts-v1/;
#include <dt-bindings/thermal/thermal.h>
#include <dt-bindings/leds/common.h>
#include "apm82181.dtsi"
/ {
model = "Netgear WNDR4700/WNDR4720 Series";
compatible = "netgear,wndr4700", "apm,bluestone";
aliases {
serial0 = &UART0;
};
chosen {
stdout-path = "/plb/opb/serial@ef600300:115200n8";
};
thermal-zones {
cpu_thermal: cpu-thermal {
polling-delay-passive = <10000>; /* milliseconds */
polling-delay = <20000>; /* milliseconds */
thermal-sensors = <&temp0 1>;
/*
* REVISIT:
*
* Add the <&drive_temp>; sensor there and wire up
* the coefficients = <1 1>; property.
*
* Note: The kernel does not yet support more than
* one sensor (see of_thermal.c's function:
* thermal_of_build_thermal_zon()). Once this is
* implemented.
*/
trips {
/*
* Once the thermal governers are a bit smarter
* and do hysteresis properly, we can disable
* the fan when the HDD and CPU has < 39 C.
*/
cpu_alert0: board-alert0 {
temperature = <25000>;
hysteresis = <2000>;
type = "active";
};
cpu_alert1: cpu-alert1 {
temperature = <27000>; /* millicelsius */
hysteresis = <2000>; /* millicelsius */
type = "active";
};
cpu_alert2: cpu-alert2 {
temperature = <65000>; /* millicelsius */
hysteresis = <2000>; /* millicelsius */
type = "active";
};
cpu_alert3: cpu-alert3 {
temperature = <70000>; /* millicelsius */
hysteresis = <2000>; /* millicelsius */
type = "active";
};
cpu_alert4: cpu-alert4 {
temperature = <75000>; /* millicelsius */
hysteresis = <2000>; /* millicelsius */
type = "active";
};
cpu_alert5: cpu-alert5 {
temperature = <80000>; /* millicelsius */
hysteresis = <2000>; /* millicelsius */
type = "active";
};
cpu_alert6: cpu-alert6 {
temperature = <85000>; /* millicelsius */
hysteresis = <2000>; /* millicelsius */
type = "active";
};
cpu_crit: cpu-crit {
temperature = <90000>; /* millicelsius */
hysteresis = <2000>; /* millicelsius */
type = "critical";
};
};
cooling-maps {
map0 {
trip = <&cpu_alert0>;
cooling-device = <&fan0 THERMAL_NO_LIMIT 0>;
};
map1 {
trip = <&cpu_alert1>;
cooling-device = <&fan0 1 1>;
};
map2 {
trip = <&cpu_alert2>;
cooling-device = <&fan0 2 4>;
};
map3 {
trip = <&cpu_alert3>;
cooling-device = <&fan0 4 8>;
};
map4 {
trip = <&cpu_alert4>;
cooling-device = <&fan0 9 12>;
};
map5 {
trip = <&cpu_alert5>;
cooling-device = <&fan0 13 15>;
};
map6 {
trip = <&cpu_alert6>;
cooling-device =<&fan0 16 THERMAL_NO_LIMIT>;
};
};
};
};
};
&CRYPTO {
status = "okay";
};
&PKA {
status = "okay";
};
&TRNG {
status = "okay";
};
&SATA1 {
status = "okay";
/*
* This drive may have a temperature sensor with a
* thermal zone we can use for thermal control of the
* chassis temperature using the fan.
*/
drive_temp: sata-port@0 {
reg = <0>;
#thermal-sensor-cells = <0>;
};
};
&USBOTG0 {
status = "okay";
dr_mode = "host";
};
&ndfc {
status = "okay";
/* 128 MiB Nand Flash */
nand {
nand-is-boot-medium;
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "uboot";
reg = <0x00000000 0x00180000>;
compatible = "fixed-partitions";
read-only;
partition@40000 {
label = "u-boot-env-main";
compatible = "u-boot,env-redundant-count";
reg = <0x00040000 0x20000>; /* one block is 128k */
read-only;
};
/*
* Causes u_boot_env: probe of 4e4000000.ndfc:nand:partitions:partition@0:partition@60000
* failed with error -17
*
* partition@60000 {
* label = "u-boot-env-redundant";
* compatible = "u-boot,env-redundant-count";
* reg = <0x00060000 0x20000>;
* read-only;
* };
*/
};
partition@180000 {
label = "firmware";
reg = <0x00180000 0x01860000>;
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "kernel";
reg = <0x00000000 0x00480000>;
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
/*
* device-tree is @ 0x00180000 - 0x0019ffff
* kernel starts from 0x20000.
* this is coded into netgear's u-boot.
*/
partition@0 {
label = "dtb";
reg = <0x00000000 0x20000>;
};
/*
* this partition will also contain a
* fake/empty rootfs at the end to fool
* Netgear's uboot rootfs integrety checks.
*/
};
partition@480000 {
label = "ubi";
reg = <0x00480000 0x013e0000>;
};
};
/*
* Netgear's u-boot in the fw_recovery mode (can be
* triggered by holding the reset button, or if
* "bootm" fails) will not flash past this point
* (= 0x19E0000).
*/
partition@19e0000 {
label = "config";
reg = <0x019e0000 0x00080000>;
read-only;
};
partition@1a60000 {
label = "pot";
reg = <0x01a60000 0x00080000>;
read-only;
};
partition@1ae0000 {
label = "traffic_meter";
reg = <0x01ae0000 0x00300000>;
read-only;
};
partition@1de0000 {
label = "language";
reg = <0x01de0000 0x001c0000>;
read-only;
};
partition@1fa0000 {
label = "ecos";
reg = <0x01fa0000 0x06020000>;
read-only;
};
partition@7fc0000 {
label = "wifi_data";
reg = <0x07fc0000 0x00040000>;
read-only;
nvmem-layout {
compatible = "fixed-layout";
#address-cells = <1>;
#size-cells = <1>;
macaddr_wifi_0: macaddr@0 {
reg = <0x0 0x6>;
};
macaddr_wifi_c: macaddr@c {
reg = <0xc 0x6>;
};
calibration_wifi_1000: calibration@1000 {
reg = <0x1000 0x440>;
};
calibration_wifi_5000: calibration@5000 {
reg = <0x5000 0x440>;
};
};
};
};
};
};
&UART0 {
status = "okay";
};
&GPIO0 {
status = "okay";
};
&IIC0 {
status = "okay";
fan0: fan@1b {
compatible = "microchip,tc654";
reg = <0x1b>;
#cooling-cells = <2>; /* min followed by max */
gpios = <&GPIO0 16 GPIO_ACTIVE_LOW>; /* fan status */
alarm-gpios = <&GPIO0 5 GPIO_ACTIVE_LOW>; /* fault */
interrupt-parent = <&UIC3>;
interrupts = <0x16 IRQ_TYPE_EDGE_FALLING>; /* fault */
};
temp0: temp@4d {
compatible = "gmt,g781";
reg = <0x4d>;
#thermal-sensor-cells = <1>;
/*
* The LM90 has two sensors:
* temp0 -> internal to LM90
* temp1 -> external NTC near CPU
*/
};
};
&EMAC0 {
status = "okay";
phy-handle = <&phy0>;
fifo-entry-size = <10>;
mdio {
#address-cells = <1>;
#size-cells = <0>;
phy0: ethernet-phy@0 {
device_type = "ethernet-phy";
reg = <0>;
qca,mib-poll-interval = <500>;
qca,ar8327-initvals = <
0x0010 0x40000000
0x0624 0x007f7f7f
0x0004 0x07a00000 /* PAD0_MODE */
0x000c 0x01000000 /* PAD6_MODE */
0x007c 0x0000007e /* PORT0_STATUS */
>;
};
};
};
&POB0 {
keys {
compatible = "gpio-keys";
button-restart {
label = "Reset button";
gpios = <&GPIO0 15 GPIO_ACTIVE_LOW>;
linux,code = <KEY_RESTART>;
interrupt-parent = <&UIC1>;
interrupts = <0x14 IRQ_TYPE_EDGE_FALLING>;
debounce-interval = <60>;
};
button-backup_hd {
label = "Backup HD button";
gpios = <&GPIO0 19 GPIO_ACTIVE_LOW>;
linux,code = <BTN_0>;
interrupt-parent = <&UIC1>;
interrupts = <0x1e IRQ_TYPE_EDGE_FALLING>;
debounce-interval = <60>;
};
button-rfkill {
label = "RFKILL button";
gpios = <&GPIO0 20 GPIO_ACTIVE_LOW>;
linux,code = <KEY_RFKILL>;
interrupt-parent = <&UIC1>;
interrupts = <0x1f IRQ_TYPE_EDGE_FALLING>;
debounce-interval = <60>;
};
button-wps {
label = "WPS button";
gpios = <&GPIO0 23 GPIO_ACTIVE_LOW>;
linux,code = <KEY_WPS_BUTTON>;
interrupt-parent = <&UIC2>;
interrupts = <0x19 IRQ_TYPE_EDGE_FALLING>;
debounce-interval = <60>;
};
};
leds {
compatible = "gpio-leds";
led-0 {
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_POWER;
gpios = <&GPIO0 8 GPIO_ACTIVE_HIGH>;
};
led-1 {
color = <LED_COLOR_ID_AMBER>;
function = LED_FUNCTION_FAULT;
gpios = <&GPIO0 9 GPIO_ACTIVE_LOW>;
panic-indicator;
};
led-2 {
color = <LED_COLOR_ID_BLUE>;
function = LED_FUNCTION_USB;
gpios = <&GPIO0 10 GPIO_ACTIVE_HIGH>;
trigger-sources = <&usb2_port 1>, <&usb2_port 2>,
<&usb3_port 1>, <&usb3_port 2>;
linux,default-trigger = "usbport";
};
led-3 {
color = <LED_COLOR_ID_WHITE>;
function = LED_FUNCTION_INDICATOR;
gpios = <&GPIO0 11 GPIO_ACTIVE_HIGH>;
};
led-4 {
color = <LED_COLOR_ID_YELLOW>;
function = LED_FUNCTION_WAN;
gpios = <&GPIO0 3 GPIO_ACTIVE_HIGH>;
};
led-5 {
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_WAN;
gpios = <&GPIO0 12 GPIO_ACTIVE_HIGH>;
};
led-6 {
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_DISK;
gpios = <&GPIO0 14 GPIO_ACTIVE_HIGH>;
linux,default-trigger = "disk-activity";
};
led-7 {
color = <LED_COLOR_ID_RED>;
function = LED_FUNCTION_DISK_ERR;
gpios = <&GPIO0 17 GPIO_ACTIVE_HIGH>;
};
led-8 {
color = <LED_COLOR_ID_BLUE>;
function = LED_FUNCTION_WLAN;
gpios = <&GPIO0 18 GPIO_ACTIVE_HIGH>;
linux,default-trigger = "phy0tpt";
};
};
};
&PCIE0 {
status = "okay";
/*
* relevant lspci topology:
*
* -+-[0000:40]---00.0-[41-7f]----00.0-[42-45]--+-02.0-[43]----00.0
* +-03.0-[44]----00.0
* \-04.0-[45]----00.0
*
*/
bridge@64,0 {
reg = <0x00400000 0 0 0 0>;
#address-cells = <3>;
#size-cells = <2>;
ranges;
bridge@65,0 {
/* IDT PES4T4 PCI Express Switch */
compatible = "pci111d,803a";
reg = <0x00410000 0 0 0 0>;
#address-cells = <3>;
#size-cells = <2>;
ranges;
bridge@66,2 {
compatible = "pci111d,803a";
reg = <0x00421000 0 0 0 0>;
#address-cells = <3>;
#size-cells = <2>;
ranges;
wifi0: wifi@67,0 {
/* Atheros AR9380 5GHz */
compatible = "pci168c,0030";
reg = <0x00430000 0 0 0 0>;
interrupts = <3>; /* INTC */
nvmem-cell-names = "mac-address", "calibration";
nvmem-cells = <&macaddr_wifi_0>, <&calibration_wifi_1000>;
/*
* Because this was such a pain.
* Here's the full device path:
* pci0000:40/0000:40:00.0/0000:41:00.0/0000:42:02.0/0000:43:00.0
*/
};
};
bridge@66,3 {
compatible = "pci111d,803a";
reg = <0x00421800 0 0 0 0>;
#address-cells = <3>;
#size-cells = <2>;
ranges;
wifi1: wifi@68,0 {
/* Atheros AR9381 2.4GHz */
compatible = "pci168c,0033";
reg = <0x00440000 0 0 0 0>;
interrupts = <4>; /* INTD */
nvmem-cell-names = "mac-address", "calibration";
nvmem-cells = <&macaddr_wifi_c>, <&calibration_wifi_5000>;
};
};
bridge@66,4 {
compatible = "pci111d,803a";
reg = <0x00422000 0 0 0 0>;
#address-cells = <3>;
#size-cells = <2>;
ranges;
usb1: usb@69,0 {
/* Renesas uPD720202 */
compatible = "pci1912,0015";
reg = <0x00450000 0 0 0 0>;
interrupts = <1>; /* INTA */
#address-cells = <1>;
#size-cells = <0>;
usb2_port: port@1 {
reg = <1>;
#trigger-source-cells = <1>;
};
usb3_port: port@2 {
reg = <2>;
#trigger-source-cells = <1>;
};
};
};
};
};
};

View File

@@ -0,0 +1,246 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
* Copyright 2008 DENX Software Engineering, Stefan Roese <sr@denx.de>
* (c) Copyright 2010 Western Digital Technologies, Inc. All Rights Reserved.
*/
/dts-v1/;
#include <dt-bindings/leds/common.h>
#include "apm82181.dtsi"
/ {
compatible = "wd,mybooklive", "amcc,apollo3g";
model = "MyBook Live";
aliases {
serial0 = &UART0;
};
};
&POB0 {
ebc {
nor_flash@0,0 {
status = "okay";
compatible = "jedec-flash"; /* "microchip,sst39vf040 */
bank-width = <1>;
reg = <0x00000000 0x00000000 0x00080000>;
#address-cells = <1>;
#size-cells = <1>;
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
/* Part of bootrom - Don't use it without a jump */
label = "free";
reg = <0x00000000 0x0001e000>;
read-only;
};
partition@1e000 {
compatible = "fixed-partitions";
reg = <0x0001e000 0x00002000>;
label = "u-boot-env";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
compatible = "u-boot,env-redundant-bool";
reg = <0x00000000 0x00001000>;
label = "u-boot-env-1";
ethaddr {
};
};
/*
* Causes the following warning: * sysfs: cannot create duplicate filename '/bus/nvmem/devices/u-boot-env0'
*
* partition@1000 {
* compatible = "u-boot,env-redundant-bool";
* reg = <0x00001000 0x00001000>;
* label = "u-boot-env-2";
*
* };
*/
};
partition@20000 {
label = "uboot";
reg = <0x00020000 0x00050000>;
read-only;
};
};
};
};
GPIO1: gpio@e0000000 {
compatible = "wd,mbl-gpio", "ti,74273";
reg-names = "dat";
reg = <0xe0000000 0x1>;
#gpio-cells = <2>;
gpio-controller;
enable-button {
/* Defined in u-boot as: NOT_NOR
* "enables features other than NOR
* specifically, the buffer at CS2"
* (button).
*
* Note: This option is disabled as
* it prevents the system from being
* rebooted successfully.
*/
gpio-hog;
line-name = "Enable Reset Button, disable NOR";
gpios = <1 GPIO_ACTIVE_HIGH>;
output-low;
};
};
GPIO2: gpio@e0100000 {
compatible = "wd,mbl-gpio", "ti,74244";
reg-names = "dat";
reg = <0xe0100000 0x1>;
#gpio-cells = <2>;
gpio-controller;
no-output;
};
leds {
compatible = "gpio-leds";
/* There's just one tri-color LED with three separate pins.
* One pin for each color (red, green and blue). Each has
* a different meaning.
*/
led-0 {
color = <LED_COLOR_ID_RED>;
function = LED_FUNCTION_FAULT;
gpios = <&GPIO1 4 GPIO_ACTIVE_HIGH>;
panic-indicator;
};
led-1 {
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_POWER;
gpios = <&GPIO1 5 GPIO_ACTIVE_HIGH>;
};
led-2 {
color = <LED_COLOR_ID_BLUE>;
function = LED_FUNCTION_DISK;
gpios = <&GPIO1 6 GPIO_ACTIVE_HIGH>;
linux,default-trigger = "disk-activity";
};
};
keys {
compatible = "gpio-keys-polled";
poll-interval = <60>; /* 3 * 20 = 60ms */
autorepeat;
button-restart {
label = "Reset button";
linux,code = <KEY_RESTART>;
gpios = <&GPIO2 2 GPIO_ACTIVE_LOW>;
};
};
usbpwr: usb-regulator {
compatible = "regulator-fixed";
regulator-name = "Power USB Core";
gpios = <&GPIO1 2 GPIO_ACTIVE_HIGH>;
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
regulator-boot-on; /* uboot sets this */
enable-active-high;
};
sata1pwr: sata1-regulator {
compatible = "regulator-fixed";
regulator-name = "Power Drive Port 1";
gpios = <&GPIO1 3 GPIO_ACTIVE_HIGH>;
regulator-min-microvolt = <12000000>;
regulator-max-microvolt = <12000000>;
regulator-boot-on; /* uboot sets this */
regulator-always-on; /* needed to read OS from HDD */
enable-active-high;
};
sata0pwr: sata0-regulator {
compatible = "regulator-fixed";
regulator-name = "Power Drive Port 0";
gpios = <&GPIO1 7 GPIO_ACTIVE_HIGH>;
regulator-min-microvolt = <12000000>;
regulator-max-microvolt = <12000000>;
regulator-boot-on; /* uboot sets this */
regulator-always-on; /* needed to read OS from HDD */
enable-active-high;
};
};
&EMAC0 {
status = "okay";
phy-map = <0x2>;
phy-address = <0x1>;
phy-handle = <&phy>;
phy-mode = "rgmii-id";
mdio {
#address-cells = <1>;
#size-cells = <0>;
reset-gpios = <&GPIO1 0 GPIO_ACTIVE_LOW>;
phy: phy@1 {
compatible = "ethernet-phy-ieee802.3-c22";
reg = <1>;
};
};
};
&CRYPTO {
status = "okay";
};
&PKA {
status = "okay";
};
&TRNG {
status = "okay";
};
&SATA0 {
status = "okay";
drive0: sata-port@0 {
reg = <0>;
#thermal-sensor-cells = <0>;
};
};
&SATA1 {
status = "okay";
drive1: sata-port@0 {
reg = <0>;
#thermal-sensor-cells = <0>;
};
};
&UART0 {
status = "okay";
};
&USBOTG0 {
status = "okay";
dr_mode = "host";
vbus-supply = <&usbpwr>;
};

View File

@@ -0,0 +1,83 @@
# SPDX-License-Identifier: GPL-2.0-only
include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/image.mk
define Build/boot-img
$(RM) -rf $@.bootdir
mkdir -p $@.bootdir/boot
$(CP) $@.scr $@.bootdir/boot/boot.scr
$(CP) $(KDIR)/image-$(firstword $(DEVICE_DTS)).dtb $@.bootdir/boot/$(DEVICE_DTB)
$(CP) $(IMAGE_KERNEL) $@.bootdir/boot/uImage
genext2fs --block-size $(BLOCKSIZE:%k=%Ki) \
--size-in-blocks $$((1024 * $(CONFIG_TARGET_KERNEL_PARTSIZE))) \
--root $@.bootdir $@.boot
# convert it to revision 1 - needed for u-boot ext2load
$(STAGING_DIR_HOST)/bin/tune2fs -O filetype $@.boot
$(STAGING_DIR_HOST)/bin/e2fsck -pDf $@.boot > /dev/null
endef
define Build/boot-script
$(STAGING_DIR_HOST)/bin/mkimage -A powerpc -T script -C none -n "$(PROFILE) Boot Script" \
-d mbl_boot.scr \
$@.scr
endef
define Build/export-dtb
cp $(KDIR)/image-$(firstword $(DEVICE_DTS)).dtb $@
endef
define Build/MuImage-initramfs
rm -rf $@.fakerd $@.new
dd if=/dev/zero of=$@.fakerd bs=32 count=1 conv=sync
# Netgear used an old uboot that doesn't have FIT support.
# So we are stuck with either a full ext2/4 fs in a initrd.
# ... or we try to make the "multi" image approach to work
# for us.
#
# Sadly, the "multi" image has to consists of three
# "fixed" parts in the following "fixed" order:
# 1. The kernel which is in $@
# 2. The (fake) initrd which is in $@.fakerd
# 3. The device tree binary which is in $@.dtb
#
# Now, given that we use the function for the kernel which
# already has a initramfs image inside, we still have to
# add a "fake" initrd (which a mkimage header) in the second
# part of the legacy multi image. Since we need to put the
# device tree stuff into part 3.
-$(STAGING_DIR_HOST)/bin/mkimage -A $(LINUX_KARCH) -O linux -T multi -C $(1) \
-a $(KERNEL_LOADADDR) -e $(KERNEL_ENTRY) -n '$(BOARD_NAME) initramfs' \
-d $@:$@.fakerd:$(KDIR)/image-$(firstword $(DEVICE_DTS)).dtb $@.new
mv $@.new $@
rm -rf $@.fakerd
endef
define Build/prepend-dtb
cat "$(KDIR)/image-$(firstword $(DEVICE_DTS)).dtb" "$@" > "$@.new"
mv "$@.new" "$@"
endef
define Image/cpiogz
( cd $(TARGET_DIR); find . | cpio -o -H newc | gzip -9n >$(KDIR_TMP)/$(IMG_PREFIX)-rootfs.cpio.gz )
endef
define Device/Default
PROFILES := Default
KERNEL_DEPENDS = $$(wildcard ../dts/$$(DEVICE_DTS).dts)
DEVICE_DTS :=
KERNEL_ENTRY := 0x00000000
KERNEL_LOADADDR := 0x00000000
DEVICE_DTS_DIR := ../dts
DEVICE_DTS = $(subst _,-,$(1))
endef
include $(SUBTARGET).mk
$(eval $(call BuildImage))

View File

@@ -0,0 +1,6 @@
setenv boot_args 'setenv bootargs root=/dev/sda2 rw rootfstype=squashfs,ext4'
setenv load_part1 'ext2load sata 0:1 ${kernel_addr_r} /boot/uImage; ext2load sata 0:1 ${fdt_addr_r} /boot/apollo3g.dtb'
setenv load_part2 'ext2load sata 1:1 ${kernel_addr_r} /boot/uImage; ext2load sata 1:1 ${fdt_addr_r} /boot/apollo3g.dtb'
setenv load_sata 'sata init; if run load_part1; then echo Loaded part 1; elif run load_part2; then echo Loaded part 2; fi'
setenv boot_sata 'run load_sata; run boot_args addtty; bootm ${kernel_addr_r} - ${fdt_addr_r}'
run boot_sata

View File

@@ -0,0 +1,27 @@
#!/bin/sh
set -x
[ $# -eq 5 ] || {
echo "SYNTAX: $0 <file> <bootfs image> <rootfs image> <bootfs size> <rootfs size>"
exit 1
}
OUTPUT="$1"
BOOTFS="$2"
ROOTFS="$3"
BOOTFSSIZE="$4"
ROOTFSSIZE="$5"
head=4
sect=63
set $(ptgen -o $OUTPUT -h $head -s $sect -l 4096 -t 83 -p ${BOOTFSSIZE}M -t 83 -p ${ROOTFSSIZE}M)
BOOTOFFSET="$(($1 / 512))"
BOOTSIZE="$(($2 / 512))"
ROOTFSOFFSET="$(($3 / 512))"
ROOTFSSIZE="$(($4 / 512))"
dd bs=512 if="$BOOTFS" of="$OUTPUT" seek="$BOOTOFFSET" conv=notrunc
dd bs=512 if="$ROOTFS" of="$OUTPUT" seek="$ROOTFSOFFSET" conv=notrunc

View File

@@ -0,0 +1,126 @@
define Build/create-uImage-dtb
# flat_dt target expect FIT image - which WNDR4700's uboot doesn't support
-$(STAGING_DIR_HOST)/bin/mkimage -A $(LINUX_KARCH) \
-O linux -T kernel -C none \
-n '$(call toupper,$(LINUX_KARCH)) $(VERSION_DIST) Linux-$(LINUX_VERSION)' \
-d "$(KDIR)/image-$(firstword $(DEVICE_DTS)).dtb" "$@.dtb.uimage"
endef
define Build/prepend-dtb-uImage
cat "$@.dtb.uimage" "$@" > "$@.new"
mv "$@.new" "$@"
endef
define Build/meraki-header
-$(STAGING_DIR_HOST)/bin/mkmerakifw \
-B $(BOARD_NAME) -s \
-i $@ \
-o $@.new
@cp $@.new $@
endef
define Device/meraki_mr24
DEVICE_VENDOR := Cisco Meraki
DEVICE_MODEL := MR24
DEVICE_PACKAGES := kmod-spi-gpio -swconfig
BOARD_NAME := mr24
IMAGES := sysupgrade.bin
DEVICE_DTC_FLAGS := --space 64512
IMAGE_SIZE := 8191k
KERNEL := kernel-bin | lzma | uImage lzma | prepend-dtb | meraki-header
KERNEL_INITRAMFS := kernel-bin | lzma | MuImage-initramfs lzma
IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
UBINIZE_OPTS := -E 5
SUPPORTED_DEVICES += mr24
endef
TARGET_DEVICES += meraki_mr24
define Device/meraki_mx60
DEVICE_VENDOR := Cisco Meraki
DEVICE_MODEL := MX60
DEVICE_ALT0_VENDOR := Cisco Meraki
DEVICE_ALT0_MODEL := MX60W
DEVICE_PACKAGES := kmod-spi-gpio kmod-usb-ledtrig-usbport kmod-usb-dwc2 \
kmod-usb-storage block-mount
BLOCKSIZE := 128k
IMAGES := sysupgrade.bin
DEVICE_DTC_FLAGS := --space 20480
IMAGE_SIZE := 1021m
KERNEL := kernel-bin | libdeflate-gzip | MuImage-initramfs gzip
IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
UBINIZE_OPTS := -E 5
DEVICE_COMPAT_VERSION := 2.0
DEVICE_COMPAT_MESSAGE := uboot's bootcmd has to be updated to support standard multi-image uImages. \
Upgrade via sysupgrade mechanism is not possible.
endef
TARGET_DEVICES += meraki_mx60
define Device/netgear_wndap6x0
DEVICE_VENDOR := NETGEAR
DEVICE_PACKAGES := kmod-eeprom-at24
SUBPAGESIZE := 256
PAGESIZE := 512
BLOCKSIZE := 16k
DEVICE_DTC_FLAGS := --space 32768
IMAGE_SIZE := 27392k
IMAGES := sysupgrade.bin factory.img
KERNEL_SIZE := 6080k
KERNEL := kernel-bin | libdeflate-gzip | MuImage-initramfs gzip
IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
IMAGE/factory.img := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-ubi
UBINIZE_OPTS := -E 5
DEVICE_COMPAT_VERSION := 2.0
DEVICE_COMPAT_MESSAGE := kernel and ubi partitions had to be resized. \
Upgrade via sysupgrade mechanism is not possible.
endef
define Device/netgear_wndap620
$(Device/netgear_wndap6x0)
DEVICE_MODEL := WNDAP620 (Premium Wireless-N)
endef
TARGET_DEVICES += netgear_wndap620
define Device/netgear_wndap660
$(Device/netgear_wndap6x0)
DEVICE_MODEL := WNDAP660 (Dual Radio Dual Band Wireless-N)
endef
TARGET_DEVICES += netgear_wndap660
define Device/netgear_wndr4700
DEVICE_VENDOR := NETGEAR
DEVICE_MODEL := Centria N900 WNDR4700
DEVICE_ALT0_VENDOR := NETGEAR
DEVICE_ALT0_MODEL := Centria N900 WNDR4720
DEVICE_PACKAGES := badblocks block-mount e2fsprogs kmod-hwmon-drivetemp \
kmod-dm kmod-fs-ext4 kmod-fs-vfat kmod-usb-ledtrig-usbport \
kmod-md-mod kmod-nls-cp437 kmod-nls-iso8859-1 kmod-nls-iso8859-15 \
kmod-nls-utf8 kmod-usb3 kmod-usb-dwc2 kmod-usb-storage \
partx-utils kmod-ata-dwc
BOARD_NAME := wndr4700
PAGESIZE := 2048
SUBPAGESIZE := 512
BLOCKSIZE := 128k
DEVICE_DTC_FLAGS := --space 131008
IMAGE_SIZE := 24960k
IMAGES := factory.img sysupgrade.bin
ARTIFACTS := device-tree.dtb
KERNEL_SIZE := 4608k
# append a fake/empty rootfs to fool netgear's uboot
# CHECK_DNI_FIRMWARE_ROOTFS_INTEGRITY in do_chk_dniimg()
KERNEL := kernel-bin | lzma -d16 | uImage lzma | pad-offset $$(BLOCKSIZE) 64 | \
append-uImage-fakehdr filesystem | create-uImage-dtb | prepend-dtb-uImage
KERNEL_INITRAMFS := kernel-bin | libdeflate-gzip | MuImage-initramfs gzip
IMAGE/factory.img := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-ubi | \
netgear-dni | check-size
IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
ARTIFACT/device-tree.dtb := export-dtb | uImage none
NETGEAR_BOARD_ID := WNDR4700
NETGEAR_HW_ID := 29763875+128+256
UBINIZE_OPTS := -E 5
SUPPORTED_DEVICES += wndr4700
DEVICE_COMPAT_VERSION := 2.0
DEVICE_COMPAT_MESSAGE := kernel and ubi partitions had to be resized. \
Upgrade via sysupgrade mechanism is not possible.
endef
TARGET_DEVICES += netgear_wndr4700

View File

@@ -0,0 +1,27 @@
define Build/hdd-img
./mbl_gen_hdd_img.sh $@ $@.boot $(IMAGE_ROOTFS) $(CONFIG_TARGET_KERNEL_PARTSIZE) $(CONFIG_TARGET_ROOTFS_PARTSIZE)
endef
define Device/wd_mybooklive
DEVICE_VENDOR := Western Digital
DEVICE_MODEL := My Book Live
DEVICE_ALT0_VENDOR := Western Digital
DEVICE_ALT0_MODEL := My Book Live Duo
DEVICE_PACKAGES := kmod-usb-dwc2 kmod-ata-dwc kmod-usb-ledtrig-usbport \
kmod-usb-storage kmod-fs-vfat wpad-basic-mbedtls
SUPPORTED_DEVICES += mbl wd,mybooklive-duo
BLOCKSIZE := 1k
DEVICE_DTC_FLAGS := --pad 4096
KERNEL := kernel-bin | libdeflate-gzip | uImage gzip
KERNEL_INITRAMFS := kernel-bin | libdeflate-gzip | MuImage-initramfs gzip
IMAGES := factory.img.gz sysupgrade.img.gz
ARTIFACTS := apollo3g.dtb
DEVICE_DTB := apollo3g.dtb
FILESYSTEMS := ext4 squashfs
IMAGE/factory.img.gz := boot-script | boot-img | hdd-img | libdeflate-gzip
IMAGE/sysupgrade.img.gz := boot-script | boot-img | hdd-img | libdeflate-gzip | append-metadata
ARTIFACT/apollo3g.dtb := export-dtb
endef
TARGET_DEVICES += wd_mybooklive

View File

@@ -0,0 +1,34 @@
define KernelPackage/ata-dwc
TITLE:=DesignWare Cores SATA support
KCONFIG:=CONFIG_SATA_DWC
FILES:=$(LINUX_DIR)/drivers/ata/sata_dwc_460ex.ko
AUTOLOAD:=$(call AutoLoad,40,sata_dwc_460ex,1)
$(call AddDepends/ata)
endef
define KernelPackage/ata-dwc/description
Platform support for the on-chip SATA controller.
endef
$(eval $(call KernelPackage,ata-dwc))
define KernelPackage/hw-crypto-4xx
TITLE:=Driver AMCC PPC4xx crypto accelerator
KCONFIG:= \
CONFIG_CRYPTO_HW=y \
CONFIG_HW_RANDOM=y \
CONFIG_CRYPTO_DEV_PPC4XX \
CONFIG_HW_RANDOM_PPC4XX=y
DEPENDS:=@TARGET_apm821xx +kmod-random-core +kmod-crypto-manager \
+kmod-crypto-ccm +kmod-crypto-gcm \
+kmod-crypto-sha1 +kmod-crypto-sha256 +kmod-crypto-sha512
FILES:=$(LINUX_DIR)/drivers/crypto/amcc/crypto4xx.ko
AUTOLOAD:=$(call AutoLoad,09,crypto4xx,1)
$(call AddDepends/crypto)
endef
define KernelPackage/hw-crypto-4xx/description
Platform support for the on-chip crypto acceleration.
endef
$(eval $(call KernelPackage,hw-crypto-4xx))

View File

@@ -0,0 +1,36 @@
CONFIG_AT803X_PHY=y
CONFIG_AR8216_PHY=y
# CONFIG_SATA_DWC_OLD_DMA is not set
CONFIG_IKAREM=y
# CONFIG_PCI_DISABLE_COMMON_QUIRKS is not set
CONFIG_GENERIC_PHY=y
CONFIG_SCSI=y
CONFIG_BLK_DEV_SD=y
CONFIG_GPIO_GENERIC=y
CONFIG_GPIO_GENERIC_PLATFORM=y
CONFIG_LEDS_TRIGGER_DISK=y
CONFIG_RTC_CLASS=y
CONFIG_RTC_DRV_M48T86=y
CONFIG_THERMAL=y
CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0
CONFIG_THERMAL_OF=y
CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
CONFIG_THERMAL_HWMON=y
CONFIG_HWMON=y
CONFIG_SENSORS_GPIO_FAN=y
CONFIG_CMDLINE="rootfstype=squashfs noinitrd"
CONFIG_MTD_NAND_ECC_SW_BCH=y
CONFIG_MTD_NAND_NDFC=y
CONFIG_MTD_RAW_NAND=y
CONFIG_MTD_UBI=y
CONFIG_MTD_UBI_BEB_LIMIT=20
CONFIG_MTD_UBI_BLOCK=y
CONFIG_MTD_UBI_WL_THRESHOLD=4096
CONFIG_UBIFS_FS=y
CONFIG_RTL8366_SMI=y
CONFIG_RTL8367B_PHY=y
CONFIG_SENSORS_LM90=y
CONFIG_SENSORS_TC654=y
CONFIG_SWCONFIG=y
CONFIG_SWCONFIG_LEDS=y

View File

@@ -0,0 +1,19 @@
# SPDX-License-Identifier: GPL-2.0-only
#
# Copyright (C) 2011 OpenWrt.org
define Profile/Default
NAME:=Default Profile
PRIORITY:=1
PACKAGES := badblocks block-mount e2fsprogs \
kmod-dm kmod-fs-ext4 kmod-fs-vfat kmod-usb-ledtrig-usbport \
kmod-md-mod kmod-nls-cp437 kmod-nls-iso8859-1 kmod-nls-iso8859-15 \
kmod-nls-utf8 kmod-usb3 kmod-usb-dwc2 kmod-usb-storage \
kmod-spi-gpio partx-utils
endef
define Profile/Default/Description
Default package set
endef
$(eval $(call Profile,Default))

View File

@@ -0,0 +1,9 @@
BOARDNAME:=Devices with NAND flash (Routers)
FEATURES += nand pcie
DEFAULT_PACKAGES += kmod-ath9k swconfig wpad-basic-mbedtls
define Target/Description
Build firmware images for APM821XX boards with NAND flash.
For routers like the MR24 or the WNDR4700.
endef

View File

@@ -0,0 +1,30 @@
--- a/arch/powerpc/platforms/44x/Kconfig
+++ b/arch/powerpc/platforms/44x/Kconfig
@@ -118,6 +118,17 @@ config CANYONLANDS
help
This option enables support for the AMCC PPC460EX evaluation board.
+config APOLLO3G
+ bool "Apollo3G"
+ depends on 44x
+ default n
+ select PPC44x_SIMPLE
+ select APM821xx
+ select IBM_EMAC_RGMII
+ select 460EX
+ help
+ This option enables support for the AMCC Apollo 3G board.
+
config GLACIER
bool "Glacier"
depends on 44x
--- a/arch/powerpc/platforms/44x/ppc44x_simple.c
+++ b/arch/powerpc/platforms/44x/ppc44x_simple.c
@@ -46,6 +46,7 @@ machine_device_initcall(ppc44x_simple, p
* board.c file for it rather than adding it to this list.
*/
static char *board[] __initdata = {
+ "amcc,apollo3g",
"amcc,arches",
"amcc,bamboo",
"apm,bluestone",

View File

@@ -0,0 +1,51 @@
--- a/arch/powerpc/platforms/4xx/pci.c
+++ b/arch/powerpc/platforms/4xx/pci.c
@@ -1058,15 +1058,24 @@ static int __init apm821xx_pciex_init_po
u32 val;
/*
- * Do a software reset on PCIe ports.
- * This code is to fix the issue that pci drivers doesn't re-assign
- * bus number for PCIE devices after Uboot
- * scanned and configured all the buses (eg. PCIE NIC IntelPro/1000
- * PT quad port, SAS LSI 1064E)
+ * Only reset the PHY when no link is currently established.
+ * This is for the Atheros PCIe board which has problems to establish
+ * the link (again) after this PHY reset. All other currently tested
+ * PCIe boards don't show this problem.
*/
-
- mtdcri(SDR0, PESDR0_460EX_PHY_CTL_RST, 0x0);
- mdelay(10);
+ val = mfdcri(SDR0, port->sdr_base + PESDRn_LOOP);
+ if (!(val & 0x00001000)) {
+ /*
+ * Do a software reset on PCIe ports.
+ * This code is to fix the issue that pci drivers doesn't re-assign
+ * bus number for PCIE devices after Uboot
+ * scanned and configured all the buses (eg. PCIE NIC IntelPro/1000
+ * PT quad port, SAS LSI 1064E)
+ */
+
+ mtdcri(SDR0, PESDR0_460EX_PHY_CTL_RST, 0x0);
+ mdelay(10);
+ }
if (port->endpoint)
val = PTYPE_LEGACY_ENDPOINT << 20;
@@ -1083,9 +1092,12 @@ static int __init apm821xx_pciex_init_po
mtdcri(SDR0, PESDR0_460EX_L0DRV, 0x00000130);
mtdcri(SDR0, PESDR0_460EX_L0CLK, 0x00000006);
- mtdcri(SDR0, PESDR0_460EX_PHY_CTL_RST, 0x10000000);
- mdelay(50);
- mtdcri(SDR0, PESDR0_460EX_PHY_CTL_RST, 0x30000000);
+ val = mfdcri(SDR0, port->sdr_base + PESDRn_LOOP);
+ if (!(val & 0x00001000)) {
+ mtdcri(SDR0, PESDR0_460EX_PHY_CTL_RST, 0x10000000);
+ mdelay(50);
+ mtdcri(SDR0, PESDR0_460EX_PHY_CTL_RST, 0x30000000);
+ }
mtdcri(SDR0, port->sdr_base + PESDRn_RCSSET,
mfdcri(SDR0, port->sdr_base + PESDRn_RCSSET) |

View File

@@ -0,0 +1,14 @@
--- a/arch/powerpc/platforms/4xx/pci.c
+++ b/arch/powerpc/platforms/4xx/pci.c
@@ -1900,9 +1900,9 @@ static void __init ppc4xx_configure_pcie
* if it works
*/
out_le32(mbase + PECFG_PIM0LAL, 0x00000000);
- out_le32(mbase + PECFG_PIM0LAH, 0x00000000);
+ out_le32(mbase + PECFG_PIM0LAH, 0x00000008);
out_le32(mbase + PECFG_PIM1LAL, 0x00000000);
- out_le32(mbase + PECFG_PIM1LAH, 0x00000000);
+ out_le32(mbase + PECFG_PIM1LAH, 0x0000000c);
out_le32(mbase + PECFG_PIM01SAH, 0xffff0000);
out_le32(mbase + PECFG_PIM01SAL, 0x00000000);

View File

@@ -0,0 +1,29 @@
From c9395ad54e2cabb87d408becc37566f3d8248933 Mon Sep 17 00:00:00 2001
From: Christian Lamparter <chunkeey@gmail.com>
Date: Sun, 1 Dec 2019 02:08:23 +0100
Subject: [PATCH] powerpc: bootwrapper: force gzip as mkimage's compression
method
Due to CONFIG_KERNEL_XZ symbol, the bootwrapper code tries to
instruct the mkimage to use the xz compression, which isn't
supported. This patch forces the gzip compression, which is
supported and doesn't matter because the generated uImage for
the apm821xx target gets ignored as the OpenWrt toolchain will
do separate U-Boot kernel images for each device individually.
Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
---
arch/powerpc/boot/Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/arch/powerpc/boot/Makefile
+++ b/arch/powerpc/boot/Makefile
@@ -276,7 +276,7 @@ compressor-$(CONFIG_KERNEL_LZO) := lzo
# args (to if_changed): 1 = (this rule), 2 = platform, 3 = dts 4=dtb 5=initrd
quiet_cmd_wrap = WRAP $@
- cmd_wrap =$(CONFIG_SHELL) $(wrapper) -Z $(compressor-y) -c -o $@ -p $2 \
+ cmd_wrap =$(CONFIG_SHELL) $(wrapper) -Z gzip -c -o $@ -p $2 \
$(CROSSWRAP) $(if $3, -s $3)$(if $4, -d $4)$(if $5, -i $5) \
vmlinux

View File

@@ -0,0 +1,62 @@
CONFIG_APOLLO3G=y
CONFIG_BROADCOM_PHY=y
CONFIG_EXT4_FS=y
# CONFIG_SATA_DWC_OLD_DMA is not set
CONFIG_ATA=y
CONFIG_ATA_SFF=y
CONFIG_ATA_BMDMA=y
CONFIG_SATA_PMP=y
CONFIG_GENERIC_PHY=y
CONFIG_SATA_DWC=y
# CONFIG_SATA_DWC_DEBUG is not set
CONFIG_CRYPTO_MD5_PPC=y
CONFIG_CRYPTO_SHA1_PPC=y
CONFIG_EXT4_FS=y
CONFIG_F2FS_FS=y
CONFIG_FREEZER=y
CONFIG_FW_CACHE=y
CONFIG_SCSI=y
CONFIG_BLK_DEV_SD=y
CONFIG_BLK_PM=y
CONFIG_GPIO_GENERIC=y
CONFIG_GPIO_GENERIC_PLATFORM=y
CONFIG_GPIO_74XX_MMIO=y
CONFIG_LEDS_TRIGGER_DISK=y
CONFIG_BLK_DEV_LOOP=y
CONFIG_BLK_DEV_DM=y
CONFIG_BLK_DEV_DM_BUILTIN=y
CONFIG_BLK_DEV_MD=y
CONFIG_MD=y
CONFIG_MD_AUTODETECT=y
# CONFIG_MD_LINEAR is not set
# CONFIG_MD_MULTIPATH is not set
CONFIG_MD_RAID0=y
CONFIG_MD_RAID1=y
# CONFIG_MD_RAID10 is not set
# CONFIG_MD_RAID456 is not set
CONFIG_MTD_PHYSMAP=y
CONFIG_MTD_JEDECPROBE=y
CONFIG_PM=y
CONFIG_PM_AUTOSLEEP=y
CONFIG_PM_CLK=y
CONFIG_PM_SLEEP=y
# CONFIG_PM_USERSPACE_AUTOSLEEP is not set
CONFIG_PM_WAKELOCKS=y
CONFIG_PM_WAKELOCKS_GC=y
CONFIG_PM_WAKELOCKS_LIMIT=100
CONFIG_PPC_EARLY_DEBUG=y
CONFIG_PPC_EARLY_DEBUG_44x=y
# CONFIG_PPC_EARLY_DEBUG_MEMCONS is not set
# CONFIG_PPC_EARLY_DEBUG_16550 is not set
CONFIG_PPC_EARLY_DEBUG_44x_PHYSHIGH=0x4
CONFIG_PPC_EARLY_DEBUG_44x_PHYSLOW=0xef600300
CONFIG_PPC4xx_CPM=y
CONFIG_REGULATOR_FIXED_VOLTAGE=y
CONFIG_SUSPEND=y
CONFIG_SUSPEND_FREEZER=y
CONFIG_USB=y
CONFIG_USB_COMMON=y
CONFIG_USB_DWC2=y
CONFIG_USB_DWC2_HOST=y
CONFIG_USB_ROLE_SWITCH=y
CONFIG_USB_STORAGE=y

View File

@@ -0,0 +1,15 @@
# SPDX-License-Identifier: GPL-2.0-only
#
# Copyright (C) 2011 OpenWrt.org
define Profile/Default
NAME:=Default Profile
PRIORITY:=1
PACKAGES := kmod-usb-dwc2 kmod-usb-ledtrig-usbport kmod-usb-storage kmod-fs-vfat wpad-basic-mbedtls
endef
define Profile/Default/Description
Default package set
endef
$(eval $(call Profile,Default))

View File

@@ -0,0 +1,10 @@
BOARDNAME := Devices which boot from SATA (NAS)
DEVICE_TYPE := nas
FEATURES += boot-part ext4 rootfs-part
DEFAULT_PACKAGES += badblocks block-mount e2fsprogs kmod-hwmon-drivetemp \
kmod-dm kmod-md-mod partx-utils mkf2fs f2fsck
define Target/Description
Build firmware images for APM82181 boards that boot from SATA.
For NAS like the MyBook Live Series.
endef