orion: remove unmaintained target

This target seems to have been unmaintained for quite a while, and not a
single tester for the (now outdated) kernel 4.14 patches has been found.
Remove the code and all the packages which are only used by this target.

To add this target to OpenWrt again port it to a recent and supported
kernel version.

Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
master
Adrian Schmutzler 4 years ago
parent 4bc92c1e75
commit 89f2deb372

@ -1,24 +0,0 @@
#
# Copyright (C) 2008-2015 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
ARCH:=arm
BOARD:=orion
BOARDNAME:=Marvell Orion
FEATURES:=broken rtc
SUBTARGETS:=generic harddisk
MAINTAINER:=Imre Kaloz <kaloz@openwrt.org>
KERNEL_PATCHVER:=4.14
include $(INCLUDE_DIR)/target.mk
KERNELNAME:=zImage
DEFAULT_PACKAGES += kmod-ath9k wpad-basic kmod-rtc-isl1208 uboot-envtools
$(eval $(call BuildTarget))

@ -1,15 +0,0 @@
#!/bin/sh
. /lib/functions/uci-defaults.sh
board_config_update
if grep -q lan1 /proc/net/dev; then
ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4" "wan"
else
ucidef_set_interface_lan "eth0"
fi
board_config_flush
exit 0

@ -1,54 +0,0 @@
#!/bin/sh
#
# Copyright (C) 2009-2010 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
usb_led=''
usb_device=''
led_set_attr() {
[ -f "/sys/class/leds/$1/$2" ] && echo "$3" > "/sys/class/leds/$1/$2"
}
usb_led_set_timer() {
led_set_attr "${usb_led}" 'trigger' 'timer'
led_set_attr "${usb_led}" 'delay_on' "$1"
led_set_attr "${usb_led}" 'delay_off' "$2"
}
usb_led_on() {
led_set_attr "${usb_led}" 'trigger' 'none'
led_set_attr "${usb_led}" 'brightness' 255
}
usb_led_off() {
led_set_attr "${usb_led}" 'trigger' 'none'
led_set_attr "${usb_led}" 'brightness' 0
}
get_usb_led() {
. /lib/functions.sh
case "$(board_name)" in
'Linksys WRT350N v2')
usb_led='wrt350nv2:green:usb'
usb_device='1-1:1.0'
;;
esac;
}
get_usb_led
case "${ACTION}" in
add)
# update LEDs
[ "${usb_device}" = "${DEVICENAME}" ] && usb_led_on
;;
remove)
# update LEDs
[ "${usb_device}" = "${DEVICENAME}" ] && usb_led_off
;;
esac

@ -1,12 +0,0 @@
#!/bin/sh
do_sysinfo_orion() {
local name="$(sed -n /Hardware/s/.*:.//p /proc/cpuinfo)"
[ -z "$name" ] && name="unknown"
[ -e "/tmp/sysinfo/" ] || mkdir -p "/tmp/sysinfo/"
echo "$name" > /tmp/sysinfo/board_name
echo "unknown" > /tmp/sysinfo/model
}
boot_hook_add preinit_main do_sysinfo_orion

