[linux] 01/01: [armel] Replace kirkwood and orion5x flavours with a combined 'marvell' flavour

debian-kernel at lists.debian.org debian-kernel at lists.debian.org
Wed Jan 27 02:29:58 UTC 2016


This is an automated email from the git hooks/post-receive script.

benh pushed a commit to branch benh/armel-marvell-flavour
in repository linux.

commit c30cfe37080a02088593b7423f4513958937186e
Author: Ben Hutchings <ben at decadent.org.uk>
Date:   Wed Jan 27 02:09:30 2016 +0000

    [armel] Replace kirkwood and orion5x flavours with a combined 'marvell' flavour
    
    Apply upstream patches from 4.5-rc1 to enable inclusion of orion5x in a
    multiplatform build.
    
    Merge configurations as well as possible.
---
 debian/changelog                                   |    3 +
 .../armel/{config.kirkwood => config.marvell}      |   54 +-
 debian/config/armel/config.orion5x                 |  571 -----------
 debian/config/armel/defines                        |   27 +-
 .../arm-orion-always-use-multi_irq_handler.patch   |  315 ++++++
 ...orion-move-watchdog-setup-to-mach-orion5x.patch |  132 +++
 .../arm/arm-orion-use-sparse_irq-everywhere.patch  |  392 ++++++++
 .../arm/arm-orion5x-clean-up-mach-.h-headers.patch | 1020 ++++++++++++++++++++
 .../arm/arm-orion5x-multiplatform-support.patch    |  147 +++
 debian/patches/series                              |    5 +
 10 files changed, 2070 insertions(+), 596 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index 97c115d..61458f0 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -14,6 +14,9 @@ linux (4.4-1~exp2) UNRELEASED; urgency=medium
   * [arm64] Enabled support for QCOM platforms, options recommended by Martin
     Michlmayr. (Closes: #812386)
 
+  [ Ben Hutchings ]
+  * [armel] Replace kirkwood and orion5x flavours with a combined 'marvell' flavour
+
  -- Ian Campbell <ijc at debian.org>  Sat, 23 Jan 2016 08:23:05 +0000
 
 linux (4.4-1~exp1) experimental; urgency=medium
diff --git a/debian/config/armel/config.kirkwood b/debian/config/armel/config.marvell
similarity index 91%
rename from debian/config/armel/config.kirkwood
rename to debian/config/armel/config.marvell
index c636dca..7248e67 100644
--- a/debian/config/armel/config.kirkwood
+++ b/debian/config/armel/config.marvell
@@ -13,16 +13,16 @@ CONFIG_ARM_ATAG_DTB_COMPAT=y
 CONFIG_CMDLINE=""
 # CONFIG_XIP_KERNEL is not set
 CONFIG_ATAGS_PROC=y
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
-# CONFIG_FPE_FASTFPE is not set
-# CONFIG_VFP is not set
+#. kirkwood had CONFIG_FPE_NWFPE=y here
+CONFIG_VFP=y
 
 ##
 ## file: arch/arm/Kconfig.debug
 ##
+#. orion5x had CONFIG_DEBUG_LL_UART_8250=y here
 ## choice: Kernel low-level debugging port
 CONFIG_DEBUG_MVEBU_UART0_ALTERNATE=y
+# CONFIG_DEBUG_ICEDCC is not set
 ## end choice
 
 ##
@@ -37,8 +37,35 @@ CONFIG_ARCH_MVEBU=y
 CONFIG_MACH_KIRKWOOD=y
 
 ##
+## file: arch/arm/mach-orion5x/Kconfig
+##
+CONFIG_ARCH_ORION5X=y
+CONFIG_MACH_DB88F5281=y
+CONFIG_MACH_RD88F5182=y
+CONFIG_MACH_RD88F5182_DT=y
+CONFIG_MACH_KUROBOX_PRO=y
+CONFIG_MACH_DNS323=y
+CONFIG_MACH_TS209=y
+CONFIG_MACH_TERASTATION_PRO2=y
+CONFIG_MACH_LINKSTATION_PRO=y
+CONFIG_MACH_LINKSTATION_LSCHL=y
+CONFIG_MACH_LINKSTATION_MINI=y
+CONFIG_MACH_LINKSTATION_LS_HGL=y
+CONFIG_MACH_TS409=y
+CONFIG_MACH_WRT350N_V2=y
+CONFIG_MACH_TS78XX=y
+CONFIG_MACH_MV2120=y
+CONFIG_MACH_NET2BIG=y
+CONFIG_MACH_MSS2_DT=y
+CONFIG_MACH_WNR854T=y
+CONFIG_MACH_RD88F5181L_GE=y
+CONFIG_MACH_RD88F5181L_FXO=y
+CONFIG_MACH_RD88F6183AP_GE=y
+
+##
 ## file: arch/arm/mm/Kconfig
 ##
+CONFIG_CPU_FEROCEON_OLD_ID=y
 CONFIG_ARM_THUMB=y
 # CONFIG_CPU_ICACHE_DISABLE is not set
 # CONFIG_CPU_DCACHE_DISABLE is not set
@@ -166,7 +193,9 @@ CONFIG_MV_XOR=y
 ##
 ## file: drivers/hwmon/Kconfig
 ##
+CONFIG_SENSORS_G760A=m
 CONFIG_SENSORS_GPIO_FAN=m
+CONFIG_SENSORS_LM75=m
 
 ##
 ## file: drivers/i2c/Kconfig
@@ -195,6 +224,15 @@ CONFIG_INPUT_JOYSTICK=y
 CONFIG_KEYBOARD_GPIO=m
 
 ##
+## file: drivers/input/serio/Kconfig
+##
+CONFIG_SERIO=m
+CONFIG_SERIO_SERPORT=m
+# CONFIG_SERIO_PCIPS2 is not set
+CONFIG_SERIO_LIBPS2=m
+# CONFIG_SERIO_RAW is not set
+
+##
 ## file: drivers/input/touchscreen/Kconfig
 ##
 CONFIG_INPUT_TOUCHSCREEN=y
@@ -302,8 +340,10 @@ CONFIG_MTD_CFI_I2=y
 CONFIG_MTD_CFI_I4=y
 # CONFIG_MTD_CFI_I8 is not set
 # CONFIG_MTD_OTP is not set
+#. Needed e.g. on QNAP devices
 CONFIG_MTD_CFI_INTELEXT=y
-CONFIG_MTD_CFI_AMDSTD=m
+#. Needed e.g. on the D-Link DNS-323
+CONFIG_MTD_CFI_AMDSTD=y
 CONFIG_MTD_CFI_STAA=m
 # CONFIG_MTD_RAM is not set
 # CONFIG_MTD_ROM is not set
@@ -447,6 +487,10 @@ CONFIG_REGULATOR_FIXED_VOLTAGE=y
 ##
 ## file: drivers/rtc/Kconfig
 ##
+CONFIG_RTC_DRV_DS1307=y
+CONFIG_RTC_DRV_RS5C372=y
+CONFIG_RTC_DRV_PCF8563=y
+CONFIG_RTC_DRV_M41T80=y
 CONFIG_RTC_DRV_S35390A=y
 CONFIG_RTC_DRV_MV=y
 
diff --git a/debian/config/armel/config.orion5x b/debian/config/armel/config.orion5x
deleted file mode 100644
index cda43ba..0000000
--- a/debian/config/armel/config.orion5x
+++ /dev/null
@@ -1,571 +0,0 @@
-##
-## file: arch/arm/Kconfig
-##
-## choice: ARM system type
-CONFIG_ARCH_ORION5X=y
-## end choice
-CONFIG_PCI=y
-CONFIG_UACCESS_WITH_MEMCPY=y
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_ARM_APPENDED_DTB=y
-CONFIG_ARM_ATAG_DTB_COMPAT=y
-CONFIG_CMDLINE=""
-# CONFIG_XIP_KERNEL is not set
-CONFIG_ATAGS_PROC=y
-CONFIG_VFP=y
-
-##
-## file: arch/arm/Kconfig.debug
-##
-## choice: Kernel low-level debugging port
-# CONFIG_DEBUG_ICEDCC is not set
-CONFIG_DEBUG_LL_UART_8250=y
-## end choice
-
-##
-## file: arch/arm/mach-imx/Kconfig
-##
-# CONFIG_ARCH_MXC is not set
-
-##
-## file: arch/arm/mach-orion5x/Kconfig
-##
-CONFIG_MACH_DB88F5281=y
-CONFIG_MACH_RD88F5182=y
-CONFIG_MACH_RD88F5182_DT=y
-CONFIG_MACH_KUROBOX_PRO=y
-CONFIG_MACH_DNS323=y
-CONFIG_MACH_TS209=y
-CONFIG_MACH_TERASTATION_PRO2=y
-CONFIG_MACH_LINKSTATION_PRO=y
-CONFIG_MACH_LINKSTATION_LSCHL=y
-CONFIG_MACH_LINKSTATION_MINI=y
-CONFIG_MACH_LINKSTATION_LS_HGL=y
-CONFIG_MACH_TS409=y
-CONFIG_MACH_WRT350N_V2=y
-CONFIG_MACH_TS78XX=y
-CONFIG_MACH_MV2120=y
-CONFIG_MACH_NET2BIG=y
-CONFIG_MACH_MSS2_DT=y
-CONFIG_MACH_WNR854T=y
-CONFIG_MACH_RD88F5181L_GE=y
-CONFIG_MACH_RD88F5181L_FXO=y
-CONFIG_MACH_RD88F6183AP_GE=y
-
-##
-## file: arch/arm/mm/Kconfig
-##
-CONFIG_CPU_FEROCEON_OLD_ID=y
-CONFIG_ARM_THUMB=y
-# CONFIG_CPU_ICACHE_DISABLE is not set
-# CONFIG_CPU_DCACHE_DISABLE is not set
-# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
-
-##
-## file: block/partitions/Kconfig
-##
-CONFIG_ACORN_PARTITION=y
-# CONFIG_ACORN_PARTITION_CUMANA is not set
-# CONFIG_ACORN_PARTITION_EESOX is not set
-CONFIG_ACORN_PARTITION_ICS=y
-# CONFIG_ACORN_PARTITION_ADFS is not set
-# CONFIG_ACORN_PARTITION_POWERTEC is not set
-CONFIG_ACORN_PARTITION_RISCIX=y
-CONFIG_OSF_PARTITION=y
-CONFIG_AMIGA_PARTITION=y
-CONFIG_ATARI_PARTITION=y
-CONFIG_MAC_PARTITION=y
-CONFIG_BSD_DISKLABEL=y
-CONFIG_MINIX_SUBPARTITION=y
-CONFIG_SOLARIS_X86_PARTITION=y
-CONFIG_UNIXWARE_DISKLABEL=y
-CONFIG_LDM_PARTITION=y
-# CONFIG_LDM_DEBUG is not set
-CONFIG_SGI_PARTITION=y
-CONFIG_ULTRIX_PARTITION=y
-CONFIG_SUN_PARTITION=y
-
-##
-## file: drivers/ata/Kconfig
-##
-CONFIG_ATA=m
-# CONFIG_SATA_AHCI is not set
-# CONFIG_SATA_SIL24 is not set
-CONFIG_ATA_SFF=y
-# CONFIG_PDC_ADMA is not set
-# CONFIG_SATA_QSTOR is not set
-# CONFIG_SATA_SX4 is not set
-# CONFIG_ATA_PIIX is not set
-CONFIG_SATA_MV=m
-# CONFIG_SATA_NV is not set
-# CONFIG_SATA_PROMISE is not set
-# CONFIG_SATA_SIL is not set
-# CONFIG_SATA_SIS is not set
-# CONFIG_SATA_SVW is not set
-# CONFIG_SATA_ULI is not set
-# CONFIG_SATA_VIA is not set
-# CONFIG_SATA_VITESSE is not set
-# CONFIG_PATA_ALI is not set
-# CONFIG_PATA_AMD is not set
-# CONFIG_PATA_ARTOP is not set
-# CONFIG_PATA_ATIIXP is not set
-# CONFIG_PATA_CMD64X is not set
-# CONFIG_PATA_CS5520 is not set
-# CONFIG_PATA_CYPRESS is not set
-# CONFIG_PATA_EFAR is not set
-# CONFIG_PATA_HPT366 is not set
-# CONFIG_PATA_HPT37X is not set
-# CONFIG_PATA_HPT3X2N is not set
-# CONFIG_PATA_HPT3X3 is not set
-# CONFIG_PATA_IT8213 is not set
-# CONFIG_PATA_IT821X is not set
-# CONFIG_PATA_JMICRON is not set
-# CONFIG_PATA_MARVELL is not set
-# CONFIG_PATA_NETCELL is not set
-# CONFIG_PATA_NINJA32 is not set
-# CONFIG_PATA_NS87415 is not set
-# CONFIG_PATA_OLDPIIX is not set
-# CONFIG_PATA_OPTIDMA is not set
-# CONFIG_PATA_PDC2027X is not set
-# CONFIG_PATA_PDC_OLD is not set
-# CONFIG_PATA_RADISYS is not set
-# CONFIG_PATA_SC1200 is not set
-# CONFIG_PATA_SCH is not set
-# CONFIG_PATA_SERVERWORKS is not set
-# CONFIG_PATA_SIL680 is not set
-# CONFIG_PATA_SIS is not set
-# CONFIG_PATA_TRIFLEX is not set
-# CONFIG_PATA_VIA is not set
-# CONFIG_PATA_WINBOND is not set
-# CONFIG_PATA_CMD640_PCI is not set
-# CONFIG_PATA_MPIIX is not set
-# CONFIG_PATA_NS87410 is not set
-# CONFIG_PATA_OPTI is not set
-# CONFIG_PATA_RZ1000 is not set
-# CONFIG_ATA_GENERIC is not set
-
-##
-## file: drivers/bluetooth/Kconfig
-##
-# CONFIG_BT_HCIUART is not set
-CONFIG_BT_HCIBCM203X=m
-CONFIG_BT_HCIBPA10X=m
-CONFIG_BT_HCIBFUSB=m
-CONFIG_BT_HCIVHCI=m
-
-##
-## file: drivers/crypto/Kconfig
-##
-CONFIG_CRYPTO_DEV_MV_CESA=m
-
-##
-## file: drivers/dma/Kconfig
-##
-CONFIG_DMADEVICES=y
-CONFIG_MV_XOR=y
-
-##
-## file: drivers/gpu/drm/Kconfig
-##
-# CONFIG_DRM is not set
-
-##
-## file: drivers/hwmon/Kconfig
-##
-CONFIG_SENSORS_G760A=m
-CONFIG_SENSORS_GPIO_FAN=m
-CONFIG_SENSORS_LM75=m
-
-##
-## file: drivers/i2c/Kconfig
-##
-CONFIG_I2C=y
-CONFIG_I2C_CHARDEV=y
-
-##
-## file: drivers/i2c/busses/Kconfig
-##
-CONFIG_I2C_MV64XXX=y
-
-##
-## file: drivers/input/gameport/Kconfig
-##
-CONFIG_GAMEPORT=m
-
-##
-## file: drivers/input/joystick/Kconfig
-##
-CONFIG_INPUT_JOYSTICK=y
-
-##
-## file: drivers/input/keyboard/Kconfig
-##
-CONFIG_KEYBOARD_GPIO=m
-
-##
-## file: drivers/input/serio/Kconfig
-##
-CONFIG_SERIO=m
-CONFIG_SERIO_SERPORT=m
-# CONFIG_SERIO_PCIPS2 is not set
-CONFIG_SERIO_LIBPS2=m
-# CONFIG_SERIO_RAW is not set
-
-##
-## file: drivers/input/touchscreen/Kconfig
-##
-CONFIG_INPUT_TOUCHSCREEN=y
-
-##
-## file: drivers/isdn/Kconfig
-##
-CONFIG_ISDN=y
-CONFIG_ISDN_CAPI=m
-
-##
-## file: drivers/isdn/capi/Kconfig
-##
-CONFIG_ISDN_CAPI_CAPI20=m
-CONFIG_ISDN_CAPI_MIDDLEWARE=y
-CONFIG_ISDN_CAPI_CAPIDRV=m
-
-##
-## file: drivers/isdn/hardware/avm/Kconfig
-##
-CONFIG_CAPI_AVM=y
-CONFIG_ISDN_DRV_AVMB1_B1PCI=m
-CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y
-CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m
-CONFIG_ISDN_DRV_AVMB1_AVM_CS=m
-CONFIG_ISDN_DRV_AVMB1_T1PCI=m
-CONFIG_ISDN_DRV_AVMB1_C4=m
-
-##
-## file: drivers/isdn/hardware/eicon/Kconfig
-##
-CONFIG_CAPI_EICON=y
-CONFIG_ISDN_DIVAS=m
-CONFIG_ISDN_DIVAS_BRIPCI=y
-CONFIG_ISDN_DIVAS_PRIPCI=y
-CONFIG_ISDN_DIVAS_DIVACAPI=m
-CONFIG_ISDN_DIVAS_USERIDI=m
-CONFIG_ISDN_DIVAS_MAINT=m
-
-##
-## file: drivers/leds/Kconfig
-##
-CONFIG_LEDS_GPIO=y
-
-##
-## file: drivers/leds/trigger/Kconfig
-##
-CONFIG_LEDS_TRIGGER_TIMER=y
-CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
-
-##
-## file: drivers/mtd/Kconfig
-##
-CONFIG_MTD=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_AFS_PARTS is not set
-CONFIG_MTD_OF_PARTS=y
-CONFIG_MTD_BLOCK=y
-CONFIG_FTL=m
-CONFIG_NFTL=m
-# CONFIG_NFTL_RW is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-# CONFIG_SSFDC is not set
-# CONFIG_MTD_OOPS is not set
-
-##
-## file: drivers/mtd/chips/Kconfig
-##
-CONFIG_MTD_CFI=y
-CONFIG_MTD_JEDECPROBE=y
-CONFIG_MTD_CFI_ADV_OPTIONS=y
-## choice: Flash cmd/query data swapping
-CONFIG_MTD_CFI_NOSWAP=y
-# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
-# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
-## end choice
-CONFIG_MTD_CFI_GEOMETRY=y
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-CONFIG_MTD_CFI_I4=y
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_OTP is not set
-#. Needed e.g. on QNAP devices
-CONFIG_MTD_CFI_INTELEXT=y
-#. Needed e.g. on the D-Link DNS-323
-CONFIG_MTD_CFI_AMDSTD=y
-CONFIG_MTD_CFI_STAA=m
-# CONFIG_MTD_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
-
-##
-## file: drivers/mtd/devices/Kconfig
-##
-# CONFIG_MTD_PMC551 is not set
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLOCK2MTD is not set
-
-##
-## file: drivers/mtd/maps/Kconfig
-##
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-CONFIG_MTD_PHYSMAP_OF=y
-# CONFIG_MTD_IMPA7 is not set
-# CONFIG_MTD_INTEL_VR_NOR is not set
-# CONFIG_MTD_PLATRAM is not set
-
-##
-## file: drivers/mtd/nand/Kconfig
-##
-CONFIG_MTD_NAND=y
-# CONFIG_MTD_NAND_DISKONCHIP is not set
-# CONFIG_MTD_NAND_CAFE is not set
-CONFIG_MTD_NAND_ORION=y
-
-##
-## file: drivers/mtd/onenand/Kconfig
-##
-# CONFIG_MTD_ONENAND is not set
-
-##
-## file: drivers/net/arcnet/Kconfig
-##
-# CONFIG_ARCNET is not set
-
-##
-## file: drivers/net/ethernet/atheros/Kconfig
-##
-# CONFIG_ATL1 is not set
-
-##
-## file: drivers/net/ethernet/broadcom/Kconfig
-##
-# CONFIG_BNX2 is not set
-# CONFIG_TIGON3 is not set
-# CONFIG_BNX2X is not set
-
-##
-## file: drivers/net/ethernet/dlink/Kconfig
-##
-# CONFIG_DL2K is not set
-
-##
-## file: drivers/net/ethernet/intel/Kconfig
-##
-# CONFIG_E1000 is not set
-# CONFIG_E1000E is not set
-# CONFIG_IGB is not set
-
-##
-## file: drivers/net/ethernet/marvell/Kconfig
-##
-CONFIG_MV643XX_ETH=m
-CONFIG_MVMDIO=m
-# CONFIG_SKGE is not set
-# CONFIG_SKY2 is not set
-
-##
-## file: drivers/net/ethernet/natsemi/Kconfig
-##
-# CONFIG_NS83820 is not set
-
-##
-## file: drivers/net/ethernet/packetengines/Kconfig
-##
-# CONFIG_HAMACHI is not set
-# CONFIG_YELLOWFIN is not set
-
-##
-## file: drivers/net/ethernet/qlogic/Kconfig
-##
-# CONFIG_QLA3XXX is not set
-
-##
-## file: drivers/net/ethernet/realtek/Kconfig
-##
-# CONFIG_R8169 is not set
-
-##
-## file: drivers/net/ethernet/sis/Kconfig
-##
-# CONFIG_SIS190 is not set
-
-##
-## file: drivers/net/ethernet/via/Kconfig
-##
-# CONFIG_VIA_VELOCITY is not set
-
-##
-## file: drivers/pcmcia/Kconfig
-##
-# CONFIG_PCCARD is not set
-
-##
-## file: drivers/rtc/Kconfig
-##
-CONFIG_RTC_DRV_DS1307=y
-CONFIG_RTC_DRV_RS5C372=y
-CONFIG_RTC_DRV_PCF8563=y
-CONFIG_RTC_DRV_M41T80=y
-CONFIG_RTC_DRV_S35390A=y
-
-##
-## file: drivers/scsi/Kconfig
-##
-# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
-# CONFIG_SCSI_3W_9XXX is not set
-# CONFIG_SCSI_AACRAID is not set
-# CONFIG_SCSI_DPT_I2O is not set
-# CONFIG_SCSI_ARCMSR is not set
-# CONFIG_SCSI_HPTIOP is not set
-# CONFIG_SCSI_DMX3191D is not set
-# CONFIG_SCSI_FUTURE_DOMAIN is not set
-# CONFIG_SCSI_IPS is not set
-# CONFIG_SCSI_INITIO is not set
-# CONFIG_SCSI_INIA100 is not set
-# CONFIG_SCSI_STEX is not set
-# CONFIG_SCSI_SYM53C8XX_2 is not set
-# CONFIG_SCSI_IPR is not set
-# CONFIG_SCSI_QLOGIC_1280 is not set
-# CONFIG_SCSI_LPFC is not set
-# CONFIG_SCSI_DC395x is not set
-# CONFIG_SCSI_NSP32 is not set
-
-##
-## file: drivers/scsi/aic7xxx/Kconfig.aic79xx
-##
-# CONFIG_SCSI_AIC79XX is not set
-
-##
-## file: drivers/scsi/aic7xxx/Kconfig.aic7xxx
-##
-# CONFIG_SCSI_AIC7XXX is not set
-
-##
-## file: drivers/scsi/aic94xx/Kconfig
-##
-# CONFIG_SCSI_AIC94XX is not set
-
-##
-## file: drivers/scsi/megaraid/Kconfig.megaraid
-##
-# CONFIG_MEGARAID_NEWGEN is not set
-# CONFIG_MEGARAID_LEGACY is not set
-# CONFIG_MEGARAID_SAS is not set
-
-##
-## file: drivers/scsi/mvsas/Kconfig
-##
-# CONFIG_SCSI_MVSAS is not set
-
-##
-## file: drivers/scsi/qla2xxx/Kconfig
-##
-# CONFIG_SCSI_QLA_FC is not set
-
-##
-## file: drivers/scsi/qla4xxx/Kconfig
-##
-# CONFIG_SCSI_QLA_ISCSI is not set
-
-##
-## file: drivers/ssb/Kconfig
-##
-# CONFIG_SSB is not set
-
-##
-## file: drivers/tty/serial/Kconfig
-##
-CONFIG_SERIAL_OF_PLATFORM=y
-
-##
-## file: drivers/tty/serial/8250/Kconfig
-##
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_SERIAL_8250_NR_UARTS=4
-CONFIG_SERIAL_8250_RUNTIME_UARTS=2
-# CONFIG_SERIAL_8250_EXTENDED is not set
-
-##
-## file: drivers/usb/Kconfig
-##
-CONFIG_USB_SUPPORT=y
-CONFIG_USB=m
-
-##
-## file: drivers/usb/atm/Kconfig
-##
-CONFIG_USB_ATM=m
-CONFIG_USB_SPEEDTOUCH=m
-
-##
-## file: drivers/usb/host/Kconfig
-##
-CONFIG_USB_EHCI_HCD=m
-CONFIG_USB_EHCI_HCD_ORION=y
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_OHCI_HCD=m
-CONFIG_USB_UHCI_HCD=m
-CONFIG_USB_SL811_HCD=m
-
-##
-## file: drivers/video/console/Kconfig
-##
-# CONFIG_VGA_CONSOLE is not set
-
-##
-## file: drivers/video/fbdev/Kconfig
-##
-CONFIG_FB=m
-
-##
-## file: drivers/virtio/Kconfig
-##
-# CONFIG_VIRTIO_PCI is not set
-# CONFIG_VIRTIO_BALLOON is not set
-
-##
-## file: drivers/watchdog/Kconfig
-##
-CONFIG_ORION_WATCHDOG=m
-
-##
-## file: mm/Kconfig
-##
-## choice: Memory model
-CONFIG_FLATMEM_MANUAL=y
-# CONFIG_DISCONTIGMEM_MANUAL is not set
-# CONFIG_SPARSEMEM_MANUAL is not set
-## end choice
-
-##
-## file: net/atm/Kconfig
-##
-CONFIG_ATM=m
-
-##
-## file: net/ax25/Kconfig
-##
-CONFIG_HAMRADIO=y
-CONFIG_AX25=m
-# CONFIG_AX25_DAMA_SLAVE is not set
-CONFIG_NETROM=m
-CONFIG_ROSE=m
-
diff --git a/debian/config/armel/defines b/debian/config/armel/defines
index e3cda0b..688c89a 100644
--- a/debian/config/armel/defines
+++ b/debian/config/armel/defines
@@ -1,7 +1,6 @@
 [base]
 flavours:
- kirkwood
- orion5x
+ marvell
  versatile
 kernel-arch: arm
 
@@ -18,37 +17,25 @@ install-stem: vmlinuz
 [relations]
 headers%gcc-4.9: linux-compiler-gcc-4.9-arm
 
-[kirkwood_description]
-hardware: Marvell Kirkwood
+[marvell_description]
+hardware: Marvell Kirkwood/Orion
 hardware-long: Marvell Kirkwood based systems (SheevaPlug, QNAP TS-119/TS-219, etc)
+ and Orion 5181, 5182 and 5281 based systems (QNAP TS-109/TS-209, etc)
 
-[kirkwood_image]
+[marvell_image]
 recommends: u-boot-tools
 ## Maximum kernel size for supported devices (64 bytes is the u-boot header)
 # SheevaPlug: 4194304 - 64 = 4194240
 # QNAP TS-119/TS-219: 2097152 - 64 = 2097088
-check-size: 2097088
-check-size-with-dtb: true
-breaks: flash-kernel (<< 3.37~)
-configs:
- armel/config-reduced
- armel/config.kirkwood
-
-[orion5x_description]
-hardware: Marvell Orion
-hardware-long: Marvell Orion 5181, 5182 and 5281 based systems (QNAP TS-109/TS-209, etc)
-
-[orion5x_image]
-recommends: u-boot-tools
-## Maximum kernel size for supported devices (8 bytes is the machine ID; 64 bytes the u-boot header)
 # D-Link DNS-323: 1572864 - 8 - 64 = 1572792 (too small, no longer supported)
 # HP Media Vault mv2120: 2097152 - 8 - 64 = 2097080
 # QNAP TS-109/TS-209 & TS-409: 2097152 - 8 - 64 = 2097080
 check-size: 2097080
 check-size-with-dtb: true
+breaks: flash-kernel (<< 3.37~)
 configs:
  armel/config-reduced
- armel/config.orion5x
+ armel/config.marvell
 
 [versatile_description]
 hardware: Versatile
diff --git a/debian/patches/features/arm/arm-orion-always-use-multi_irq_handler.patch b/debian/patches/features/arm/arm-orion-always-use-multi_irq_handler.patch
new file mode 100644
index 0000000..e06be35
--- /dev/null
+++ b/debian/patches/features/arm/arm-orion-always-use-multi_irq_handler.patch
@@ -0,0 +1,315 @@
+From: Arnd Bergmann <arnd at arndb.de>
+Date: Wed, 2 Dec 2015 22:27:04 +0100
+Subject: ARM: orion: always use MULTI_IRQ_HANDLER
+Origin: https://git.kernel.org/linus/b8cd337c8e0330f4a29b3d1f69b7c73b324b1f8d
+
+As a preparation for multiplatform support, this enables
+the MULTI_IRQ_HANDLER code unconditionally on dove and
+orion5x, and introduces the respective code on mv78xx0,
+which did not have it so far. The classic entry-macro.S
+files are removed as they are now obsolete.
+
+Signed-off-by: Arnd Bergmann <arnd at arndb.de>
+Acked-by: Andrew Lunn <andrew at lunn.ch>
+Signed-off-by: Gregory CLEMENT <gregory.clement at free-electrons.com>
+[bwh: Adjust to apply on top of 4.4]
+---
+ arch/arm/Kconfig                                 |  3 ++
+ arch/arm/mach-dove/include/mach/entry-macro.S    | 33 -------------------
+ arch/arm/mach-dove/irq.c                         | 12 +------
+ arch/arm/mach-mv78xx0/include/mach/entry-macro.S | 41 ------------------------
+ arch/arm/mach-mv78xx0/irq.c                      | 33 +++++++++++++++++++
+ arch/arm/mach-orion5x/include/mach/entry-macro.S | 25 ---------------
+ arch/arm/mach-orion5x/irq.c                      | 11 -------
+ arch/arm/plat-orion/irq.c                        |  1 -
+ arch/arm/plat-orion/mpp.c                        |  1 -
+ 9 files changed, 37 insertions(+), 123 deletions(-)
+ delete mode 100644 arch/arm/mach-dove/include/mach/entry-macro.S
+ delete mode 100644 arch/arm/mach-mv78xx0/include/mach/entry-macro.S
+ delete mode 100644 arch/arm/mach-orion5x/include/mach/entry-macro.S
+
+--- a/arch/arm/Kconfig
++++ b/arch/arm/Kconfig
+@@ -512,6 +512,7 @@ config ARCH_DOVE
+ 	select CPU_PJ4
+ 	select GENERIC_CLOCKEVENTS
+ 	select MIGHT_HAVE_PCI
++	select MULTI_IRQ_HANDLER
+ 	select MVEBU_MBUS
+ 	select PINCTRL
+ 	select PINCTRL_DOVE
+@@ -525,6 +526,7 @@ config ARCH_MV78XX0
+ 	select CPU_FEROCEON
+ 	select GENERIC_CLOCKEVENTS
+ 	select MVEBU_MBUS
++	select MULTI_IRQ_HANDLER
+ 	select PCI
+ 	select PLAT_ORION_LEGACY
+ 	help
+@@ -538,6 +540,7 @@ config ARCH_ORION5X
+ 	select CPU_FEROCEON
+ 	select GENERIC_CLOCKEVENTS
+ 	select MVEBU_MBUS
++	select MULTI_IRQ_HANDLER
+ 	select PCI
+ 	select PLAT_ORION_LEGACY
+ 	select MULTI_IRQ_HANDLER
+--- a/arch/arm/mach-dove/include/mach/entry-macro.S
++++ /dev/null
+@@ -1,33 +0,0 @@
+-/*
+- * arch/arm/mach-dove/include/mach/entry-macro.S
+- *
+- * Low-level IRQ helper macros for Marvell Dove platforms
+- *
+- * 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 <mach/bridge-regs.h>
+-
+-	.macro  get_irqnr_preamble, base, tmp
+-	ldr	\base, =IRQ_VIRT_BASE
+-	.endm
+-
+-	.macro  get_irqnr_and_base, irqnr, irqstat, base, tmp
+-	@ check low interrupts
+-	ldr	\irqstat, [\base, #IRQ_CAUSE_LOW_OFF]
+-	ldr	\tmp, [\base, #IRQ_MASK_LOW_OFF]
+-	mov	\irqnr, #32
+-	ands	\irqstat, \irqstat, \tmp
+-
+-	@ if no low interrupts set, check high interrupts
+-	ldreq	\irqstat, [\base, #IRQ_CAUSE_HIGH_OFF]
+-	ldreq	\tmp, [\base, #IRQ_MASK_HIGH_OFF]
+-	moveq	\irqnr, #64
+-	andeqs	\irqstat, \irqstat, \tmp
+-
+-	@ find first active interrupt source
+-	clzne	\irqstat, \irqstat
+-	subne	\irqnr, \irqnr, \irqstat
+-	.endm
+--- a/arch/arm/mach-dove/irq.c
++++ b/arch/arm/mach-dove/irq.c
+@@ -13,6 +13,7 @@
+ #include <linux/irq.h>
+ #include <linux/gpio.h>
+ #include <linux/io.h>
++#include <asm/exception.h>
+ #include <asm/mach/arch.h>
+ #include <plat/irq.h>
+ #include <asm/mach/irq.h>
+@@ -109,14 +110,6 @@ static int __initdata gpio2_irqs[4] = {
+ 	0,
+ };
+ 
+-#ifdef CONFIG_MULTI_IRQ_HANDLER
+-/*
+- * Compiling with both non-DT and DT support enabled, will
+- * break asm irq handler used by non-DT boards. Therefore,
+- * we provide a C-style irq handler even for non-DT boards,
+- * if MULTI_IRQ_HANDLER is set.
+- */
+-
+ static void __iomem *dove_irq_base = IRQ_VIRT_BASE;
+ 
+ static asmlinkage void
+@@ -139,7 +132,6 @@ __exception_irq_entry dove_legacy_handle
+ 		return;
+ 	}
+ }
+-#endif
+ 
+ void __init dove_init_irq(void)
+ {
+@@ -148,9 +140,7 @@ void __init dove_init_irq(void)
+ 	orion_irq_init(1, IRQ_VIRT_BASE + IRQ_MASK_LOW_OFF);
+ 	orion_irq_init(33, IRQ_VIRT_BASE + IRQ_MASK_HIGH_OFF);
+ 
+-#ifdef CONFIG_MULTI_IRQ_HANDLER
+ 	set_handle_irq(dove_legacy_handle_irq);
+-#endif
+ 
+ 	/*
+ 	 * Initialize gpiolib for GPIOs 0-71.
+--- a/arch/arm/mach-mv78xx0/include/mach/entry-macro.S
++++ /dev/null
+@@ -1,41 +0,0 @@
+-/*
+- * arch/arm/mach-mv78xx0/include/mach/entry-macro.S
+- *
+- * Low-level IRQ helper macros for Marvell MV78xx0 platforms
+- *
+- * 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 <mach/bridge-regs.h>
+-
+-	.macro  get_irqnr_preamble, base, tmp
+-	ldr	\base, =IRQ_VIRT_BASE
+-	.endm
+-
+-	.macro  get_irqnr_and_base, irqnr, irqstat, base, tmp
+-	@ check low interrupts
+-	ldr	\irqstat, [\base, #IRQ_CAUSE_LOW_OFF]
+-	ldr	\tmp, [\base, #IRQ_MASK_LOW_OFF]
+-	mov	\irqnr, #31
+-	ands	\irqstat, \irqstat, \tmp
+-	bne	1001f
+-
+-	@ if no low interrupts set, check high interrupts
+-	ldr	\irqstat, [\base, #IRQ_CAUSE_HIGH_OFF]
+-	ldr	\tmp, [\base, #IRQ_MASK_HIGH_OFF]
+-	mov	\irqnr, #63
+-	ands	\irqstat, \irqstat, \tmp
+-	bne	1001f
+-
+-	@ if no high interrupts set, check error interrupts
+-	ldr	\irqstat, [\base, #IRQ_CAUSE_ERR_OFF]
+-	ldr	\tmp, [\base, #IRQ_MASK_ERR_OFF]
+-	mov	\irqnr, #95
+-	ands	\irqstat, \irqstat, \tmp
+-
+-	@ find first active interrupt source
+-1001:	clzne	\irqstat, \irqstat
+-	subne	\irqnr, \irqnr, \irqstat
+-	.endm
+--- a/arch/arm/mach-mv78xx0/irq.c
++++ b/arch/arm/mach-mv78xx0/irq.c
+@@ -11,6 +11,7 @@
+ #include <linux/kernel.h>
+ #include <linux/irq.h>
+ #include <linux/io.h>
++#include <asm/exception.h>
+ #include <mach/bridge-regs.h>
+ #include <plat/orion-gpio.h>
+ #include <plat/irq.h>
+@@ -23,12 +24,44 @@ static int __initdata gpio0_irqs[4] = {
+ 	IRQ_MV78XX0_GPIO_24_31,
+ };
+ 
++static void __iomem *mv78xx0_irq_base = IRQ_VIRT_BASE;
++
++static asmlinkage void
++__exception_irq_entry mv78xx0_legacy_handle_irq(struct pt_regs *regs)
++{
++	u32 stat;
++
++	stat = readl_relaxed(mv78xx0_irq_base + IRQ_CAUSE_LOW_OFF);
++	stat &= readl_relaxed(mv78xx0_irq_base + IRQ_MASK_LOW_OFF);
++	if (stat) {
++		unsigned int hwirq = __fls(stat);
++		handle_IRQ(hwirq, regs);
++		return;
++	}
++	stat = readl_relaxed(mv78xx0_irq_base + IRQ_CAUSE_HIGH_OFF);
++	stat &= readl_relaxed(mv78xx0_irq_base + IRQ_MASK_HIGH_OFF);
++	if (stat) {
++		unsigned int hwirq = 32 + __fls(stat);
++		handle_IRQ(hwirq, regs);
++		return;
++	}
++	stat = readl_relaxed(mv78xx0_irq_base + IRQ_CAUSE_ERR_OFF);
++	stat &= readl_relaxed(mv78xx0_irq_base + IRQ_MASK_ERR_OFF);
++	if (stat) {
++		unsigned int hwirq = 64 + __fls(stat);
++		handle_IRQ(hwirq, regs);
++		return;
++	}
++}
++
+ void __init mv78xx0_init_irq(void)
+ {
+ 	orion_irq_init(0, IRQ_VIRT_BASE + IRQ_MASK_LOW_OFF);
+ 	orion_irq_init(32, IRQ_VIRT_BASE + IRQ_MASK_HIGH_OFF);
+ 	orion_irq_init(64, IRQ_VIRT_BASE + IRQ_MASK_ERR_OFF);
+ 
++	set_handle_irq(mv78xx0_legacy_handle_irq);
++
+ 	/*
+ 	 * Initialize gpiolib for GPIOs 0-31.  (The GPIO interrupt mask
+ 	 * registers for core #1 are at an offset of 0x18 from those of
+--- a/arch/arm/mach-orion5x/include/mach/entry-macro.S
++++ /dev/null
+@@ -1,25 +0,0 @@
+-/*
+- * arch/arm/mach-orion5x/include/mach/entry-macro.S
+- *
+- * Low-level IRQ helper macros for Orion platforms
+- *
+- * 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 <mach/bridge-regs.h>
+-
+-	.macro  get_irqnr_preamble, base, tmp
+-	ldr	\base, =MAIN_IRQ_CAUSE
+-	.endm
+-
+-	.macro  get_irqnr_and_base, irqnr, irqstat, base, tmp
+-	ldr	\irqstat, [\base, #0]		@ main cause
+-	ldr	\tmp, [\base, #(MAIN_IRQ_MASK - MAIN_IRQ_CAUSE)] @ main mask
+-	mov	\irqnr, #0			@ default irqnr
+-	@ find cause bits that are unmasked
+-	ands	\irqstat, \irqstat, \tmp	@ clear Z flag if any
+-	clzne	\irqnr,	\irqstat		@ calc irqnr
+-	rsbne	\irqnr, \irqnr, #32
+-	.endm
+--- a/arch/arm/mach-orion5x/irq.c
++++ b/arch/arm/mach-orion5x/irq.c
+@@ -26,14 +26,6 @@ static int __initdata gpio0_irqs[4] = {
+ 	IRQ_ORION5X_GPIO_24_31,
+ };
+ 
+-#ifdef CONFIG_MULTI_IRQ_HANDLER
+-/*
+- * Compiling with both non-DT and DT support enabled, will
+- * break asm irq handler used by non-DT boards. Therefore,
+- * we provide a C-style irq handler even for non-DT boards,
+- * if MULTI_IRQ_HANDLER is set.
+- */
+-
+ asmlinkage void
+ __exception_irq_entry orion5x_legacy_handle_irq(struct pt_regs *regs)
+ {
+@@ -47,15 +39,12 @@ __exception_irq_entry orion5x_legacy_han
+ 		return;
+ 	}
+ }
+-#endif
+ 
+ void __init orion5x_init_irq(void)
+ {
+ 	orion_irq_init(1, MAIN_IRQ_MASK);
+ 
+-#ifdef CONFIG_MULTI_IRQ_HANDLER
+ 	set_handle_irq(orion5x_legacy_handle_irq);
+-#endif
+ 
+ 	/*
+ 	 * Initialize gpiolib for GPIOs 0-31.
+--- a/arch/arm/plat-orion/irq.c
++++ b/arch/arm/plat-orion/irq.c
+@@ -18,7 +18,6 @@
+ #include <asm/exception.h>
+ #include <plat/irq.h>
+ #include <plat/orion-gpio.h>
+-#include <mach/bridge-regs.h>
+ 
+ void __init orion_irq_init(unsigned int irq_start, void __iomem *maskaddr)
+ {
+--- a/arch/arm/plat-orion/mpp.c
++++ b/arch/arm/plat-orion/mpp.c
+@@ -13,7 +13,6 @@
+ #include <linux/mbus.h>
+ #include <linux/io.h>
+ #include <linux/gpio.h>
+-#include <mach/hardware.h>
+ #include <plat/orion-gpio.h>
+ #include <plat/mpp.h>
+ 
diff --git a/debian/patches/features/arm/arm-orion-move-watchdog-setup-to-mach-orion5x.patch b/debian/patches/features/arm/arm-orion-move-watchdog-setup-to-mach-orion5x.patch
new file mode 100644
index 0000000..ffd61af
--- /dev/null
+++ b/debian/patches/features/arm/arm-orion-move-watchdog-setup-to-mach-orion5x.patch
@@ -0,0 +1,132 @@
+From: Arnd Bergmann <arnd at arndb.de>
+Date: Wed, 2 Dec 2015 22:27:03 +0100
+Subject: ARM: orion: move watchdog setup to mach-orion5x
+Origin: https://git.kernel.org/linus/06f3008a6a7454389a82495eb1fc132c2b0710f6
+
+The watchdog device node is created in plat-orion/common.c
+but depends on the bridge address that is platform specific,
+so as a preparation for orion multiplatform support, we
+move it out of the common code into orion5x and dove.
+
+At the moment, dove does not use the watchdog, so I'm marking
+the function as __maybe_unused for the moment. The compiler
+will be able to compile out the device definition this way,
+and we can easily add it later.
+
+Signed-off-by: Arnd Bergmann <arnd at arndb.de>
+Acked-by: Andrew Lunn <andrew at lunn.ch>
+Signed-off-by: Gregory CLEMENT <gregory.clement at free-electrons.com>
+---
+ arch/arm/mach-dove/common.c               | 17 +++++++++++++++++
+ arch/arm/mach-orion5x/common.c            | 14 +++++++++++++-
+ arch/arm/plat-orion/common.c              | 21 ---------------------
+ arch/arm/plat-orion/include/plat/common.h |  2 --
+ 4 files changed, 30 insertions(+), 24 deletions(-)
+
+diff --git a/arch/arm/mach-dove/common.c b/arch/arm/mach-dove/common.c
+index 0d1a892..25a682f 100644
+--- a/arch/arm/mach-dove/common.c
++++ b/arch/arm/mach-dove/common.c
+@@ -375,6 +375,23 @@ void __init dove_setup_cpu_wins(void)
+ 				    DOVE_SCRATCHPAD_SIZE);
+ }
+ 
++static struct resource orion_wdt_resource[] = {
++		DEFINE_RES_MEM(TIMER_PHYS_BASE, 0x04),
++		DEFINE_RES_MEM(RSTOUTn_MASK_PHYS, 0x04),
++};
++
++static struct platform_device orion_wdt_device = {
++	.name		= "orion_wdt",
++	.id		= -1,
++	.num_resources	= ARRAY_SIZE(orion_wdt_resource),
++	.resource	= orion_wdt_resource,
++};
++
++static void __init __maybe_unused orion_wdt_init(void)
++{
++	platform_device_register(&orion_wdt_device);
++}
++
+ void __init dove_init(void)
+ {
+ 	pr_info("Dove 88AP510 SoC, TCLK = %d MHz.\n",
+diff --git a/arch/arm/mach-orion5x/common.c b/arch/arm/mach-orion5x/common.c
+index 6bbb7b5..2b7889e 100644
+--- a/arch/arm/mach-orion5x/common.c
++++ b/arch/arm/mach-orion5x/common.c
+@@ -184,9 +184,21 @@ static void __init orion5x_crypto_init(void)
+ /*****************************************************************************
+  * Watchdog
+  ****************************************************************************/
++static struct resource orion_wdt_resource[] = {
++		DEFINE_RES_MEM(TIMER_PHYS_BASE, 0x04),
++		DEFINE_RES_MEM(RSTOUTn_MASK_PHYS, 0x04),
++};
++
++static struct platform_device orion_wdt_device = {
++	.name		= "orion_wdt",
++	.id		= -1,
++	.num_resources	= ARRAY_SIZE(orion_wdt_resource),
++	.resource	= orion_wdt_resource,
++};
++
+ static void __init orion5x_wdt_init(void)
+ {
+-	orion_wdt_init();
++	platform_device_register(&orion_wdt_device);
+ }
+ 
+ 
+diff --git a/arch/arm/plat-orion/common.c b/arch/arm/plat-orion/common.c
+index 8861c36..78c8bf4 100644
+--- a/arch/arm/plat-orion/common.c
++++ b/arch/arm/plat-orion/common.c
+@@ -21,7 +21,6 @@
+ #include <net/dsa.h>
+ #include <linux/platform_data/dma-mv_xor.h>
+ #include <linux/platform_data/usb-ehci-orion.h>
+-#include <mach/bridge-regs.h>
+ #include <plat/common.h>
+ 
+ /* Create a clkdev entry for a given device/clk */
+@@ -589,26 +588,6 @@ void __init orion_spi_1_init(unsigned long mapbase)
+ }
+ 
+ /*****************************************************************************
+- * Watchdog
+- ****************************************************************************/
+-static struct resource orion_wdt_resource[] = {
+-		DEFINE_RES_MEM(TIMER_PHYS_BASE, 0x04),
+-		DEFINE_RES_MEM(RSTOUTn_MASK_PHYS, 0x04),
+-};
+-
+-static struct platform_device orion_wdt_device = {
+-	.name		= "orion_wdt",
+-	.id		= -1,
+-	.num_resources	= ARRAY_SIZE(orion_wdt_resource),
+-	.resource	= orion_wdt_resource,
+-};
+-
+-void __init orion_wdt_init(void)
+-{
+-	platform_device_register(&orion_wdt_device);
+-}
+-
+-/*****************************************************************************
+  * XOR
+  ****************************************************************************/
+ static u64 orion_xor_dmamask = DMA_BIT_MASK(32);
+diff --git a/arch/arm/plat-orion/include/plat/common.h b/arch/arm/plat-orion/include/plat/common.h
+index d9a24f6..9e6d76a 100644
+--- a/arch/arm/plat-orion/include/plat/common.h
++++ b/arch/arm/plat-orion/include/plat/common.h
+@@ -75,8 +75,6 @@ void __init orion_spi_init(unsigned long mapbase);
+ 
+ void __init orion_spi_1_init(unsigned long mapbase);
+ 
+-void __init orion_wdt_init(void);
+-
+ void __init orion_xor0_init(unsigned long mapbase_low,
+ 			    unsigned long mapbase_high,
+ 			    unsigned long irq_0,
diff --git a/debian/patches/features/arm/arm-orion-use-sparse_irq-everywhere.patch b/debian/patches/features/arm/arm-orion-use-sparse_irq-everywhere.patch
new file mode 100644
index 0000000..b175e41
--- /dev/null
+++ b/debian/patches/features/arm/arm-orion-use-sparse_irq-everywhere.patch
@@ -0,0 +1,392 @@
+From: Arnd Bergmann <arnd at arndb.de>
+Date: Wed, 2 Dec 2015 22:27:05 +0100
+Subject: ARM: orion: use SPARSE_IRQ everywhere
+Origin: https://git.kernel.org/linus/5cdbe5d23a8a0d7274d628bb9d5ff018d25075ca
+
+As a preparation for multiplatform support, this moves all the
+code using plat-orion over to use sparse irq support, which is
+enabled implicitly for multiplatform.
+
+In particular, the hardcoded NR_IRQS macro gets replaced with
+a machine specific one that is set in the machine descriptor
+in order to set up a static mapping for all legacy interrupts.
+
+Signed-off-by: Arnd Bergmann <arnd at arndb.de>
+Acked-by: Andrew Lunn <andrew at lunn.ch>
+Signed-off-by: Gregory CLEMENT <gregory.clement at free-electrons.com>
+---
+ arch/arm/Kconfig                               | 3 +++
+ arch/arm/mach-dove/cm-a510.c                   | 1 +
+ arch/arm/mach-dove/dove-db-setup.c             | 1 +
+ arch/arm/mach-dove/include/mach/dove.h         | 2 ++
+ arch/arm/mach-dove/include/mach/irqs.h         | 2 +-
+ arch/arm/mach-dove/include/mach/pm.h           | 2 +-
+ arch/arm/mach-dove/irq.c                       | 2 +-
+ arch/arm/mach-mv78xx0/buffalo-wxl-setup.c      | 1 +
+ arch/arm/mach-mv78xx0/db78x00-bp-setup.c       | 1 +
+ arch/arm/mach-mv78xx0/include/mach/irqs.h      | 2 +-
+ arch/arm/mach-mv78xx0/include/mach/mv78xx0.h   | 2 ++
+ arch/arm/mach-mv78xx0/rd78x00-masa-setup.c     | 1 +
+ arch/arm/mach-orion5x/db88f5281-setup.c        | 1 +
+ arch/arm/mach-orion5x/dns323-setup.c           | 1 +
+ arch/arm/mach-orion5x/include/mach/irqs.h      | 2 +-
+ arch/arm/mach-orion5x/include/mach/orion5x.h   | 2 ++
+ arch/arm/mach-orion5x/kurobox_pro-setup.c      | 2 ++
+ arch/arm/mach-orion5x/ls-chl-setup.c           | 1 +
+ arch/arm/mach-orion5x/ls_hgl-setup.c           | 1 +
+ arch/arm/mach-orion5x/mv2120-setup.c           | 1 +
+ arch/arm/mach-orion5x/net2big-setup.c          | 1 +
+ arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c   | 1 +
+ arch/arm/mach-orion5x/rd88f5181l-ge-setup.c    | 1 +
+ arch/arm/mach-orion5x/rd88f5182-setup.c        | 1 +
+ arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c   | 1 +
+ arch/arm/mach-orion5x/terastation_pro2-setup.c | 1 +
+ arch/arm/mach-orion5x/ts209-setup.c            | 1 +
+ arch/arm/mach-orion5x/ts409-setup.c            | 1 +
+ arch/arm/mach-orion5x/ts78xx-setup.c           | 1 +
+ arch/arm/mach-orion5x/wnr854t-setup.c          | 1 +
+ arch/arm/mach-orion5x/wrt350n-v2-setup.c       | 1 +
+ 31 files changed, 37 insertions(+), 5 deletions(-)
+
+--- a/arch/arm/Kconfig
++++ b/arch/arm/Kconfig
+@@ -517,6 +517,7 @@ config ARCH_DOVE
+ 	select PINCTRL
+ 	select PINCTRL_DOVE
+ 	select PLAT_ORION_LEGACY
++	select SPARSE_IRQ
+ 	help
+ 	  Support for the Marvell Dove SoC 88AP510
+ 
+@@ -529,6 +530,7 @@ config ARCH_MV78XX0
+ 	select MULTI_IRQ_HANDLER
+ 	select PCI
+ 	select PLAT_ORION_LEGACY
++	select SPARSE_IRQ
+ 	help
+ 	  Support for the following Marvell MV78xx0 series SoCs:
+ 	  MV781x0, MV782x0.
+@@ -544,6 +546,7 @@ config ARCH_ORION5X
+ 	select PCI
+ 	select PLAT_ORION_LEGACY
+ 	select MULTI_IRQ_HANDLER
++	select SPARSE_IRQ
+ 	help
+ 	  Support for the following Marvell Orion 5x series SoCs:
+ 	  Orion-1 (5181), Orion-VoIP (5181L), Orion-NAS (5182),
+--- a/arch/arm/mach-dove/cm-a510.c
++++ b/arch/arm/mach-dove/cm-a510.c
+@@ -88,6 +88,7 @@ static void __init cm_a510_init(void)
+ 
+ MACHINE_START(CM_A510, "Compulab CM-A510 Board")
+ 	.atag_offset	= 0x100,
++	.nr_irqs	= DOVE_NR_IRQS,
+ 	.init_machine	= cm_a510_init,
+ 	.map_io		= dove_map_io,
+ 	.init_early	= dove_init_early,
+--- a/arch/arm/mach-dove/dove-db-setup.c
++++ b/arch/arm/mach-dove/dove-db-setup.c
+@@ -94,6 +94,7 @@ static void __init dove_db_init(void)
+ 
+ MACHINE_START(DOVE_DB, "Marvell DB-MV88AP510-BP Development Board")
+ 	.atag_offset	= 0x100,
++	.nr_irqs	= DOVE_NR_IRQS,
+ 	.init_machine	= dove_db_init,
+ 	.map_io		= dove_map_io,
+ 	.init_early	= dove_init_early,
+--- a/arch/arm/mach-dove/include/mach/dove.h
++++ b/arch/arm/mach-dove/include/mach/dove.h
+@@ -11,6 +11,8 @@
+ #ifndef __ASM_ARCH_DOVE_H
+ #define __ASM_ARCH_DOVE_H
+ 
++#include <mach/irqs.h>
++
+ /*
+  * Marvell Dove address maps.
+  *
+--- a/arch/arm/mach-dove/include/mach/irqs.h
++++ b/arch/arm/mach-dove/include/mach/irqs.h
+@@ -90,7 +90,7 @@
+ #define NR_PMU_IRQS		7
+ #define IRQ_DOVE_RTC		(IRQ_DOVE_PMU_START + 5)
+ 
+-#define NR_IRQS			(IRQ_DOVE_PMU_START + NR_PMU_IRQS)
++#define DOVE_NR_IRQS		(IRQ_DOVE_PMU_START + NR_PMU_IRQS)
+ 
+ 
+ #endif
+--- a/arch/arm/mach-dove/include/mach/pm.h
++++ b/arch/arm/mach-dove/include/mach/pm.h
+@@ -63,7 +63,7 @@ static inline int pmu_to_irq(int pin)
+ 
+ static inline int irq_to_pmu(int irq)
+ {
+-	if (IRQ_DOVE_PMU_START <= irq && irq < NR_IRQS)
++	if (IRQ_DOVE_PMU_START <= irq && irq < DOVE_NR_IRQS)
+ 		return irq - IRQ_DOVE_PMU_START;
+ 
+ 	return -EINVAL;
+--- a/arch/arm/mach-dove/irq.c
++++ b/arch/arm/mach-dove/irq.c
+@@ -160,7 +160,7 @@ void __init dove_init_irq(void)
+ 	writel(0, PMU_INTERRUPT_MASK);
+ 	writel(0, PMU_INTERRUPT_CAUSE);
+ 
+-	for (i = IRQ_DOVE_PMU_START; i < NR_IRQS; i++) {
++	for (i = IRQ_DOVE_PMU_START; i < DOVE_NR_IRQS; i++) {
+ 		irq_set_chip_and_handler(i, &pmu_irq_chip, handle_level_irq);
+ 		irq_set_status_flags(i, IRQ_LEVEL);
+ 		irq_clear_status_flags(i, IRQ_NOREQUEST);
+--- a/arch/arm/mach-mv78xx0/buffalo-wxl-setup.c
++++ b/arch/arm/mach-mv78xx0/buffalo-wxl-setup.c
+@@ -146,6 +146,7 @@ subsys_initcall(wxl_pci_init);
+ MACHINE_START(TERASTATION_WXL, "Buffalo Nas WXL")
+ 	/* Maintainer: Sebastien Requiem <sebastien at requiem.fr> */
+ 	.atag_offset	= 0x100,
++	.nr_irqs	= MV78XX0_NR_IRQS,
+ 	.init_machine	= wxl_init,
+ 	.map_io		= mv78xx0_map_io,
+ 	.init_early	= mv78xx0_init_early,
+--- a/arch/arm/mach-mv78xx0/db78x00-bp-setup.c
++++ b/arch/arm/mach-mv78xx0/db78x00-bp-setup.c
+@@ -94,6 +94,7 @@ subsys_initcall(db78x00_pci_init);
+ MACHINE_START(DB78X00_BP, "Marvell DB-78x00-BP Development Board")
+ 	/* Maintainer: Lennert Buytenhek <buytenh at marvell.com> */
+ 	.atag_offset	= 0x100,
++	.nr_irqs	= MV78XX0_NR_IRQS,
+ 	.init_machine	= db78x00_init,
+ 	.map_io		= mv78xx0_map_io,
+ 	.init_early	= mv78xx0_init_early,
+--- a/arch/arm/mach-mv78xx0/include/mach/irqs.h
++++ b/arch/arm/mach-mv78xx0/include/mach/irqs.h
+@@ -88,7 +88,7 @@
+ #define IRQ_MV78XX0_GPIO_START	96
+ #define NR_GPIO_IRQS		32
+ 
+-#define NR_IRQS			(IRQ_MV78XX0_GPIO_START + NR_GPIO_IRQS)
++#define MV78XX0_NR_IRQS		(IRQ_MV78XX0_GPIO_START + NR_GPIO_IRQS)
+ 
+ 
+ #endif
+--- a/arch/arm/mach-mv78xx0/include/mach/mv78xx0.h
++++ b/arch/arm/mach-mv78xx0/include/mach/mv78xx0.h
+@@ -12,6 +12,8 @@
+ #ifndef __ASM_ARCH_MV78XX0_H
+ #define __ASM_ARCH_MV78XX0_H
+ 
++#include "irqs.h"
++
+ /*
+  * Marvell MV78xx0 address maps.
+  *
+--- a/arch/arm/mach-mv78xx0/rd78x00-masa-setup.c
++++ b/arch/arm/mach-mv78xx0/rd78x00-masa-setup.c
+@@ -79,6 +79,7 @@ subsys_initcall(rd78x00_pci_init);
+ MACHINE_START(RD78X00_MASA, "Marvell RD-78x00-MASA Development Board")
+ 	/* Maintainer: Lennert Buytenhek <buytenh at marvell.com> */
+ 	.atag_offset	= 0x100,
++	.nr_irqs	= MV78XX0_NR_IRQS,
+ 	.init_machine	= rd78x00_masa_init,
+ 	.map_io		= mv78xx0_map_io,
+ 	.init_early	= mv78xx0_init_early,
+--- a/arch/arm/mach-orion5x/db88f5281-setup.c
++++ b/arch/arm/mach-orion5x/db88f5281-setup.c
+@@ -369,6 +369,7 @@ static void __init db88f5281_init(void)
+ MACHINE_START(DB88F5281, "Marvell Orion-2 Development Board")
+ 	/* Maintainer: Tzachi Perelstein <tzachi at marvell.com> */
+ 	.atag_offset	= 0x100,
++	.nr_irqs	= ORION5X_NR_IRQS,
+ 	.init_machine	= db88f5281_init,
+ 	.map_io		= orion5x_map_io,
+ 	.init_early	= orion5x_init_early,
+--- a/arch/arm/mach-orion5x/dns323-setup.c
++++ b/arch/arm/mach-orion5x/dns323-setup.c
+@@ -666,6 +666,7 @@ static void __init dns323_init(void)
+ MACHINE_START(DNS323, "D-Link DNS-323")
+ 	/* Maintainer: Herbert Valerio Riedel <hvr at gnu.org> */
+ 	.atag_offset	= 0x100,
++	.nr_irqs	= ORION5X_NR_IRQS,
+ 	.init_machine	= dns323_init,
+ 	.map_io		= orion5x_map_io,
+ 	.init_early	= orion5x_init_early,
+--- a/arch/arm/mach-orion5x/include/mach/irqs.h
++++ b/arch/arm/mach-orion5x/include/mach/irqs.h
+@@ -54,7 +54,7 @@
+ #define IRQ_ORION5X_GPIO_START	33
+ #define NR_GPIO_IRQS		32
+ 
+-#define NR_IRQS			(IRQ_ORION5X_GPIO_START + NR_GPIO_IRQS)
++#define ORION5X_NR_IRQS		(IRQ_ORION5X_GPIO_START + NR_GPIO_IRQS)
+ 
+ 
+ #endif
+--- a/arch/arm/mach-orion5x/include/mach/orion5x.h
++++ b/arch/arm/mach-orion5x/include/mach/orion5x.h
+@@ -14,6 +14,8 @@
+ #ifndef __ASM_ARCH_ORION5X_H
+ #define __ASM_ARCH_ORION5X_H
+ 
++#include <mach/irqs.h>
++
+ /*****************************************************************************
+  * Orion Address Maps
+  *
+--- a/arch/arm/mach-orion5x/kurobox_pro-setup.c
++++ b/arch/arm/mach-orion5x/kurobox_pro-setup.c
+@@ -383,6 +383,7 @@ static void __init kurobox_pro_init(void
+ MACHINE_START(KUROBOX_PRO, "Buffalo/Revogear Kurobox Pro")
+ 	/* Maintainer: Ronen Shitrit <rshitrit at marvell.com> */
+ 	.atag_offset	= 0x100,
++	.nr_irqs	= ORION5X_NR_IRQS,
+ 	.init_machine	= kurobox_pro_init,
+ 	.map_io		= orion5x_map_io,
+ 	.init_early	= orion5x_init_early,
+@@ -397,6 +398,7 @@ MACHINE_END
+ MACHINE_START(LINKSTATION_PRO, "Buffalo Linkstation Pro/Live")
+ 	/* Maintainer: Byron Bradley <byron.bbradley at gmail.com> */
+ 	.atag_offset	= 0x100,
++	.nr_irqs	= ORION5X_NR_IRQS,
+ 	.init_machine	= kurobox_pro_init,
+ 	.map_io		= orion5x_map_io,
+ 	.init_early	= orion5x_init_early,
+--- a/arch/arm/mach-orion5x/ls-chl-setup.c
++++ b/arch/arm/mach-orion5x/ls-chl-setup.c
+@@ -320,6 +320,7 @@ static void __init lschl_init(void)
+ MACHINE_START(LINKSTATION_LSCHL, "Buffalo Linkstation LiveV3 (LS-CHL)")
+ 	/* Maintainer: Ash Hughes <ashley.hughes at blueyonder.co.uk> */
+ 	.atag_offset	= 0x100,
++	.nr_irqs	= ORION5X_NR_IRQS,
+ 	.init_machine	= lschl_init,
+ 	.map_io		= orion5x_map_io,
+ 	.init_early	= orion5x_init_early,
+--- a/arch/arm/mach-orion5x/ls_hgl-setup.c
++++ b/arch/arm/mach-orion5x/ls_hgl-setup.c
+@@ -267,6 +267,7 @@ static void __init ls_hgl_init(void)
+ MACHINE_START(LINKSTATION_LS_HGL, "Buffalo Linkstation LS-HGL")
+ 	/* Maintainer: Zhu Qingsen <zhuqs at cn.fujistu.com> */
+ 	.atag_offset	= 0x100,
++	.nr_irqs	= ORION5X_NR_IRQS,
+ 	.init_machine	= ls_hgl_init,
+ 	.map_io		= orion5x_map_io,
+ 	.init_early	= orion5x_init_early,
+--- a/arch/arm/mach-orion5x/mv2120-setup.c
++++ b/arch/arm/mach-orion5x/mv2120-setup.c
+@@ -232,6 +232,7 @@ static void __init mv2120_init(void)
+ MACHINE_START(MV2120, "HP Media Vault mv2120")
+ 	/* Maintainer: Martin Michlmayr <tbm at cyrius.com> */
+ 	.atag_offset	= 0x100,
++	.nr_irqs	= ORION5X_NR_IRQS,
+ 	.init_machine	= mv2120_init,
+ 	.map_io		= orion5x_map_io,
+ 	.init_early	= orion5x_init_early,
+--- a/arch/arm/mach-orion5x/net2big-setup.c
++++ b/arch/arm/mach-orion5x/net2big-setup.c
+@@ -423,6 +423,7 @@ static void __init net2big_init(void)
+ /* Warning: LaCie use a wrong mach-type (0x20e=526) in their bootloader. */
+ MACHINE_START(NET2BIG, "LaCie 2Big Network")
+ 	.atag_offset	= 0x100,
++	.nr_irqs	= ORION5X_NR_IRQS,
+ 	.init_machine	= net2big_init,
+ 	.map_io		= orion5x_map_io,
+ 	.init_early	= orion5x_init_early,
+--- a/arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c
++++ b/arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c
+@@ -169,6 +169,7 @@ subsys_initcall(rd88f5181l_fxo_pci_init)
+ MACHINE_START(RD88F5181L_FXO, "Marvell Orion-VoIP FXO Reference Design")
+ 	/* Maintainer: Nicolas Pitre <nico at marvell.com> */
+ 	.atag_offset	= 0x100,
++	.nr_irqs	= ORION5X_NR_IRQS,
+ 	.init_machine	= rd88f5181l_fxo_init,
+ 	.map_io		= orion5x_map_io,
+ 	.init_early	= orion5x_init_early,
+--- a/arch/arm/mach-orion5x/rd88f5181l-ge-setup.c
++++ b/arch/arm/mach-orion5x/rd88f5181l-ge-setup.c
+@@ -181,6 +181,7 @@ subsys_initcall(rd88f5181l_ge_pci_init);
+ MACHINE_START(RD88F5181L_GE, "Marvell Orion-VoIP GE Reference Design")
+ 	/* Maintainer: Lennert Buytenhek <buytenh at marvell.com> */
+ 	.atag_offset	= 0x100,
++	.nr_irqs	= ORION5X_NR_IRQS,
+ 	.init_machine	= rd88f5181l_ge_init,
+ 	.map_io		= orion5x_map_io,
+ 	.init_early	= orion5x_init_early,
+--- a/arch/arm/mach-orion5x/rd88f5182-setup.c
++++ b/arch/arm/mach-orion5x/rd88f5182-setup.c
+@@ -281,6 +281,7 @@ static void __init rd88f5182_init(void)
+ MACHINE_START(RD88F5182, "Marvell Orion-NAS Reference Design")
+ 	/* Maintainer: Ronen Shitrit <rshitrit at marvell.com> */
+ 	.atag_offset	= 0x100,
++	.nr_irqs	= ORION5X_NR_IRQS,
+ 	.init_machine	= rd88f5182_init,
+ 	.map_io		= orion5x_map_io,
+ 	.init_early	= orion5x_init_early,
+--- a/arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c
++++ b/arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c
+@@ -119,6 +119,7 @@ subsys_initcall(rd88f6183ap_ge_pci_init)
+ MACHINE_START(RD88F6183AP_GE, "Marvell Orion-1-90 AP GE Reference Design")
+ 	/* Maintainer: Lennert Buytenhek <buytenh at marvell.com> */
+ 	.atag_offset	= 0x100,
++	.nr_irqs	= ORION5X_NR_IRQS,
+ 	.init_machine	= rd88f6183ap_ge_init,
+ 	.map_io		= orion5x_map_io,
+ 	.init_early	= orion5x_init_early,
+--- a/arch/arm/mach-orion5x/terastation_pro2-setup.c
++++ b/arch/arm/mach-orion5x/terastation_pro2-setup.c
+@@ -359,6 +359,7 @@ static void __init tsp2_init(void)
+ MACHINE_START(TERASTATION_PRO2, "Buffalo Terastation Pro II/Live")
+ 	/* Maintainer:  Sylver Bruneau <sylver.bruneau at googlemail.com> */
+ 	.atag_offset	= 0x100,
++	.nr_irqs	= ORION5X_NR_IRQS,
+ 	.init_machine	= tsp2_init,
+ 	.map_io		= orion5x_map_io,
+ 	.init_early	= orion5x_init_early,
+--- a/arch/arm/mach-orion5x/ts209-setup.c
++++ b/arch/arm/mach-orion5x/ts209-setup.c
+@@ -324,6 +324,7 @@ static void __init qnap_ts209_init(void)
+ MACHINE_START(TS209, "QNAP TS-109/TS-209")
+ 	/* Maintainer: Byron Bradley <byron.bbradley at gmail.com> */
+ 	.atag_offset	= 0x100,
++	.nr_irqs	= ORION5X_NR_IRQS,
+ 	.init_machine	= qnap_ts209_init,
+ 	.map_io		= orion5x_map_io,
+ 	.init_early	= orion5x_init_early,
+--- a/arch/arm/mach-orion5x/ts409-setup.c
++++ b/arch/arm/mach-orion5x/ts409-setup.c
+@@ -313,6 +313,7 @@ static void __init qnap_ts409_init(void)
+ MACHINE_START(TS409, "QNAP TS-409")
+ 	/* Maintainer:  Sylver Bruneau <sylver.bruneau at gmail.com> */
+ 	.atag_offset	= 0x100,
++	.nr_irqs	= ORION5X_NR_IRQS,
+ 	.init_machine	= qnap_ts409_init,
+ 	.map_io		= orion5x_map_io,
+ 	.init_early	= orion5x_init_early,
+--- a/arch/arm/mach-orion5x/ts78xx-setup.c
++++ b/arch/arm/mach-orion5x/ts78xx-setup.c
+@@ -615,6 +615,7 @@ static void __init ts78xx_init(void)
+ MACHINE_START(TS78XX, "Technologic Systems TS-78xx SBC")
+ 	/* Maintainer: Alexander Clouter <alex at digriz.org.uk> */
+ 	.atag_offset	= 0x100,
++	.nr_irqs	= ORION5X_NR_IRQS,
+ 	.init_machine	= ts78xx_init,
+ 	.map_io		= ts78xx_map_io,
+ 	.init_early	= orion5x_init_early,
+--- a/arch/arm/mach-orion5x/wnr854t-setup.c
++++ b/arch/arm/mach-orion5x/wnr854t-setup.c
+@@ -174,6 +174,7 @@ subsys_initcall(wnr854t_pci_init);
+ MACHINE_START(WNR854T, "Netgear WNR854T")
+ 	/* Maintainer: Imre Kaloz <kaloz at openwrt.org> */
+ 	.atag_offset	= 0x100,
++	.nr_irqs	= ORION5X_NR_IRQS,
+ 	.init_machine	= wnr854t_init,
+ 	.map_io		= orion5x_map_io,
+ 	.init_early	= orion5x_init_early,
+--- a/arch/arm/mach-orion5x/wrt350n-v2-setup.c
++++ b/arch/arm/mach-orion5x/wrt350n-v2-setup.c
+@@ -262,6 +262,7 @@ subsys_initcall(wrt350n_v2_pci_init);
+ MACHINE_START(WRT350N_V2, "Linksys WRT350N v2")
+ 	/* Maintainer: Lennert Buytenhek <buytenh at marvell.com> */
+ 	.atag_offset	= 0x100,
++	.nr_irqs	= ORION5X_NR_IRQS,
+ 	.init_machine	= wrt350n_v2_init,
+ 	.map_io		= orion5x_map_io,
+ 	.init_early	= orion5x_init_early,
diff --git a/debian/patches/features/arm/arm-orion5x-clean-up-mach-.h-headers.patch b/debian/patches/features/arm/arm-orion5x-clean-up-mach-.h-headers.patch
new file mode 100644
index 0000000..6495781
--- /dev/null
+++ b/debian/patches/features/arm/arm-orion5x-clean-up-mach-.h-headers.patch
@@ -0,0 +1,1020 @@
+From: Arnd Bergmann <arnd at arndb.de>
+Date: Wed, 2 Dec 2015 22:27:08 +0100
+Subject: ARM: orion5x: clean up mach/*.h headers
+Origin: https://git.kernel.org/linus/c22c2c6008d69ff2632f8a69c62782468c2bb5a0
+
+This is a simple move of all header files that are no longer
+included by anything else from the include/mach directory
+to the platform directory itself as preparation for
+multiplatform support.
+
+The mach/uncompress.h headers are left in place for now,
+and are mildly modified to be independent of the other
+headers. They will be removed entirely when ARCH_MULTIPLATFORM
+gets enabled and they become obsolete.
+
+Rather than updating the path names inside of the comments
+of each header, I delete those comments to avoid having to
+update them again, should they get moved or copied another
+time.
+
+Signed-off-by: Arnd Bergmann <arnd at arndb.de>
+Acked-by: Andrew Lunn <andrew at lunn.ch>
+Signed-off-by: Gregory CLEMENT <gregory.clement at free-electrons.com>
+---
+ arch/arm/mach-orion5x/board-d2net.c              |   2 +-
+ arch/arm/mach-orion5x/board-dt.c                 |   4 +-
+ arch/arm/mach-orion5x/board-mss2.c               |   4 +-
+ arch/arm/mach-orion5x/board-rd88f5182.c          |   2 +-
+ arch/arm/mach-orion5x/bridge-regs.h              |  35 ++++++
+ arch/arm/mach-orion5x/common.c                   |   6 +-
+ arch/arm/mach-orion5x/db88f5281-setup.c          |   2 +-
+ arch/arm/mach-orion5x/dns323-setup.c             |   2 +-
+ arch/arm/mach-orion5x/include/mach/bridge-regs.h |  37 ------
+ arch/arm/mach-orion5x/include/mach/hardware.h    |  14 ---
+ arch/arm/mach-orion5x/include/mach/irqs.h        |  60 ---------
+ arch/arm/mach-orion5x/include/mach/orion5x.h     | 148 -----------------------
+ arch/arm/mach-orion5x/include/mach/uncompress.h  |   4 +-
+ arch/arm/mach-orion5x/irq.c                      |   2 +-
+ arch/arm/mach-orion5x/irqs.h                     |  58 +++++++++
+ arch/arm/mach-orion5x/kurobox_pro-setup.c        |   2 +-
+ arch/arm/mach-orion5x/ls-chl-setup.c             |   2 +-
+ arch/arm/mach-orion5x/ls_hgl-setup.c             |   2 +-
+ arch/arm/mach-orion5x/mpp.c                      |   2 +-
+ arch/arm/mach-orion5x/mv2120-setup.c             |   2 +-
+ arch/arm/mach-orion5x/net2big-setup.c            |   2 +-
+ arch/arm/mach-orion5x/orion5x.h                  | 146 ++++++++++++++++++++++
+ arch/arm/mach-orion5x/pci.c                      |   2 +-
+ arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c     |   2 +-
+ arch/arm/mach-orion5x/rd88f5181l-ge-setup.c      |   2 +-
+ arch/arm/mach-orion5x/rd88f5182-setup.c          |   2 +-
+ arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c     |   2 +-
+ arch/arm/mach-orion5x/terastation_pro2-setup.c   |   2 +-
+ arch/arm/mach-orion5x/ts209-setup.c              |   2 +-
+ arch/arm/mach-orion5x/ts409-setup.c              |   2 +-
+ arch/arm/mach-orion5x/ts78xx-setup.c             |   2 +-
+ arch/arm/mach-orion5x/tsx09-common.c             |   2 +-
+ arch/arm/mach-orion5x/wnr854t-setup.c            |   2 +-
+ arch/arm/mach-orion5x/wrt350n-v2-setup.c         |   2 +-
+ 34 files changed, 270 insertions(+), 292 deletions(-)
+ create mode 100644 arch/arm/mach-orion5x/bridge-regs.h
+ delete mode 100644 arch/arm/mach-orion5x/include/mach/bridge-regs.h
+ delete mode 100644 arch/arm/mach-orion5x/include/mach/hardware.h
+ delete mode 100644 arch/arm/mach-orion5x/include/mach/irqs.h
+ delete mode 100644 arch/arm/mach-orion5x/include/mach/orion5x.h
+ create mode 100644 arch/arm/mach-orion5x/irqs.h
+ create mode 100644 arch/arm/mach-orion5x/orion5x.h
+
+diff --git a/arch/arm/mach-orion5x/board-d2net.c b/arch/arm/mach-orion5x/board-d2net.c
+index 8a72841..a89376a 100644
+--- a/arch/arm/mach-orion5x/board-d2net.c
++++ b/arch/arm/mach-orion5x/board-d2net.c
+@@ -20,9 +20,9 @@
+ #include <asm/mach-types.h>
+ #include <asm/mach/arch.h>
+ #include <asm/mach/pci.h>
+-#include <mach/orion5x.h>
+ #include <plat/orion-gpio.h>
+ #include "common.h"
++#include "orion5x.h"
+ 
+ /*****************************************************************************
+  * LaCie d2 Network Info
+diff --git a/arch/arm/mach-orion5x/board-dt.c b/arch/arm/mach-orion5x/board-dt.c
+index d087178..6f4c2c4 100644
+--- a/arch/arm/mach-orion5x/board-dt.c
++++ b/arch/arm/mach-orion5x/board-dt.c
+@@ -20,10 +20,10 @@
+ #include <asm/system_misc.h>
+ #include <asm/mach/arch.h>
+ #include <asm/mach/map.h>
+-#include <mach/orion5x.h>
+-#include <mach/bridge-regs.h>
+ #include <plat/irq.h>
+ #include <plat/time.h>
++#include "orion5x.h"
++#include "bridge-regs.h"
+ #include "common.h"
+ 
+ static struct of_dev_auxdata orion5x_auxdata_lookup[] __initdata = {
+diff --git a/arch/arm/mach-orion5x/board-mss2.c b/arch/arm/mach-orion5x/board-mss2.c
+index 66f9c3b..79202fd 100644
+--- a/arch/arm/mach-orion5x/board-mss2.c
++++ b/arch/arm/mach-orion5x/board-mss2.c
+@@ -17,8 +17,8 @@
+ #include <asm/mach-types.h>
+ #include <asm/mach/arch.h>
+ #include <asm/mach/pci.h>
+-#include <mach/orion5x.h>
+-#include <mach/bridge-regs.h>
++#include "orion5x.h"
++#include "bridge-regs.h"
+ #include "common.h"
+ 
+ /*****************************************************************************
+diff --git a/arch/arm/mach-orion5x/board-rd88f5182.c b/arch/arm/mach-orion5x/board-rd88f5182.c
+index 270824b..b7b0f52 100644
+--- a/arch/arm/mach-orion5x/board-rd88f5182.c
++++ b/arch/arm/mach-orion5x/board-rd88f5182.c
+@@ -18,8 +18,8 @@
+ #include <asm/mach-types.h>
+ #include <asm/mach/arch.h>
+ #include <asm/mach/pci.h>
+-#include <mach/orion5x.h>
+ #include "common.h"
++#include "orion5x.h"
+ 
+ /*****************************************************************************
+  * RD-88F5182 Info
+diff --git a/arch/arm/mach-orion5x/bridge-regs.h b/arch/arm/mach-orion5x/bridge-regs.h
+new file mode 100644
+index 0000000..305598e
+--- /dev/null
++++ b/arch/arm/mach-orion5x/bridge-regs.h
+@@ -0,0 +1,35 @@
++/*
++ * Orion CPU Bridge Registers
++ *
++ * 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.
++ */
++
++#ifndef __ASM_ARCH_BRIDGE_REGS_H
++#define __ASM_ARCH_BRIDGE_REGS_H
++
++#include "orion5x.h"
++
++#define CPU_CONF		(ORION5X_BRIDGE_VIRT_BASE + 0x100)
++
++#define CPU_CTRL		(ORION5X_BRIDGE_VIRT_BASE + 0x104)
++
++#define RSTOUTn_MASK		(ORION5X_BRIDGE_VIRT_BASE + 0x108)
++#define RSTOUTn_MASK_PHYS	(ORION5X_BRIDGE_PHYS_BASE + 0x108)
++
++#define CPU_SOFT_RESET		(ORION5X_BRIDGE_VIRT_BASE + 0x10c)
++
++#define BRIDGE_CAUSE		(ORION5X_BRIDGE_VIRT_BASE + 0x110)
++
++#define POWER_MNG_CTRL_REG	(ORION5X_BRIDGE_VIRT_BASE + 0x11C)
++
++#define BRIDGE_INT_TIMER1_CLR	(~0x0004)
++
++#define MAIN_IRQ_CAUSE		(ORION5X_BRIDGE_VIRT_BASE + 0x200)
++
++#define MAIN_IRQ_MASK		(ORION5X_BRIDGE_VIRT_BASE + 0x204)
++
++#define TIMER_VIRT_BASE		(ORION5X_BRIDGE_VIRT_BASE + 0x300)
++#define TIMER_PHYS_BASE		(ORION5X_BRIDGE_PHYS_BASE + 0x300)
++#endif
+diff --git a/arch/arm/mach-orion5x/common.c b/arch/arm/mach-orion5x/common.c
+index 2b7889e..70c3366 100644
+--- a/arch/arm/mach-orion5x/common.c
++++ b/arch/arm/mach-orion5x/common.c
+@@ -27,14 +27,14 @@
+ #include <asm/mach/arch.h>
+ #include <asm/mach/map.h>
+ #include <asm/mach/time.h>
+-#include <mach/bridge-regs.h>
+-#include <mach/hardware.h>
+-#include <mach/orion5x.h>
+ #include <linux/platform_data/mtd-orion_nand.h>
+ #include <linux/platform_data/usb-ehci-orion.h>
+ #include <plat/time.h>
+ #include <plat/common.h>
++
++#include "bridge-regs.h"
+ #include "common.h"
++#include "orion5x.h"
+ 
+ /*****************************************************************************
+  * I/O Address Mapping
+diff --git a/arch/arm/mach-orion5x/db88f5281-setup.c b/arch/arm/mach-orion5x/db88f5281-setup.c
+index 698528f..12f74b4 100644
+--- a/arch/arm/mach-orion5x/db88f5281-setup.c
++++ b/arch/arm/mach-orion5x/db88f5281-setup.c
+@@ -23,10 +23,10 @@
+ #include <asm/mach-types.h>
+ #include <asm/mach/arch.h>
+ #include <asm/mach/pci.h>
+-#include <mach/orion5x.h>
+ #include <linux/platform_data/mtd-orion_nand.h>
+ #include "common.h"
+ #include "mpp.h"
++#include "orion5x.h"
+ 
+ /*****************************************************************************
+  * DB-88F5281 on board devices
+diff --git a/arch/arm/mach-orion5x/dns323-setup.c b/arch/arm/mach-orion5x/dns323-setup.c
+index 96a8c50..cd483bf 100644
+--- a/arch/arm/mach-orion5x/dns323-setup.c
++++ b/arch/arm/mach-orion5x/dns323-setup.c
+@@ -33,8 +33,8 @@
+ #include <asm/mach/arch.h>
+ #include <asm/mach/pci.h>
+ #include <asm/system_info.h>
+-#include <mach/orion5x.h>
+ #include <plat/orion-gpio.h>
++#include "orion5x.h"
+ #include "common.h"
+ #include "mpp.h"
+ 
+diff --git a/arch/arm/mach-orion5x/include/mach/bridge-regs.h b/arch/arm/mach-orion5x/include/mach/bridge-regs.h
+deleted file mode 100644
+index 5766e3f..0000000
+--- a/arch/arm/mach-orion5x/include/mach/bridge-regs.h
++++ /dev/null
+@@ -1,37 +0,0 @@
+-/*
+- * arch/arm/mach-orion5x/include/mach/bridge-regs.h
+- *
+- * Orion CPU Bridge Registers
+- *
+- * 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.
+- */
+-
+-#ifndef __ASM_ARCH_BRIDGE_REGS_H
+-#define __ASM_ARCH_BRIDGE_REGS_H
+-
+-#include <mach/orion5x.h>
+-
+-#define CPU_CONF		(ORION5X_BRIDGE_VIRT_BASE + 0x100)
+-
+-#define CPU_CTRL		(ORION5X_BRIDGE_VIRT_BASE + 0x104)
+-
+-#define RSTOUTn_MASK		(ORION5X_BRIDGE_VIRT_BASE + 0x108)
+-#define RSTOUTn_MASK_PHYS	(ORION5X_BRIDGE_PHYS_BASE + 0x108)
+-
+-#define CPU_SOFT_RESET		(ORION5X_BRIDGE_VIRT_BASE + 0x10c)
+-
+-#define BRIDGE_CAUSE		(ORION5X_BRIDGE_VIRT_BASE + 0x110)
+-
+-#define POWER_MNG_CTRL_REG	(ORION5X_BRIDGE_VIRT_BASE + 0x11C)
+-
+-#define BRIDGE_INT_TIMER1_CLR	(~0x0004)
+-
+-#define MAIN_IRQ_CAUSE		(ORION5X_BRIDGE_VIRT_BASE + 0x200)
+-
+-#define MAIN_IRQ_MASK		(ORION5X_BRIDGE_VIRT_BASE + 0x204)
+-
+-#define TIMER_VIRT_BASE		(ORION5X_BRIDGE_VIRT_BASE + 0x300)
+-#define TIMER_PHYS_BASE		(ORION5X_BRIDGE_PHYS_BASE + 0x300)
+-#endif
+diff --git a/arch/arm/mach-orion5x/include/mach/hardware.h b/arch/arm/mach-orion5x/include/mach/hardware.h
+deleted file mode 100644
+index 3957354..0000000
+--- a/arch/arm/mach-orion5x/include/mach/hardware.h
++++ /dev/null
+@@ -1,14 +0,0 @@
+-/*
+- * arch/arm/mach-orion5x/include/mach/hardware.h
+- *
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License version 2 as
+- * published by the Free Software Foundation.
+- */
+-
+-#ifndef __ASM_ARCH_HARDWARE_H
+-#define __ASM_ARCH_HARDWARE_H
+-
+-#include "orion5x.h"
+-
+-#endif
+diff --git a/arch/arm/mach-orion5x/include/mach/irqs.h b/arch/arm/mach-orion5x/include/mach/irqs.h
+deleted file mode 100644
+index 4b8703c..0000000
+--- a/arch/arm/mach-orion5x/include/mach/irqs.h
++++ /dev/null
+@@ -1,60 +0,0 @@
+-/*
+- * arch/arm/mach-orion5x/include/mach/irqs.h
+- *
+- * IRQ definitions for Orion SoC
+- *
+- *  Maintainer: Tzachi Perelstein <tzachi at marvell.com>
+- *
+- *  This file is licensed under the terms of the GNU General Public
+- *  License version 2. This program is licensed "as is" without any
+- *  warranty of any kind, whether express or implied.
+- */
+-
+-#ifndef __ASM_ARCH_IRQS_H
+-#define __ASM_ARCH_IRQS_H
+-
+-/*
+- * Orion Main Interrupt Controller
+- */
+-#define IRQ_ORION5X_BRIDGE		(1 + 0)
+-#define IRQ_ORION5X_DOORBELL_H2C	(1 + 1)
+-#define IRQ_ORION5X_DOORBELL_C2H	(1 + 2)
+-#define IRQ_ORION5X_UART0		(1 + 3)
+-#define IRQ_ORION5X_UART1		(1 + 4)
+-#define IRQ_ORION5X_I2C			(1 + 5)
+-#define IRQ_ORION5X_GPIO_0_7		(1 + 6)
+-#define IRQ_ORION5X_GPIO_8_15		(1 + 7)
+-#define IRQ_ORION5X_GPIO_16_23		(1 + 8)
+-#define IRQ_ORION5X_GPIO_24_31		(1 + 9)
+-#define IRQ_ORION5X_PCIE0_ERR		(1 + 10)
+-#define IRQ_ORION5X_PCIE0_INT		(1 + 11)
+-#define IRQ_ORION5X_USB1_CTRL		(1 + 12)
+-#define IRQ_ORION5X_DEV_BUS_ERR		(1 + 14)
+-#define IRQ_ORION5X_PCI_ERR		(1 + 15)
+-#define IRQ_ORION5X_USB_BR_ERR		(1 + 16)
+-#define IRQ_ORION5X_USB0_CTRL		(1 + 17)
+-#define IRQ_ORION5X_ETH_RX		(1 + 18)
+-#define IRQ_ORION5X_ETH_TX		(1 + 19)
+-#define IRQ_ORION5X_ETH_MISC		(1 + 20)
+-#define IRQ_ORION5X_ETH_SUM		(1 + 21)
+-#define IRQ_ORION5X_ETH_ERR		(1 + 22)
+-#define IRQ_ORION5X_IDMA_ERR		(1 + 23)
+-#define IRQ_ORION5X_IDMA_0		(1 + 24)
+-#define IRQ_ORION5X_IDMA_1		(1 + 25)
+-#define IRQ_ORION5X_IDMA_2		(1 + 26)
+-#define IRQ_ORION5X_IDMA_3		(1 + 27)
+-#define IRQ_ORION5X_CESA		(1 + 28)
+-#define IRQ_ORION5X_SATA		(1 + 29)
+-#define IRQ_ORION5X_XOR0		(1 + 30)
+-#define IRQ_ORION5X_XOR1		(1 + 31)
+-
+-/*
+- * Orion General Purpose Pins
+- */
+-#define IRQ_ORION5X_GPIO_START	33
+-#define NR_GPIO_IRQS		32
+-
+-#define ORION5X_NR_IRQS		(IRQ_ORION5X_GPIO_START + NR_GPIO_IRQS)
+-
+-
+-#endif
+diff --git a/arch/arm/mach-orion5x/include/mach/orion5x.h b/arch/arm/mach-orion5x/include/mach/orion5x.h
+deleted file mode 100644
+index 7be7c2e..0000000
+--- a/arch/arm/mach-orion5x/include/mach/orion5x.h
++++ /dev/null
+@@ -1,148 +0,0 @@
+-/*
+- * arch/arm/mach-orion5x/include/mach/orion5x.h
+- *
+- * Generic definitions of Orion SoC flavors:
+- *  Orion-1, Orion-VoIP, Orion-NAS, Orion-2, and Orion-1-90.
+- *
+- * Maintainer: Tzachi Perelstein <tzachi at marvell.com>
+- *
+- * This file is licensed under the terms of the GNU General Public
+- * License version 2. This program is licensed "as is" without any
+- * warranty of any kind, whether express or implied.
+- */
+-
+-#ifndef __ASM_ARCH_ORION5X_H
+-#define __ASM_ARCH_ORION5X_H
+-
+-#include <mach/irqs.h>
+-
+-/*****************************************************************************
+- * Orion Address Maps
+- *
+- * phys
+- * e0000000	PCIe MEM space
+- * e8000000	PCI MEM space
+- * f0000000	PCIe WA space (Orion-1/Orion-NAS only)
+- * f1000000	on-chip peripheral registers
+- * f2000000	PCIe I/O space
+- * f2100000	PCI I/O space
+- * f2200000	SRAM dedicated for the crypto unit
+- * f4000000	device bus mappings (boot)
+- * fa000000	device bus mappings (cs0)
+- * fa800000	device bus mappings (cs2)
+- * fc000000	device bus mappings (cs0/cs1)
+- *
+- * virt		phys		size
+- * fe000000	f1000000	1M	on-chip peripheral registers
+- * fee00000	f2000000	64K	PCIe I/O space
+- * fee10000	f2100000	64K	PCI I/O space
+- * fd000000	f0000000	16M	PCIe WA space (Orion-1/Orion-NAS only)
+- ****************************************************************************/
+-#define ORION5X_REGS_PHYS_BASE		0xf1000000
+-#define ORION5X_REGS_VIRT_BASE		IOMEM(0xfe000000)
+-#define ORION5X_REGS_SIZE		SZ_1M
+-
+-#define ORION5X_PCIE_IO_PHYS_BASE	0xf2000000
+-#define ORION5X_PCIE_IO_BUS_BASE	0x00000000
+-#define ORION5X_PCIE_IO_SIZE		SZ_64K
+-
+-#define ORION5X_PCI_IO_PHYS_BASE	0xf2100000
+-#define ORION5X_PCI_IO_BUS_BASE		0x00010000
+-#define ORION5X_PCI_IO_SIZE		SZ_64K
+-
+-#define ORION5X_SRAM_PHYS_BASE		(0xf2200000)
+-#define ORION5X_SRAM_SIZE		SZ_8K
+-
+-/* Relevant only for Orion-1/Orion-NAS */
+-#define ORION5X_PCIE_WA_PHYS_BASE	0xf0000000
+-#define ORION5X_PCIE_WA_VIRT_BASE	IOMEM(0xfd000000)
+-#define ORION5X_PCIE_WA_SIZE		SZ_16M
+-
+-#define ORION5X_PCIE_MEM_PHYS_BASE	0xe0000000
+-#define ORION5X_PCIE_MEM_SIZE		SZ_128M
+-
+-#define ORION5X_PCI_MEM_PHYS_BASE	0xe8000000
+-#define ORION5X_PCI_MEM_SIZE		SZ_128M
+-
+-/*******************************************************************************
+- * Orion Registers Map
+- ******************************************************************************/
+-
+-#define ORION5X_DDR_PHYS_BASE           (ORION5X_REGS_PHYS_BASE + 0x00000)
+-#define  ORION5X_DDR_WINS_BASE          (ORION5X_DDR_PHYS_BASE + 0x1500)
+-#define  ORION5X_DDR_WINS_SZ            (0x10)
+-#define ORION5X_DDR_VIRT_BASE		(ORION5X_REGS_VIRT_BASE + 0x00000)
+-#define ORION5X_DEV_BUS_PHYS_BASE	(ORION5X_REGS_PHYS_BASE + 0x10000)
+-#define ORION5X_DEV_BUS_VIRT_BASE	(ORION5X_REGS_VIRT_BASE + 0x10000)
+-#define ORION5X_DEV_BUS_REG(x)		(ORION5X_DEV_BUS_VIRT_BASE + (x))
+-#define  GPIO_VIRT_BASE			ORION5X_DEV_BUS_REG(0x0100)
+-#define  SPI_PHYS_BASE			(ORION5X_DEV_BUS_PHYS_BASE + 0x0600)
+-#define  I2C_PHYS_BASE			(ORION5X_DEV_BUS_PHYS_BASE + 0x1000)
+-#define  UART0_PHYS_BASE		(ORION5X_DEV_BUS_PHYS_BASE + 0x2000)
+-#define  UART0_VIRT_BASE		(ORION5X_DEV_BUS_VIRT_BASE + 0x2000)
+-#define  UART1_PHYS_BASE		(ORION5X_DEV_BUS_PHYS_BASE + 0x2100)
+-#define  UART1_VIRT_BASE		(ORION5X_DEV_BUS_VIRT_BASE + 0x2100)
+-
+-#define ORION5X_BRIDGE_VIRT_BASE	(ORION5X_REGS_VIRT_BASE + 0x20000)
+-#define ORION5X_BRIDGE_PHYS_BASE	(ORION5X_REGS_PHYS_BASE + 0x20000)
+-#define  ORION5X_BRIDGE_WINS_BASE       (ORION5X_BRIDGE_PHYS_BASE)
+-#define  ORION5X_BRIDGE_WINS_SZ         (0x80)
+-
+-#define ORION5X_PCI_VIRT_BASE		(ORION5X_REGS_VIRT_BASE + 0x30000)
+-
+-#define ORION5X_PCIE_VIRT_BASE		(ORION5X_REGS_VIRT_BASE + 0x40000)
+-
+-#define ORION5X_USB0_PHYS_BASE		(ORION5X_REGS_PHYS_BASE + 0x50000)
+-#define ORION5X_USB0_VIRT_BASE		(ORION5X_REGS_VIRT_BASE + 0x50000)
+-
+-#define ORION5X_XOR_PHYS_BASE		(ORION5X_REGS_PHYS_BASE + 0x60900)
+-#define ORION5X_XOR_VIRT_BASE		(ORION5X_REGS_VIRT_BASE + 0x60900)
+-
+-#define ORION5X_ETH_PHYS_BASE		(ORION5X_REGS_PHYS_BASE + 0x70000)
+-#define ORION5X_ETH_VIRT_BASE		(ORION5X_REGS_VIRT_BASE + 0x70000)
+-
+-#define ORION5X_SATA_PHYS_BASE		(ORION5X_REGS_PHYS_BASE + 0x80000)
+-#define ORION5X_SATA_VIRT_BASE		(ORION5X_REGS_VIRT_BASE + 0x80000)
+-
+-#define ORION5X_CRYPTO_PHYS_BASE	(ORION5X_REGS_PHYS_BASE + 0x90000)
+-
+-#define ORION5X_USB1_PHYS_BASE		(ORION5X_REGS_PHYS_BASE + 0xa0000)
+-#define ORION5X_USB1_VIRT_BASE		(ORION5X_REGS_VIRT_BASE + 0xa0000)
+-
+-/*******************************************************************************
+- * Device Bus Registers
+- ******************************************************************************/
+-#define MPP_0_7_CTRL		ORION5X_DEV_BUS_REG(0x000)
+-#define MPP_8_15_CTRL		ORION5X_DEV_BUS_REG(0x004)
+-#define MPP_16_19_CTRL		ORION5X_DEV_BUS_REG(0x050)
+-#define MPP_DEV_CTRL		ORION5X_DEV_BUS_REG(0x008)
+-#define MPP_RESET_SAMPLE	ORION5X_DEV_BUS_REG(0x010)
+-#define DEV_BANK_0_PARAM	ORION5X_DEV_BUS_REG(0x45c)
+-#define DEV_BANK_1_PARAM	ORION5X_DEV_BUS_REG(0x460)
+-#define DEV_BANK_2_PARAM	ORION5X_DEV_BUS_REG(0x464)
+-#define DEV_BANK_BOOT_PARAM	ORION5X_DEV_BUS_REG(0x46c)
+-#define DEV_BUS_CTRL		ORION5X_DEV_BUS_REG(0x4c0)
+-#define DEV_BUS_INT_CAUSE	ORION5X_DEV_BUS_REG(0x4d0)
+-#define DEV_BUS_INT_MASK	ORION5X_DEV_BUS_REG(0x4d4)
+-
+-/*******************************************************************************
+- * Supported Devices & Revisions
+- ******************************************************************************/
+-/* Orion-1 (88F5181) and Orion-VoIP (88F5181L) */
+-#define MV88F5181_DEV_ID	0x5181
+-#define MV88F5181_REV_B1	3
+-#define MV88F5181L_REV_A0	8
+-#define MV88F5181L_REV_A1	9
+-/* Orion-NAS (88F5182) */
+-#define MV88F5182_DEV_ID	0x5182
+-#define MV88F5182_REV_A2	2
+-/* Orion-2 (88F5281) */
+-#define MV88F5281_DEV_ID	0x5281
+-#define MV88F5281_REV_D0	4
+-#define MV88F5281_REV_D1	5
+-#define MV88F5281_REV_D2	6
+-/* Orion-1-90 (88F6183) */
+-#define MV88F6183_DEV_ID	0x6183
+-#define MV88F6183_REV_B0	3
+-
+-#endif
+diff --git a/arch/arm/mach-orion5x/include/mach/uncompress.h b/arch/arm/mach-orion5x/include/mach/uncompress.h
+index abd26b5..25e5cb9 100644
+--- a/arch/arm/mach-orion5x/include/mach/uncompress.h
++++ b/arch/arm/mach-orion5x/include/mach/uncompress.h
+@@ -1,6 +1,4 @@
+ /*
+- * arch/arm/mach-orion5x/include/mach/uncompress.h
+- *
+  * Tzachi Perelstein <tzachi at marvell.com>
+  *
+  * This file is licensed under the terms of the GNU General Public
+@@ -9,8 +7,8 @@
+  */
+ 
+ #include <linux/serial_reg.h>
+-#include <mach/orion5x.h>
+ 
++#define UART0_PHYS_BASE (0xf1000000 + 0x12000)
+ #define SERIAL_BASE	((unsigned char *)UART0_PHYS_BASE)
+ 
+ static void putc(const char c)
+diff --git a/arch/arm/mach-orion5x/irq.c b/arch/arm/mach-orion5x/irq.c
+index 8678db1..de980ef 100644
+--- a/arch/arm/mach-orion5x/irq.c
++++ b/arch/arm/mach-orion5x/irq.c
+@@ -13,10 +13,10 @@
+ #include <linux/kernel.h>
+ #include <linux/irq.h>
+ #include <linux/io.h>
+-#include <mach/bridge-regs.h>
+ #include <plat/orion-gpio.h>
+ #include <plat/irq.h>
+ #include <asm/exception.h>
++#include "bridge-regs.h"
+ #include "common.h"
+ 
+ static int __initdata gpio0_irqs[4] = {
+diff --git a/arch/arm/mach-orion5x/irqs.h b/arch/arm/mach-orion5x/irqs.h
+new file mode 100644
+index 0000000..506c8e0
+--- /dev/null
++++ b/arch/arm/mach-orion5x/irqs.h
+@@ -0,0 +1,58 @@
++/*
++ * IRQ definitions for Orion SoC
++ *
++ *  Maintainer: Tzachi Perelstein <tzachi at marvell.com>
++ *
++ *  This file is licensed under the terms of the GNU General Public
++ *  License version 2. This program is licensed "as is" without any
++ *  warranty of any kind, whether express or implied.
++ */
++
++#ifndef __ASM_ARCH_IRQS_H
++#define __ASM_ARCH_IRQS_H
++
++/*
++ * Orion Main Interrupt Controller
++ */
++#define IRQ_ORION5X_BRIDGE		(1 + 0)
++#define IRQ_ORION5X_DOORBELL_H2C	(1 + 1)
++#define IRQ_ORION5X_DOORBELL_C2H	(1 + 2)
++#define IRQ_ORION5X_UART0		(1 + 3)
++#define IRQ_ORION5X_UART1		(1 + 4)
++#define IRQ_ORION5X_I2C			(1 + 5)
++#define IRQ_ORION5X_GPIO_0_7		(1 + 6)
++#define IRQ_ORION5X_GPIO_8_15		(1 + 7)
++#define IRQ_ORION5X_GPIO_16_23		(1 + 8)
++#define IRQ_ORION5X_GPIO_24_31		(1 + 9)
++#define IRQ_ORION5X_PCIE0_ERR		(1 + 10)
++#define IRQ_ORION5X_PCIE0_INT		(1 + 11)
++#define IRQ_ORION5X_USB1_CTRL		(1 + 12)
++#define IRQ_ORION5X_DEV_BUS_ERR		(1 + 14)
++#define IRQ_ORION5X_PCI_ERR		(1 + 15)
++#define IRQ_ORION5X_USB_BR_ERR		(1 + 16)
++#define IRQ_ORION5X_USB0_CTRL		(1 + 17)
++#define IRQ_ORION5X_ETH_RX		(1 + 18)
++#define IRQ_ORION5X_ETH_TX		(1 + 19)
++#define IRQ_ORION5X_ETH_MISC		(1 + 20)
++#define IRQ_ORION5X_ETH_SUM		(1 + 21)
++#define IRQ_ORION5X_ETH_ERR		(1 + 22)
++#define IRQ_ORION5X_IDMA_ERR		(1 + 23)
++#define IRQ_ORION5X_IDMA_0		(1 + 24)
++#define IRQ_ORION5X_IDMA_1		(1 + 25)
++#define IRQ_ORION5X_IDMA_2		(1 + 26)
++#define IRQ_ORION5X_IDMA_3		(1 + 27)
++#define IRQ_ORION5X_CESA		(1 + 28)
++#define IRQ_ORION5X_SATA		(1 + 29)
++#define IRQ_ORION5X_XOR0		(1 + 30)
++#define IRQ_ORION5X_XOR1		(1 + 31)
++
++/*
++ * Orion General Purpose Pins
++ */
++#define IRQ_ORION5X_GPIO_START	33
++#define NR_GPIO_IRQS		32
++
++#define ORION5X_NR_IRQS		(IRQ_ORION5X_GPIO_START + NR_GPIO_IRQS)
++
++
++#endif
+diff --git a/arch/arm/mach-orion5x/kurobox_pro-setup.c b/arch/arm/mach-orion5x/kurobox_pro-setup.c
+index b1ebb37..9dc3f59 100644
+--- a/arch/arm/mach-orion5x/kurobox_pro-setup.c
++++ b/arch/arm/mach-orion5x/kurobox_pro-setup.c
+@@ -23,10 +23,10 @@
+ #include <asm/mach-types.h>
+ #include <asm/mach/arch.h>
+ #include <asm/mach/pci.h>
+-#include <mach/orion5x.h>
+ #include <linux/platform_data/mtd-orion_nand.h>
+ #include "common.h"
+ #include "mpp.h"
++#include "orion5x.h"
+ 
+ /*****************************************************************************
+  * KUROBOX-PRO Info
+diff --git a/arch/arm/mach-orion5x/ls-chl-setup.c b/arch/arm/mach-orion5x/ls-chl-setup.c
+index cb8720e..dfdaa8a 100644
+--- a/arch/arm/mach-orion5x/ls-chl-setup.c
++++ b/arch/arm/mach-orion5x/ls-chl-setup.c
+@@ -22,9 +22,9 @@
+ #include <linux/gpio.h>
+ #include <asm/mach-types.h>
+ #include <asm/mach/arch.h>
+-#include <mach/orion5x.h>
+ #include "common.h"
+ #include "mpp.h"
++#include "orion5x.h"
+ 
+ /*****************************************************************************
+  * Linkstation LS-CHL Info
+diff --git a/arch/arm/mach-orion5x/ls_hgl-setup.c b/arch/arm/mach-orion5x/ls_hgl-setup.c
+index 0ddfa23..47ba6e0 100644
+--- a/arch/arm/mach-orion5x/ls_hgl-setup.c
++++ b/arch/arm/mach-orion5x/ls_hgl-setup.c
+@@ -21,9 +21,9 @@
+ #include <linux/gpio.h>
+ #include <asm/mach-types.h>
+ #include <asm/mach/arch.h>
+-#include <mach/orion5x.h>
+ #include "common.h"
+ #include "mpp.h"
++#include "orion5x.h"
+ 
+ /*****************************************************************************
+  * Linkstation LS-HGL Info
+diff --git a/arch/arm/mach-orion5x/mpp.c b/arch/arm/mach-orion5x/mpp.c
+index 5b70026..19ef185 100644
+--- a/arch/arm/mach-orion5x/mpp.c
++++ b/arch/arm/mach-orion5x/mpp.c
+@@ -11,8 +11,8 @@
+ #include <linux/kernel.h>
+ #include <linux/init.h>
+ #include <linux/io.h>
+-#include <mach/hardware.h>
+ #include <plat/mpp.h>
++#include "orion5x.h"
+ #include "mpp.h"
+ #include "common.h"
+ 
+diff --git a/arch/arm/mach-orion5x/mv2120-setup.c b/arch/arm/mach-orion5x/mv2120-setup.c
+index 11985dc..2bf8ec7 100644
+--- a/arch/arm/mach-orion5x/mv2120-setup.c
++++ b/arch/arm/mach-orion5x/mv2120-setup.c
+@@ -21,9 +21,9 @@
+ #include <linux/ata_platform.h>
+ #include <asm/mach-types.h>
+ #include <asm/mach/arch.h>
+-#include <mach/orion5x.h>
+ #include "common.h"
+ #include "mpp.h"
++#include "orion5x.h"
+ 
+ #define MV2120_NOR_BOOT_BASE	0xf4000000
+ #define MV2120_NOR_BOOT_SIZE	SZ_512K
+diff --git a/arch/arm/mach-orion5x/net2big-setup.c b/arch/arm/mach-orion5x/net2big-setup.c
+index e91abcc..bf6be4c 100644
+--- a/arch/arm/mach-orion5x/net2big-setup.c
++++ b/arch/arm/mach-orion5x/net2big-setup.c
+@@ -24,10 +24,10 @@
+ #include <linux/delay.h>
+ #include <asm/mach-types.h>
+ #include <asm/mach/arch.h>
+-#include <mach/orion5x.h>
+ #include <plat/orion-gpio.h>
+ #include "common.h"
+ #include "mpp.h"
++#include "orion5x.h"
+ 
+ /*****************************************************************************
+  * LaCie 2Big Network Info
+diff --git a/arch/arm/mach-orion5x/orion5x.h b/arch/arm/mach-orion5x/orion5x.h
+new file mode 100644
+index 0000000..3364df3
+--- /dev/null
++++ b/arch/arm/mach-orion5x/orion5x.h
+@@ -0,0 +1,146 @@
++/*
++ * Generic definitions of Orion SoC flavors:
++ *  Orion-1, Orion-VoIP, Orion-NAS, Orion-2, and Orion-1-90.
++ *
++ * Maintainer: Tzachi Perelstein <tzachi at marvell.com>
++ *
++ * This file is licensed under the terms of the GNU General Public
++ * License version 2. This program is licensed "as is" without any
++ * warranty of any kind, whether express or implied.
++ */
++
++#ifndef __ASM_ARCH_ORION5X_H
++#define __ASM_ARCH_ORION5X_H
++
++#include "irqs.h"
++
++/*****************************************************************************
++ * Orion Address Maps
++ *
++ * phys
++ * e0000000	PCIe MEM space
++ * e8000000	PCI MEM space
++ * f0000000	PCIe WA space (Orion-1/Orion-NAS only)
++ * f1000000	on-chip peripheral registers
++ * f2000000	PCIe I/O space
++ * f2100000	PCI I/O space
++ * f2200000	SRAM dedicated for the crypto unit
++ * f4000000	device bus mappings (boot)
++ * fa000000	device bus mappings (cs0)
++ * fa800000	device bus mappings (cs2)
++ * fc000000	device bus mappings (cs0/cs1)
++ *
++ * virt		phys		size
++ * fe000000	f1000000	1M	on-chip peripheral registers
++ * fee00000	f2000000	64K	PCIe I/O space
++ * fee10000	f2100000	64K	PCI I/O space
++ * fd000000	f0000000	16M	PCIe WA space (Orion-1/Orion-NAS only)
++ ****************************************************************************/
++#define ORION5X_REGS_PHYS_BASE		0xf1000000
++#define ORION5X_REGS_VIRT_BASE		IOMEM(0xfe000000)
++#define ORION5X_REGS_SIZE		SZ_1M
++
++#define ORION5X_PCIE_IO_PHYS_BASE	0xf2000000
++#define ORION5X_PCIE_IO_BUS_BASE	0x00000000
++#define ORION5X_PCIE_IO_SIZE		SZ_64K
++
++#define ORION5X_PCI_IO_PHYS_BASE	0xf2100000
++#define ORION5X_PCI_IO_BUS_BASE		0x00010000
++#define ORION5X_PCI_IO_SIZE		SZ_64K
++
++#define ORION5X_SRAM_PHYS_BASE		(0xf2200000)
++#define ORION5X_SRAM_SIZE		SZ_8K
++
++/* Relevant only for Orion-1/Orion-NAS */
++#define ORION5X_PCIE_WA_PHYS_BASE	0xf0000000
++#define ORION5X_PCIE_WA_VIRT_BASE	IOMEM(0xfd000000)
++#define ORION5X_PCIE_WA_SIZE		SZ_16M
++
++#define ORION5X_PCIE_MEM_PHYS_BASE	0xe0000000
++#define ORION5X_PCIE_MEM_SIZE		SZ_128M
++
++#define ORION5X_PCI_MEM_PHYS_BASE	0xe8000000
++#define ORION5X_PCI_MEM_SIZE		SZ_128M
++
++/*******************************************************************************
++ * Orion Registers Map
++ ******************************************************************************/
++
++#define ORION5X_DDR_PHYS_BASE           (ORION5X_REGS_PHYS_BASE + 0x00000)
++#define  ORION5X_DDR_WINS_BASE          (ORION5X_DDR_PHYS_BASE + 0x1500)
++#define  ORION5X_DDR_WINS_SZ            (0x10)
++#define ORION5X_DDR_VIRT_BASE		(ORION5X_REGS_VIRT_BASE + 0x00000)
++#define ORION5X_DEV_BUS_PHYS_BASE	(ORION5X_REGS_PHYS_BASE + 0x10000)
++#define ORION5X_DEV_BUS_VIRT_BASE	(ORION5X_REGS_VIRT_BASE + 0x10000)
++#define ORION5X_DEV_BUS_REG(x)		(ORION5X_DEV_BUS_VIRT_BASE + (x))
++#define  GPIO_VIRT_BASE			ORION5X_DEV_BUS_REG(0x0100)
++#define  SPI_PHYS_BASE			(ORION5X_DEV_BUS_PHYS_BASE + 0x0600)
++#define  I2C_PHYS_BASE			(ORION5X_DEV_BUS_PHYS_BASE + 0x1000)
++#define  UART0_PHYS_BASE		(ORION5X_DEV_BUS_PHYS_BASE + 0x2000)
++#define  UART0_VIRT_BASE		(ORION5X_DEV_BUS_VIRT_BASE + 0x2000)
++#define  UART1_PHYS_BASE		(ORION5X_DEV_BUS_PHYS_BASE + 0x2100)
++#define  UART1_VIRT_BASE		(ORION5X_DEV_BUS_VIRT_BASE + 0x2100)
++
++#define ORION5X_BRIDGE_VIRT_BASE	(ORION5X_REGS_VIRT_BASE + 0x20000)
++#define ORION5X_BRIDGE_PHYS_BASE	(ORION5X_REGS_PHYS_BASE + 0x20000)
++#define  ORION5X_BRIDGE_WINS_BASE       (ORION5X_BRIDGE_PHYS_BASE)
++#define  ORION5X_BRIDGE_WINS_SZ         (0x80)
++
++#define ORION5X_PCI_VIRT_BASE		(ORION5X_REGS_VIRT_BASE + 0x30000)
++
++#define ORION5X_PCIE_VIRT_BASE		(ORION5X_REGS_VIRT_BASE + 0x40000)
++
++#define ORION5X_USB0_PHYS_BASE		(ORION5X_REGS_PHYS_BASE + 0x50000)
++#define ORION5X_USB0_VIRT_BASE		(ORION5X_REGS_VIRT_BASE + 0x50000)
++
++#define ORION5X_XOR_PHYS_BASE		(ORION5X_REGS_PHYS_BASE + 0x60900)
++#define ORION5X_XOR_VIRT_BASE		(ORION5X_REGS_VIRT_BASE + 0x60900)
++
++#define ORION5X_ETH_PHYS_BASE		(ORION5X_REGS_PHYS_BASE + 0x70000)
++#define ORION5X_ETH_VIRT_BASE		(ORION5X_REGS_VIRT_BASE + 0x70000)
++
++#define ORION5X_SATA_PHYS_BASE		(ORION5X_REGS_PHYS_BASE + 0x80000)
++#define ORION5X_SATA_VIRT_BASE		(ORION5X_REGS_VIRT_BASE + 0x80000)
++
++#define ORION5X_CRYPTO_PHYS_BASE	(ORION5X_REGS_PHYS_BASE + 0x90000)
++
++#define ORION5X_USB1_PHYS_BASE		(ORION5X_REGS_PHYS_BASE + 0xa0000)
++#define ORION5X_USB1_VIRT_BASE		(ORION5X_REGS_VIRT_BASE + 0xa0000)
++
++/*******************************************************************************
++ * Device Bus Registers
++ ******************************************************************************/
++#define MPP_0_7_CTRL		ORION5X_DEV_BUS_REG(0x000)
++#define MPP_8_15_CTRL		ORION5X_DEV_BUS_REG(0x004)
++#define MPP_16_19_CTRL		ORION5X_DEV_BUS_REG(0x050)
++#define MPP_DEV_CTRL		ORION5X_DEV_BUS_REG(0x008)
++#define MPP_RESET_SAMPLE	ORION5X_DEV_BUS_REG(0x010)
++#define DEV_BANK_0_PARAM	ORION5X_DEV_BUS_REG(0x45c)
++#define DEV_BANK_1_PARAM	ORION5X_DEV_BUS_REG(0x460)
++#define DEV_BANK_2_PARAM	ORION5X_DEV_BUS_REG(0x464)
++#define DEV_BANK_BOOT_PARAM	ORION5X_DEV_BUS_REG(0x46c)
++#define DEV_BUS_CTRL		ORION5X_DEV_BUS_REG(0x4c0)
++#define DEV_BUS_INT_CAUSE	ORION5X_DEV_BUS_REG(0x4d0)
++#define DEV_BUS_INT_MASK	ORION5X_DEV_BUS_REG(0x4d4)
++
++/*******************************************************************************
++ * Supported Devices & Revisions
++ ******************************************************************************/
++/* Orion-1 (88F5181) and Orion-VoIP (88F5181L) */
++#define MV88F5181_DEV_ID	0x5181
++#define MV88F5181_REV_B1	3
++#define MV88F5181L_REV_A0	8
++#define MV88F5181L_REV_A1	9
++/* Orion-NAS (88F5182) */
++#define MV88F5182_DEV_ID	0x5182
++#define MV88F5182_REV_A2	2
++/* Orion-2 (88F5281) */
++#define MV88F5281_DEV_ID	0x5281
++#define MV88F5281_REV_D0	4
++#define MV88F5281_REV_D1	5
++#define MV88F5281_REV_D2	6
++/* Orion-1-90 (88F6183) */
++#define MV88F6183_DEV_ID	0x6183
++#define MV88F6183_REV_B0	3
++
++#endif
+diff --git a/arch/arm/mach-orion5x/pci.c b/arch/arm/mach-orion5x/pci.c
+index b02f394..ecb998e 100644
+--- a/arch/arm/mach-orion5x/pci.c
++++ b/arch/arm/mach-orion5x/pci.c
+@@ -19,8 +19,8 @@
+ #include <asm/mach/pci.h>
+ #include <plat/pcie.h>
+ #include <plat/addr-map.h>
+-#include <mach/orion5x.h>
+ #include "common.h"
++#include "orion5x.h"
+ 
+ /*****************************************************************************
+  * Orion has one PCIe controller and one PCI controller.
+diff --git a/arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c b/arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c
+index 69a6e5b..c742e7b 100644
+--- a/arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c
++++ b/arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c
+@@ -20,9 +20,9 @@
+ #include <asm/mach-types.h>
+ #include <asm/mach/arch.h>
+ #include <asm/mach/pci.h>
+-#include <mach/orion5x.h>
+ #include "common.h"
+ #include "mpp.h"
++#include "orion5x.h"
+ 
+ /*****************************************************************************
+  * RD-88F5181L FXO Info
+diff --git a/arch/arm/mach-orion5x/rd88f5181l-ge-setup.c b/arch/arm/mach-orion5x/rd88f5181l-ge-setup.c
+index e19f8b7..7e977b7 100644
+--- a/arch/arm/mach-orion5x/rd88f5181l-ge-setup.c
++++ b/arch/arm/mach-orion5x/rd88f5181l-ge-setup.c
+@@ -21,9 +21,9 @@
+ #include <asm/mach-types.h>
+ #include <asm/mach/arch.h>
+ #include <asm/mach/pci.h>
+-#include <mach/orion5x.h>
+ #include "common.h"
+ #include "mpp.h"
++#include "orion5x.h"
+ 
+ /*****************************************************************************
+  * RD-88F5181L GE Info
+diff --git a/arch/arm/mach-orion5x/rd88f5182-setup.c b/arch/arm/mach-orion5x/rd88f5182-setup.c
+index 180a4f9..fe3e67c 100644
+--- a/arch/arm/mach-orion5x/rd88f5182-setup.c
++++ b/arch/arm/mach-orion5x/rd88f5182-setup.c
+@@ -23,9 +23,9 @@
+ #include <asm/mach-types.h>
+ #include <asm/mach/arch.h>
+ #include <asm/mach/pci.h>
+-#include <mach/orion5x.h>
+ #include "common.h"
+ #include "mpp.h"
++#include "orion5x.h"
+ 
+ /*****************************************************************************
+  * RD-88F5182 Info
+diff --git a/arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c b/arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c
+index cc5bdbe..4bf80dd 100644
+--- a/arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c
++++ b/arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c
+@@ -22,8 +22,8 @@
+ #include <asm/mach-types.h>
+ #include <asm/mach/arch.h>
+ #include <asm/mach/pci.h>
+-#include <mach/orion5x.h>
+ #include "common.h"
++#include "orion5x.h"
+ 
+ static struct mv643xx_eth_platform_data rd88f6183ap_ge_eth_data = {
+ 	.phy_addr	= -1,
+diff --git a/arch/arm/mach-orion5x/terastation_pro2-setup.c b/arch/arm/mach-orion5x/terastation_pro2-setup.c
+index ad20575..deb5e29 100644
+--- a/arch/arm/mach-orion5x/terastation_pro2-setup.c
++++ b/arch/arm/mach-orion5x/terastation_pro2-setup.c
+@@ -22,9 +22,9 @@
+ #include <asm/mach-types.h>
+ #include <asm/mach/arch.h>
+ #include <asm/mach/pci.h>
+-#include <mach/orion5x.h>
+ #include "common.h"
+ #include "mpp.h"
++#include "orion5x.h"
+ 
+ /*****************************************************************************
+  * Terastation Pro 2/Live Info
+diff --git a/arch/arm/mach-orion5x/ts209-setup.c b/arch/arm/mach-orion5x/ts209-setup.c
+index 1cfc364..7bd671b 100644
+--- a/arch/arm/mach-orion5x/ts209-setup.c
++++ b/arch/arm/mach-orion5x/ts209-setup.c
+@@ -25,9 +25,9 @@
+ #include <asm/mach-types.h>
+ #include <asm/mach/arch.h>
+ #include <asm/mach/pci.h>
+-#include <mach/orion5x.h>
+ #include "common.h"
+ #include "mpp.h"
++#include "orion5x.h"
+ #include "tsx09-common.h"
+ 
+ #define QNAP_TS209_NOR_BOOT_BASE 0xf4000000
+diff --git a/arch/arm/mach-orion5x/ts409-setup.c b/arch/arm/mach-orion5x/ts409-setup.c
+index bc985cf..a77613b 100644
+--- a/arch/arm/mach-orion5x/ts409-setup.c
++++ b/arch/arm/mach-orion5x/ts409-setup.c
+@@ -27,9 +27,9 @@
+ #include <asm/mach-types.h>
+ #include <asm/mach/arch.h>
+ #include <asm/mach/pci.h>
+-#include <mach/orion5x.h>
+ #include "common.h"
+ #include "mpp.h"
++#include "orion5x.h"
+ #include "tsx09-common.h"
+ 
+ /*****************************************************************************
+diff --git a/arch/arm/mach-orion5x/ts78xx-setup.c b/arch/arm/mach-orion5x/ts78xx-setup.c
+index 5a61a66..b67ace4 100644
+--- a/arch/arm/mach-orion5x/ts78xx-setup.c
++++ b/arch/arm/mach-orion5x/ts78xx-setup.c
+@@ -23,9 +23,9 @@
+ #include <asm/mach-types.h>
+ #include <asm/mach/arch.h>
+ #include <asm/mach/map.h>
+-#include <mach/orion5x.h>
+ #include "common.h"
+ #include "mpp.h"
++#include "orion5x.h"
+ #include "ts78xx-fpga.h"
+ 
+ /*****************************************************************************
+diff --git a/arch/arm/mach-orion5x/tsx09-common.c b/arch/arm/mach-orion5x/tsx09-common.c
+index d42e006..8977498 100644
+--- a/arch/arm/mach-orion5x/tsx09-common.c
++++ b/arch/arm/mach-orion5x/tsx09-common.c
+@@ -15,7 +15,7 @@
+ #include <linux/mv643xx_eth.h>
+ #include <linux/timex.h>
+ #include <linux/serial_reg.h>
+-#include <mach/orion5x.h>
++#include "orion5x.h"
+ #include "tsx09-common.h"
+ #include "common.h"
+ 
+diff --git a/arch/arm/mach-orion5x/wnr854t-setup.c b/arch/arm/mach-orion5x/wnr854t-setup.c
+index bcc6e12..4e1e5c8 100644
+--- a/arch/arm/mach-orion5x/wnr854t-setup.c
++++ b/arch/arm/mach-orion5x/wnr854t-setup.c
+@@ -19,7 +19,7 @@
+ #include <asm/mach-types.h>
+ #include <asm/mach/arch.h>
+ #include <asm/mach/pci.h>
+-#include <mach/orion5x.h>
++#include "orion5x.h"
+ #include "common.h"
+ #include "mpp.h"
+ 
+diff --git a/arch/arm/mach-orion5x/wrt350n-v2-setup.c b/arch/arm/mach-orion5x/wrt350n-v2-setup.c
+index 4068d7a..61e9027 100644
+--- a/arch/arm/mach-orion5x/wrt350n-v2-setup.c
++++ b/arch/arm/mach-orion5x/wrt350n-v2-setup.c
+@@ -22,7 +22,7 @@
+ #include <asm/mach-types.h>
+ #include <asm/mach/arch.h>
+ #include <asm/mach/pci.h>
+-#include <mach/orion5x.h>
++#include "orion5x.h"
+ #include "common.h"
+ #include "mpp.h"
+ 
diff --git a/debian/patches/features/arm/arm-orion5x-multiplatform-support.patch b/debian/patches/features/arm/arm-orion5x-multiplatform-support.patch
new file mode 100644
index 0000000..a0bde91
--- /dev/null
+++ b/debian/patches/features/arm/arm-orion5x-multiplatform-support.patch
@@ -0,0 +1,147 @@
+From: Arnd Bergmann <arnd at arndb.de>
+Date: Wed, 2 Dec 2015 22:27:09 +0100
+Subject: ARM: orion5x: multiplatform support
+Origin: https://git.kernel.org/linus/63cddd25fa02dbba294fb09f78ea24d7a9f1c7d9
+
+The orion5x platform is now ready to be enabled for multiplatform
+support, this patch does the switch over by modifying the Kconfig file,
+the defconfig and removing the last mach/*.h header that becomes obsolete
+with this.
+
+Signed-off-by: Arnd Bergmann <arnd at arndb.de>
+Acked-by: Andrew Lunn <andrew at lunn.ch>
+Signed-off-by: Gregory CLEMENT <gregory.clement at free-electrons.com>
+---
+ arch/arm/Kconfig                                | 17 ---------
+ arch/arm/configs/orion5x_defconfig              |  3 ++
+ arch/arm/mach-orion5x/Kconfig                   | 18 +++++++---
+ arch/arm/mach-orion5x/Makefile                  |  2 ++
+ arch/arm/mach-orion5x/include/mach/uncompress.h | 46 -------------------------
+ 5 files changed, 19 insertions(+), 67 deletions(-)
+ delete mode 100644 arch/arm/mach-orion5x/include/mach/uncompress.h
+
+--- a/arch/arm/Kconfig
++++ b/arch/arm/Kconfig
+@@ -535,23 +535,6 @@ config ARCH_MV78XX0
+ 	  Support for the following Marvell MV78xx0 series SoCs:
+ 	  MV781x0, MV782x0.
+ 
+-config ARCH_ORION5X
+-	bool "Marvell Orion"
+-	depends on MMU
+-	select ARCH_REQUIRE_GPIOLIB
+-	select CPU_FEROCEON
+-	select GENERIC_CLOCKEVENTS
+-	select MVEBU_MBUS
+-	select MULTI_IRQ_HANDLER
+-	select PCI
+-	select PLAT_ORION_LEGACY
+-	select MULTI_IRQ_HANDLER
+-	select SPARSE_IRQ
+-	help
+-	  Support for the following Marvell Orion 5x series SoCs:
+-	  Orion-1 (5181), Orion-VoIP (5181L), Orion-NAS (5182),
+-	  Orion-2 (5281), Orion-1-90 (6183).
+-
+ config ARCH_MMP
+ 	bool "Marvell PXA168/910/MMP2"
+ 	depends on MMU
+--- a/arch/arm/configs/orion5x_defconfig
++++ b/arch/arm/configs/orion5x_defconfig
+@@ -13,6 +13,9 @@ CONFIG_MODULE_UNLOAD=y
+ # CONFIG_BLK_DEV_BSG is not set
+ CONFIG_PARTITION_ADVANCED=y
+ CONFIG_BSD_DISKLABEL=y
++CONFIG_ARCH_MULTI_V5=y
++# CONFIG_ARCH_MULTI_V6 is not set
++# CONFIG_ARCH_MULTI_V7 is not set
+ CONFIG_ARCH_ORION5X=y
+ CONFIG_ARCH_ORION5X_DT=y
+ CONFIG_MACH_DB88F5281=y
+--- a/arch/arm/mach-orion5x/Kconfig
++++ b/arch/arm/mach-orion5x/Kconfig
+@@ -1,6 +1,18 @@
+-if ARCH_ORION5X
++menuconfig ARCH_ORION5X
++	bool "Marvell Orion"
++	depends on MMU && ARCH_MULTI_V5
++	select ARCH_REQUIRE_GPIOLIB
++	select CPU_FEROCEON
++	select GENERIC_CLOCKEVENTS
++	select MVEBU_MBUS
++	select PCI
++	select PLAT_ORION_LEGACY
++	help
++	  Support for the following Marvell Orion 5x series SoCs:
++	  Orion-1 (5181), Orion-VoIP (5181L), Orion-NAS (5182),
++	  Orion-2 (5281), Orion-1-90 (6183).
+ 
+-menu "Orion Implementations"
++if ARCH_ORION5X
+ 
+ config ARCH_ORION5X_DT
+ 	bool "Marvell Orion5x Flattened Device Tree"
+@@ -163,6 +175,4 @@ config MACH_RD88F6183AP_GE
+ 	  Say 'Y' here if you want your kernel to support the
+ 	  Marvell Orion-1-90 (88F6183) AP GE RD.
+ 
+-endmenu
+-
+ endif
+--- a/arch/arm/mach-orion5x/Makefile
++++ b/arch/arm/mach-orion5x/Makefile
+@@ -1,3 +1,5 @@
++ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/arch/arm/plat-orion/include
++
+ obj-y				+= common.o pci.o irq.o mpp.o
+ obj-$(CONFIG_MACH_DB88F5281)	+= db88f5281-setup.o
+ obj-$(CONFIG_MACH_RD88F5182)	+= rd88f5182-setup.o
+--- a/arch/arm/mach-orion5x/include/mach/uncompress.h
++++ /dev/null
+@@ -1,46 +0,0 @@
+-/*
+- * Tzachi Perelstein <tzachi at marvell.com>
+- *
+- * This file is licensed under the terms of the GNU General Public
+- * License version 2.  This program is licensed "as is" without any
+- * warranty of any kind, whether express or implied.
+- */
+-
+-#include <linux/serial_reg.h>
+-
+-#define UART0_PHYS_BASE (0xf1000000 + 0x12000)
+-#define SERIAL_BASE	((unsigned char *)UART0_PHYS_BASE)
+-
+-static void putc(const char c)
+-{
+-	unsigned char *base = SERIAL_BASE;
+-	int i;
+-
+-	for (i = 0; i < 0x1000; i++) {
+-		if (base[UART_LSR << 2] & UART_LSR_THRE)
+-			break;
+-		barrier();
+-	}
+-
+-	base[UART_TX << 2] = c;
+-}
+-
+-static void flush(void)
+-{
+-	unsigned char *base = SERIAL_BASE;
+-	unsigned char mask;
+-	int i;
+-
+-	mask = UART_LSR_TEMT | UART_LSR_THRE;
+-
+-	for (i = 0; i < 0x1000; i++) {
+-		if ((base[UART_LSR << 2] & mask) == mask)
+-			break;
+-		barrier();
+-	}
+-}
+-
+-/*
+- * nothing to do
+- */
+-#define arch_decomp_setup()
diff --git a/debian/patches/series b/debian/patches/series
index 8f38cab..b2757f7 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -109,3 +109,8 @@ bugfix/all/usb-serial-visor-fix-crash-on-detecting-device-without-write_urbs.pat
 bugfix/all/tty-fix-unsafe-ldisc-reference-via-ioctl-tiocgetd.patch
 bugfix/all/unix-properly-account-for-FDs-passed-over-unix-socke.patch
 bugfix/all/KEYS-Fix-keyring-ref-leak-in-join_session_keyring.patch
+features/arm/arm-orion-move-watchdog-setup-to-mach-orion5x.patch
+features/arm/arm-orion-always-use-multi_irq_handler.patch
+features/arm/arm-orion-use-sparse_irq-everywhere.patch
+features/arm/arm-orion5x-clean-up-mach-.h-headers.patch
+features/arm/arm-orion5x-multiplatform-support.patch

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/kernel/linux.git



More information about the Kernel-svn-changes mailing list