Author: kaloz Date: 2015-12-10 13:11:39 +0100 (Thu, 10 Dec 2015) New Revision: 47819
Added: trunk/target/linux/mvebu/config-4.4 trunk/target/linux/mvebu/patches-4.4/ trunk/target/linux/mvebu/patches-4.4/000-sata_use_ifdef_around_suspend_resume.patch Removed: trunk/target/linux/mvebu/patches-4.4/000-new_linksys_boards.patch trunk/target/linux/mvebu/patches-4.4/022-ARM-mvebu-A385-AP-Enable-the-NAND-controller.patch trunk/target/linux/mvebu/patches-4.4/050-leds_tlc59116_document_binding.patch trunk/target/linux/mvebu/patches-4.4/051-leds_tlc59116_add_driver.patch trunk/target/linux/mvebu/patches-4.4/300-add_missing_labels.patch Log: mvebu: add support for 4.4-rc Signed-off-by: Imre Kaloz <[email protected]> Copied: trunk/target/linux/mvebu/config-4.4 (from rev 47818, trunk/target/linux/mvebu/config-4.1) =================================================================== --- trunk/target/linux/mvebu/config-4.4 (rev 0) +++ trunk/target/linux/mvebu/config-4.4 2015-12-10 12:11:39 UTC (rev 47819) @@ -0,0 +1,363 @@ +CONFIG_ALIGNMENT_TRAP=y +CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y +CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y +CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y +CONFIG_ARCH_HAS_SG_CHAIN=y +CONFIG_ARCH_HAS_TICK_BROADCAST=y +CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y +CONFIG_ARCH_HIBERNATION_POSSIBLE=y +CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y +CONFIG_ARCH_MULTIPLATFORM=y +# CONFIG_ARCH_MULTI_CPU_AUTO is not set +CONFIG_ARCH_MULTI_V6_V7=y +CONFIG_ARCH_MULTI_V7=y +CONFIG_ARCH_MVEBU=y +CONFIG_ARCH_NR_GPIO=0 +CONFIG_ARCH_REQUIRE_GPIOLIB=y +# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set +# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set +CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y +CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y +CONFIG_ARCH_SUPPORTS_UPROBES=y +CONFIG_ARCH_SUSPEND_POSSIBLE=y +CONFIG_ARCH_USE_BUILTIN_BSWAP=y +CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y +CONFIG_ARCH_WANT_GENERAL_HUGETLB=y +CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y +CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y +CONFIG_ARM=y +CONFIG_ARMADA_370_CLK=y +CONFIG_ARMADA_370_XP_TIMER=y +CONFIG_ARMADA_38X_CLK=y +CONFIG_ARMADA_XP_CLK=y +CONFIG_ARM_APPENDED_DTB=y +CONFIG_ARM_ATAG_DTB_COMPAT=y +# CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEND is not set +CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_FROM_BOOTLOADER=y +CONFIG_ARM_CPU_SUSPEND=y +CONFIG_ARM_ERRATA_720789=y +CONFIG_ARM_GIC=y +CONFIG_ARM_HAS_SG_CHAIN=y +# CONFIG_ARM_KIRKWOOD_CPUFREQ is not set +CONFIG_ARM_L1_CACHE_SHIFT=6 +CONFIG_ARM_L1_CACHE_SHIFT_6=y +# CONFIG_ARM_LPAE is not set +CONFIG_ARM_MVEBU_V7_CPUIDLE=y +CONFIG_ARM_PATCH_PHYS_VIRT=y +CONFIG_ARM_THUMB=y +# CONFIG_ARM_THUMBEE is not set +CONFIG_ARM_VIRT_EXT=y +CONFIG_ASYNC_TX_ENABLE_CHANNEL_SWITCH=y +CONFIG_ATAGS=y +CONFIG_AUTO_ZRELADDR=y +CONFIG_BOUNCE=y +# CONFIG_CACHE_FEROCEON_L2 is not set +CONFIG_CACHE_L2X0=y +CONFIG_CLKDEV_LOOKUP=y +CONFIG_CLKSRC_MMIO=y +CONFIG_CLKSRC_OF=y +CONFIG_CLONE_BACKWARDS=y +CONFIG_COMMON_CLK=y +CONFIG_CPUFREQ_DT=y +CONFIG_CPU_32v6K=y +CONFIG_CPU_32v7=y +CONFIG_CPU_ABRT_EV7=y +# CONFIG_CPU_BIG_ENDIAN is not set +# CONFIG_CPU_BPREDICT_DISABLE is not set +CONFIG_CPU_CACHE_V7=y +CONFIG_CPU_CACHE_VIPT=y +CONFIG_CPU_COPY_V6=y +CONFIG_CPU_CP15=y +CONFIG_CPU_CP15_MMU=y +CONFIG_CPU_FREQ=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set +CONFIG_CPU_FREQ_GOV_COMMON=y +# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set +CONFIG_CPU_FREQ_GOV_ONDEMAND=y +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set +# CONFIG_CPU_FREQ_GOV_USERSPACE is not set +CONFIG_CPU_FREQ_STAT=y +# CONFIG_CPU_FREQ_STAT_DETAILS is not set +CONFIG_CPU_HAS_ASID=y +# CONFIG_CPU_ICACHE_DISABLE is not set +CONFIG_CPU_IDLE=y +CONFIG_CPU_IDLE_GOV_LADDER=y +CONFIG_CPU_PABRT_V7=y +CONFIG_CPU_PJ4B=y +CONFIG_CPU_PM=y +CONFIG_CPU_RMAP=y +# CONFIG_CPU_THERMAL is not set +CONFIG_CPU_TLB_V7=y +CONFIG_CPU_V7=y +CONFIG_CRC16=y +CONFIG_CRYPTO_DEFLATE=y +CONFIG_CRYPTO_LZO=y +CONFIG_CRYPTO_XZ=y +CONFIG_DCACHE_WORD_ACCESS=y +CONFIG_DEBUG_INFO=y +CONFIG_DEBUG_LL=y +CONFIG_DEBUG_LL_INCLUDE="debug/8250.S" +CONFIG_DEBUG_MVEBU_UART0=y +# CONFIG_DEBUG_MVEBU_UART0_ALTERNATE is not set +# CONFIG_DEBUG_MVEBU_UART1_ALTERNATE is not set +CONFIG_DEBUG_UART_8250=y +# CONFIG_DEBUG_UART_8250_FLOW_CONTROL is not set +CONFIG_DEBUG_UART_8250_SHIFT=2 +# CONFIG_DEBUG_UART_8250_WORD is not set +CONFIG_DEBUG_UART_PHYS=0xd0012000 +CONFIG_DEBUG_UART_VIRT=0xfec12000 +CONFIG_DEBUG_UNCOMPRESS=y +CONFIG_DEBUG_USER=y +CONFIG_DMADEVICES=y +CONFIG_DMA_ENGINE=y +CONFIG_DMA_ENGINE_RAID=y +CONFIG_DMA_OF=y +CONFIG_DTC=y +# CONFIG_DW_DMAC_CORE is not set +# CONFIG_DW_DMAC_PCI is not set +CONFIG_EARLY_PRINTK=y +CONFIG_FIXED_PHY=y +CONFIG_FRAME_POINTER=y +CONFIG_GENERIC_ALLOCATOR=y +CONFIG_GENERIC_BUG=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y +CONFIG_GENERIC_IDLE_POLL_SETUP=y +CONFIG_GENERIC_IO=y +CONFIG_GENERIC_IRQ_CHIP=y +CONFIG_GENERIC_IRQ_SHOW=y +CONFIG_GENERIC_MSI_IRQ=y +CONFIG_GENERIC_PCI_IOMAP=y +CONFIG_GENERIC_SCHED_CLOCK=y +CONFIG_GENERIC_SMP_IDLE_THREAD=y +CONFIG_GENERIC_STRNCPY_FROM_USER=y +CONFIG_GENERIC_STRNLEN_USER=y +CONFIG_GPIOLIB=y +CONFIG_GPIO_DEVRES=y +CONFIG_GPIO_GENERIC=y +CONFIG_GPIO_MVEBU=y +CONFIG_GPIO_MVEBU_PWM=y +CONFIG_GPIO_SYSFS=y +CONFIG_HANDLE_DOMAIN_IRQ=y +CONFIG_HARDIRQS_SW_RESEND=y +CONFIG_HAS_DMA=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT_MAP=y +# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set +CONFIG_HAVE_ARCH_AUDITSYSCALL=y +CONFIG_HAVE_ARCH_BITREVERSE=y +CONFIG_HAVE_ARCH_JUMP_LABEL=y +CONFIG_HAVE_ARCH_KGDB=y +CONFIG_HAVE_ARCH_PFN_VALID=y +CONFIG_HAVE_ARCH_SECCOMP_FILTER=y +CONFIG_HAVE_ARCH_TRACEHOOK=y +CONFIG_HAVE_ARM_SCU=y +CONFIG_HAVE_ARM_TWD=y +# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set +CONFIG_HAVE_BPF_JIT=y +CONFIG_HAVE_CC_STACKPROTECTOR=y +CONFIG_HAVE_CLK=y +CONFIG_HAVE_CLK_PREPARE=y +CONFIG_HAVE_CONTEXT_TRACKING=y +CONFIG_HAVE_C_RECORDMCOUNT=y +CONFIG_HAVE_DEBUG_KMEMLEAK=y +CONFIG_HAVE_DMA_API_DEBUG=y +CONFIG_HAVE_DMA_ATTRS=y +CONFIG_HAVE_DMA_CONTIGUOUS=y +CONFIG_HAVE_DYNAMIC_FTRACE=y +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y +CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y +CONFIG_HAVE_FUNCTION_TRACER=y +CONFIG_HAVE_GENERIC_DMA_COHERENT=y +CONFIG_HAVE_IDE=y +CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y +CONFIG_HAVE_KERNEL_GZIP=y +CONFIG_HAVE_KERNEL_LZ4=y +CONFIG_HAVE_KERNEL_LZMA=y +CONFIG_HAVE_KERNEL_LZO=y +CONFIG_HAVE_KERNEL_XZ=y +CONFIG_HAVE_MEMBLOCK=y +CONFIG_HAVE_NET_DSA=y +CONFIG_HAVE_OPROFILE=y +CONFIG_HAVE_OPTPROBES=y +CONFIG_HAVE_PERF_EVENTS=y +CONFIG_HAVE_PERF_REGS=y +CONFIG_HAVE_PERF_USER_STACK_DUMP=y +CONFIG_HAVE_PROC_CPU=y +CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y +CONFIG_HAVE_SMP=y +CONFIG_HAVE_SYSCALL_TRACEPOINTS=y +CONFIG_HAVE_UID16=y +CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y +CONFIG_HIGHMEM=y +# CONFIG_HIGHPTE is not set +CONFIG_HZ_FIXED=0 +CONFIG_HZ_PERIODIC=y +CONFIG_INITRAMFS_SOURCE="" +CONFIG_IOMMU_HELPER=y +CONFIG_IRQCHIP=y +CONFIG_IRQ_DOMAIN=y +CONFIG_IRQ_DOMAIN_DEBUG=y +CONFIG_IRQ_DOMAIN_HIERARCHY=y +CONFIG_IRQ_FORCED_THREADING=y +CONFIG_IRQ_WORK=y +# CONFIG_IWMMXT is not set +CONFIG_LEDS_GPIO=y +# CONFIG_LEDS_REGULATOR is not set +CONFIG_LIBFDT=y +CONFIG_LOCK_SPIN_ON_OWNER=y +CONFIG_LOG_BUF_SHIFT=14 +# CONFIG_LZ4_COMPRESS is not set +# CONFIG_LZ4_DECOMPRESS is not set +CONFIG_LZO_COMPRESS=y +CONFIG_LZO_DECOMPRESS=y +CONFIG_MACH_ARMADA_370=y +# CONFIG_MACH_ARMADA_375 is not set +CONFIG_MACH_ARMADA_38X=y +# CONFIG_MACH_ARMADA_39X is not set +CONFIG_MACH_ARMADA_XP=y +# CONFIG_MACH_DOVE is not set +CONFIG_MACH_MVEBU_ANY=y +CONFIG_MACH_MVEBU_V7=y +CONFIG_MAGIC_SYSRQ=y +CONFIG_MANGLE_BOOTARGS=y +CONFIG_MARVELL_PHY=y +CONFIG_MDIO_BOARDINFO=y +CONFIG_MEMORY=y +CONFIG_MIGHT_HAVE_CACHE_L2X0=y +CONFIG_MIGHT_HAVE_PCI=y +CONFIG_MODULES_USE_ELF_REL=y +CONFIG_MTD_CFI_STAA=y +CONFIG_MTD_M25P80=y +CONFIG_MTD_NAND=y +CONFIG_MTD_NAND_ECC=y +CONFIG_MTD_NAND_PXA3xx=y +CONFIG_MTD_SPI_NOR=y +CONFIG_MTD_SPLIT_FIRMWARE=y +CONFIG_MTD_UBI=y +CONFIG_MTD_UBI_BEB_LIMIT=20 +CONFIG_MTD_UBI_BLOCK=y +# CONFIG_MTD_UBI_FASTMAP is not set +# CONFIG_MTD_UBI_GLUEBI is not set +CONFIG_MTD_UBI_WL_THRESHOLD=4096 +CONFIG_MTD_UIMAGE_SPLIT=y +CONFIG_MULTI_IRQ_HANDLER=y +CONFIG_MUTEX_SPIN_ON_OWNER=y +CONFIG_MVEBU_CLK_COMMON=y +CONFIG_MVEBU_CLK_COREDIV=y +CONFIG_MVEBU_CLK_CPU=y +CONFIG_MVEBU_DEVBUS=y +CONFIG_MVEBU_MBUS=y +CONFIG_MVMDIO=y +CONFIG_MVNETA=y +CONFIG_MVSW61XX_PHY=y +CONFIG_MV_XOR=y +CONFIG_NEED_DMA_MAP_STATE=y +# CONFIG_NEON is not set +CONFIG_NET_FLOW_LIMIT=y +CONFIG_NOP_USB_XCEIV=y +CONFIG_NO_BOOTMEM=y +CONFIG_NR_CPUS=4 +CONFIG_OF=y +CONFIG_OF_ADDRESS=y +CONFIG_OF_ADDRESS_PCI=y +CONFIG_OF_EARLY_FLATTREE=y +CONFIG_OF_FLATTREE=y +CONFIG_OF_GPIO=y +CONFIG_OF_IRQ=y +CONFIG_OF_MDIO=y +CONFIG_OF_MTD=y +CONFIG_OF_NET=y +CONFIG_OF_PCI=y +CONFIG_OF_PCI_IRQ=y +CONFIG_OF_RESERVED_MEM=y +CONFIG_OLD_SIGACTION=y +CONFIG_OLD_SIGSUSPEND3=y +CONFIG_OUTER_CACHE=y +CONFIG_OUTER_CACHE_SYNC=y +CONFIG_PAGEFLAGS_EXTENDED=y +CONFIG_PAGE_OFFSET=0xC0000000 +CONFIG_PCI=y +# CONFIG_PCI_DOMAINS_GENERIC is not set +CONFIG_PCI_MSI=y +CONFIG_PCI_MVEBU=y +CONFIG_PERF_USE_VMALLOC=y +CONFIG_PHYLIB=y +CONFIG_PINCTRL=y +CONFIG_PINCTRL_ARMADA_370=y +CONFIG_PINCTRL_ARMADA_38X=y +CONFIG_PINCTRL_ARMADA_XP=y +CONFIG_PINCTRL_MVEBU=y +# CONFIG_PINCTRL_SINGLE is not set +CONFIG_PJ4B_ERRATA_4742=y +# CONFIG_PL310_ERRATA_588369 is not set +# CONFIG_PL310_ERRATA_727915 is not set +# CONFIG_PL310_ERRATA_753970 is not set +# CONFIG_PL310_ERRATA_769419 is not set +CONFIG_PLAT_ORION=y +CONFIG_PM_OPP=y +CONFIG_PWM=y +# CONFIG_PWM_FSL_FTM is not set +CONFIG_PWM_SYSFS=y +CONFIG_RCU_STALL_COMMON=y +CONFIG_REGMAP=y +CONFIG_REGULATOR=y +# CONFIG_REGULATOR_DEBUG is not set +CONFIG_REGULATOR_FIXED_VOLTAGE=y +# CONFIG_REGULATOR_PWM is not set +# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set +CONFIG_RFS_ACCEL=y +CONFIG_RPS=y +CONFIG_RTC_CLASS=y +# CONFIG_RTC_DRV_MV is not set +CONFIG_RWSEM_SPIN_ON_OWNER=y +CONFIG_RWSEM_XCHGADD_ALGORITHM=y +CONFIG_SCHED_HRTICK=y +# CONFIG_SCSI_DMA is not set +CONFIG_SERIAL_8250_DW=y +CONFIG_SMP=y +CONFIG_SMP_ON_UP=y +CONFIG_SOC_BUS=y +CONFIG_SPARSE_IRQ=y +CONFIG_SPI=y +CONFIG_SPI_MASTER=y +CONFIG_SPI_ORION=y +CONFIG_SRCU=y +CONFIG_STOP_MACHINE=y +CONFIG_SWCONFIG=y +CONFIG_SWIOTLB=y +CONFIG_SWP_EMULATE=y +CONFIG_SYS_SUPPORTS_APM_EMULATION=y +# CONFIG_THUMB2_KERNEL is not set +CONFIG_TICK_CPU_ACCOUNTING=y +CONFIG_TIMER_STATS=y +CONFIG_TREE_RCU=y +CONFIG_UBIFS_FS=y +# CONFIG_UBIFS_FS_ADVANCED_COMPR is not set +CONFIG_UBIFS_FS_LZO=y +CONFIG_UBIFS_FS_XZ=y +CONFIG_UBIFS_FS_ZLIB=y +CONFIG_UID16=y +CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h" +CONFIG_USB_PHY=y +CONFIG_USB_SUPPORT=y +CONFIG_USE_OF=y +CONFIG_VECTORS_BASE=0xffff0000 +CONFIG_VFP=y +CONFIG_VFPv3=y +# CONFIG_XEN is not set +CONFIG_XPS=y +CONFIG_XZ_DEC_ARM=y +CONFIG_XZ_DEC_BCJ=y +CONFIG_ZBOOT_ROM_BSS=0x0 +CONFIG_ZBOOT_ROM_TEXT=0x0 +CONFIG_ZLIB_DEFLATE=y +CONFIG_ZLIB_INFLATE=y +CONFIG_ZONE_DMA_FLAG=0 Deleted: trunk/target/linux/mvebu/patches-4.4/000-new_linksys_boards.patch =================================================================== --- trunk/target/linux/mvebu/patches-4.1/000-new_linksys_boards.patch 2015-12-10 12:08:13 UTC (rev 47818) +++ trunk/target/linux/mvebu/patches-4.4/000-new_linksys_boards.patch 2015-12-10 12:11:39 UTC (rev 47819) @@ -1,613 +0,0 @@ -From 3abdd583312a2830129dc42e1e3d98368a8fda47 Mon Sep 17 00:00:00 2001 -From: Imre Kaloz <[email protected]> -Date: Wed, 20 May 2015 23:14:16 +0200 -Subject: ARM: mvebu: add support for the new Armada 385 based Linksys boards - -This patch adds support for the Linksys WRT1200AC (Caiman) and -the Linksys WRT1900AC v2 (Cobra). - -Both boards have: - -- 2 Marvell 88W8864 radios -- 1 USB 3.0 port -- 1 USB 2.0/eSATAp port -- 2 Ethernet interfaces connected to a 88E6176 switch (1x WAN + 4x LAN) -- 128MB NAND flash -- 512MB RAM - [email protected]: use serial0:115200n8 in -stdout-path and remove the bootargs part in the chosen node - -Signed-off-by: Imre Kaloz <[email protected]> -Acked-by: Andrew Lunn <[email protected]> -Signed-off-by: Gregory CLEMENT <[email protected]> ---- - arch/arm/boot/dts/Makefile | 2 + - arch/arm/boot/dts/armada-385-linksys-caiman.dts | 114 ++++++++ - arch/arm/boot/dts/armada-385-linksys-cobra.dts | 114 ++++++++ - arch/arm/boot/dts/armada-385-linksys.dtsi | 332 ++++++++++++++++++++++++ - 4 files changed, 562 insertions(+) - create mode 100644 arch/arm/boot/dts/armada-385-linksys-caiman.dts - create mode 100644 arch/arm/boot/dts/armada-385-linksys-cobra.dts - create mode 100644 arch/arm/boot/dts/armada-385-linksys.dtsi - ---- a/arch/arm/boot/dts/Makefile -+++ b/arch/arm/boot/dts/Makefile -@@ -633,6 +633,8 @@ dtb-$(CONFIG_MACH_ARMADA_375) += \ - armada-375-db.dtb - dtb-$(CONFIG_MACH_ARMADA_38X) += \ - armada-385-db-ap.dtb \ -+ armada-385-linksys-caiman.dtb \ -+ armada-385-linksys-cobra.dtb \ - armada-388-db.dtb \ - armada-388-gp.dtb \ - armada-388-rd.dtb ---- /dev/null -+++ b/arch/arm/boot/dts/armada-385-linksys-caiman.dts -@@ -0,0 +1,114 @@ -+/* -+ * Device Tree include for the Linksys WRT1200AC (Caiman) -+ * -+ * Copyright (C) 2015 Imre Kaloz <[email protected]> -+ * -+ * -+ * This file is dual-licensed: you can use it either under the terms -+ * of the GPL or the X11 license, at your option. Note that this dual -+ * licensing only applies to this file, and not this project as a -+ * whole. -+ * -+ * a) 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. -+ * -+ * Or, alternatively, -+ * -+ * b) Permission is hereby granted, free of charge, to any person -+ * obtaining a copy of this software and associated documentation -+ * files (the "Software"), to deal in the Software without -+ * restriction, including without limitation the rights to use, -+ * copy, modify, merge, publish, distribute, sublicense, and/or -+ * sell copies of the Software, and to permit persons to whom the -+ * Software is furnished to do so, subject to the following -+ * conditions: -+ * -+ * The above copyright notice and this permission notice shall be -+ * included in all copies or substantial portions of the Software. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -+ * OTHER DEALINGS IN THE SOFTWARE. -+ */ -+ -+/dts-v1/; -+#include "armada-385-linksys.dtsi" -+ -+/ { -+ model = "Linksys WRT1200AC"; -+ compatible = "linksys,caiman", "linksys,armada385", "marvell,armada385", -+ "marvell,armada380"; -+ -+ soc { -+ internal-regs{ -+ i2c@11000 { -+ -+ pca9635@68 { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ -+ wan_amber@0 { -+ label = "caiman:amber:wan"; -+ reg = <0x0>; -+ }; -+ -+ wan_white@1 { -+ label = "caiman:white:wan"; -+ reg = <0x1>; -+ }; -+ -+ wlan_2g@2 { -+ label = "caiman:white:wlan_2g"; -+ reg = <0x2>; -+ }; -+ -+ wlan_5g@3 { -+ label = "caiman:white:wlan_5g"; -+ reg = <0x3>; -+ }; -+ -+ usb2@5 { -+ label = "caiman:white:usb2"; -+ reg = <0x5>; -+ }; -+ -+ usb3_1@6 { -+ label = "caiman:white:usb3_1"; -+ reg = <0x6>; -+ }; -+ -+ usb3_2@7 { -+ label = "caiman:white:usb3_2"; -+ reg = <0x7>; -+ }; -+ -+ wps_white@8 { -+ label = "caiman:white:wps"; -+ reg = <0x8>; -+ }; -+ -+ wps_amber@9 { -+ label = "caiman:amber:wps"; -+ reg = <0x9>; -+ }; -+ }; -+ }; -+ }; -+ }; -+ -+ gpio-leds { -+ power { -+ label = "caiman:white:power"; -+ }; -+ -+ sata { -+ label = "caiman:white:sata"; -+ }; -+ }; -+}; ---- /dev/null -+++ b/arch/arm/boot/dts/armada-385-linksys-cobra.dts -@@ -0,0 +1,114 @@ -+/* -+ * Device Tree file for the Linksys WRT1900ACv2 (Cobra) -+ * -+ * Copyright (C) 2015 Imre Kaloz <[email protected]> -+ * -+ * -+ * This file is dual-licensed: you can use it either under the terms -+ * of the GPL or the X11 license, at your option. Note that this dual -+ * licensing only applies to this file, and not this project as a -+ * whole. -+ * -+ * a) 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. -+ * -+ * Or, alternatively, -+ * -+ * b) Permission is hereby granted, free of charge, to any person -+ * obtaining a copy of this software and associated documentation -+ * files (the "Software"), to deal in the Software without -+ * restriction, including without limitation the rights to use, -+ * copy, modify, merge, publish, distribute, sublicense, and/or -+ * sell copies of the Software, and to permit persons to whom the -+ * Software is furnished to do so, subject to the following -+ * conditions: -+ * -+ * The above copyright notice and this permission notice shall be -+ * included in all copies or substantial portions of the Software. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -+ * OTHER DEALINGS IN THE SOFTWARE. -+ */ -+ -+/dts-v1/; -+#include "armada-385-linksys.dtsi" -+ -+/ { -+ model = "Linksys WRT1900ACv2"; -+ compatible = "linksys,cobra", "linksys,armada385", "marvell,armada385", -+ "marvell,armada380"; -+ -+ soc { -+ internal-regs{ -+ i2c@11000 { -+ -+ pca9635@68 { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ -+ wan_amber@0 { -+ label = "cobra:amber:wan"; -+ reg = <0x0>; -+ }; -+ -+ wan_white@1 { -+ label = "cobra:white:wan"; -+ reg = <0x1>; -+ }; -+ -+ wlan_2g@2 { -+ label = "cobra:white:wlan_2g"; -+ reg = <0x2>; -+ }; -+ -+ wlan_5g@3 { -+ label = "cobra:white:wlan_5g"; -+ reg = <0x3>; -+ }; -+ -+ usb2@5 { -+ label = "cobra:white:usb2"; -+ reg = <0x5>; -+ }; -+ -+ usb3_1@6 { -+ label = "cobra:white:usb3_1"; -+ reg = <0x6>; -+ }; -+ -+ usb3_2@7 { -+ label = "cobra:white:usb3_2"; -+ reg = <0x7>; -+ }; -+ -+ wps_white@8 { -+ label = "cobra:white:wps"; -+ reg = <0x8>; -+ }; -+ -+ wps_amber@9 { -+ label = "cobra:amber:wps"; -+ reg = <0x9>; -+ }; -+ }; -+ }; -+ }; -+ }; -+ -+ gpio-leds { -+ power { -+ label = "cobra:white:power"; -+ }; -+ -+ sata { -+ label = "cobra:white:sata"; -+ }; -+ }; -+}; ---- /dev/null -+++ b/arch/arm/boot/dts/armada-385-linksys.dtsi -@@ -0,0 +1,332 @@ -+/* -+ * Device Tree include file for Armada 385 based Linksys boards -+ * -+ * Copyright (C) 2015 Imre Kaloz <[email protected]> -+ * -+ * -+ * This file is dual-licensed: you can use it either under the terms -+ * of the GPL or the X11 license, at your option. Note that this dual -+ * licensing only applies to this file, and not this project as a -+ * whole. -+ * -+ * a) 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. -+ * -+ * Or, alternatively, -+ * -+ * b) Permission is hereby granted, free of charge, to any person -+ * obtaining a copy of this software and associated documentation -+ * files (the "Software"), to deal in the Software without -+ * restriction, including without limitation the rights to use, -+ * copy, modify, merge, publish, distribute, sublicense, and/or -+ * sell copies of the Software, and to permit persons to whom the -+ * Software is furnished to do so, subject to the following -+ * conditions: -+ * -+ * The above copyright notice and this permission notice shall be -+ * included in all copies or substantial portions of the Software. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -+ * OTHER DEALINGS IN THE SOFTWARE. -+ */ -+ -+#include <dt-bindings/gpio/gpio.h> -+#include <dt-bindings/input/input.h> -+#include "armada-385.dtsi" -+ -+/ { -+ model = "Linksys boards based on Armada 385"; -+ compatible = "linksys,armada385", "marvell,armada385", -+ "marvell,armada380"; -+ -+ chosen { -+ stdout-path = "serial0:115200n8"; -+ }; -+ -+ memory { -+ device_type = "memory"; -+ reg = <0x00000000 0x20000000>; /* 512 MB */ -+ }; -+ -+ soc { -+ ranges = <MBUS_ID(0xf0, 0x01) 0 0xf1000000 0x100000 -+ MBUS_ID(0x01, 0x1d) 0 0xfff00000 0x100000>; -+ -+ internal-regs { -+ -+ spi@10600 { -+ status = "disabled"; -+ }; -+ -+ i2c@11000 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c0_pins>; -+ status = "okay"; -+ -+ tmp421@4c { -+ compatible = "ti,tmp421"; -+ reg = <0x4c>; -+ }; -+ -+ pca9635@68 { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ compatible = "nxp,pca9635"; -+ reg = <0x68>; -+ }; -+ }; -+ -+ /* J10: VCC, NC, RX, NC, TX, GND */ -+ serial@12000 { -+ status = "okay"; -+ }; -+ -+ ethernet@70000 { -+ status = "okay"; -+ phy-mode = "rgmii-id"; -+ fixed-link { -+ speed = <1000>; -+ full-duplex; -+ }; -+ }; -+ -+ ethernet@34000 { -+ status = "okay"; -+ phy-mode = "sgmii"; -+ fixed-link { -+ speed = <1000>; -+ full-duplex; -+ }; -+ }; -+ -+ mdio { -+ status = "okay"; -+ }; -+ -+ sata@a8000 { -+ status = "okay"; -+ }; -+ -+ /* USB part of the eSATA/USB 2.0 port */ -+ usb@50000 { -+ status = "okay"; -+ }; -+ -+ usb3@f8000 { -+ status = "okay"; -+ usb-phy = <&usb3_phy>; -+ }; -+ -+ flash@d0000 { -+ status = "okay"; -+ num-cs = <1>; -+ marvell,nand-keep-config; -+ marvell,nand-enable-arbiter; -+ nand-on-flash-bbt; -+ -+ partition@0 { -+ label = "u-boot"; -+ reg = <0x0000000 0x200000>; /* 2MB */ -+ read-only; -+ }; -+ -+ partition@100000 { -+ label = "u_env"; -+ reg = <0x200000 0x40000>; /* 256KB */ -+ }; -+ -+ partition@140000 { -+ label = "s_env"; -+ reg = <0x240000 0x40000>; /* 256KB */ -+ }; -+ -+ partition@900000 { -+ label = "devinfo"; -+ reg = <0x900000 0x100000>; /* 1MB */ -+ read-only; -+ }; -+ -+ /* kernel1 overlaps with rootfs1 by design */ -+ partition@a00000 { -+ label = "kernel1"; -+ reg = <0xa00000 0x2800000>; /* 40MB */ -+ }; -+ -+ partition@1000000 { -+ label = "rootfs1"; -+ reg = <0x1000000 0x2200000>; /* 34MB */ -+ }; -+ -+ /* kernel2 overlaps with rootfs2 by design */ -+ partition@3200000 { -+ label = "kernel2"; -+ reg = <0x3200000 0x2800000>; /* 40MB */ -+ }; -+ -+ partition@3800000 { -+ label = "rootfs2"; -+ reg = <0x3800000 0x2200000>; /* 34MB */ -+ }; -+ -+ /* -+ * 38MB, last MB is for the BBT, not writable -+ */ -+ partition@5a00000 { -+ label = "syscfg"; -+ reg = <0x5a00000 0x2600000>; -+ }; -+ -+ /* -+ * Unused area between "s_env" and "devinfo". -+ * Moved here because otherwise the renumbered -+ * partitions would break the bootloader -+ * supplied bootargs -+ */ -+ partition@180000 { -+ label = "unused_area"; -+ reg = <0x280000 0x680000>; /* 6.5MB */ -+ }; -+ }; -+ }; -+ -+ pcie-controller { -+ status = "okay"; -+ -+ pcie@1,0 { -+ /* Marvell 88W8864, 5GHz-only */ -+ status = "okay"; -+ }; -+ -+ pcie@2,0 { -+ /* Marvell 88W8864, 2GHz-only */ -+ status = "okay"; -+ }; -+ }; -+ }; -+ -+ usb3_phy: usb3_phy { -+ compatible = "usb-nop-xceiv"; -+ vcc-supply = <®_xhci0_vbus>; -+ }; -+ -+ reg_xhci0_vbus: xhci0-vbus { -+ compatible = "regulator-fixed"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&xhci0_vbus_pins>; -+ regulator-name = "xhci0-vbus"; -+ regulator-min-microvolt = <5000000>; -+ regulator-max-microvolt = <5000000>; -+ enable-active-high; -+ gpio = <&gpio1 18 GPIO_ACTIVE_HIGH>; -+ }; -+ -+ gpio_keys { -+ compatible = "gpio-keys"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ pinctrl-0 = <&keys_pin>; -+ pinctrl-names = "default"; -+ -+ button@1 { -+ label = "WPS"; -+ linux,code = <KEY_WPS_BUTTON>; -+ gpios = <&gpio0 24 GPIO_ACTIVE_LOW>; -+ }; -+ -+ button@2 { -+ label = "Factory Reset Button"; -+ linux,code = <KEY_RESTART>; -+ gpios = <&gpio1 15 GPIO_ACTIVE_LOW>; -+ }; -+ }; -+ -+ gpio-leds { -+ compatible = "gpio-leds"; -+ pinctrl-0 = <&power_led_pin &sata_led_pin>; -+ pinctrl-names = "default"; -+ -+ power { -+ gpios = <&gpio1 23 GPIO_ACTIVE_HIGH>; -+ default-state = "on"; -+ }; -+ -+ sata { -+ gpios = <&gpio1 22 GPIO_ACTIVE_HIGH>; -+ default-state = "off"; -+ }; -+ }; -+ -+ dsa@0 { -+ compatible = "marvell,dsa"; -+ #address-cells = <2>; -+ #size-cells = <0>; -+ -+ dsa,ethernet = <ð2>; -+ dsa,mii-bus = <&mdio>; -+ -+ switch@0 { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ reg = <0x0 0>; /* MDIO address 0, switch 0 in tree */ -+ -+ port@0 { -+ reg = <0>; -+ label = "lan4"; -+ }; -+ -+ port@1 { -+ reg = <1>; -+ label = "lan3"; -+ }; -+ -+ port@2 { -+ reg = <2>; -+ label = "lan2"; -+ }; -+ -+ port@3 { -+ reg = <3>; -+ label = "lan1"; -+ }; -+ -+ port@4 { -+ reg = <4>; -+ label = "wan"; -+ }; -+ -+ port@5 { -+ reg = <5>; -+ label = "cpu"; -+ }; -+ }; -+ }; -+}; -+ -+&pinctrl { -+ keys_pin: keys-pin { -+ marvell,pins = "mpp24", "mpp47"; -+ marvell,function = "gpio"; -+ }; -+ -+ power_led_pin: power-led-pin { -+ marvell,pins = "mpp55"; -+ marvell,function = "gpio"; -+ }; -+ -+ sata_led_pin: sata-led-pin { -+ marvell,pins = "mpp54"; -+ marvell,function = "gpio"; -+ }; -+ -+ xhci0_vbus_pins: xhci0-vbus-pins { -+ marvell,pins = "mpp50"; -+ marvell,function = "gpio"; -+ }; -+}; Added: trunk/target/linux/mvebu/patches-4.4/000-sata_use_ifdef_around_suspend_resume.patch =================================================================== --- trunk/target/linux/mvebu/patches-4.4/000-sata_use_ifdef_around_suspend_resume.patch (rev 0) +++ trunk/target/linux/mvebu/patches-4.4/000-sata_use_ifdef_around_suspend_resume.patch 2015-12-10 12:11:39 UTC (rev 47819) @@ -0,0 +1,34 @@ +The newly added suspend/resume implementation for ahci_mvebu causes +a link error when CONFIG_PM_SUSPEND is disabled: + +ERROR: "ahci_platform_suspend_host" [drivers/ata/ahci_mvebu.ko] undefined! +ERROR: "ahci_platform_resume_host" [drivers/ata/ahci_mvebu.ko] undefined! + +This adds the same #ifdef here that exists in the ahci_platform driver +which defines the above functions. + +Signed-off-by: Arnd Bergmann <[email protected]> +Fixes: d6ecf1581488 ("ata: ahci_mvebu: add suspend/resume support") +Acked-by: Thomas Petazzoni <[email protected]> + +--- a/drivers/ata/ahci_mvebu.c ++++ b/drivers/ata/ahci_mvebu.c +@@ -62,6 +62,7 @@ static void ahci_mvebu_regret_option(str + writel(0x80, hpriv->mmio + AHCI_VENDOR_SPECIFIC_0_DATA); + } + ++#ifdef CONFIG_PM_SLEEP + static int ahci_mvebu_suspend(struct platform_device *pdev, pm_message_t state) + { + return ahci_platform_suspend_host(&pdev->dev); +@@ -81,6 +82,10 @@ static int ahci_mvebu_resume(struct plat + + return ahci_platform_resume_host(&pdev->dev); + } ++#else ++#define ahci_mvebu_suspend NULL ++#define ahci_mvebu_resume NULL ++#endif + + static const struct ata_port_info ahci_mvebu_port_info = { + .flags = AHCI_FLAG_COMMON, Deleted: trunk/target/linux/mvebu/patches-4.4/022-ARM-mvebu-A385-AP-Enable-the-NAND-controller.patch =================================================================== --- trunk/target/linux/mvebu/patches-4.1/022-ARM-mvebu-A385-AP-Enable-the-NAND-controller.patch 2015-12-10 12:08:13 UTC (rev 47818) +++ trunk/target/linux/mvebu/patches-4.4/022-ARM-mvebu-A385-AP-Enable-the-NAND-controller.patch 2015-12-10 12:11:39 UTC (rev 47819) @@ -1,34 +0,0 @@ -From 7eb1f09ec8e25aa2fc3f6fc5fc9405d9f917d503 Mon Sep 17 00:00:00 2001 -From: Maxime Ripard <[email protected]> -Date: Thu, 11 Dec 2014 14:14:58 +0100 -Subject: [PATCH 1/2] ARM: mvebu: A385-AP: Enable the NAND controller - -The A385 AP has a 1GB NAND chip. Enable it. - -Signed-off-by: Maxime Ripard <[email protected]> ---- - arch/arm/boot/dts/armada-385-db-ap.dts | 13 +++++++++++++ - 1 file changed, 13 insertions(+) - ---- a/arch/arm/boot/dts/armada-385-db-ap.dts -+++ b/arch/arm/boot/dts/armada-385-db-ap.dts -@@ -174,6 +174,19 @@ - status = "okay"; - usb-phy = <&usb3_phy>; - }; -+ -+ nfc: flash@d0000 { -+ status = "okay"; -+ #address-cells = <1>; -+ #size-cells = <1>; -+ -+ num-cs = <1>; -+ nand-ecc-strength = <4>; -+ nand-ecc-step-size = <512>; -+ marvell,nand-keep-config; -+ marvell,nand-enable-arbiter; -+ nand-on-flash-bbt; -+ }; - }; - - pcie-controller { Deleted: trunk/target/linux/mvebu/patches-4.4/050-leds_tlc59116_document_binding.patch =================================================================== --- trunk/target/linux/mvebu/patches-4.1/050-leds_tlc59116_document_binding.patch 2015-12-10 12:08:13 UTC (rev 47818) +++ trunk/target/linux/mvebu/patches-4.4/050-leds_tlc59116_document_binding.patch 2015-12-10 12:11:39 UTC (rev 47819) @@ -1,51 +0,0 @@ -Document the binding for the TLC59116 LED driver. - -Signed-off-by: Andrew Lunn <[email protected]> ---- - .../devicetree/bindings/leds/leds-tlc59116.txt | 40 ++++++++++++++++++++++ - 1 file changed, 40 insertions(+) - create mode 100644 Documentation/devicetree/bindings/leds/leds-tlc59116.txt - ---- /dev/null -+++ b/Documentation/devicetree/bindings/leds/leds-tlc59116.txt -@@ -0,0 +1,40 @@ -+LEDs connected to tcl59116 -+ -+Required properties -+- compatible: should be "ti,tlc59116" -+- #address-cells: must be 1 -+- #size-cells: must be 0 -+- reg: typically 0x68 -+ -+Each led is represented as a sub-node of the ti,,tlc59116. -+See Documentation/devicetree/bindings/leds/common.txt -+ -+LED sub-node properties: -+- reg: number of LED line, 0 to 15 -+- label: (optional) name of LED -+- linux,default-trigger : (optional) -+ -+Examples: -+ -+tlc59116@68 { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ compatible = "ti,tlc59116"; -+ reg = <0x68>; -+ -+ wan@0 { -+ label = "wrt1900ac:amber:wan"; -+ reg = <0x0>; -+ }; -+ -+ 2g@2 { -+ label = "wrt1900ac:white:2g"; -+ reg = <0x2>; -+ }; -+ -+ alive@9 { -+ label = "wrt1900ac:green:alive"; -+ reg = <0x9>; -+ linux,default_trigger = "heartbeat"; -+ }; -+}; Deleted: trunk/target/linux/mvebu/patches-4.4/051-leds_tlc59116_add_driver.patch =================================================================== --- trunk/target/linux/mvebu/patches-4.1/051-leds_tlc59116_add_driver.patch 2015-12-10 12:08:13 UTC (rev 47818) +++ trunk/target/linux/mvebu/patches-4.4/051-leds_tlc59116_add_driver.patch 2015-12-10 12:11:39 UTC (rev 47819) @@ -1,297 +0,0 @@ -The TLC59116 is an I2C bus controlled 16-channel LED driver. Each LED -output has its own 8-bit fixed-frequency PWM controller to control the -brightness of the LED. - -This is based on a driver from Belkin, but has been extensively -rewritten. - -Signed-off-by: Andrew Lunn <[email protected]> ---- - drivers/leds/Kconfig | 8 ++ - drivers/leds/Makefile | 1 + - drivers/leds/leds-tlc59116.c | 252 +++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 261 insertions(+) - create mode 100644 drivers/leds/leds-tlc59116.c - ---- a/drivers/leds/Kconfig -+++ b/drivers/leds/Kconfig -@@ -467,6 +467,14 @@ config LEDS_TCA6507 - LED driver chips accessed via the I2C bus. - Driver support brightness control and hardware-assisted blinking. - -+config LEDS_TLC59116 -+ tristate "LED driver for TLC59116F controllers" -+ depends on LEDS_CLASS && I2C -+ select REGMAP_I2C -+ help -+ This option enables support for Texas Instruments TLC59116F -+ LED controller. -+ - config LEDS_MAX8997 - tristate "LED support for MAX8997 PMIC" - depends on LEDS_CLASS && MFD_MAX8997 ---- a/drivers/leds/Makefile -+++ b/drivers/leds/Makefile -@@ -31,6 +31,7 @@ obj-$(CONFIG_LEDS_LP8501) += leds-lp850 - obj-$(CONFIG_LEDS_LP8788) += leds-lp8788.o - obj-$(CONFIG_LEDS_LP8860) += leds-lp8860.o - obj-$(CONFIG_LEDS_TCA6507) += leds-tca6507.o -+obj-$(CONFIG_LEDS_TLC59116) += leds-tlc59116.o - obj-$(CONFIG_LEDS_CLEVO_MAIL) += leds-clevo-mail.o - obj-$(CONFIG_LEDS_IPAQ_MICRO) += leds-ipaq-micro.o - obj-$(CONFIG_LEDS_HP6XX) += leds-hp6xx.o ---- /dev/null -+++ b/drivers/leds/leds-tlc59116.c -@@ -0,0 +1,252 @@ -+/* -+ * Copyright 2014 Belkin Inc. -+ * Copyright 2014 Andrew Lunn <[email protected]> -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; version 2 of the License. -+ */ -+ -+#include <linux/i2c.h> -+#include <linux/leds.h> -+#include <linux/module.h> -+#include <linux/of.h> -+#include <linux/regmap.h> -+#include <linux/slab.h> -+#include <linux/workqueue.h> -+ -+#define TLC59116_LEDS 16 -+ -+#define TLC59116_REG_MODE1 0x00 -+#define MODE1_RESPON_ADDR_MASK 0xF0 -+#define MODE1_NORMAL_MODE (0 << 4) -+#define MODE1_SPEED_MODE (1 << 4) -+ -+#define TLC59116_REG_MODE2 0x01 -+#define MODE2_DIM (0 << 5) -+#define MODE2_BLINK (1 << 5) -+#define MODE2_OCH_STOP (0 << 3) -+#define MODE2_OCH_ACK (1 << 3) -+ -+#define TLC59116_REG_PWM(x) (0x02 + (x)) -+ -+#define TLC59116_REG_GRPPWM 0x12 -+#define TLC59116_REG_GRPFREQ 0x13 -+ -+/* LED Driver Output State, determine the source that drives LED outputs */ -+#define TLC59116_REG_LEDOUT(x) (0x14 + ((x) >> 2)) -+#define TLC59116_LED_OFF 0x0 /* Output LOW */ -+#define TLC59116_LED_ON 0x1 /* Output HI-Z */ -+#define TLC59116_DIM 0x2 /* Dimming */ -+#define TLC59116_BLINK 0x3 /* Blinking */ -+#define LED_MASK 0x3 -+ -+#define ldev_to_led(c) container_of(c, struct tlc59116_led, ldev) -+#define work_to_led(work) container_of(work, struct tlc59116_led, work) -+ -+struct tlc59116_led { -+ bool active; -+ struct regmap *regmap; -+ unsigned int led_no; -+ struct led_classdev ldev; -+ struct work_struct work; -+}; -+ -+struct tlc59116_priv { -+ struct tlc59116_led leds[TLC59116_LEDS]; -+}; -+ -+static int -+tlc59116_set_mode(struct regmap *regmap, u8 mode) -+{ -+ int err; -+ u8 val; -+ -+ if ((mode != MODE2_DIM) && (mode != MODE2_BLINK)) -+ mode = MODE2_DIM; -+ -+ /* Configure MODE1 register */ -+ err = regmap_write(regmap, TLC59116_REG_MODE1, MODE1_NORMAL_MODE); -+ if (err) -+ return err; -+ -+ /* Configure MODE2 Reg */ -+ val = MODE2_OCH_STOP | mode; -+ -+ return regmap_write(regmap, TLC59116_REG_MODE2, val); -+} -+ -+static int -+tlc59116_set_led(struct tlc59116_led *led, u8 val) -+{ -+ struct regmap *regmap = led->regmap; -+ unsigned int i = (led->led_no % 4) * 2; -+ unsigned int addr = TLC59116_REG_LEDOUT(led->led_no); -+ unsigned int mask = LED_MASK << i; -+ -+ val = val << i; -+ -+ return regmap_update_bits(regmap, addr, mask, val); -+} -+ -+static void -+tlc59116_led_work(struct work_struct *work) -+{ -+ struct tlc59116_led *led = work_to_led(work); -+ struct regmap *regmap = led->regmap; -+ int err; -+ u8 pwm; -+ -+ pwm = TLC59116_REG_PWM(led->led_no); -+ err = regmap_write(regmap, pwm, led->ldev.brightness); -+ if (err) -+ dev_err(led->ldev.dev, "Failed setting brightness\n"); -+} -+ -+static void -+tlc59116_led_set(struct led_classdev *led_cdev, enum led_brightness value) -+{ -+ struct tlc59116_led *led = ldev_to_led(led_cdev); -+ -+ led->ldev.brightness = value; -+ schedule_work(&led->work); -+} -+ -+static void -+tlc59116_destroy_devices(struct tlc59116_priv *priv, unsigned int i) -+{ -+ while (--i >= 0) { -+ if (priv->leds[i].active) { -+ led_classdev_unregister(&priv->leds[i].ldev); -+ cancel_work_sync(&priv->leds[i].work); -+ } -+ } -+} -+ -+static int -+tlc59116_configure(struct device *dev, -+ struct tlc59116_priv *priv, -+ struct regmap *regmap) -+{ -+ unsigned int i; -+ int err = 0; -+ -+ tlc59116_set_mode(regmap, MODE2_DIM); -+ for (i = 0; i < TLC59116_LEDS; i++) { -+ struct tlc59116_led *led = &priv->leds[i]; -+ -+ if (!led->active) -+ continue; -+ -+ led->regmap = regmap; -+ led->led_no = i; -+ led->ldev.brightness_set = tlc59116_led_set; -+ led->ldev.max_brightness = LED_FULL; -+ INIT_WORK(&led->work, tlc59116_led_work); -+ err = led_classdev_register(dev, &led->ldev); -+ if (err < 0) { -+ dev_err(dev, "couldn't register LED %s\n", -+ led->ldev.name); -+ goto exit; -+ } -+ tlc59116_set_led(led, TLC59116_DIM); -+ } -+ -+ return 0; -+ -+exit: -+ tlc59116_destroy_devices(priv, i); -+ return err; -+} -+ -+static const struct regmap_config tlc59116_regmap = { -+ .reg_bits = 8, -+ .val_bits = 8, -+ .max_register = 0x1e, -+}; -+ -+static int -+tlc59116_probe(struct i2c_client *client, -+ const struct i2c_device_id *id) -+{ -+ struct tlc59116_priv *priv = i2c_get_clientdata(client); -+ struct device *dev = &client->dev; -+ struct device_node *np = client->dev.of_node, *child; -+ struct regmap *regmap; -+ int err, count, reg; -+ -+ count = of_get_child_count(np); -+ if (!count || count > TLC59116_LEDS) -+ return -EINVAL; -+ -+ if (!i2c_check_functionality(client->adapter, -+ I2C_FUNC_SMBUS_BYTE_DATA)) -+ return -EIO; -+ -+ priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL); -+ if (!priv) -+ return -ENOMEM; -+ -+ regmap = devm_regmap_init_i2c(client, &tlc59116_regmap); -+ if (IS_ERR(regmap)) { -+ err = PTR_ERR(regmap); -+ dev_err(dev, "Failed to allocate register map: %d\n", err); -+ return err; -+ } -+ -+ i2c_set_clientdata(client, priv); -+ -+ for_each_child_of_node(np, child) { -+ err = of_property_read_u32(child, "reg", ®); -+ if (err) -+ return err; -+ if (reg < 0 || reg >= TLC59116_LEDS) -+ return -EINVAL; -+ if (priv->leds[reg].active) -+ return -EINVAL; -+ priv->leds[reg].active = true; -+ priv->leds[reg].ldev.name = -+ of_get_property(child, "label", NULL) ? : child->name; -+ priv->leds[reg].ldev.default_trigger = -+ of_get_property(child, "linux,default-trigger", NULL); -+ } -+ return tlc59116_configure(dev, priv, regmap); -+} -+ -+static int -+tlc59116_remove(struct i2c_client *client) -+{ -+ struct tlc59116_priv *priv = i2c_get_clientdata(client); -+ -+ tlc59116_destroy_devices(priv, TLC59116_LEDS); -+ -+ return 0; -+} -+ -+static const struct of_device_id of_tlc59116_leds_match[] = { -+ { .compatible = "ti,tlc59116", }, -+ {}, -+}; -+MODULE_DEVICE_TABLE(of, of_tlc59116_leds_match); -+ -+static const struct i2c_device_id tlc59116_id[] = { -+ { "tlc59116" }, -+ {}, -+}; -+MODULE_DEVICE_TABLE(i2c, tlc59116_id); -+ -+static struct i2c_driver tlc59116_driver = { -+ .driver = { -+ .name = "tlc59116", -+ .of_match_table = of_match_ptr(of_tlc59116_leds_match), -+ }, -+ .probe = tlc59116_probe, -+ .remove = tlc59116_remove, -+ .id_table = tlc59116_id, -+}; -+ -+module_i2c_driver(tlc59116_driver); -+ -+MODULE_AUTHOR("Andrew Lunn <[email protected]>"); -+MODULE_LICENSE("GPL"); -+MODULE_DESCRIPTION("TLC59116 LED driver"); Deleted: trunk/target/linux/mvebu/patches-4.4/300-add_missing_labels.patch =================================================================== --- trunk/target/linux/mvebu/patches-4.1/300-add_missing_labels.patch 2015-12-10 12:08:13 UTC (rev 47818) +++ trunk/target/linux/mvebu/patches-4.4/300-add_missing_labels.patch 2015-12-10 12:11:39 UTC (rev 47819) @@ -1,11 +0,0 @@ ---- a/arch/arm/boot/dts/armada-38x.dtsi -+++ b/arch/arm/boot/dts/armada-38x.dtsi -@@ -495,7 +495,7 @@ - status = "disabled"; - }; - -- mdio@72004 { -+ mdio: mdio@72004 { - #address-cells = <1>; - #size-cells = <0>; - compatible = "marvell,orion-mdio"; _______________________________________________ openwrt-commits mailing list [email protected] https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-commits