@ -1,274 +0,0 @@
CONFIG_ALIGNMENT_TRAP=y
CONFIG_ARCH_CLOCKSOURCE_DATA=y
CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y
CONFIG_ARCH_HAS_ELF_RANDOMIZE=y
CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y
CONFIG_ARCH_HAS_SET_MEMORY=y
CONFIG_ARCH_HAS_SG_CHAIN=y
CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
CONFIG_ARCH_MULTIPLATFORM=y
CONFIG_ARCH_MULTI_CPU_AUTO=y
# CONFIG_ARCH_MULTI_V4 is not set
# CONFIG_ARCH_MULTI_V4T is not set
CONFIG_ARCH_MULTI_V4_V5=y
CONFIG_ARCH_MULTI_V5=y
CONFIG_ARCH_NR_GPIO=0
CONFIG_ARCH_OPTIONAL_KERNEL_RWX=y
# CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT is not set
CONFIG_ARCH_ORION5X=y
# CONFIG_ARCH_ORION5X_DT is not set
# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y
CONFIG_ARCH_SUPPORTS_UPROBES=y
CONFIG_ARCH_SUSPEND_POSSIBLE=y
CONFIG_ARCH_USE_BUILTIN_BSWAP=y
CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y
CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
CONFIG_ARM=y
# CONFIG_ARM_CPU_SUSPEND is not set
CONFIG_ARM_HAS_SG_CHAIN=y
CONFIG_ARM_L1_CACHE_SHIFT=5
CONFIG_ARM_PATCH_PHYS_VIRT=y
# CONFIG_ARM_THUMB is not set
CONFIG_ASYNC_TX_ENABLE_CHANNEL_SWITCH=y
CONFIG_ATAGS=y
CONFIG_AUTO_ZRELADDR=y
CONFIG_BLK_MQ_PCI=y
# CONFIG_CACHE_L2X0 is not set
CONFIG_CLKDEV_LOOKUP=y
CONFIG_CLKSRC_MMIO=y
CONFIG_CLONE_BACKWARDS=y
CONFIG_CMDLINE="rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200 earlyprintk"
CONFIG_CMDLINE_FORCE=y
CONFIG_COMMON_CLK=y
CONFIG_CPU_32v5=y
CONFIG_CPU_ABRT_EV5T=y
CONFIG_CPU_CACHE_VIVT=y
CONFIG_CPU_COPY_FEROCEON=y
CONFIG_CPU_CP15=y
CONFIG_CPU_CP15_MMU=y
CONFIG_CPU_FEROCEON=y
CONFIG_CPU_FEROCEON_OLD_ID=y
# CONFIG_CPU_ICACHE_DISABLE is not set
CONFIG_CPU_PABRT_LEGACY=y
CONFIG_CPU_THUMB_CAPABLE=y
CONFIG_CPU_TLB_FEROCEON=y
CONFIG_CPU_USE_DOMAINS=y
CONFIG_CRYPTO_DES=y
CONFIG_CRYPTO_DEV_MARVELL_CESA=y
CONFIG_CRYPTO_HASH=y
CONFIG_CRYPTO_HASH2=y
CONFIG_CRYPTO_HW=y
CONFIG_CRYPTO_RNG2=y
CONFIG_CRYPTO_WORKQUEUE=y
CONFIG_DEBUG_LL=y
CONFIG_DEBUG_LL_INCLUDE="debug/8250.S"
CONFIG_DEBUG_LL_UART_8250=y
# CONFIG_DEBUG_MVEBU_UART0_ALTERNATE is not set
# CONFIG_DEBUG_UART_8250 is not set
# CONFIG_DEBUG_UART_8250_FLOW_CONTROL is not set
CONFIG_DEBUG_UART_8250_SHIFT=2
# CONFIG_DEBUG_UART_8250_WORD is not set
CONFIG_DEBUG_UART_PHYS=0xf1012000
CONFIG_DEBUG_UART_VIRT=0xfe012000
CONFIG_DEBUG_UNCOMPRESS=y
# CONFIG_DEBUG_USER is not set
CONFIG_DMADEVICES=y
CONFIG_DMA_ENGINE=y
CONFIG_DMA_ENGINE_RAID=y
CONFIG_DMA_OF=y
CONFIG_DNOTIFY=y
CONFIG_DTC=y
CONFIG_EARLY_PRINTK=y
CONFIG_EDAC_ATOMIC_SCRUB=y
CONFIG_EDAC_SUPPORT=y
CONFIG_FIXED_PHY=y
CONFIG_FIX_EARLYCON_MEM=y
CONFIG_FRAME_POINTER=y
CONFIG_GENERIC_ALLOCATOR=y
CONFIG_GENERIC_ATOMIC64=y
CONFIG_GENERIC_BUG=y
CONFIG_GENERIC_CLOCKEVENTS=y
CONFIG_GENERIC_CPU_AUTOPROBE=y
CONFIG_GENERIC_EARLY_IOREMAP=y
CONFIG_GENERIC_IDLE_POLL_SETUP=y
CONFIG_GENERIC_IO=y
CONFIG_GENERIC_IRQ_CHIP=y
CONFIG_GENERIC_IRQ_SHOW=y
CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
CONFIG_GENERIC_PCI_IOMAP=y
CONFIG_GENERIC_SCHED_CLOCK=y
CONFIG_GENERIC_SMP_IDLE_THREAD=y
CONFIG_GENERIC_STRNCPY_FROM_USER=y
CONFIG_GENERIC_STRNLEN_USER=y
CONFIG_GPIOLIB=y
CONFIG_GPIO_MVEBU=y
CONFIG_GPIO_SYSFS=y
# CONFIG_GRO_CELLS is not set
CONFIG_HANDLE_DOMAIN_IRQ=y
CONFIG_HARDIRQS_SW_RESEND=y
CONFIG_HAS_DMA=y
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT_MAP=y
# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set
CONFIG_HAVE_ARCH_AUDITSYSCALL=y
# CONFIG_HAVE_ARCH_BITREVERSE is not set
CONFIG_HAVE_ARCH_JUMP_LABEL=y
CONFIG_HAVE_ARCH_KGDB=y
CONFIG_HAVE_ARCH_PFN_VALID=y
CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
CONFIG_HAVE_ARCH_TRACEHOOK=y
# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set
CONFIG_HAVE_CC_STACKPROTECTOR=y
CONFIG_HAVE_CLK=y
CONFIG_HAVE_CLK_PREPARE=y
CONFIG_HAVE_CONTEXT_TRACKING=y
CONFIG_HAVE_C_RECORDMCOUNT=y
CONFIG_HAVE_DEBUG_KMEMLEAK=y
CONFIG_HAVE_DMA_API_DEBUG=y
CONFIG_HAVE_DMA_CONTIGUOUS=y
CONFIG_HAVE_DYNAMIC_FTRACE=y
CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y
CONFIG_HAVE_EBPF_JIT=y
CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
CONFIG_HAVE_FUNCTION_TRACER=y
CONFIG_HAVE_GENERIC_DMA_COHERENT=y
CONFIG_HAVE_IDE=y
CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
CONFIG_HAVE_MEMBLOCK=y
CONFIG_HAVE_MOD_ARCH_SPECIFIC=y
CONFIG_HAVE_NET_DSA=y
CONFIG_HAVE_OPROFILE=y
CONFIG_HAVE_OPTPROBES=y
CONFIG_HAVE_PERF_EVENTS=y
CONFIG_HAVE_PERF_REGS=y
CONFIG_HAVE_PERF_USER_STACK_DUMP=y
CONFIG_HAVE_PROC_CPU=y
CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
CONFIG_HAVE_UID16=y
CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
CONFIG_HZ_FIXED=0
CONFIG_HZ_PERIODIC=y
CONFIG_I2C=y
CONFIG_I2C_BOARDINFO=y
CONFIG_I2C_CHARDEV=y
CONFIG_I2C_MV64XXX=y
# CONFIG_INITRAMFS_FORCE is not set
CONFIG_INITRAMFS_SOURCE=""
CONFIG_IOMMU_HELPER=y
CONFIG_IRQCHIP=y
CONFIG_IRQ_DOMAIN=y
CONFIG_IRQ_FORCED_THREADING=y
CONFIG_IRQ_WORK=y
CONFIG_LEDS_GPIO=y
CONFIG_LIBFDT=y
# CONFIG_MACH_D2NET_DT is not set
# CONFIG_MACH_DB88F5281 is not set
# CONFIG_MACH_DNS323 is not set
# CONFIG_MACH_DT2 is not set
# CONFIG_MACH_KUROBOX_PRO is not set
# CONFIG_MACH_LINKSTATION_LS_HGL is not set
# CONFIG_MACH_LINKSTATION_MINI is not set
# CONFIG_MACH_LINKSTATION_PRO is not set
# CONFIG_MACH_MSS2_DT is not set
# CONFIG_MACH_MV2120 is not set
# CONFIG_MACH_NET2BIG is not set
# CONFIG_MACH_RD88F5181L_FXO is not set
# CONFIG_MACH_RD88F5181L_GE is not set
# CONFIG_MACH_RD88F5182 is not set
# CONFIG_MACH_RD88F5182_DT is not set
# CONFIG_MACH_RD88F6183AP_GE is not set
CONFIG_MACH_TERASTATION_PRO2=y
# CONFIG_MACH_TS209 is not set
# CONFIG_MACH_TS409 is not set
# CONFIG_MACH_TS78XX is not set
CONFIG_MACH_WN802T=y
CONFIG_MACH_WNR854T=y
CONFIG_MACH_WRT350N_V2=y
CONFIG_MDIO_BUS=y
CONFIG_MDIO_DEVICE=y
CONFIG_MIGHT_HAVE_PCI=y
CONFIG_MIGRATION=y
CONFIG_MMC=y
CONFIG_MMC_MVSDIO=y
# CONFIG_MMC_TIFM_SD is not set
CONFIG_MODULES_USE_ELF_REL=y
CONFIG_MTD_PHYSMAP=y
CONFIG_MULTI_IRQ_HANDLER=y
CONFIG_MV643XX_ETH=y
CONFIG_MVEBU_MBUS=y
CONFIG_MVMDIO=y
CONFIG_MV_XOR=y
CONFIG_NEED_DMA_MAP_STATE=y
CONFIG_NEED_KUSER_HELPERS=y
CONFIG_NEED_PER_CPU_KM=y
# CONFIG_NET_VENDOR_AURORA is not set
CONFIG_NO_BOOTMEM=y
CONFIG_OF=y
CONFIG_OF_ADDRESS=y
CONFIG_OF_ADDRESS_PCI=y
CONFIG_OF_EARLY_FLATTREE=y
CONFIG_OF_FLATTREE=y
CONFIG_OF_GPIO=y
CONFIG_OF_IRQ=y
CONFIG_OF_MDIO=y
CONFIG_OF_NET=y
CONFIG_OF_PCI=y
CONFIG_OF_PCI_IRQ=y
CONFIG_OF_RESERVED_MEM=y
CONFIG_OLD_SIGACTION=y
CONFIG_OLD_SIGSUSPEND3=y
CONFIG_ORION_WATCHDOG=y
CONFIG_PAGE_OFFSET=0xC0000000
CONFIG_PCI=y
CONFIG_PCI_DOMAINS=y
CONFIG_PCI_DOMAINS_GENERIC=y
CONFIG_PERF_USE_VMALLOC=y
CONFIG_PGTABLE_LEVELS=2
CONFIG_PHYLIB=y
CONFIG_PLAT_ORION=y
CONFIG_PLAT_ORION_LEGACY=y
CONFIG_RATIONAL=y
# CONFIG_RCU_EXPERT is not set
# CONFIG_RCU_NEED_SEGCBLIST is not set
# CONFIG_RCU_STALL_COMMON is not set
CONFIG_REGMAP=y
CONFIG_REGMAP_I2C=y
CONFIG_REGMAP_MMIO=y
CONFIG_RTC_CLASS=y
CONFIG_RTC_I2C_AND_SPI=y
CONFIG_RTC_MC146818_LIB=y
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
# CONFIG_SCHED_INFO is not set
# CONFIG_SCSI_DMA is not set
CONFIG_SERIAL_8250_FSL=y
CONFIG_SPARSE_IRQ=y
CONFIG_SPLIT_PTLOCK_CPUS=999999
CONFIG_SRAM=y
CONFIG_SRAM_EXEC=y
CONFIG_SRCU=y
CONFIG_SWIOTLB=y
CONFIG_SWPHY=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
CONFIG_TICK_CPU_ACCOUNTING=y
CONFIG_TIMER_OF=y
CONFIG_TIMER_PROBE=y
CONFIG_TINY_SRCU=y
CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h"
CONFIG_USB_SUPPORT=y
CONFIG_USE_OF=y
CONFIG_VECTORS_BASE=0xffff0000
# CONFIG_VFP is not set
CONFIG_WATCHDOG_CORE=y
CONFIG_XZ_DEC_ARM=y
CONFIG_XZ_DEC_BCJ=y
CONFIG_ZBOOT_ROM_BSS=0x0
CONFIG_ZBOOT_ROM_TEXT=0x0

@ -1,54 +0,0 @@
#!/bin/sh
#
# Copyright (C) 2010 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
#
# This script sets system defaults for the hardware on firstboot
#
. /lib/functions.sh
wrt350nv2_default() {
# leds
uci batch <<__EOF
set system.power_led=led
set system.power_led.name='Power LED (green)'
set system.power_led.sysfs='wrt350nv2:green:power'
set system.power_led.default='1'
set system.wifi_led=led
set system.wifi_led.name='Wireless LED (green)'
set system.wifi_led.sysfs='wrt350nv2:green:wireless'
set system.wifi_led.trigger='netdev'
set system.wifi_led.dev='wlan0'
set system.wifi_led.mode='link tx rx'
set system.wifi_led.default='0'
commit system
__EOF
# add mac address from U-Boot partition to lan and wan devices
MTD=$(grep -e 'u-boot' /proc/mtd)
MTD=$(echo ${MTD} | sed 's/[a-z]*\([0-9]*\):.*/\1/')
[ -n "${MTD}" ] && {
MACADDR=$(dd if=/dev/mtdblock${MTD} bs=1 skip=262048 count=6 2>/dev/null | hexdump -e '1/1 "%02x"')
MACADDR2=$(( 0x${MACADDR} + 1))
MACADDR2=$(printf "%012x" ${MACADDR2})
MACADDR=$(echo ${MACADDR} | sed 's/\(..\)/\1:/g' | sed 's/:$//')
MACADDR2=$(echo ${MACADDR2} | sed 's/\(..\)/\1:/g' | sed 's/:$//')
uci set network.eth0.macaddr=${MACADDR}
uci set network.lan.macaddr=${MACADDR}
uci set network.wan.macaddr=${MACADDR2}
uci commit network
}
}
case "$(board_name)" in
'Linksys WRT350N v2')
wrt350nv2_default
;;
esac

@ -1,38 +0,0 @@
#
# Copyright (C) 2010-2011 OpenWrt.org
#
# use default "image" for PART_NAME
# use default for platform_do_upgrade()
platform_check_image() {
[ "$#" -gt 1 ] && { echo 'Too many arguments. Only flash file expected.'; return 1; }
local hardware="$(board_name)"
local magic="$(get_magic_word "$1")"
local magic_long="$(get_magic_long "$1")"
case "${hardware}" in
# hardware with a direct uImage partition
# image header format as described in U-Boot's include/image.h
# see http://git.denx.de/cgi-bin/gitweb.cgi?p=u-boot.git;a=blob;f=include/image.h
'Linksys WRT350N v2')
[ "${magic_long}" != '27051956' ] && {
echo "Invalid image type ${magic_long}."
return 1
}
return 0
;;
# Netgear WNR854T (has uImage as file inside a JFFS2 partition)
'Netgear WNR854T')
[ "${magic}" != '8519' ] && {
echo "Invalid image type ${magic}."
return 1
}
return 0
;;
esac
echo "Sysupgrade is not yet supported on ${hardware}."
return 1
}

@ -1,14 +0,0 @@
#
# Copyright (C) 2008-2010 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
BOARDNAME:=Generic
FEATURES+=squashfs
define Target/Description
Build firmware images for Marvell Orion based boards that boot from internal flash.
(e.g.: Linksys WRT350N v2, Netgear WNR854T, ...)
endef

@ -1,42 +0,0 @@
CONFIG_ATA=y
CONFIG_BLK_DEV_DM=y
CONFIG_BLK_DEV_DM_BUILTIN=y
CONFIG_BLK_DEV_MD=y
CONFIG_BLK_DEV_SD=y
CONFIG_BLK_SCSI_REQUEST=y
CONFIG_CRC16=y
CONFIG_CRYPTO_CRC32C=y
CONFIG_DAX=y
# CONFIG_DM_CRYPT is not set
# CONFIG_DM_MIRROR is not set
# CONFIG_DM_SNAPSHOT is not set
CONFIG_EXT4_FS=y
CONFIG_FS_MBCACHE=y
CONFIG_GENERIC_PHY=y
CONFIG_GLOB=y
CONFIG_HWMON=y
CONFIG_JBD2=y
CONFIG_MACH_DT2=y
CONFIG_MACH_NET2BIG=y
# CONFIG_MACH_WN802T is not set
# CONFIG_MACH_WNR854T is not set
# CONFIG_MACH_WRT350N_V2 is not set
CONFIG_MD=y
CONFIG_MD_AUTODETECT=y
CONFIG_MD_LINEAR=y
# 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_NLS=y
CONFIG_SATA_MV=y
CONFIG_SCSI=y
CONFIG_SCSI_DMA=y
CONFIG_SG_POOL=y
CONFIG_USB=y
CONFIG_USB_COMMON=y
CONFIG_USB_EHCI_HCD=y
CONFIG_USB_EHCI_HCD_ORION=y
CONFIG_USB_EHCI_HCD_PLATFORM=y
CONFIG_USB_STORAGE=y

@ -1,15 +0,0 @@
#
# Copyright (C) 2008-2010 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
BOARDNAME:=Internal Hard-Disk
FEATURES+=targz
DEVICE_TYPE:=nas
define Target/Description
Build firmware images for Marvell Orion based boards that boot directly from internal disk storage.
(e.g.: Freecom DataTank 2, ...)
endef

@ -1,12 +0,0 @@
#
# Copyright (C) 2008-2010 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/image.mk
include $(SUBTARGET).mk
$(eval $(call BuildImage))

@ -1,237 +0,0 @@
#
# Copyright (C) 2008-2015 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
### DO NOT INDENT LINES CONTAINING $(call xyz) AS THIS MAY CHANGE THE CONTEXT
### OF THE FIRST LINE IN THE CALLED VARIABLE (NOTE: variable!)
### see http://www.gnu.org/software/make/manual/html_node/Call-Function.html#Call-Function
### ACTUALLY IT IS A SIMPLE MACRO EXPANSION
### use round brackets for make variables, and curly brackets for shell variables
## Kernel mtd partition size in KiB
KERNEL_MTD_SIZE:=1280
# Netgear WNR854T: erase size is 128KiB = 0x00020000 = 131072
ERASE_SIZE_128K:=128
# Linksys WRT350N v2: erase size is 64KiB = 0x00010000 = 65536
ERASE_SIZE_64K:=64
# define JFFS2 sizes for include/image.mk
JFFS2_BLOCKSIZE:=64k 128k
###
### Image/BuildKernel
###
define Image/BuildKernel
### Dummy comment for indented calls of Image/BuildKernel
## Netgear WN802T: mach id 3306 (0x0cea)
$(call Image/BuildKernel/ARM/zImage,wn802t,"\x0c\x1c\xa0\xe3\xea\x10\x81\xe3")
$(call Image/BuildKernel/ARM/uImage,wn802t)
ifeq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),y)
$(call Image/BuildKernel/ARM/zImage,wn802t,"\x0c\x1c\xa0\xe3\xea\x10\x81\xe3",-initramfs)
$(call Image/BuildKernel/ARM/uImage,wn802t,-initramfs)
endif
ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),y) # nothing more to do for a ramdisk build
$(call Image/BuildKernel/JFFS2uImage,wn802t,$(ERASE_SIZE_64K),uImage)
$(call Image/Default/FileSizeCheck,$(KDIR)/wn802t-uImage.jffs2,$(shell expr $(KERNEL_MTD_SIZE) \* 1024))
endif
## Netgear WNR854T: mach id 1801 (0x0709)
$(call Image/BuildKernel/ARM/zImage,wnr854t,"\x07\x1c\xa0\xe3\x09\x10\x81\xe3")
$(call Image/BuildKernel/ARM/uImage,wnr854t)
ifeq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),y)
$(call Image/BuildKernel/ARM/zImage,wnr854t,"\x07\x1c\xa0\xe3\x09\x10\x81\xe3",-initramfs)
$(call Image/BuildKernel/ARM/uImage,wnr854t,-initramfs)
endif
ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),y) # nothing more to do for a ramdisk build
$(call Image/BuildKernel/JFFS2uImage,wnr854t,$(ERASE_SIZE_128K),uImage)
$(call Image/Default/FileSizeCheck,$(KDIR)/wnr854t-uImage.jffs2,$(shell expr $(KERNEL_MTD_SIZE) \* 1024))
endif
## Linksys WRT350N v2: mach id 1633 (0x0661)
$(call Image/BuildKernel/ARM/zImage,wrt350nv2,"\x06\x1c\xa0\xe3\x61\x10\x81\xe3")
$(call Image/BuildKernel/ARM/uImage,wrt350nv2)
ifeq ($($CONFIG_TARGET_ROOTFS_INITRAMFS),y)
$(call Image/BuildKernel/ARM/zImage,wrt350nv2,"\x06\x1c\xa0\xe3\x61\x10\x81\xe3",-initramfs)
$(call Image/BuildKernel/ARM/uImage,wrt350nv2-initramfs)
endif
ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),y) # nothing more to do for a ramdisk build
$(call Image/Default/FileSizeCheck,$(KDIR)/wrt350nv2-uImage,$(shell expr $(KERNEL_MTD_SIZE) \* 1024))
endif
## Buffalo Terastation Pro II/Live: mach id 1584 (0x0630)
$(call Image/BuildKernel/ARM/zImage,terastation-pro2,"\x06\x1c\xa0\xe3\x30\x10\x81\xe3")
$(call Image/BuildKernel/ARM/uImage,terastation-pro2)
ifeq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),y)
$(call Image/BuildKernel/ARM/zImage,terastation-pro2,"\x06\x1c\xa0\xe3\x30\x10\x81\xe3",-initramfs)
$(call Image/BuildKernel/ARM/uImage,terastation-pro2,-initramfs)
endif
endef
define Image/BuildKernel/ARM/zImage
# merge machine id and regular zImage into one file
# parameters: 1 = machine name, 2 = machine id as string in quotes
# $(BOARD) kernel zImage for $(1)
echo -en $(2) > '$(KDIR)/$(1)-zImage$(3)'
cat '$(KDIR)/zImage$(3)' >> '$(KDIR)/$(1)-zImage$(3)'
endef
define Image/BuildKernel/ARM/uImage
# create uImage from zImage
# parameters: 1 = machine name
# $(BOARD) kernel uImage for $(1)
'$(STAGING_DIR_HOST)/bin/mkimage' -A arm -O linux -T kernel \
-C none -a 0x00008000 -e 0x00008000 -n 'Linux-$(LINUX_VERSION)' \
-d '$(KDIR)/$(1)-zImage$(2)' '$(KDIR)/$(1)-uImage$(2)'
ifeq ($(2),-initramfs) # only copy uImage for ramdisk build
cp '$(KDIR)/$(1)-uImage-initramfs' '$(BIN_DIR)/openwrt-$(1)-uImage-initramfs'
endif
endef
define Image/BuildKernel/JFFS2uImage
# create JFFS2 partition with uImage file (result is already padded to erase size)
# parameters: 1 = machine name, 2 = erase size in KiB, 3 = uImage file name
# $(BOARD) kernel uImage for $(1) in JFFS2-$(2)k partition
rm -rf '$(TMP_DIR)/$(1)_jffs2_uimage'
mkdir '$(TMP_DIR)/$(1)_jffs2_uimage'
cp '$(KDIR)/$(1)-uImage' '$(TMP_DIR)/$(1)_jffs2_uimage/$(3)'
$(STAGING_DIR_HOST)/bin/mkfs.jffs2 --compression-mode=none --pad --little-endian --squash -e $(2)KiB -o '$(KDIR)/$(1)-uImage.jffs2' -d '$(TMP_DIR)/$(1)_jffs2_uimage'
rm -rf '$(TMP_DIR)/$(1)_jffs2_uimage'
endef
define Image/Default/FileSizeCheck
# parameters: 1 = file path, 2 = maximum size in bytes
[ $(stat -c %s '$(1)') -le $(2) ] || { echo ' ERROR: $(1) too big (> $(2) bytes)'; rm -f $(1); }
endef
###
### Image/Build
###
define Image/Build
### Dummy comment for indented calls of Image/Build with $(1)
## Prepare rootfs
$(call Image/Build/$(1),$(1))
## Netgear WN802T
$(call Image/Build/Default,$(1),wn802t,$(ERASE_SIZE_64K),$(KERNEL_MTD_SIZE),.jffs2,NG_WN802T)
## Netgear WNR854T
$(call Image/Build/Default,$(1),wnr854t,$(ERASE_SIZE_128K),$(KERNEL_MTD_SIZE),.jffs2,NG_WNR854T)
## Linksys WRT350N v2
$(call Image/Build/Linksys/wrt350nv2,$(1),wrt350nv2,$(ERASE_SIZE_64K),$(KERNEL_MTD_SIZE),)
## Buffalo Terastation Pro II/Live
$(call Image/Build/Default,$(1),terastation-pro2,$(ERASE_SIZE_128K),$(KERNEL_MTD_SIZE),.jffs2,TERASTATION_PRO2)
endef
define Image/Build/squashfs
$(call prepare_generic_squashfs,$(KDIR)/root.squashfs)
endef
## generate defines for all JFFS2 block sizes
define Image/Build/jffs2/sub
$(eval define Image/Build/jffs2-$(1)
cp '$$(KDIR)/root.jffs2-$(1)' '$$(BIN_DIR)/$$(IMG_PREFIX)-root.jffs2-$(1)'
endef)
endef
$(foreach SZ,$(JFFS2_BLOCKSIZE),$(call Image/Build/jffs2/sub,$(SZ)))
define Image/Build/Default
# parameters: 1 = rootfs type, 2 = machine name, 3 = erase size in KiB, 4 = kernel mtd size in KiB, 5 = kernel file suffix, 6 = header
ifeq ($(findstring jffs2-,$(1)),jffs2-) # JFFS2: build only image fitting to erase size
ifeq ($(1),jffs2-$(3)k)
$(call Image/Build/Default/sysupgrade,$(1),$(2),$(4),$(5))
$(call Image/Build/Default/factory,$(1),$(2),$(6))
endif
else
ifeq ($(1),ext4) # EXT4: ignore
# do nothing
else # do all other images
$(call Image/Build/Default/sysupgrade,$(1),$(2),$(4),$(5))
$(call Image/Build/Default/factory,$(1),$(2),$(6))
endif
endif
endef
define Image/Build/Default/sysupgrade
# parameters: 1 = rootfs type, 2 = machine name, 3 = pad size in KiB (kernel mtd size or erase size), 4 = kernel file suffix
# $(BOARD) $(1) sysupgrade image for $(2)
( \
dd if='$(KDIR)/$(2)-uImage$(4)' bs=$(3)k conv=sync; \
dd if='$(KDIR)/root.$(1)'; \
) > '$(BIN_DIR)/openwrt-$(2)-$(1)-sysupgrade.img'
endef
define Image/Build/Default/factory
# parameters: 1 = rootfs type, 2 = machine name, 3 = header
# $(BOARD) $(1) factory upgrade image for $(2)
'$(STAGING_DIR_HOST)/bin/add_header' $(3) '$(BIN_DIR)/openwrt-$(2)-$(1)-sysupgrade.img' '$(BIN_DIR)/openwrt-$(2)-$(1)-factory.img'
endef
##
## Image/Build/Linksys
##
define Image/Build/Linksys/wrt350nv2
# parameters: 1 = rootfs type, 2 = machine name, 3 = erase size in KiB, 4 = kernel mtd size in KiB, 5 = kernel file suffix
ifeq ($(findstring jffs2-,$(1)),jffs2-) # JFFS2: build only image fitting to erase size
ifeq ($(1),jffs2-$(3)k)
$(call Image/Build/Default/sysupgrade,$(1),$(2),$(4),$(5))
$(call Image/Build/Linksys/wrt350nv2-builder,$(1),$(2))
endif
else
ifeq ($(1),ext4) # EXT4: ignore
# do nothing
else # do all other images
$(call Image/Build/Default/sysupgrade,$(1),$(2),$(4),$(5))
$(call Image/Build/Linksys/wrt350nv2-builder,$(1),$(2))
endif
endif
endef
define Image/Build/Linksys/wrt350nv2-builder
# parameters: 1 = rootfs type, 2 = machine name
# $(BOARD) $(1) factory and recovery image for $(2) via wrt350nv2-builder
rm -rf '$(TMP_DIR)/$(2)_factory'
mkdir '$(TMP_DIR)/$(2)_factory'
# create parameter file
echo ':image 0 $(BIN_DIR)/openwrt-$(2)-$(1)-sysupgrade.img' > '$(TMP_DIR)/$(2)_factory/$(2).par'
[ ! -f '$(STAGING_DIR_HOST)/share/wrt350nv2-builder/u-boot.bin' ] || ( \
echo ':u-boot 0 $(STAGING_DIR_HOST)/share/wrt350nv2-builder/u-boot.bin' >> '$(TMP_DIR)/$(2)_factory/$(2).par'; \
)
echo '#version 0x2020' >> '$(TMP_DIR)/$(2)_factory/$(2).par'
# create bin file for recovery and factory image
-( \
cd '$(TMP_DIR)/$(2)_factory'; \
'$(STAGING_DIR_HOST)/bin/wrt350nv2-builder' -b '$(TMP_DIR)/$(2)_factory/$(2).par'; \
) && $(CP) '$(TMP_DIR)/$(2)_factory/wrt350n.bin' '$(BIN_DIR)/openwrt-$(2)-$(1)-recovery.bin' && \
( \
cd '$(TMP_DIR)/$(2)_factory'; \
zip 'wrt350n.zip' 'wrt350n.bin'; \
) && '$(STAGING_DIR_HOST)/bin/wrt350nv2-builder' -z '$(TMP_DIR)/$(2)_factory/wrt350n.zip' '$(BIN_DIR)/openwrt-$(2)-$(1)-factory.img'
rm -rf '$(TMP_DIR)/$(2)_factory'
endef
###
### Image/PreReq
###
## Dependency for WRT350N v2 factory image
$(eval $(call RequireCommand,zip, \
Please install zip. \
))

@ -1,57 +0,0 @@
#
# Copyright (C) 2008-2010 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
define Image/BuildKernelMachId
echo -en "\x$(2)\x1c\xa0\xe3\x$(3)\x10\x81\xe3" > $(KDIR)/$(1)-zImage
cat $(LINUX_DIR)/arch/arm/boot/zImage >> $(KDIR)/$(1)-zImage
$(STAGING_DIR_HOST)/bin/mkimage -A arm -O linux -T kernel \
-C none -a 0x00008000 -e 0x00008000 -n 'Linux-$(LINUX_VERSION)' \
-d $(KDIR)/$(1)-zImage $(KDIR)/$(1)-uImage
cp $(KDIR)/$(1)-uImage $(BIN_DIR)/openwrt-$(1)-uImage
endef
define Image/BuildKernel
# Orion Kernel uImages
# DT2: mach id 1514 (0x5EA)
$(call Image/BuildKernelMachId,dt2,05,ea)
# LaCie 2big Network: mach id 2342 (0x926)
$(call Image/BuildKernelMachId,net2big,09,26)
endef
define Image/Build/Freecom
# Orion Freecom Images
# backup unwanted files
rm -rf ${TMP_DIR}/$2_backup
mkdir ${TMP_DIR}/$2_backup
-mv $(TARGET_DIR)/{var,jffs,rom} ${TMP_DIR}/$2_backup
# add extra files
$(INSTALL_DIR) $(TARGET_DIR)/boot
# TODO: Add special CMDLINE shim for webupgrade image here
$(CP) $(KDIR)/dt2-uImage $(TARGET_DIR)/boot/uImage
$(INSTALL_DIR) $(TARGET_DIR)/var
# create image
$(TAR) cfj $(BIN_DIR)/openwrt-$(2)-$(1).img --numeric-owner --owner=0 --group=0 -C $(TARGET_DIR)/ .
$(STAGING_DIR_HOST)/bin/encode_crc $(BIN_DIR)/openwrt-$(2)-$(1).img $(BIN_DIR)/openwrt-$(2)-$(1)-webupgrade.img $(3)
# remove extra files
rm -rf $(TARGET_DIR)/{boot,var}
# recover unwanted files
-mv ${TMP_DIR}/$2_backup/* $(TARGET_DIR)/
rm -rf ${TMP_DIR}/$2_backup
endef
define Image/Build
$(call Image/Build/$(1),$(1))
$(call Image/Build/Freecom,$(1),dt2,DT,$(1))
endef
define Image/Build/squashfs
$(call prepare_generic_squashfs,$(KDIR)/root.squashfs)
( \
dd if=$(KDIR)/uImage bs=1024k conv=sync; \
dd if=$(KDIR)/root.$(1) bs=128k conv=sync; \
) > $(BIN_DIR)/$(IMG_PREFIX)-$(1).img
endef

@ -1,18 +0,0 @@
--- a/arch/arm/tools/mach-types
+++ b/arch/arm/tools/mach-types
@@ -268,6 +268,7 @@ yl9200 MACH_YL9200 YL9200 1507
rd88f5182 MACH_RD88F5182 RD88F5182 1508
kurobox_pro MACH_KUROBOX_PRO KUROBOX_PRO 1509
mx31_3ds MACH_MX31_3DS MX31_3DS 1511
+dt2 MACH_DT2 DT2 1514
qong MACH_QONG QONG 1524
omap2evm MACH_OMAP2EVM OMAP2EVM 1534
omap3evm MACH_OMAP3EVM OMAP3EVM 1535
@@ -530,6 +531,7 @@ mx53_loco MACH_MX53_LOCO MX53_LOCO 32
wario MACH_WARIO WARIO 3288
cm_t3730 MACH_CM_T3730 CM_T3730 3290
hrefv60 MACH_HREFV60 HREFV60 3293
+wn802t MACH_WN802T WN802T 3306
armlex4210 MACH_ARMLEX4210 ARMLEX4210 3361
snowball MACH_SNOWBALL SNOWBALL 3363
xilinx_ep107 MACH_XILINX_EP107 XILINX_EP107 3378

@ -1,32 +0,0 @@
--- a/arch/arm/mach-orion5x/wrt350n-v2-setup.c
+++ b/arch/arm/mach-orion5x/wrt350n-v2-setup.c
@@ -134,11 +134,11 @@ static struct mtd_partition wrt350n_v2_n
{
.name = "kernel",
.offset = 0x00000000,
- .size = 0x00760000,
+ .size = 0x00140000, // change to kernel mtd size here (1/3)
}, {
.name = "rootfs",
- .offset = 0x001a0000,
- .size = 0x005c0000,
+ .offset = 0x00140000, // change to kernel mtd size here (2/3)
+ .size = 0x00610000, // adopt to kernel mtd size here (3/3) = 0x00750000 - <kernel mtd size>
}, {
.name = "lang",
.offset = 0x00760000,
@@ -151,6 +151,14 @@ static struct mtd_partition wrt350n_v2_n
.name = "u-boot",
.offset = 0x007c0000,
.size = 0x00040000,
+ }, {
+ .name = "eRcOmM_do_not_touch",
+ .offset = 0x00750000,
+ .size = 0x00010000, // erasesize
+ }, {
+ .name = "image", // for sysupgrade
+ .offset = 0x00000000,
+ .size = 0x00750000,
},
};

@ -1,25 +0,0 @@
--- a/arch/arm/mach-orion5x/wnr854t-setup.c
+++ b/arch/arm/mach-orion5x/wnr854t-setup.c
@@ -57,15 +57,19 @@ static struct mtd_partition wnr854t_nor_
{
.name = "kernel",
.offset = 0x00000000,
- .size = 0x00100000,
+ .size = 0x00140000,
}, {
.name = "rootfs",
- .offset = 0x00100000,
- .size = 0x00660000,
+ .offset = 0x00140000,
+ .size = 0x00620000,
}, {
.name = "uboot",
.offset = 0x00760000,
.size = 0x00040000,
+ }, {
+ .name = "image", // for sysupgrade
+ .offset = 0x00000000,
+ .size = 0x00760000,
},
};

@ -1,557 +0,0 @@
--- a/arch/arm/mach-orion5x/Kconfig
+++ b/arch/arm/mach-orion5x/Kconfig
@@ -49,6 +49,13 @@ config MACH_RD88F5182_DT
Say 'Y' here if you want your kernel to support the Marvell
Orion-NAS (88F5182) RD2, Flattened Device Tree.
+config MACH_DT2
+ bool "Freecom DataTank Gateway"
+ select I2C_BOARDINFO
+ help
+ Say 'Y' here if you want your kernel to support the
+ Freecom DataTank Gateway
+
config MACH_KUROBOX_PRO
bool "KuroBox Pro"
select I2C_BOARDINFO if I2C
--- a/arch/arm/mach-orion5x/Makefile
+++ b/arch/arm/mach-orion5x/Makefile
@@ -16,6 +16,7 @@ obj-$(CONFIG_MACH_TS78XX) += ts78xx-setu
obj-$(CONFIG_MACH_MV2120) += mv2120-setup.o
obj-$(CONFIG_MACH_NET2BIG) += net2big-setup.o
obj-$(CONFIG_MACH_WNR854T) += wnr854t-setup.o
+obj-$(CONFIG_MACH_DT2) += dt2-setup.o
obj-$(CONFIG_MACH_RD88F5181L_GE) += rd88f5181l-ge-setup.o
obj-$(CONFIG_MACH_RD88F5181L_FXO) += rd88f5181l-fxo-setup.o
obj-$(CONFIG_MACH_RD88F6183AP_GE) += rd88f6183ap-ge-setup.o
--- /dev/null
+++ b/arch/arm/mach-orion5x/dt2-common.h
@@ -0,0 +1,82 @@
+#ifndef __INC_DT2_COMMON_H
+#define __INC_DT2_COMMON_H
+
+#define ATAG_MV_UBOOT 0x41000403
+
+struct tag_mv_uboot {
+ u32 uboot_version;
+ u32 tclk;
+ u32 sysclk;
+ u32 isUsbHost;
+ u32 overEthAddr;
+ u8 dt2_eeprom[256];
+};
+
+#define DT2_EEPROM_ADDR 0x50
+#define DT2_EEPROM_OFFSET 0
+#define DT2_EEPROM_LENGTH 256
+
+#define DT2_SERIAL_NUMBER_DEFAULT "run on default\0"
+#define DT2_REVISION_DEFAULT_INIT 0xFF
+#define DT2_CONFIG_FLAGS_DEFAULT 0x00
+
+#define _PACKED_ __attribute__((packed))
+
+struct DT2_EEPROM_SD_CONFIG {
+ unsigned int ram_1;
+ unsigned int ram_2;
+ unsigned int ram_3;
+ unsigned int ram_4;
+ unsigned char ram_5;
+ unsigned char ram_6;
+ unsigned short ram_7;
+ unsigned int magic_id;
+ } _PACKED_; // 24 Bytes in total
+
+struct DT2_EEPROM_FC_CONFIG {
+ unsigned char rtc_sts_mask;
+ unsigned char rtc_sts_init;
+ unsigned char rtc_int_mask;
+ unsigned char rtc_int_init;
+ unsigned char rtc_atrim_init;
+ unsigned char rtc_dtrim_init;
+ unsigned char dummy1;
+ unsigned char dummy2;
+ unsigned char dt2_config_flags; /* 0x80 to load rtc_values to RTC */
+ unsigned char dt2_revision; /* upper nibble is HW, lower nibble is FW */
+ unsigned char dt2_serial_number[16]; /* Serial number of DT-2 */
+ } _PACKED_; // 26 Bytes in total
+
+#define CFG_LOAD_RTC_VALUES 0x80
+
+struct DT2_EEPROM_GW_CONFIG {
+ unsigned int dummy1;
+ unsigned int dummy2;
+ unsigned int dummy3;
+ unsigned char dummy4;
+ unsigned char tos_video_val1;
+ unsigned char tos_video_val2;
+ unsigned char tos_voip_val;
+ unsigned char qos_igmp_cfg;
+ unsigned char num_of_ifs;
+ unsigned short vlan_ports_if[3];
+ unsigned char mac_addr[3][6];
+ } _PACKED_; // 42 Bytes in total
+
+#define _SIZE_OF_ALL_STRUCTS_ (sizeof(struct DT2_EEPROM_SD_CONFIG) + sizeof(struct DT2_EEPROM_FC_CONFIG) + sizeof(struct DT2_EEPROM_GW_CONFIG))
+
+// MV = EEPROM - SD - FC - GW - CRC
+struct DT2_EEPROM_MV_CONFIG {
+ unsigned int reg_addr[(DT2_EEPROM_LENGTH - _SIZE_OF_ALL_STRUCTS_ - sizeof(unsigned int)) / (sizeof(unsigned int) * 2)];
+ unsigned int reg_data[(DT2_EEPROM_LENGTH - _SIZE_OF_ALL_STRUCTS_ - sizeof(unsigned int)) / (sizeof(unsigned int) * 2)];
+ } _PACKED_;
+
+struct DT2_EEPROM_STRUCT {
+ struct DT2_EEPROM_MV_CONFIG mv;
+ struct DT2_EEPROM_SD_CONFIG sd;
+ struct DT2_EEPROM_FC_CONFIG fc;
+ struct DT2_EEPROM_GW_CONFIG gw;
+ unsigned int crc;
+ } _PACKED_;
+
+#endif
--- /dev/null
+++ b/arch/arm/mach-orion5x/dt2-setup.c
@@ -0,0 +1,443 @@
+/*
+ * arch/arm/mach-orion5x/dt2-setup.c
+ *
+ * Freecom DataTank Gateway Setup
+ *
+ * Copyright (C) 2009 Zintis Petersons <Zintis.Petersons@abcsolutions.lv>
+ *
+ * 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.
+ */
+
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/platform_device.h>
+#include <linux/pci.h>
+#include <linux/irq.h>
+#include <linux/mtd/physmap.h>
+#include <linux/mv643xx_eth.h>
+#include <linux/ethtool.h>
+#include <linux/if_ether.h>
+#include <net/dsa.h>
+#include <linux/ata_platform.h>
+#include <linux/i2c.h>
+#include <linux/reboot.h>
+#include <linux/interrupt.h>
+#include <asm/mach-types.h>
+#include <asm/gpio.h>
+#include <asm/mach/arch.h>
+#include <asm/mach/pci.h>
+#include "orion5x.h"
+#include "common.h"
+#include "mpp.h"
+
+/*****************************************************************************
+ * DT2 local
+ ****************************************************************************/
+#include <asm/setup.h>
+#include "dt2-common.h"
+
+u32 mvUbootVer = 0;
+u32 mvTclk = 166666667;
+u32 mvSysclk = 200000000;
+u32 mvIsUsbHost = 1;
+u32 overEthAddr = 0;
+u32 gBoardId = -1;
+struct DT2_EEPROM_STRUCT dt2_eeprom;
+
+/*****************************************************************************
+ * DT2 Info
+ ****************************************************************************/
+/*
+ * PCI
+ */
+
+#define DT2_PCI_SLOT0_OFFS 7
+#define DT2_PCI_SLOT0_IRQ_A_PIN 3
+#define DT2_PCI_SLOT0_IRQ_B_PIN 2
+
+#define DT2_PIN_GPIO_SYNC 25
+#define DT2_PIN_GPIO_POWER 24
+#define DT2_PIN_GPIO_UNPLUG1 23
+#define DT2_PIN_GPIO_UNPLUG2 22
+#define DT2_PIN_GPIO_RESET 4
+
+#define DT2_NOR_BOOT_BASE 0xf4000000
+#define DT2_NOR_BOOT_SIZE SZ_512K
+
+#define DT2_LEDS_BASE 0xfa000000
+#define DT2_LEDS_SIZE SZ_1K
+
+/*****************************************************************************
+ * 512K NOR Flash on Device bus Boot CS
+ ****************************************************************************/
+
+static struct mtd_partition dt2_partitions[] = {
+ {
+ .name = "u-boot",
+ .size = 0x00080000,
+ .offset = 0,
+ },
+};
+
+static struct physmap_flash_data dt2_nor_flash_data = {
+ .width = 1, /* 8 bit bus width */
+ .parts = dt2_partitions,
+ .nr_parts = ARRAY_SIZE(dt2_partitions)
+};
+
+static struct resource dt2_nor_flash_resource = {
+ .flags = IORESOURCE_MEM,
+ .start = DT2_NOR_BOOT_BASE,
+ .end = DT2_NOR_BOOT_BASE + DT2_NOR_BOOT_SIZE - 1,
+};
+
+static struct platform_device dt2_nor_flash = {
+ .name = "physmap-flash",
+ .id = 0,
+ .dev = {
+ .platform_data = &dt2_nor_flash_data,
+ },
+ .resource = &dt2_nor_flash_resource,
+ .num_resources = 1,
+};
+
+/*****************************************************************************
+ * PCI
+ ****************************************************************************/
+
+void __init dt2_pci_preinit(void)
+{
+ int pin, irq;
+
+ /*
+ * Configure PCI GPIO IRQ pins
+ */
+ pin = DT2_PCI_SLOT0_IRQ_A_PIN;
+ if (gpio_request(pin, "PCI IntA") == 0) {
+ if (gpio_direction_input(pin) == 0) {
+ irq = gpio_to_irq(pin);
+ irq_set_irq_type(irq, IRQ_TYPE_LEVEL_LOW);
+ printk (KERN_INFO "PCI IntA IRQ: %d\n", irq);
+ } else {
+ printk(KERN_ERR "dt2_pci_preinit failed to "
+ "irq_set_irq_type pin %d\n", pin);
+ gpio_free(pin);
+ }
+ } else {
+ printk(KERN_ERR "dt2_pci_preinit failed to request gpio %d\n", pin);
+ }
+
+ pin = DT2_PCI_SLOT0_IRQ_B_PIN;
+ if (gpio_request(pin, "PCI IntB") == 0) {
+ if (gpio_direction_input(pin) == 0) {
+ irq = gpio_to_irq(pin);
+ irq_set_irq_type(irq, IRQ_TYPE_LEVEL_LOW);
+ printk (KERN_INFO "PCI IntB IRQ: %d\n", irq);
+ } else {
+ printk(KERN_ERR "dt2_pci_preinit failed to "
+ "irq_set_irq_type pin %d\n", pin);
+ gpio_free(pin);
+ }
+ } else {
+ printk(KERN_ERR "dt2_pci_preinit failed to gpio_request %d\n", pin);
+ }
+}
+
+static int __init dt2_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
+{
+ int irq;
+
+ /*
+ * Check for devices with hard-wired IRQs.
+ */
+ irq = orion5x_pci_map_irq(dev, slot, pin);
+ if (irq != -1){
+ printk(KERN_INFO "orion5x_pci_map_irq: %d\n", irq);
+ return irq;
+ }
+
+ /*
+ * PCI IRQs are connected via GPIOs
+ */
+ switch (slot - DT2_PCI_SLOT0_OFFS) {
+ case 0:
+ if (pin == 1){
+ irq = gpio_to_irq(DT2_PCI_SLOT0_IRQ_A_PIN);
+ printk(KERN_INFO "dt2_pci_map_irq DT2_PCI_SLOT0_IRQ_A_PIN: %d\n", irq);
+ }
+ else {
+ irq = gpio_to_irq(DT2_PCI_SLOT0_IRQ_B_PIN);
+ printk(KERN_INFO "dt2_pci_map_irq DT2_PCI_SLOT0_IRQ_B_PIN: %d\n", irq);
+ }
+ default:
+ irq = -1;
+ printk(KERN_INFO "dt2_pci_map_irq IRQ: %d\n", irq);
+ }
+
+ return irq;
+}
+
+static struct hw_pci dt2_pci __initdata = {
+ .nr_controllers = 2,
+ .preinit = dt2_pci_preinit,
+ .setup = orion5x_pci_sys_setup,
+ .scan = orion5x_pci_sys_scan_bus,
+ .map_irq = dt2_pci_map_irq,
+};
+
+static int __init dt2_pci_init(void)
+{
+ if (machine_is_dt2())
+ pci_common_init(&dt2_pci);
+
+ return 0;
+}
+
+subsys_initcall(dt2_pci_init);
+
+/*****************************************************************************
+ * Ethernet
+ ****************************************************************************/
+
+static struct mv643xx_eth_platform_data dt2_eth_data = {
+ .phy_addr = MV643XX_ETH_PHY_NONE,
+ .speed = SPEED_1000,
+ .duplex = DUPLEX_FULL,
+};
+
+static struct dsa_chip_data dt2_switch_chip_data = {
+ .port_names[0] = "wan",
+ .port_names[1] = "lan1",
+ .port_names[2] = "lan2",
+ .port_names[3] = "cpu",
+ .port_names[4] = "lan3",
+ .port_names[5] = "lan4",
+};
+
+/*****************************************************************************
+ * RTC ISL1208 on I2C bus
+ ****************************************************************************/
+static struct i2c_board_info __initdata dt2_i2c_rtc = {
+ I2C_BOARD_INFO("isl1208", 0x6F),
+};
+
+/*****************************************************************************
+ * Sata
+ ****************************************************************************/
+static struct mv_sata_platform_data dt2_sata_data = {
+ .n_ports = 2,
+};
+
+/*****************************************************************************
+ * General Setup
+ ****************************************************************************/
+static unsigned int dt2_mpp_modes[] __initdata = {
+ MPP0_GPIO, // RTC interrupt
+ MPP1_GPIO, // 88e6131 interrupt
+ MPP2_GPIO, // PCI_intB
+ MPP3_GPIO, // PCI_intA
+ MPP4_GPIO, // reset button switch
+ MPP5_GPIO,
+ MPP6_GPIO,
+ MPP7_GPIO,
+ MPP8_GPIO,
+ MPP9_GIGE, /* GE_RXERR */
+ MPP10_GPIO, // usb
+ MPP11_GPIO, // usb
+ MPP12_GIGE, // GE_TXD[4]
+ MPP13_GIGE, // GE_TXD[5]
+ MPP14_GIGE, // GE_TXD[6]
+ MPP15_GIGE, // GE_TXD[7]
+ MPP16_GIGE, // GE_RXD[4]
+ MPP17_GIGE, // GE_RXD[5]
+ MPP18_GIGE, // GE_RXD[6]
+ MPP19_GIGE, // GE_RXD[7]
+ 0,
+};
+
+/*****************************************************************************
+ * LEDS
+ ****************************************************************************/
+static struct platform_device dt2_leds = {
+ .name = "dt2-led",
+ .id = -1,
+};
+
+/****************************************************************************
+ * GPIO key
+ ****************************************************************************/
+static irqreturn_t dt2_reset_handler(int irq, void *dev_id)
+{
+ /* This is the paper-clip reset which does an emergency reboot. */
+ printk(KERN_INFO "Restarting system.\n");
+ machine_restart(NULL);
+
+ /* This should never be reached. */
+ return IRQ_HANDLED;
+}
+
+static irqreturn_t dt2_power_handler(int irq, void *dev_id)
+{
+ printk(KERN_INFO "Shutting down system.\n");
+ machine_power_off();
+ return IRQ_HANDLED;
+}
+
+static void __init dt2_init(void)
+{
+ /*
+ * Setup basic Orion functions. Need to be called early.
+ */
+ orion5x_init();
+
+ orion5x_mpp_conf(dt2_mpp_modes);
+
+ /*
+ * Configure peripherals.
+ */
+
+ orion5x_uart0_init();
+ orion5x_ehci0_init();
+ orion5x_ehci1_init();
+ orion5x_i2c_init();
+ orion5x_sata_init(&dt2_sata_data);
+ orion5x_xor_init();
+
+ printk(KERN_INFO "U-Boot parameters:\n");
+ printk(KERN_INFO "Sys Clk = %d, Tclk = %d, BoardID = 0x%02x\n", mvSysclk, mvTclk, gBoardId);
+
+ printk(KERN_INFO "Serial: %s\n", dt2_eeprom.fc.dt2_serial_number);
+ printk(KERN_INFO "Revision: %016x\n", dt2_eeprom.fc.dt2_revision);
+ printk(KERN_INFO "DT2: Using MAC address %pM for port 0\n",
+ dt2_eeprom.gw.mac_addr[0]);
+ printk(KERN_INFO "DT2: Using MAC address %pM for port 1\n",
+ dt2_eeprom.gw.mac_addr[1]);
+
+ orion5x_eth_init(&dt2_eth_data);
+ memcpy(dt2_eth_data.mac_addr, dt2_eeprom.gw.mac_addr[0], 6);
+ orion5x_eth_switch_init(&dt2_switch_chip_data);
+
+ i2c_register_board_info(0, &dt2_i2c_rtc, 1);
+
+ mvebu_mbus_add_window_by_id(ORION_MBUS_DEVBUS_BOOT_TARGET,
+ ORION_MBUS_DEVBUS_BOOT_ATTR,
+ DT2_NOR_BOOT_BASE, DT2_NOR_BOOT_SIZE);
+
+ platform_device_register(&dt2_nor_flash);
+
+ mvebu_mbus_add_window_by_id(ORION_MBUS_DEVBUS_TARGET(0),
+ ORION_MBUS_DEVBUS_ATTR(0),
+ DT2_LEDS_BASE, DT2_LEDS_SIZE);
+ platform_device_register(&dt2_leds);
+
+ if (request_irq(gpio_to_irq(DT2_PIN_GPIO_RESET), &dt2_reset_handler,
+ IRQF_TRIGGER_LOW,
+ "DT2: Reset button", NULL) < 0) {
+
+ printk("DT2: Reset Button IRQ %d not available\n",
+ gpio_to_irq(DT2_PIN_GPIO_RESET));
+ }
+
+ if (request_irq(gpio_to_irq(DT2_PIN_GPIO_POWER), &dt2_power_handler,
+ IRQF_TRIGGER_LOW,
+ "DT2: Power button", NULL) < 0) {
+
+ printk(KERN_DEBUG "DT2: Power Button IRQ %d not available\n",
+ gpio_to_irq(DT2_PIN_GPIO_POWER));
+ }
+}
+
+static int __init parse_tag_dt2_uboot(const struct tag *t)
+{
+ struct tag_mv_uboot *mv_uboot;
+
+ // Get pointer to our block
+ mv_uboot = (struct tag_mv_uboot*)&t->u;
+ mvTclk = mv_uboot->tclk;
+ mvSysclk = mv_uboot->sysclk;
+ mvUbootVer = mv_uboot->uboot_version;
+ mvIsUsbHost = mv_uboot->isUsbHost;
+
+ // Some clock fixups
+ if(mvTclk == 166000000) mvTclk = 166666667;
+ else if(mvTclk == 133000000) mvTclk = 133333333;
+ else if(mvSysclk == 166000000) mvSysclk = 166666667;
+
+ gBoardId = (mvUbootVer & 0xff);
+
+ //DT2 specific data
+ memcpy(&dt2_eeprom, mv_uboot->dt2_eeprom, sizeof(struct DT2_EEPROM_STRUCT));
+
+ return 0;
+}
+__tagtable(ATAG_MV_UBOOT, parse_tag_dt2_uboot);
+
+/*
+ * This is OpenWrt specific fixup. It includes code from original "tag_fixup_mem32" to
+ * fixup bogus memory tags and also fixes kernel cmdline by adding " init=/etc/preinit"
+ * at the end. It is important to flash OpenWrt image from original Freecom firmware.
+ *
+ * Vanilla kernel should use "tag_fixup_mem32" function.
+ */
+static void __init openwrt_fixup(struct tag *t, char **from)
+{
+ char *p = NULL;
+ static char openwrt_init_tag[] __initdata = " init=/etc/preinit";
+
+ for (; t->hdr.size; t = tag_next(t)){
+ /* Locate the Freecom cmdline */
+ if (t->hdr.tag == ATAG_CMDLINE) {
+ p = t->u.cmdline.cmdline;
+ printk("%s(%d): Found cmdline '%s' at 0x%0lx\n",
+ __FUNCTION__, __LINE__, p, (unsigned long)p);
+ }
+ /*
+ * Many orion-based systems have buggy bootloader implementations.
+ * This is a common fixup for bogus memory tags.
+ */
+ if (t->hdr.tag == ATAG_MEM &&
+ (!t->u.mem.size || t->u.mem.size & ~PAGE_MASK ||
+ t->u.mem.start & ~PAGE_MASK)) {
+ printk(KERN_WARNING
+ "Clearing invalid memory bank %dKB@0x%08x\n",
+ t->u.mem.size / 1024, t->u.mem.start);
+ t->hdr.tag = 0;
+ }
+ }
+
+ printk("%s(%d): End of table at 0x%0lx\n", __FUNCTION__, __LINE__, (unsigned long)t);
+
+ /* Overwrite the end of the table with a new cmdline tag. */
+ t->hdr.tag = ATAG_CMDLINE;
+ t->hdr.size =
+ (sizeof (struct tag_header) +
+ strlen(p) + strlen(openwrt_init_tag) + 1 + 4) >> 2;
+
+ strlcpy(t->u.cmdline.cmdline, p, COMMAND_LINE_SIZE);
+ strlcpy(t->u.cmdline.cmdline + strlen(p), openwrt_init_tag,
+ COMMAND_LINE_SIZE - strlen(p));
+
+ printk("%s(%d): New cmdline '%s' at 0x%0lx\n",
+ __FUNCTION__, __LINE__,
+ t->u.cmdline.cmdline, (unsigned long)t->u.cmdline.cmdline);
+
+ t = tag_next(t);
+
+ printk("%s(%d): New end of table at 0x%0lx\n", __FUNCTION__, __LINE__, (unsigned long)t);
+
+ t->hdr.tag = ATAG_NONE;
+ t->hdr.size = 0;
+}
+
+/* Warning: Freecom uses their own custom bootloader with mach-type (=1500) */
+MACHINE_START(DT2, "Freecom DataTank Gateway")
+ /* Maintainer: Zintis Petersons <Zintis.Petersons@abcsolutions.lv> */
+ .atag_offset = 0x100,
+ .init_machine = dt2_init,
+ .map_io = orion5x_map_io,
+ .init_irq = orion5x_init_irq,
+ .init_time = orion5x_timer_init,
+ .fixup = openwrt_fixup, //tag_fixup_mem32,
+MACHINE_END

@ -1,72 +0,0 @@
--- a/arch/arm/mach-orion5x/Kconfig
+++ b/arch/arm/mach-orion5x/Kconfig
@@ -150,10 +150,13 @@ config MACH_MSS2_DT
Maxtor Shared Storage II platform.
config MACH_WNR854T
- bool "Netgear WNR854T"
+ bool "Netgear WNR854T / WN802T"
help
Say 'Y' here if you want your kernel to support the
- Netgear WNR854T platform.
+ Netgear WNR854T or WN802T platform.
+
+config MACH_WN802T
+ def_bool MACH_WNR854T
config MACH_RD88F5181L_GE
bool "Marvell Orion-VoIP GE Reference Design"
--- a/arch/arm/mach-orion5x/wnr854t-setup.c
+++ b/arch/arm/mach-orion5x/wnr854t-setup.c
@@ -110,6 +110,11 @@ static struct dsa_chip_data wnr854t_swit
.port_names[7] = "lan2",
};
+static struct dsa_chip_data wn802t_switch_chip_data = {
+ .port_names[2] = "wan",
+ .port_names[3] = "cpu",
+};
+
static void __init wnr854t_init(void)
{
/*
@@ -123,7 +128,10 @@ static void __init wnr854t_init(void)
* Configure peripherals.
*/
orion5x_eth_init(&wnr854t_eth_data);
- orion5x_eth_switch_init(&wnr854t_switch_chip_data);
+ if (machine_is_wn802t())
+ orion5x_eth_switch_init(&wn802t_switch_chip_data);
+ else
+ orion5x_eth_switch_init(&wnr854t_switch_chip_data);
orion5x_uart0_init();
mvebu_mbus_add_window_by_id(ORION_MBUS_DEVBUS_BOOT_TARGET,
@@ -163,7 +171,7 @@ static struct hw_pci wnr854t_pci __initd
static int __init wnr854t_pci_init(void)
{
- if (machine_is_wnr854t())
+ if (machine_is_wnr854t() || machine_is_wn802t())
pci_common_init(&wnr854t_pci);
return 0;
@@ -177,6 +185,18 @@ MACHINE_START(WNR854T, "Netgear WNR854T"
.init_machine = wnr854t_init,
.map_io = orion5x_map_io,
.init_early = orion5x_init_early,
+ .init_irq = orion5x_init_irq,
+ .init_time = orion5x_timer_init,
+ .fixup = tag_fixup_mem32,
+ .restart = orion5x_restart,
+MACHINE_END
+
+MACHINE_START(WN802T, "Netgear WN802T")
+ /* Maintainer: Imre Kaloz <kaloz@openwrt.org> */
+ .atag_offset = 0x100,
+ .init_machine = wnr854t_init,
+ .map_io = orion5x_map_io,
+ .init_early = orion5x_init_early,
.init_irq = orion5x_init_irq,
.init_time = orion5x_timer_init,
.fixup = tag_fixup_mem32,
Loading…
Cancel
Save