kirkwood: drop 3.10 support
Signed-off-by: Luka Perkov <luka@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@42077 3c298f89-4303-0410-b956-a3cf2f4a3e73master
parent
d12f820ed2
commit
99fc9728a6
|
@ -1,288 +0,0 @@
|
|||
CONFIG_ALIGNMENT_TRAP=y
|
||||
CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y
|
||||
CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y
|
||||
CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y
|
||||
CONFIG_ARCH_KIRKWOOD=y
|
||||
CONFIG_ARCH_KIRKWOOD_DT=y
|
||||
# CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set
|
||||
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_WANT_IPC_PARSE_VERSION=y
|
||||
CONFIG_ARM=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 is not set
|
||||
CONFIG_ARM_L1_CACHE_SHIFT=5
|
||||
CONFIG_ARM_NR_BANKS=8
|
||||
CONFIG_ARM_PATCH_PHYS_VIRT=y
|
||||
# CONFIG_ARM_THUMB is not set
|
||||
# CONFIG_ARPD is not set
|
||||
CONFIG_ATAGS=y
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_CACHE_FEROCEON_L2=y
|
||||
# CONFIG_CACHE_FEROCEON_L2_WRITETHROUGH is not set
|
||||
# CONFIG_CACHE_L2X0 is not set
|
||||
# CONFIG_CHARGER_MANAGER is not set
|
||||
CONFIG_CLKDEV_LOOKUP=y
|
||||
CONFIG_CLKSRC_MMIO=y
|
||||
CONFIG_CLONE_BACKWARDS=y
|
||||
CONFIG_CMDLINE="rootdelay=1 root=/dev/mmcblk0p1 noinitrd console=ttyS0,115200"
|
||||
CONFIG_CMDLINE_FROM_BOOTLOADER=y
|
||||
CONFIG_COMMON_CLK=y
|
||||
CONFIG_CPU_32v5=y
|
||||
CONFIG_CPU_ABRT_EV5T=y
|
||||
CONFIG_CPU_CACHE_VIVT=y
|
||||
CONFIG_CPU_COPY_FEROCEON=y
|
||||
CONFIG_CPU_CP15=y
|
||||
CONFIG_CPU_CP15_MMU=y
|
||||
CONFIG_CPU_FEROCEON=y
|
||||
# CONFIG_CPU_FEROCEON_OLD_ID is not set
|
||||
# CONFIG_CPU_ICACHE_DISABLE is not set
|
||||
CONFIG_CPU_IDLE=y
|
||||
CONFIG_CPU_IDLE_GOV_LADDER=y
|
||||
CONFIG_CPU_PABRT_LEGACY=y
|
||||
CONFIG_CPU_PM=y
|
||||
CONFIG_CPU_TLB_FEROCEON=y
|
||||
CONFIG_CPU_USE_DOMAINS=y
|
||||
CONFIG_CRC16=y
|
||||
CONFIG_CRYPTO_CRC32C=y
|
||||
CONFIG_CRYPTO_DEFLATE=y
|
||||
CONFIG_CRYPTO_HASH=y
|
||||
CONFIG_CRYPTO_HASH2=y
|
||||
CONFIG_CRYPTO_LZO=y
|
||||
CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S"
|
||||
# CONFIG_DEBUG_PINCTRL is not set
|
||||
# CONFIG_DEBUG_USER is not set
|
||||
# CONFIG_DLCI is not set
|
||||
CONFIG_DNOTIFY=y
|
||||
CONFIG_DTC=y
|
||||
CONFIG_EXT4_FS=y
|
||||
CONFIG_FRAME_POINTER=y
|
||||
CONFIG_FS_MBCACHE=y
|
||||
CONFIG_GENERIC_ATOMIC64=y
|
||||
CONFIG_GENERIC_BUG=y
|
||||
CONFIG_GENERIC_CLOCKEVENTS=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_PCI_IOMAP=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_SYSFS=y
|
||||
# CONFIG_HAMRADIO is not set
|
||||
CONFIG_HARDIRQS_SW_RESEND=y
|
||||
CONFIG_HAS_DMA=y
|
||||
CONFIG_HAS_IOMEM=y
|
||||
CONFIG_HAS_IOPORT=y
|
||||
# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set
|
||||
CONFIG_HAVE_ARCH_JUMP_LABEL=y
|
||||
CONFIG_HAVE_ARCH_KGDB=y
|
||||
CONFIG_HAVE_ARCH_PFN_VALID=y
|
||||
CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
|
||||
CONFIG_HAVE_ARCH_TRACEHOOK=y
|
||||
# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set
|
||||
CONFIG_HAVE_BPF_JIT=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_FTRACE_MCOUNT_RECORD=y
|
||||
CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
|
||||
CONFIG_HAVE_FUNCTION_TRACER=y
|
||||
CONFIG_HAVE_GENERIC_DMA_COHERENT=y
|
||||
CONFIG_HAVE_GENERIC_HARDIRQS=y
|
||||
CONFIG_HAVE_IDE=y
|
||||
CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
|
||||
CONFIG_HAVE_KERNEL_GZIP=y
|
||||
CONFIG_HAVE_KERNEL_LZMA=y
|
||||
CONFIG_HAVE_KERNEL_LZO=y
|
||||
CONFIG_HAVE_KERNEL_XZ=y
|
||||
CONFIG_HAVE_LATENCYTOP_SUPPORT=y
|
||||
CONFIG_HAVE_MEMBLOCK=y
|
||||
CONFIG_HAVE_NET_DSA=y
|
||||
CONFIG_HAVE_OPROFILE=y
|
||||
CONFIG_HAVE_PERF_EVENTS=y
|
||||
CONFIG_HAVE_PROC_CPU=y
|
||||
CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
|
||||
CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
|
||||
CONFIG_HAVE_UID16=y
|
||||
CONFIG_HW_RANDOM=y
|
||||
CONFIG_HZ_PERIODIC=y
|
||||
CONFIG_I2C=y
|
||||
CONFIG_I2C_BOARDINFO=y
|
||||
CONFIG_INET_LRO=y
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
# CONFIG_IP_ADVANCED_ROUTER is not set
|
||||
CONFIG_IP_PIMSM_V1=y
|
||||
CONFIG_IP_PIMSM_V2=y
|
||||
CONFIG_IRQCHIP=y
|
||||
CONFIG_IRQ_DOMAIN=y
|
||||
CONFIG_IRQ_WORK=y
|
||||
CONFIG_JBD2=y
|
||||
CONFIG_KTIME_SCALAR=y
|
||||
CONFIG_LEDS_GPIO=y
|
||||
# CONFIG_LEDS_REGULATOR is not set
|
||||
CONFIG_LEGACY_PTYS=y
|
||||
CONFIG_LEGACY_PTY_COUNT=256
|
||||
CONFIG_LZO_COMPRESS=y
|
||||
CONFIG_LZO_DECOMPRESS=y
|
||||
CONFIG_M25PXX_USE_FAST_READ=y
|
||||
# CONFIG_MACH_D2NET_V2 is not set
|
||||
CONFIG_MACH_DLINK_KIRKWOOD_DT=y
|
||||
# CONFIG_MACH_DOCKSTAR is not set
|
||||
# CONFIG_MACH_ESATA_SHEEVAPLUG is not set
|
||||
# CONFIG_MACH_GURUPLUG is not set
|
||||
# CONFIG_MACH_INETSPACE_V2 is not set
|
||||
# CONFIG_MACH_MV88F6281GTW_GE is not set
|
||||
# CONFIG_MACH_NET2BIG_V2 is not set
|
||||
# CONFIG_MACH_NET5BIG_V2 is not set
|
||||
# CONFIG_MACH_NETSPACE_MAX_V2 is not set
|
||||
# CONFIG_MACH_NETSPACE_V2 is not set
|
||||
# CONFIG_MACH_OPENRD_BASE is not set
|
||||
# CONFIG_MACH_OPENRD_CLIENT is not set
|
||||
# CONFIG_MACH_OPENRD_ULTIMATE is not set
|
||||
# CONFIG_MACH_RD88F6192_NAS is not set
|
||||
# CONFIG_MACH_RD88F6281 is not set
|
||||
# CONFIG_MACH_SHEEVAPLUG is not set
|
||||
# CONFIG_MACH_T5325 is not set
|
||||
# CONFIG_MACH_TS219 is not set
|
||||
# CONFIG_MACH_TS41X is not set
|
||||
CONFIG_MDIO_BOARDINFO=y
|
||||
CONFIG_MMC=y
|
||||
CONFIG_MMC_BLOCK=y
|
||||
CONFIG_MMC_MVSDIO=y
|
||||
# CONFIG_MMC_TIFM_SD is not set
|
||||
CONFIG_MODULES_USE_ELF_REL=y
|
||||
# CONFIG_MTD_CFI is not set
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
CONFIG_MTD_M25P80=y
|
||||
CONFIG_MTD_NAND=y
|
||||
CONFIG_MTD_NAND_ECC=y
|
||||
CONFIG_MTD_NAND_ORION=y
|
||||
CONFIG_MTD_OF_PARTS=y
|
||||
# CONFIG_MTD_SM_COMMON is not set
|
||||
CONFIG_MTD_UBI=y
|
||||
CONFIG_MTD_UBI_BEB_LIMIT=20
|
||||
# CONFIG_MTD_UBI_BLOCK is not set
|
||||
# CONFIG_MTD_UBI_FASTMAP is not set
|
||||
# CONFIG_MTD_UBI_GLUEBI is not set
|
||||
CONFIG_MTD_UBI_WL_THRESHOLD=4096
|
||||
CONFIG_MV643XX_ETH=y
|
||||
CONFIG_MVEBU_CLK_CORE=y
|
||||
CONFIG_MVEBU_CLK_GATING=y
|
||||
CONFIG_MVEBU_MBUS=y
|
||||
CONFIG_MVMDIO=y
|
||||
CONFIG_NEED_DMA_MAP_STATE=y
|
||||
CONFIG_NEED_KUSER_HELPERS=y
|
||||
CONFIG_NEED_PER_CPU_KM=y
|
||||
CONFIG_NET_DSA=y
|
||||
CONFIG_NET_DSA_MV88E6123_61_65=y
|
||||
CONFIG_NET_DSA_MV88E6131=y
|
||||
CONFIG_NET_DSA_MV88E6XXX=y
|
||||
CONFIG_NET_DSA_MV88E6XXX_NEED_PPU=y
|
||||
CONFIG_NET_DSA_TAG_DSA=y
|
||||
CONFIG_NET_DSA_TAG_EDSA=y
|
||||
CONFIG_NLS=y
|
||||
CONFIG_OF=y
|
||||
CONFIG_OF_ADDRESS=y
|
||||
CONFIG_OF_DEVICE=y
|
||||
CONFIG_OF_EARLY_FLATTREE=y
|
||||
CONFIG_OF_FLATTREE=y
|
||||
CONFIG_OF_GPIO=y
|
||||
CONFIG_OF_I2C=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_OLD_SIGACTION=y
|
||||
CONFIG_OLD_SIGSUSPEND3=y
|
||||
CONFIG_OUTER_CACHE=y
|
||||
CONFIG_PAGEFLAGS_EXTENDED=y
|
||||
CONFIG_PAGE_OFFSET=0xC0000000
|
||||
CONFIG_PCI=y
|
||||
CONFIG_PCI_MVEBU=y
|
||||
CONFIG_PERF_USE_VMALLOC=y
|
||||
CONFIG_PHYLIB=y
|
||||
CONFIG_PINCONF=y
|
||||
CONFIG_PINCTRL=y
|
||||
CONFIG_PINCTRL_KIRKWOOD=y
|
||||
CONFIG_PINCTRL_MVEBU=y
|
||||
# CONFIG_PINCTRL_SINGLE is not set
|
||||
CONFIG_PINMUX=y
|
||||
CONFIG_PLAT_ORION=y
|
||||
CONFIG_PLAT_ORION_LEGACY=y
|
||||
CONFIG_POWER_RESET=y
|
||||
CONFIG_POWER_RESET_GPIO=y
|
||||
# CONFIG_POWER_RESET_QNAP is not set
|
||||
CONFIG_POWER_SUPPLY=y
|
||||
# CONFIG_PREEMPT_RCU is not set
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
# CONFIG_RCU_STALL_COMMON is not set
|
||||
CONFIG_REGMAP=y
|
||||
CONFIG_REGULATOR=y
|
||||
# CONFIG_REGULATOR_DEBUG is not set
|
||||
# CONFIG_REGULATOR_DUMMY is not set
|
||||
CONFIG_REGULATOR_FIXED_VOLTAGE=y
|
||||
# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set
|
||||
# CONFIG_RFKILL_REGULATOR is not set
|
||||
CONFIG_RTC_CLASS=y
|
||||
# CONFIG_RTC_DRV_MV is not set
|
||||
CONFIG_SCHED_HRTICK=y
|
||||
CONFIG_SCSI=y
|
||||
# CONFIG_SCSI_MULTI_LUN is not set
|
||||
CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y
|
||||
CONFIG_SERIAL_OF_PLATFORM=y
|
||||
CONFIG_SPI=y
|
||||
CONFIG_SPI_MASTER=y
|
||||
CONFIG_SPI_ORION=y
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=999999
|
||||
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
|
||||
CONFIG_TICK_CPU_ACCOUNTING=y
|
||||
CONFIG_UBIFS_FS=y
|
||||
CONFIG_UBIFS_FS_ADVANCED_COMPR=y
|
||||
CONFIG_UBIFS_FS_LZO=y
|
||||
# CONFIG_UBIFS_FS_XZ is not set
|
||||
CONFIG_UBIFS_FS_ZLIB=y
|
||||
CONFIG_UID16=y
|
||||
CONFIG_UIDGID_CONVERTED=y
|
||||
CONFIG_UNCOMPRESS_INCLUDE="mach/uncompress.h"
|
||||
CONFIG_USB=y
|
||||
CONFIG_USB_ARCH_HAS_XHCI=y
|
||||
CONFIG_USB_COMMON=y
|
||||
CONFIG_USB_EHCI_HCD=y
|
||||
CONFIG_USB_EHCI_HCD_ORION=y
|
||||
# CONFIG_USB_EHCI_HCD_PLATFORM is not set
|
||||
CONFIG_USB_EHCI_PCI=y
|
||||
CONFIG_USB_STORAGE=y
|
||||
CONFIG_USB_SUPPORT=y
|
||||
# CONFIG_USB_UHCI_HCD is not set
|
||||
CONFIG_USE_OF=y
|
||||
CONFIG_VECTORS_BASE=0xffff0000
|
||||
# CONFIG_VFP is not set
|
||||
CONFIG_VM_EVENT_COUNTERS=y
|
||||
CONFIG_WAN=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
|
|
@ -1,197 +0,0 @@
|
|||
From 3c72277cf2c10e3b7065541b3588f21138efeba2 Mon Sep 17 00:00:00 2001
|
||||
From: Andrew Murray <Andrew.Murray@arm.com>
|
||||
Date: Thu, 16 May 2013 17:55:17 +0200
|
||||
Subject: [PATCH 01/29] of/pci: Provide support for parsing PCI DT ranges
|
||||
property
|
||||
|
||||
This patch factors out common implementation patterns to reduce overall kernel
|
||||
code and provide a means for host bridge drivers to directly obtain struct
|
||||
resources from the DT's ranges property without relying on architecture specific
|
||||
DT handling. This will make it easier to write archiecture independent host bridge
|
||||
drivers and mitigate against further duplication of DT parsing code.
|
||||
|
||||
This patch can be used in the following way:
|
||||
|
||||
struct of_pci_range_parser parser;
|
||||
struct of_pci_range range;
|
||||
|
||||
if (of_pci_range_parser_init(&parser, np))
|
||||
; //no ranges property
|
||||
|
||||
for_each_of_pci_range(&parser, &range) {
|
||||
|
||||
/*
|
||||
directly access properties of the address range, e.g.:
|
||||
range.pci_space, range.pci_addr, range.cpu_addr,
|
||||
range.size, range.flags
|
||||
|
||||
alternatively obtain a struct resource, e.g.:
|
||||
struct resource res;
|
||||
of_pci_range_to_resource(&range, np, &res);
|
||||
*/
|
||||
}
|
||||
|
||||
Additionally the implementation takes care of adjacent ranges and merges them
|
||||
into a single range (as was the case with powerpc and microblaze).
|
||||
|
||||
Signed-off-by: Andrew Murray <Andrew.Murray@arm.com>
|
||||
Signed-off-by: Liviu Dudau <Liviu.Dudau@arm.com>
|
||||
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||||
Reviewed-by: Rob Herring <rob.herring@calxeda.com>
|
||||
Tested-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||||
Tested-by: Linus Walleij <linus.walleij@linaro.org>
|
||||
Tested-by: Jingoo Han <jg1.han@samsung.com>
|
||||
Acked-by: Grant Likely <grant.likely@secretlab.ca>
|
||||
Signed-off-by: Jason Cooper <jason@lakedaemon.net>
|
||||
---
|
||||
drivers/of/address.c | 67 ++++++++++++++++++++++++++++++++++++++++++++++
|
||||
include/linux/of_address.h | 48 +++++++++++++++++++++++++++++++++
|
||||
2 files changed, 115 insertions(+)
|
||||
|
||||
--- a/drivers/of/address.c
|
||||
+++ b/drivers/of/address.c
|
||||
@@ -224,6 +224,73 @@ int of_pci_address_to_resource(struct de
|
||||
return __of_address_to_resource(dev, addrp, size, flags, NULL, r);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(of_pci_address_to_resource);
|
||||
+
|
||||
+int of_pci_range_parser_init(struct of_pci_range_parser *parser,
|
||||
+ struct device_node *node)
|
||||
+{
|
||||
+ const int na = 3, ns = 2;
|
||||
+ int rlen;
|
||||
+
|
||||
+ parser->node = node;
|
||||
+ parser->pna = of_n_addr_cells(node);
|
||||
+ parser->np = parser->pna + na + ns;
|
||||
+
|
||||
+ parser->range = of_get_property(node, "ranges", &rlen);
|
||||
+ if (parser->range == NULL)
|
||||
+ return -ENOENT;
|
||||
+
|
||||
+ parser->end = parser->range + rlen / sizeof(__be32);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+EXPORT_SYMBOL_GPL(of_pci_range_parser_init);
|
||||
+
|
||||
+struct of_pci_range *of_pci_range_parser_one(struct of_pci_range_parser *parser,
|
||||
+ struct of_pci_range *range)
|
||||
+{
|
||||
+ const int na = 3, ns = 2;
|
||||
+
|
||||
+ if (!range)
|
||||
+ return NULL;
|
||||
+
|
||||
+ if (!parser->range || parser->range + parser->np > parser->end)
|
||||
+ return NULL;
|
||||
+
|
||||
+ range->pci_space = parser->range[0];
|
||||
+ range->flags = of_bus_pci_get_flags(parser->range);
|
||||
+ range->pci_addr = of_read_number(parser->range + 1, ns);
|
||||
+ range->cpu_addr = of_translate_address(parser->node,
|
||||
+ parser->range + na);
|
||||
+ range->size = of_read_number(parser->range + parser->pna + na, ns);
|
||||
+
|
||||
+ parser->range += parser->np;
|
||||
+
|
||||
+ /* Now consume following elements while they are contiguous */
|
||||
+ while (parser->range + parser->np <= parser->end) {
|
||||
+ u32 flags, pci_space;
|
||||
+ u64 pci_addr, cpu_addr, size;
|
||||
+
|
||||
+ pci_space = be32_to_cpup(parser->range);
|
||||
+ flags = of_bus_pci_get_flags(parser->range);
|
||||
+ pci_addr = of_read_number(parser->range + 1, ns);
|
||||
+ cpu_addr = of_translate_address(parser->node,
|
||||
+ parser->range + na);
|
||||
+ size = of_read_number(parser->range + parser->pna + na, ns);
|
||||
+
|
||||
+ if (flags != range->flags)
|
||||
+ break;
|
||||
+ if (pci_addr != range->pci_addr + range->size ||
|
||||
+ cpu_addr != range->cpu_addr + range->size)
|
||||
+ break;
|
||||
+
|
||||
+ range->size += size;
|
||||
+ parser->range += parser->np;
|
||||
+ }
|
||||
+
|
||||
+ return range;
|
||||
+}
|
||||
+EXPORT_SYMBOL_GPL(of_pci_range_parser_one);
|
||||
+
|
||||
#endif /* CONFIG_PCI */
|
||||
|
||||
/*
|
||||
--- a/include/linux/of_address.h
|
||||
+++ b/include/linux/of_address.h
|
||||
@@ -4,6 +4,36 @@
|
||||
#include <linux/errno.h>
|
||||
#include <linux/of.h>
|
||||
|
||||
+struct of_pci_range_parser {
|
||||
+ struct device_node *node;
|
||||
+ const __be32 *range;
|
||||
+ const __be32 *end;
|
||||
+ int np;
|
||||
+ int pna;
|
||||
+};
|
||||
+
|
||||
+struct of_pci_range {
|
||||
+ u32 pci_space;
|
||||
+ u64 pci_addr;
|
||||
+ u64 cpu_addr;
|
||||
+ u64 size;
|
||||
+ u32 flags;
|
||||
+};
|
||||
+
|
||||
+#define for_each_of_pci_range(parser, range) \
|
||||
+ for (; of_pci_range_parser_one(parser, range);)
|
||||
+
|
||||
+static inline void of_pci_range_to_resource(struct of_pci_range *range,
|
||||
+ struct device_node *np,
|
||||
+ struct resource *res)
|
||||
+{
|
||||
+ res->flags = range->flags;
|
||||
+ res->start = range->cpu_addr;
|
||||
+ res->end = range->cpu_addr + range->size - 1;
|
||||
+ res->parent = res->child = res->sibling = NULL;
|
||||
+ res->name = np->full_name;
|
||||
+}
|
||||
+
|
||||
#ifdef CONFIG_OF_ADDRESS
|
||||
extern u64 of_translate_address(struct device_node *np, const __be32 *addr);
|
||||
extern bool of_can_translate_address(struct device_node *dev);
|
||||
@@ -27,6 +57,11 @@ static inline unsigned long pci_address_
|
||||
#define pci_address_to_pio pci_address_to_pio
|
||||
#endif
|
||||
|
||||
+extern int of_pci_range_parser_init(struct of_pci_range_parser *parser,
|
||||
+ struct device_node *node);
|
||||
+extern struct of_pci_range *of_pci_range_parser_one(
|
||||
+ struct of_pci_range_parser *parser,
|
||||
+ struct of_pci_range *range);
|
||||
#else /* CONFIG_OF_ADDRESS */
|
||||
#ifndef of_address_to_resource
|
||||
static inline int of_address_to_resource(struct device_node *dev, int index,
|
||||
@@ -53,6 +88,19 @@ static inline const __be32 *of_get_addre
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
+
|
||||
+static inline int of_pci_range_parser_init(struct of_pci_range_parser *parser,
|
||||
+ struct device_node *node)
|
||||
+{
|
||||
+ return -1;
|
||||
+}
|
||||
+
|
||||
+static inline struct of_pci_range *of_pci_range_parser_one(
|
||||
+ struct of_pci_range_parser *parser,
|
||||
+ struct of_pci_range *range)
|
||||
+{
|
||||
+ return NULL;
|
||||
+}
|
||||
#endif /* CONFIG_OF_ADDRESS */
|
||||
|
||||
|
|
@ -1,55 +0,0 @@
|
|||
From 389637f9e7f523934acf26c247e4722d761ad966 Mon Sep 17 00:00:00 2001
|
||||
From: Thierry Reding <thierry.reding@avionic-design.de>
|
||||
Date: Thu, 16 May 2013 17:55:19 +0200
|
||||
Subject: [PATCH 03/29] of/pci: Add of_pci_parse_bus_range() function
|
||||
|
||||
This function can be used to parse a bus-range property as specified by
|
||||
device nodes representing PCI bridges.
|
||||
|
||||
Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
|
||||
Signed-off-by: Jason Cooper <jason@lakedaemon.net>
|
||||
---
|
||||
drivers/of/of_pci.c | 25 +++++++++++++++++++++++++
|
||||
include/linux/of_pci.h | 1 +
|
||||
2 files changed, 26 insertions(+)
|
||||
|
||||
--- a/drivers/of/of_pci.c
|
||||
+++ b/drivers/of/of_pci.c
|
||||
@@ -64,3 +64,28 @@ int of_pci_get_devfn(struct device_node
|
||||
return (be32_to_cpup(reg) >> 8) & 0xff;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(of_pci_get_devfn);
|
||||
+
|
||||
+/**
|
||||
+ * of_pci_parse_bus_range() - parse the bus-range property of a PCI device
|
||||
+ * @node: device node
|
||||
+ * @res: address to a struct resource to return the bus-range
|
||||
+ *
|
||||
+ * Returns 0 on success or a negative error-code on failure.
|
||||
+ */
|
||||
+int of_pci_parse_bus_range(struct device_node *node, struct resource *res)
|
||||
+{
|
||||
+ const __be32 *values;
|
||||
+ int len;
|
||||
+
|
||||
+ values = of_get_property(node, "bus-range", &len);
|
||||
+ if (!values || len < sizeof(*values) * 2)
|
||||
+ return -EINVAL;
|
||||
+
|
||||
+ res->name = node->name;
|
||||
+ res->start = be32_to_cpup(values++);
|
||||
+ res->end = be32_to_cpup(values);
|
||||
+ res->flags = IORESOURCE_BUS;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+EXPORT_SYMBOL_GPL(of_pci_parse_bus_range);
|
||||
--- a/include/linux/of_pci.h
|
||||
+++ b/include/linux/of_pci.h
|
||||
@@ -11,5 +11,6 @@ struct device_node;
|
||||
struct device_node *of_pci_find_child_device(struct device_node *parent,
|
||||
unsigned int devfn);
|
||||
int of_pci_get_devfn(struct device_node *np);
|
||||
+int of_pci_parse_bus_range(struct device_node *node, struct resource *res);
|
||||
|
||||
#endif
|
|
@ -1,31 +0,0 @@
|
|||
From 72fb19fc4ff89878273799eb38e8d95b0add3c05 Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||||
Date: Thu, 16 May 2013 17:55:20 +0200
|
||||
Subject: [PATCH 04/29] clk: mvebu: create parent-child relation for PCIe
|
||||
clocks on Armada 370
|
||||
|
||||
The Armada 370 has two gatable clocks for each PCIe interface, and we
|
||||
want both of them to be enabled. We therefore make one of the two
|
||||
clocks a child of the other, as we did for the sataX and sataXlnk
|
||||
clocks on Armada XP.
|
||||
|
||||
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||||
Cc: Mike Turquette <mturquette@linaro.org>
|
||||
Signed-off-by: Jason Cooper <jason@lakedaemon.net>
|
||||
---
|
||||
drivers/clk/mvebu/clk-gating-ctrl.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/drivers/clk/mvebu/clk-gating-ctrl.c
|
||||
+++ b/drivers/clk/mvebu/clk-gating-ctrl.c
|
||||
@@ -119,8 +119,8 @@ static const struct mvebu_soc_descr __in
|
||||
{ "pex1_en", NULL, 2 },
|
||||
{ "ge1", NULL, 3 },
|
||||
{ "ge0", NULL, 4 },
|
||||
- { "pex0", NULL, 5 },
|
||||
- { "pex1", NULL, 9 },
|
||||
+ { "pex0", "pex0_en", 5 },
|
||||
+ { "pex1", "pex1_en", 9 },
|
||||
{ "sata0", NULL, 15 },
|
||||
{ "sdio", NULL, 17 },
|
||||
{ "tdm", NULL, 25 },
|
|
@ -1,51 +0,0 @@
|
|||
From 52a1c4e3aa9027040c1adc69303aaffc3c2cbaab Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||||
Date: Thu, 16 May 2013 17:55:21 +0200
|
||||
Subject: [PATCH 05/29] clk: mvebu: add more PCIe clocks for Armada XP
|
||||
|
||||
The current revision of the datasheet only mentions the gatable clocks
|
||||
for the PCIe 0.0, 0.1, 0.2 and 0.3 interfaces, and forgot to mention
|
||||
the ones for the PCIe 1.0, 1.1, 1.2, 1.3, 2.0 and 3.0
|
||||
interfaces. After confirmation with Marvell engineers, this patch adds
|
||||
the missing gatable clocks for those PCIe interfaces.
|
||||
|
||||
It also changes the name of the previously existing PCIe gatable
|
||||
clocks, in order to match the naming using the datasheets.
|
||||
|
||||
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||||
Cc: Mike Turquette <mturquette@linaro.org>
|
||||
Signed-off-by: Jason Cooper <jason@lakedaemon.net>
|
||||
---
|
||||
drivers/clk/mvebu/clk-gating-ctrl.c | 14 ++++++++++----
|
||||
1 file changed, 10 insertions(+), 4 deletions(-)
|
||||
|
||||
--- a/drivers/clk/mvebu/clk-gating-ctrl.c
|
||||
+++ b/drivers/clk/mvebu/clk-gating-ctrl.c
|
||||
@@ -137,10 +137,14 @@ static const struct mvebu_soc_descr __in
|
||||
{ "ge2", NULL, 2 },
|
||||
{ "ge1", NULL, 3 },
|
||||
{ "ge0", NULL, 4 },
|
||||
- { "pex0", NULL, 5 },
|
||||
- { "pex1", NULL, 6 },
|
||||
- { "pex2", NULL, 7 },
|
||||
- { "pex3", NULL, 8 },
|
||||
+ { "pex00", NULL, 5 },
|
||||
+ { "pex01", NULL, 6 },
|
||||
+ { "pex02", NULL, 7 },
|
||||
+ { "pex03", NULL, 8 },
|
||||
+ { "pex10", NULL, 9 },
|
||||
+ { "pex11", NULL, 10 },
|
||||
+ { "pex12", NULL, 11 },
|
||||
+ { "pex13", NULL, 12 },
|
||||
{ "bp", NULL, 13 },
|
||||
{ "sata0lnk", NULL, 14 },
|
||||
{ "sata0", "sata0lnk", 15 },
|
||||
@@ -152,6 +156,8 @@ static const struct mvebu_soc_descr __in
|
||||
{ "xor0", NULL, 22 },
|
||||
{ "crypto", NULL, 23 },
|
||||
{ "tdm", NULL, 25 },
|
||||
+ { "pex20", NULL, 26 },
|
||||
+ { "pex30", NULL, 27 },
|
||||
{ "xor1", NULL, 28 },
|
||||
{ "sata1lnk", NULL, 29 },
|
||||
{ "sata1", "sata1lnk", 30 },
|
File diff suppressed because it is too large
Load Diff
|
@ -1,26 +0,0 @@
|
|||
From 3b475bd86ce4c647a65d218a3014396d4b139fb3 Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||||
Date: Thu, 16 May 2013 17:55:23 +0200
|
||||
Subject: [PATCH 07/29] arm: mvebu: PCIe support is now available on mvebu
|
||||
|
||||
Now that the PCIe driver for mvebu has been integrated and all its
|
||||
relevant dependencies, we can mark the ARCH_MVEBU platform has
|
||||
MIGHT_HAVE_PCI, which allows to select the PCI bus support if needed.
|
||||
|
||||
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||||
Signed-off-by: Jason Cooper <jason@lakedaemon.net>
|
||||
---
|
||||
arch/arm/mach-mvebu/Kconfig | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
--- a/arch/arm/mach-mvebu/Kconfig
|
||||
+++ b/arch/arm/mach-mvebu/Kconfig
|
||||
@@ -16,6 +16,8 @@ config ARCH_MVEBU
|
||||
select MVEBU_MBUS
|
||||
select ZONE_DMA if ARM_LPAE
|
||||
select ARCH_REQUIRE_GPIOLIB
|
||||
+ select MIGHT_HAVE_PCI
|
||||
+ select PCI_QUIRKS if PCI
|
||||
|
||||
if ARCH_MVEBU
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
From 3ad3d38d36c51b45668708a42f67b07fc87a53e3 Mon Sep 17 00:00:00 2001
|
||||
From: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
|
||||
Date: Mon, 27 May 2013 11:38:41 +0800
|
||||
Subject: [PATCH 08/29] pci: mvebu: fix return value check in
|
||||
mvebu_pcie_probe()
|
||||
|
||||
In case of error, function of_clk_get_by_name() returns
|
||||
ERR_PTR() never returns NULL. The NULL test in the return
|
||||
value check should be replaced with IS_ERR().
|
||||
|
||||
Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
|
||||
Acked-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||||
Signed-off-by: Jason Cooper <jason@lakedaemon.net>
|
||||
---
|
||||
drivers/pci/host/pci-mvebu.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/pci/host/pci-mvebu.c
|
||||
+++ b/drivers/pci/host/pci-mvebu.c
|
||||
@@ -828,7 +828,7 @@ static int __init mvebu_pcie_probe(struc
|
||||
}
|
||||
|
||||
port->clk = of_clk_get_by_name(child, NULL);
|
||||
- if (!port->clk) {
|
||||
+ if (IS_ERR(port->clk)) {
|
||||
dev_err(&pdev->dev, "PCIe%d.%d: cannot get clock\n",
|
||||
port->port, port->lane);
|
||||
iounmap(port->base);
|
|
@ -1,48 +0,0 @@
|
|||
From 79ae3cf2d6c01b4394ea462f1c49a2e9fbcf0521 Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||||
Date: Wed, 15 May 2013 15:36:54 +0200
|
||||
Subject: [PATCH 09/29] pci: mvebu: enable driver usage on Kirkwood
|
||||
|
||||
We allow the pci-mvebu driver to be compiled on the Kirkwood platform,
|
||||
and add the 'marvell,kirkwood-pcie' as a compatible string supported
|
||||
by the driver.
|
||||
|
||||
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||||
Tested-by: Andrew Lunn <andrew@lunn.ch>
|
||||
Signed-off-by: Jason Cooper <jason@lakedaemon.net>
|
||||
---
|
||||
Documentation/devicetree/bindings/pci/mvebu-pci.txt | 1 +
|
||||
drivers/pci/host/Kconfig | 2 +-
|
||||
drivers/pci/host/pci-mvebu.c | 1 +
|
||||
3 files changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/Documentation/devicetree/bindings/pci/mvebu-pci.txt
|
||||
+++ b/Documentation/devicetree/bindings/pci/mvebu-pci.txt
|
||||
@@ -4,6 +4,7 @@ Mandatory properties:
|
||||
- compatible: one of the following values:
|
||||
marvell,armada-370-pcie
|
||||
marvell,armada-xp-pcie
|
||||
+ marvell,kirkwood-pcie
|
||||
- #address-cells, set to <3>
|
||||
- #size-cells, set to <2>
|
||||
- #interrupt-cells, set to <1>
|
||||
--- a/drivers/pci/host/Kconfig
|
||||
+++ b/drivers/pci/host/Kconfig
|
||||
@@ -3,6 +3,6 @@ menu "PCI host controller drivers"
|
||||
|
||||
config PCI_MVEBU
|
||||
bool "Marvell EBU PCIe controller"
|
||||
- depends on ARCH_MVEBU
|
||||
+ depends on ARCH_MVEBU || ARCH_KIRKWOOD
|
||||
|
||||
endmenu
|
||||
--- a/drivers/pci/host/pci-mvebu.c
|
||||
+++ b/drivers/pci/host/pci-mvebu.c
|
||||
@@ -854,6 +854,7 @@ static int __init mvebu_pcie_probe(struc
|
||||
static const struct of_device_id mvebu_pcie_of_match_table[] = {
|
||||
{ .compatible = "marvell,armada-xp-pcie", },
|
||||
{ .compatible = "marvell,armada-370-pcie", },
|
||||
+ { .compatible = "marvell,kirkwood-pcie", },
|
||||
{},
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, mvebu_pcie_of_match_table);
|
|
@ -1,96 +0,0 @@
|
|||
From 722ffe56a78344821877496f5bb28ca95b4cb67c Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||||
Date: Wed, 15 May 2013 15:36:55 +0200
|
||||
Subject: [PATCH 10/29] arm: kirkwood: move PCIe window init to legacy driver
|
||||
|
||||
Since we are going to enable the usage of the mvebu PCIe driver on
|
||||
Kirkwood, we don't want the PCIe windows to be unconditionally created
|
||||
by kirkwood_setup_wins(). Therefore, we move the PCIe window
|
||||
initialization into the legacy PCIe driver
|
||||
(arch/arm/mach-kirkwood/pcie.c).
|
||||
|
||||
The platforms using the legacy driver will see their windows
|
||||
statically allocated by
|
||||
arch/arm/mach-kirkwood/pcie.c:kirkwood_pcie_init(). The platforms
|
||||
using the new driver in drivers/pci/ will see their windows
|
||||
dynamically allocated directly by the driver.
|
||||
|
||||
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||||
Tested-by: Andrew Lunn <andrew@lunn.ch>
|
||||
Signed-off-by: Jason Cooper <jason@lakedaemon.net>
|
||||
---
|
||||
arch/arm/mach-kirkwood/common.c | 24 ------------------------
|
||||
arch/arm/mach-kirkwood/pcie.c | 22 ++++++++++++++++++++++
|
||||
2 files changed, 22 insertions(+), 24 deletions(-)
|
||||
|
||||
--- a/arch/arm/mach-kirkwood/common.c
|
||||
+++ b/arch/arm/mach-kirkwood/common.c
|
||||
@@ -648,30 +648,6 @@ char * __init kirkwood_id(void)
|
||||
|
||||
void __init kirkwood_setup_wins(void)
|
||||
{
|
||||
- /*
|
||||
- * The PCIe windows will no longer be statically allocated
|
||||
- * here once Kirkwood is migrated to the pci-mvebu driver.
|
||||
- */
|
||||
- mvebu_mbus_add_window_remap_flags("pcie0.0",
|
||||
- KIRKWOOD_PCIE_IO_PHYS_BASE,
|
||||
- KIRKWOOD_PCIE_IO_SIZE,
|
||||
- KIRKWOOD_PCIE_IO_BUS_BASE,
|
||||
- MVEBU_MBUS_PCI_IO);
|
||||
- mvebu_mbus_add_window_remap_flags("pcie0.0",
|
||||
- KIRKWOOD_PCIE_MEM_PHYS_BASE,
|
||||
- KIRKWOOD_PCIE_MEM_SIZE,
|
||||
- MVEBU_MBUS_NO_REMAP,
|
||||
- MVEBU_MBUS_PCI_MEM);
|
||||
- mvebu_mbus_add_window_remap_flags("pcie1.0",
|
||||
- KIRKWOOD_PCIE1_IO_PHYS_BASE,
|
||||
- KIRKWOOD_PCIE1_IO_SIZE,
|
||||
- KIRKWOOD_PCIE1_IO_BUS_BASE,
|
||||
- MVEBU_MBUS_PCI_IO);
|
||||
- mvebu_mbus_add_window_remap_flags("pcie1.0",
|
||||
- KIRKWOOD_PCIE1_MEM_PHYS_BASE,
|
||||
- KIRKWOOD_PCIE1_MEM_SIZE,
|
||||
- MVEBU_MBUS_NO_REMAP,
|
||||
- MVEBU_MBUS_PCI_MEM);
|
||||
mvebu_mbus_add_window("nand", KIRKWOOD_NAND_MEM_PHYS_BASE,
|
||||
KIRKWOOD_NAND_MEM_SIZE);
|
||||
mvebu_mbus_add_window("sram", KIRKWOOD_SRAM_PHYS_BASE,
|
||||
--- a/arch/arm/mach-kirkwood/pcie.c
|
||||
+++ b/arch/arm/mach-kirkwood/pcie.c
|
||||
@@ -12,6 +12,7 @@
|
||||
#include <linux/pci.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/clk.h>
|
||||
+#include <linux/mbus.h>
|
||||
#include <video/vga.h>
|
||||
#include <asm/irq.h>
|
||||
#include <asm/mach/pci.h>
|
||||
@@ -253,6 +254,27 @@ static void __init add_pcie_port(int ind
|
||||
|
||||
void __init kirkwood_pcie_init(unsigned int portmask)
|
||||
{
|
||||
+ mvebu_mbus_add_window_remap_flags("pcie0.0",
|
||||
+ KIRKWOOD_PCIE_IO_PHYS_BASE,
|
||||
+ KIRKWOOD_PCIE_IO_SIZE,
|
||||
+ KIRKWOOD_PCIE_IO_BUS_BASE,
|
||||
+ MVEBU_MBUS_PCI_IO);
|
||||
+ mvebu_mbus_add_window_remap_flags("pcie0.0",
|
||||
+ KIRKWOOD_PCIE_MEM_PHYS_BASE,
|
||||
+ KIRKWOOD_PCIE_MEM_SIZE,
|
||||
+ MVEBU_MBUS_NO_REMAP,
|
||||
+ MVEBU_MBUS_PCI_MEM);
|
||||
+ mvebu_mbus_add_window_remap_flags("pcie1.0",
|
||||
+ KIRKWOOD_PCIE1_IO_PHYS_BASE,
|
||||
+ KIRKWOOD_PCIE1_IO_SIZE,
|
||||
+ KIRKWOOD_PCIE1_IO_BUS_BASE,
|
||||
+ MVEBU_MBUS_PCI_IO);
|
||||
+ mvebu_mbus_add_window_remap_flags("pcie1.0",
|
||||
+ KIRKWOOD_PCIE1_MEM_PHYS_BASE,
|
||||
+ KIRKWOOD_PCIE1_MEM_SIZE,
|
||||
+ MVEBU_MBUS_NO_REMAP,
|
||||
+ MVEBU_MBUS_PCI_MEM);
|
||||
+
|
||||
vga_base = KIRKWOOD_PCIE_MEM_PHYS_BASE;
|
||||
|
||||
if (portmask & KW_PCIE0)
|
|
@ -1,124 +0,0 @@
|
|||
From b2198f4cd8cffdfd5030a176a9ee4d4367526cac Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||||
Date: Wed, 15 May 2013 15:36:56 +0200
|
||||
Subject: [PATCH 11/29] arm: kirkwood: add SoC-level Device Tree data for PCIe
|
||||
interfaces
|
||||
|
||||
This commit adds Device Tree details to enable the PCIe interfaces on
|
||||
Kirkwood. The 6281 has one PCIe interface, the 6282 has two PCIe
|
||||
interfaces.
|
||||
|
||||
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||||
Tested-by: Andrew Lunn <andrew@lunn.ch>
|
||||
Signed-off-by: Jason Cooper <jason@lakedaemon.net>
|
||||
---
|
||||
arch/arm/boot/dts/kirkwood-6281.dtsi | 31 +++++++++++++++++++++++
|
||||
arch/arm/boot/dts/kirkwood-6282.dtsi | 48 ++++++++++++++++++++++++++++++++++++
|
||||
arch/arm/boot/dts/kirkwood.dtsi | 1 +
|
||||
3 files changed, 80 insertions(+)
|
||||
|
||||
--- a/arch/arm/boot/dts/kirkwood-6281.dtsi
|
||||
+++ b/arch/arm/boot/dts/kirkwood-6281.dtsi
|
||||
@@ -40,5 +40,36 @@
|
||||
marvell,function = "sdio";
|
||||
};
|
||||
};
|
||||
+
|
||||
+ pcie-controller {
|
||||
+ compatible = "marvell,kirkwood-pcie";
|
||||
+ status = "disabled";
|
||||
+ device_type = "pci";
|
||||
+
|
||||
+ #address-cells = <3>;
|
||||
+ #size-cells = <2>;
|
||||
+
|
||||
+ bus-range = <0x00 0xff>;
|
||||
+
|
||||
+ ranges = <0x82000000 0 0x00040000 0x00040000 0 0x00002000 /* Port 0.0 registers */
|
||||
+ 0x82000000 0 0xe0000000 0xe0000000 0 0x08000000 /* non-prefetchable memory */
|
||||
+ 0x81000000 0 0 0xe8000000 0 0x00100000>; /* downstream I/O */
|
||||
+
|
||||
+ pcie@1,0 {
|
||||
+ device_type = "pci";
|
||||
+ assigned-addresses = <0x82000800 0 0x00040000 0 0x2000>;
|
||||
+ reg = <0x0800 0 0 0 0>;
|
||||
+ #address-cells = <3>;
|
||||
+ #size-cells = <2>;
|
||||
+ #interrupt-cells = <1>;
|
||||
+ ranges;
|
||||
+ interrupt-map-mask = <0 0 0 0>;
|
||||
+ interrupt-map = <0 0 0 0 &intc 9>;
|
||||
+ marvell,pcie-port = <0>;
|
||||
+ marvell,pcie-lane = <0>;
|
||||
+ clocks = <&gate_clk 2>;
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+ };
|
||||
};
|
||||
};
|
||||
--- a/arch/arm/boot/dts/kirkwood-6282.dtsi
|
||||
+++ b/arch/arm/boot/dts/kirkwood-6282.dtsi
|
||||
@@ -65,5 +65,53 @@
|
||||
clocks = <&gate_clk 7>;
|
||||
status = "disabled";
|
||||
};
|
||||
+
|
||||
+ pcie-controller {
|
||||
+ compatible = "marvell,kirkwood-pcie";
|
||||
+ status = "disabled";
|
||||
+ device_type = "pci";
|
||||
+
|
||||
+ #address-cells = <3>;
|
||||
+ #size-cells = <2>;
|
||||
+
|
||||
+ bus-range = <0x00 0xff>;
|
||||
+
|
||||
+ ranges = <0x82000000 0 0x00040000 0x00040000 0 0x00002000 /* Port 0.0 registers */
|
||||
+ 0x82000000 0 0x00044000 0x00044000 0 0x00002000 /* Port 1.0 registers */
|
||||
+ 0x82000000 0 0xe0000000 0xe0000000 0 0x08000000 /* non-prefetchable memory */
|
||||
+ 0x81000000 0 0 0xe8000000 0 0x00100000>; /* downstream I/O */
|
||||
+
|
||||
+ pcie@1,0 {
|
||||
+ device_type = "pci";
|
||||
+ assigned-addresses = <0x82000800 0 0x00040000 0 0x2000>;
|
||||
+ reg = <0x0800 0 0 0 0>;
|
||||
+ #address-cells = <3>;
|
||||
+ #size-cells = <2>;
|
||||
+ #interrupt-cells = <1>;
|
||||
+ ranges;
|
||||
+ interrupt-map-mask = <0 0 0 0>;
|
||||
+ interrupt-map = <0 0 0 0 &intc 9>;
|
||||
+ marvell,pcie-port = <0>;
|
||||
+ marvell,pcie-lane = <0>;
|
||||
+ clocks = <&gate_clk 2>;
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ pcie@2,0 {
|
||||
+ device_type = "pci";
|
||||
+ assigned-addresses = <0x82001000 0 0x00044000 0 0x2000>;
|
||||
+ reg = <0x1000 0 0 0 0>;
|
||||
+ #address-cells = <3>;
|
||||
+ #size-cells = <2>;
|
||||
+ #interrupt-cells = <1>;
|
||||
+ ranges;
|
||||
+ interrupt-map-mask = <0 0 0 0>;
|
||||
+ interrupt-map = <0 0 0 0 &intc 10>;
|
||||
+ marvell,pcie-port = <1>;
|
||||
+ marvell,pcie-lane = <0>;
|
||||
+ clocks = <&gate_clk 18>;
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+ };
|
||||
};
|
||||
};
|
||||
--- a/arch/arm/boot/dts/kirkwood.dtsi
|
||||
+++ b/arch/arm/boot/dts/kirkwood.dtsi
|
||||
@@ -19,6 +19,7 @@
|
||||
ocp@f1000000 {
|
||||
compatible = "simple-bus";
|
||||
ranges = <0x00000000 0xf1000000 0x4000000
|
||||
+ 0xe0000000 0xe0000000 0x8100000 /* PCIE */
|
||||
0xf5000000 0xf5000000 0x0000400>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
|
@ -1,48 +0,0 @@
|
|||
From cce41fad080eb7e5f3e3e27bbcc5730d624c5d4b Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||||
Date: Wed, 15 May 2013 15:36:57 +0200
|
||||
Subject: [PATCH 12/29] arm: kirkwood: convert Iomega Iconnect to use DT for
|
||||
the PCIe interface
|
||||
|
||||
Now that the PCIe mvebu driver is usable on Kirkwood, use it instead
|
||||
of the legacy PCIe code, since it allows to describe the PCIe
|
||||
interfaces in the Device Tree.
|
||||
|
||||
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||||
Signed-off-by: Jason Cooper <jason@lakedaemon.net>
|
||||
---
|
||||
arch/arm/boot/dts/kirkwood-iconnect.dts | 8 ++++++++
|
||||
arch/arm/mach-kirkwood/board-iconnect.c | 8 --------
|
||||
2 files changed, 8 insertions(+), 8 deletions(-)
|
||||
|
||||
--- a/arch/arm/boot/dts/kirkwood-iconnect.dts
|
||||
+++ b/arch/arm/boot/dts/kirkwood-iconnect.dts
|
||||
@@ -109,6 +109,14 @@
|
||||
reg = <0x980000 0x1f400000>;
|
||||
};
|
||||
};
|
||||
+
|
||||
+ pcie-controller {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ pcie@1,0 {
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+ };
|
||||
};
|
||||
|
||||
gpio-leds {
|
||||
--- a/arch/arm/mach-kirkwood/board-iconnect.c
|
||||
+++ b/arch/arm/mach-kirkwood/board-iconnect.c
|
||||
@@ -22,11 +22,3 @@ void __init iconnect_init(void)
|
||||
{
|
||||
kirkwood_ge00_init(&iconnect_ge00_data);
|
||||
}
|
||||
-
|
||||
-static int __init iconnect_pci_init(void)
|
||||
-{
|
||||
- if (of_machine_is_compatible("iom,iconnect"))
|
||||
- kirkwood_pcie_init(KW_PCIE0);
|
||||
- return 0;
|
||||
-}
|
||||
-subsys_initcall(iconnect_pci_init);
|
|
@ -1,44 +0,0 @@
|
|||
From b12363b0a393e2751395af002bf9ab192c1140c1 Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||||
Date: Wed, 15 May 2013 15:36:58 +0200
|
||||
Subject: [PATCH 13/29] arm: kirkwood: convert MPL CEC4 to use DT for the PCIe
|
||||
interface
|
||||
|
||||
Now that the PCIe mvebu driver is usable on Kirkwood, use it instead
|
||||
of the legacy PCIe code, since it allows to describe the PCIe
|
||||
interfaces in the Device Tree.
|
||||
|
||||
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||||
Signed-off-by: Jason Cooper <jason@lakedaemon.net>
|
||||
---
|
||||
arch/arm/boot/dts/kirkwood-mplcec4.dts | 8 ++++++++
|
||||
arch/arm/mach-kirkwood/board-mplcec4.c | 1 -
|
||||
2 files changed, 8 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/arch/arm/boot/dts/kirkwood-mplcec4.dts
|
||||
+++ b/arch/arm/boot/dts/kirkwood-mplcec4.dts
|
||||
@@ -139,6 +139,14 @@
|
||||
cd-gpios = <&gpio1 15 0>;
|
||||
/* No WP GPIO */
|
||||
};
|
||||
+
|
||||
+ pcie-controller {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ pcie@1,0 {
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+ };
|
||||
};
|
||||
|
||||
gpio-leds {
|
||||
--- a/arch/arm/mach-kirkwood/board-mplcec4.c
|
||||
+++ b/arch/arm/mach-kirkwood/board-mplcec4.c
|
||||
@@ -29,7 +29,6 @@ void __init mplcec4_init(void)
|
||||
*/
|
||||
kirkwood_ge00_init(&mplcec4_ge00_data);
|
||||
kirkwood_ge01_init(&mplcec4_ge01_data);
|
||||
- kirkwood_pcie_init(KW_PCIE0);
|
||||
}
|
||||
|
||||
|
|
@ -1,96 +0,0 @@
|
|||
From f56884bb322085c735b027b64fff4d7294a464ee Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||||
Date: Wed, 15 May 2013 15:36:59 +0200
|
||||
Subject: [PATCH 14/29] arm: kirkwood: convert ZyXEL NSA310 to use DT for the
|
||||
PCIe interface
|
||||
|
||||
Now that the PCIe mvebu driver is usable on Kirkwood, use it instead
|
||||
of the legacy PCIe code, since it allows to describe the PCIe
|
||||
interfaces in the Device Tree.
|
||||
|
||||
Since it was the only device left that prevented this platform to use
|
||||
the Device Tree only, we remove the board-nsa310.c file and the
|
||||
related Kconfig/Makefile bits.
|
||||
|
||||
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||||
Signed-off-by: Jason Cooper <jason@lakedaemon.net>
|
||||
---
|
||||
arch/arm/boot/dts/kirkwood-nsa310.dts | 8 ++++++++
|
||||
arch/arm/mach-kirkwood/Kconfig | 8 --------
|
||||
arch/arm/mach-kirkwood/Makefile | 1 -
|
||||
arch/arm/mach-kirkwood/board-nsa310.c | 25 -------------------------
|
||||
4 files changed, 8 insertions(+), 34 deletions(-)
|
||||
delete mode 100644 arch/arm/mach-kirkwood/board-nsa310.c
|
||||
|
||||
--- a/arch/arm/boot/dts/kirkwood-nsa310.dts
|
||||
+++ b/arch/arm/boot/dts/kirkwood-nsa310.dts
|
||||
@@ -176,6 +176,14 @@
|
||||
reg = <0x5040000 0x2fc0000>;
|
||||
};
|
||||
};
|
||||
+
|
||||
+ pcie-controller {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ pcie@1,0 {
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+ };
|
||||
};
|
||||
|
||||
gpio_keys {
|
||||
--- a/arch/arm/mach-kirkwood/Kconfig
|
||||
+++ b/arch/arm/mach-kirkwood/Kconfig
|
||||
@@ -272,14 +272,6 @@ config MACH_NETSPACE_V2_DT
|
||||
Say 'Y' here if you want your kernel to support the LaCie
|
||||
Network Space v2 NAS, using Flattened Device Tree.
|
||||
|
||||
-config MACH_NSA310_DT
|
||||
- bool "ZyXEL NSA-310 (Flattened Device Tree)"
|
||||
- select ARCH_KIRKWOOD_DT
|
||||
- select ARM_ATAG_DTB_COMPAT
|
||||
- help
|
||||
- Say 'Y' here if you want your kernel to support the
|
||||
- ZyXEL NSA-310 board (Flattened Device Tree).
|
||||
-
|
||||
config MACH_OPENBLOCKS_A6_DT
|
||||
bool "Plat'Home OpenBlocks A6 (Flattened Device Tree)"
|
||||
select ARCH_KIRKWOOD_DT
|
||||
--- a/arch/arm/mach-kirkwood/Makefile
|
||||
+++ b/arch/arm/mach-kirkwood/Makefile
|
||||
@@ -37,7 +37,6 @@ obj-$(CONFIG_MACH_NETSPACE_LITE_V2_DT) +
|
||||
obj-$(CONFIG_MACH_NETSPACE_MAX_V2_DT) += board-ns2.o
|
||||
obj-$(CONFIG_MACH_NETSPACE_MINI_V2_DT) += board-ns2.o
|
||||
obj-$(CONFIG_MACH_NETSPACE_V2_DT) += board-ns2.o
|
||||
-obj-$(CONFIG_MACH_NSA310_DT) += board-nsa310.o
|
||||
obj-$(CONFIG_MACH_OPENBLOCKS_A6_DT) += board-openblocks_a6.o
|
||||
obj-$(CONFIG_MACH_READYNAS_DT) += board-readynas.o
|
||||
obj-$(CONFIG_MACH_TOPKICK_DT) += board-usi_topkick.o
|
||||
--- a/arch/arm/mach-kirkwood/board-nsa310.c
|
||||
+++ /dev/null
|
||||
@@ -1,25 +0,0 @@
|
||||
-/*
|
||||
- * arch/arm/mach-kirkwood/nsa-310-setup.c
|
||||
- *
|
||||
- * ZyXEL NSA-310 Setup
|
||||
- *
|
||||
- * This file is licensed under the terms of the GNU General Public
|
||||
- * License version 2. This program is licensed "as is" without any
|
||||
- * warranty of any kind, whether express or implied.
|
||||
- */
|
||||
-
|
||||
-#include <linux/kernel.h>
|
||||
-#include <linux/init.h>
|
||||
-#include <mach/kirkwood.h>
|
||||
-#include <linux/of.h>
|
||||
-#include "common.h"
|
||||
-
|
||||
-static int __init nsa310_pci_init(void)
|
||||
-{
|
||||
- if (of_machine_is_compatible("zyxel,nsa310"))
|
||||
- kirkwood_pcie_init(KW_PCIE0);
|
||||
-
|
||||
- return 0;
|
||||
-}
|
||||
-
|
||||
-subsys_initcall(nsa310_pci_init);
|
|
@ -1,64 +0,0 @@
|
|||
From c184303509ea2ee9d519db5dbfb2063efca098f7 Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||||
Date: Wed, 15 May 2013 15:37:00 +0200
|
||||
Subject: [PATCH 15/29] arm: kirkwood: convert QNAP TS219 to use DT for the
|
||||
PCIe interface
|
||||
|
||||
Now that the PCIe mvebu driver is usable on Kirkwood, use it instead
|
||||
of the legacy PCIe code, since it allows to describe the PCIe
|
||||
interfaces in the Device Tree.
|
||||
|
||||
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||||
Signed-off-by: Andrew Lunn <andrew@lunn.ch>
|
||||
Signed-off-by: Jason Cooper <jason@lakedaemon.net>
|
||||
---
|
||||
arch/arm/boot/dts/kirkwood-ts219-6281.dts | 3 ++-
|
||||
arch/arm/boot/dts/kirkwood-ts219-6282.dts | 3 ++-
|
||||
arch/arm/boot/dts/kirkwood-ts219.dtsi | 9 +++++++--
|
||||
3 files changed, 11 insertions(+), 4 deletions(-)
|
||||
|
||||
--- a/arch/arm/boot/dts/kirkwood-ts219-6281.dts
|
||||
+++ b/arch/arm/boot/dts/kirkwood-ts219-6281.dts
|
||||
@@ -1,7 +1,8 @@
|
||||
/dts-v1/;
|
||||
|
||||
-/include/ "kirkwood-ts219.dtsi"
|
||||
+/include/ "kirkwood.dtsi"
|
||||
/include/ "kirkwood-6281.dtsi"
|
||||
+/include/ "kirkwood-ts219.dtsi"
|
||||
|
||||
/ {
|
||||
ocp@f1000000 {
|
||||
--- a/arch/arm/boot/dts/kirkwood-ts219-6282.dts
|
||||
+++ b/arch/arm/boot/dts/kirkwood-ts219-6282.dts
|
||||
@@ -1,7 +1,8 @@
|
||||
/dts-v1/;
|
||||
|
||||
-/include/ "kirkwood-ts219.dtsi"
|
||||
+/include/ "kirkwood.dtsi"
|
||||
/include/ "kirkwood-6282.dtsi"
|
||||
+/include/ "kirkwood-ts219.dtsi"
|
||||
|
||||
/ {
|
||||
ocp@f1000000 {
|
||||
--- a/arch/arm/boot/dts/kirkwood-ts219.dtsi
|
||||
+++ b/arch/arm/boot/dts/kirkwood-ts219.dtsi
|
||||
@@ -1,5 +1,3 @@
|
||||
-/include/ "kirkwood.dtsi"
|
||||
-
|
||||
/ {
|
||||
model = "QNAP TS219 family";
|
||||
compatible = "qnap,ts219", "marvell,kirkwood";
|
||||
@@ -74,5 +72,12 @@
|
||||
status = "okay";
|
||||
nr-ports = <2>;
|
||||
};
|
||||
+ pcie-controller {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ pcie@1,0 {
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+ };
|
||||
};
|
||||
};
|
|
@ -1,435 +0,0 @@
|
|||
From 8ad6aa146af6af98bd8e308eb7746a5f4cf267d8 Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||||
Date: Wed, 15 May 2013 15:37:01 +0200
|
||||
Subject: [PATCH 16/29] arm: kirkwood: convert db-88f6281/db-88f6282 to the
|
||||
Device Tree
|
||||
|
||||
This commit converts the Marvell DB-88F6281/DB-88F6282 board to the
|
||||
Device Tree. In fact, the code was supporting two different boards:
|
||||
one with the 6281 SoC variant, and one with the 6282 SoC variant. The
|
||||
difference between the two being that the 6281 has one PCIe interface,
|
||||
and the 6282 has two PCIe interfaces.
|
||||
|
||||
In order to handle that with the Device Tree, we create a
|
||||
'kirkwood-db.dtsi' file that contains the definitions common to both
|
||||
boards, and 'kirkwood-db-88f6281.dts' and 'kirkwood-db-88f6282.dts'
|
||||
for the definitions specific to each board. This is similar to what is
|
||||
done for the QNAP TS219 Kirkwood platform.
|
||||
|
||||
We have kept one single Kconfig option, just like it was before.
|
||||
|
||||
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||||
Signed-off-by: Jason Cooper <jason@lakedaemon.net>
|
||||
---
|
||||
arch/arm/boot/dts/Makefile | 2 +
|
||||
arch/arm/boot/dts/kirkwood-db-88f6281.dts | 30 ++++++++
|
||||
arch/arm/boot/dts/kirkwood-db-88f6282.dts | 34 +++++++++
|
||||
arch/arm/boot/dts/kirkwood-db.dtsi | 89 +++++++++++++++++++++++
|
||||
arch/arm/mach-kirkwood/Kconfig | 13 ++--
|
||||
arch/arm/mach-kirkwood/Makefile | 2 +-
|
||||
arch/arm/mach-kirkwood/board-db88f628x-bp.c | 24 +++++++
|
||||
arch/arm/mach-kirkwood/board-dt.c | 6 ++
|
||||
arch/arm/mach-kirkwood/common.h | 6 ++
|
||||
arch/arm/mach-kirkwood/db88f6281-bp-setup.c | 108 ----------------------------
|
||||
10 files changed, 199 insertions(+), 115 deletions(-)
|
||||
create mode 100644 arch/arm/boot/dts/kirkwood-db-88f6281.dts
|
||||
create mode 100644 arch/arm/boot/dts/kirkwood-db-88f6282.dts
|
||||
create mode 100644 arch/arm/boot/dts/kirkwood-db.dtsi
|
||||
create mode 100644 arch/arm/mach-kirkwood/board-db88f628x-bp.c
|
||||
delete mode 100644 arch/arm/mach-kirkwood/db88f6281-bp-setup.c
|
||||
|
||||
--- a/arch/arm/boot/dts/Makefile
|
||||
+++ b/arch/arm/boot/dts/Makefile
|
||||
@@ -64,6 +64,8 @@ dtb-$(CONFIG_ARCH_INTEGRATOR) += integra
|
||||
integratorcp.dtb
|
||||
dtb-$(CONFIG_ARCH_LPC32XX) += ea3250.dtb phy3250.dtb
|
||||
dtb-$(CONFIG_ARCH_KIRKWOOD) += kirkwood-cloudbox.dtb \
|
||||
+ kirkwood-db-88f6281.dtb \
|
||||
+ kirkwood-db-88f6282.dtb \
|
||||
kirkwood-dns320.dtb \
|
||||
kirkwood-dns325.dtb \
|
||||
kirkwood-dockstar.dtb \
|
||||
--- /dev/null
|
||||
+++ b/arch/arm/boot/dts/kirkwood-db-88f6281.dts
|
||||
@@ -0,0 +1,30 @@
|
||||
+/*
|
||||
+ * Marvell DB-88F6281-BP Development Board Setup
|
||||
+ *
|
||||
+ * Saeed Bishara <saeed@marvell.com>
|
||||
+ * Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||||
+ *
|
||||
+ * This file is licensed under the terms of the GNU General Public
|
||||
+ * License version 2. This program is licensed "as is" without any
|
||||
+ * warranty of any kind, whether express or implied.
|
||||
+ */
|
||||
+
|
||||
+/dts-v1/;
|
||||
+
|
||||
+/include/ "kirkwood-db.dtsi"
|
||||
+/include/ "kirkwood-6281.dtsi"
|
||||
+
|
||||
+/ {
|
||||
+ model = "Marvell DB-88F6281-BP Development Board";
|
||||
+ compatible = "marvell,db-88f6281-bp", "marvell,kirkwood-88f6281", "marvell,kirkwood";
|
||||
+
|
||||
+ ocp@f1000000 {
|
||||
+ pcie-controller {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ pcie@1,0 {
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
--- /dev/null
|
||||
+++ b/arch/arm/boot/dts/kirkwood-db-88f6282.dts
|
||||
@@ -0,0 +1,34 @@
|
||||
+/*
|
||||
+ * Marvell DB-88F6282-BP Development Board Setup
|
||||
+ *
|
||||
+ * Saeed Bishara <saeed@marvell.com>
|
||||
+ * Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||||
+ *
|
||||
+ * This file is licensed under the terms of the GNU General Public
|
||||
+ * License version 2. This program is licensed "as is" without any
|
||||
+ * warranty of any kind, whether express or implied.
|
||||
+ */
|
||||
+
|
||||
+/dts-v1/;
|
||||
+
|
||||
+/include/ "kirkwood-db.dtsi"
|
||||
+/include/ "kirkwood-6282.dtsi"
|
||||
+
|
||||
+/ {
|
||||
+ model = "Marvell DB-88F6282-BP Development Board";
|
||||
+ compatible = "marvell,db-88f6282-bp", "marvell,kirkwood-88f6282", "marvell,kirkwood";
|
||||
+
|
||||
+ ocp@f1000000 {
|
||||
+ pcie-controller {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ pcie@1,0 {
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+
|
||||
+ pcie@2,0 {
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
--- /dev/null
|
||||
+++ b/arch/arm/boot/dts/kirkwood-db.dtsi
|
||||
@@ -0,0 +1,89 @@
|
||||
+/*
|
||||
+ * Marvell DB-{88F6281,88F6282}-BP Development Board Setup
|
||||
+ *
|
||||
+ * Saeed Bishara <saeed@marvell.com>
|
||||
+ * Thomas Petazzoni <thomas.petazzoni@free-electrons.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.
|
||||
+ *
|
||||
+ * This file contains the definitions that are common between the 6281
|
||||
+ * and 6282 variants of the Marvell Kirkwood Development Board.
|
||||
+ */
|
||||
+
|
||||
+/include/ "kirkwood.dtsi"
|
||||
+
|
||||
+/ {
|
||||
+ memory {
|
||||
+ device_type = "memory";
|
||||
+ reg = <0x00000000 0x20000000>; /* 512 MB */
|
||||
+ };
|
||||
+
|
||||
+ chosen {
|
||||
+ bootargs = "console=ttyS0,115200n8 earlyprintk";
|
||||
+ };
|
||||
+
|
||||
+ ocp@f1000000 {
|
||||
+ pinctrl@10000 {
|
||||
+ pmx_sdio_gpios: pmx-sdio-gpios {
|
||||
+ marvell,pins = "mpp37", "mpp38";
|
||||
+ marvell,function = "gpio";
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ serial@12000 {
|
||||
+ pinctrl-0 = <&pmx_uart0>;
|
||||
+ pinctrl-names = "default";
|
||||
+ clock-frequency = <200000000>;
|
||||
+ status = "ok";
|
||||
+ };
|
||||
+
|
||||
+ nand@3000000 {
|
||||
+ pinctrl-0 = <&pmx_nand>;
|
||||
+ pinctrl-names = "default";
|
||||
+ chip-delay = <25>;
|
||||
+ status = "okay";
|
||||
+
|
||||
+ partition@0 {
|
||||
+ label = "uboot";
|
||||
+ reg = <0x0 0x100000>;
|
||||
+ };
|
||||
+
|
||||
+ partition@100000 {
|
||||
+ label = "uImage";
|
||||
+ reg = <0x100000 0x400000>;
|
||||
+ };
|
||||
+
|
||||
+ partition@500000 {
|
||||
+ label = "root";
|
||||
+ reg = <0x500000 0x1fb00000>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ sata@80000 {
|
||||
+ nr-ports = <2>;
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+
|
||||
+ ehci@50000 {
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+
|
||||
+ mvsdio@90000 {
|
||||
+ pinctrl-0 = <&pmx_sdio_gpios>;
|
||||
+ pinctrl-names = "default";
|
||||
+ wp-gpios = <&gpio1 5 0>;
|
||||
+ cd-gpios = <&gpio1 6 0>;
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+
|
||||
+ pcie-controller {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ pcie@1,0 {
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
--- a/arch/arm/mach-kirkwood/Kconfig
|
||||
+++ b/arch/arm/mach-kirkwood/Kconfig
|
||||
@@ -8,12 +8,6 @@ config MACH_D2NET_V2
|
||||
Say 'Y' here if you want your kernel to support the
|
||||
LaCie d2 Network v2 NAS.
|
||||
|
||||
-config MACH_DB88F6281_BP
|
||||
- bool "Marvell DB-88F6281-BP Development Board"
|
||||
- help
|
||||
- Say 'Y' here if you want your kernel to support the
|
||||
- Marvell DB-88F6281-BP Development Board.
|
||||
-
|
||||
config MACH_DOCKSTAR
|
||||
bool "Seagate FreeAgent DockStar"
|
||||
help
|
||||
@@ -153,6 +147,13 @@ config MACH_CLOUDBOX_DT
|
||||
Say 'Y' here if you want your kernel to support the LaCie
|
||||
CloudBox NAS, using Flattened Device Tree.
|
||||
|
||||
+config MACH_DB88F628X_BP_DT
|
||||
+ bool "Marvell DB-88F628x-BP Development Board (Flattened Device Tree)"
|
||||
+ help
|
||||
+ Say 'Y' here if you want your kernel to support the Marvell
|
||||
+ DB-88F6281-BP and DB-88F6282-BP Development Board (Flattened
|
||||
+ Device Tree).
|
||||
+
|
||||
config MACH_DLINK_KIRKWOOD_DT
|
||||
bool "D-Link Kirkwood-based NAS (Flattened Device Tree)"
|
||||
select ARCH_KIRKWOOD_DT
|
||||
--- a/arch/arm/mach-kirkwood/Makefile
|
||||
+++ b/arch/arm/mach-kirkwood/Makefile
|
||||
@@ -1,7 +1,6 @@
|
||||
obj-y += common.o irq.o pcie.o mpp.o
|
||||
|
||||
obj-$(CONFIG_MACH_D2NET_V2) += d2net_v2-setup.o lacie_v2-common.o
|
||||
-obj-$(CONFIG_MACH_DB88F6281_BP) += db88f6281-bp-setup.o
|
||||
obj-$(CONFIG_MACH_DOCKSTAR) += dockstar-setup.o
|
||||
obj-$(CONFIG_MACH_ESATA_SHEEVAPLUG) += sheevaplug-setup.o
|
||||
obj-$(CONFIG_MACH_GURUPLUG) += guruplug-setup.o
|
||||
@@ -21,6 +20,7 @@ obj-$(CONFIG_MACH_TS41X) += ts41x-setup
|
||||
|
||||
obj-$(CONFIG_ARCH_KIRKWOOD_DT) += board-dt.o
|
||||
obj-$(CONFIG_MACH_CLOUDBOX_DT) += board-ns2.o
|
||||
+obj-$(CONFIG_MACH_DB88F628X_BP_DT) += board-db88f628x-bp.o
|
||||
obj-$(CONFIG_MACH_DLINK_KIRKWOOD_DT) += board-dnskw.o
|
||||
obj-$(CONFIG_MACH_DOCKSTAR_DT) += board-dockstar.o
|
||||
obj-$(CONFIG_MACH_DREAMPLUG_DT) += board-dreamplug.o
|
||||
--- /dev/null
|
||||
+++ b/arch/arm/mach-kirkwood/board-db88f628x-bp.c
|
||||
@@ -0,0 +1,24 @@
|
||||
+/*
|
||||
+ * Saeed Bishara <saeed@marvell.com>
|
||||
+ *
|
||||
+ * Marvell DB-88F628{1,2}-BP Development Board Setup
|
||||
+ *
|
||||
+ * This file is licensed under the terms of the GNU General Public
|
||||
+ * License version 2. This program is licensed "as is" without any
|
||||
+ * warranty of any kind, whether express or implied.
|
||||
+ */
|
||||
+
|
||||
+#include <linux/kernel.h>
|
||||
+#include <linux/init.h>
|
||||
+#include <linux/of.h>
|
||||
+#include <linux/mv643xx_eth.h>
|
||||
+#include "common.h"
|
||||
+
|
||||
+static struct mv643xx_eth_platform_data db88f628x_ge00_data = {
|
||||
+ .phy_addr = MV643XX_ETH_PHY_ADDR(8),
|
||||
+};
|
||||
+
|
||||
+void __init db88f628x_init(void)
|
||||
+{
|
||||
+ kirkwood_ge00_init(&db88f628x_ge00_data);
|
||||
+}
|
||||
--- a/arch/arm/mach-kirkwood/board-dt.c
|
||||
+++ b/arch/arm/mach-kirkwood/board-dt.c
|
||||
@@ -147,6 +147,10 @@ static void __init kirkwood_dt_init(void
|
||||
of_machine_is_compatible("lacie,netspace_v2"))
|
||||
ns2_init();
|
||||
|
||||
+ if (of_machine_is_compatible("marvell,db-88f6281-bp") ||
|
||||
+ of_machine_is_compatible("marvell,db-88f6282-bp"))
|
||||
+ db88f628x_init();
|
||||
+
|
||||
if (of_machine_is_compatible("mpl,cec4"))
|
||||
mplcec4_init();
|
||||
|
||||
@@ -181,6 +185,8 @@ static const char * const kirkwood_dt_bo
|
||||
"lacie,netspace_max_v2",
|
||||
"lacie,netspace_mini_v2",
|
||||
"lacie,netspace_v2",
|
||||
+ "marvell,db-88f6281-bp",
|
||||
+ "marvell,db-88f6282-bp",
|
||||
"mpl,cec4",
|
||||
"netgear,readynas-duo-v2",
|
||||
"plathome,openblocks-a6",
|
||||
--- a/arch/arm/mach-kirkwood/common.h
|
||||
+++ b/arch/arm/mach-kirkwood/common.h
|
||||
@@ -119,6 +119,12 @@ void km_kirkwood_init(void);
|
||||
static inline void km_kirkwood_init(void) {};
|
||||
#endif
|
||||
|
||||
+#ifdef CONFIG_MACH_DB88F628X_BP_DT
|
||||
+void db88f628x_init(void);
|
||||
+#else
|
||||
+static inline void db88f628x_init(void) {};
|
||||
+#endif
|
||||
+
|
||||
#ifdef CONFIG_MACH_MPLCEC4_DT
|
||||
void mplcec4_init(void);
|
||||
#else
|
||||
--- a/arch/arm/mach-kirkwood/db88f6281-bp-setup.c
|
||||
+++ /dev/null
|
||||
@@ -1,108 +0,0 @@
|
||||
-/*
|
||||
- * arch/arm/mach-kirkwood/db88f6281-bp-setup.c
|
||||
- *
|
||||
- * Marvell DB-88F6281-BP Development Board Setup
|
||||
- *
|
||||
- * This file is licensed under the terms of the GNU General Public
|
||||
- * License version 2. This program is licensed "as is" without any
|
||||
- * warranty of any kind, whether express or implied.
|
||||
- */
|
||||
-
|
||||
-#include <linux/kernel.h>
|
||||
-#include <linux/init.h>
|
||||
-#include <linux/sizes.h>
|
||||
-#include <linux/platform_device.h>
|
||||
-#include <linux/mtd/partitions.h>
|
||||
-#include <linux/ata_platform.h>
|
||||
-#include <linux/mv643xx_eth.h>
|
||||
-#include <asm/mach-types.h>
|
||||
-#include <asm/mach/arch.h>
|
||||
-#include <mach/kirkwood.h>
|
||||
-#include <linux/platform_data/mmc-mvsdio.h>
|
||||
-#include "common.h"
|
||||
-#include "mpp.h"
|
||||
-
|
||||
-static struct mtd_partition db88f6281_nand_parts[] = {
|
||||
- {
|
||||
- .name = "u-boot",
|
||||
- .offset = 0,
|
||||
- .size = SZ_1M
|
||||
- }, {
|
||||
- .name = "uImage",
|
||||
- .offset = MTDPART_OFS_NXTBLK,
|
||||
- .size = SZ_4M
|
||||
- }, {
|
||||
- .name = "root",
|
||||
- .offset = MTDPART_OFS_NXTBLK,
|
||||
- .size = MTDPART_SIZ_FULL
|
||||
- },
|
||||
-};
|
||||
-
|
||||
-static struct mv643xx_eth_platform_data db88f6281_ge00_data = {
|
||||
- .phy_addr = MV643XX_ETH_PHY_ADDR(8),
|
||||
-};
|
||||
-
|
||||
-static struct mv_sata_platform_data db88f6281_sata_data = {
|
||||
- .n_ports = 2,
|
||||
-};
|
||||
-
|
||||
-static struct mvsdio_platform_data db88f6281_mvsdio_data = {
|
||||
- .gpio_write_protect = 37,
|
||||
- .gpio_card_detect = 38,
|
||||
-};
|
||||
-
|
||||
-static unsigned int db88f6281_mpp_config[] __initdata = {
|
||||
- MPP0_NF_IO2,
|
||||
- MPP1_NF_IO3,
|
||||
- MPP2_NF_IO4,
|
||||
- MPP3_NF_IO5,
|
||||
- MPP4_NF_IO6,
|
||||
- MPP5_NF_IO7,
|
||||
- MPP18_NF_IO0,
|
||||
- MPP19_NF_IO1,
|
||||
- MPP37_GPIO,
|
||||
- MPP38_GPIO,
|
||||
- 0
|
||||
-};
|
||||
-
|
||||
-static void __init db88f6281_init(void)
|
||||
-{
|
||||
- /*
|
||||
- * Basic setup. Needs to be called early.
|
||||
- */
|
||||
- kirkwood_init();
|
||||
- kirkwood_mpp_conf(db88f6281_mpp_config);
|
||||
-
|
||||
- kirkwood_nand_init(ARRAY_AND_SIZE(db88f6281_nand_parts), 25);
|
||||
- kirkwood_ehci_init();
|
||||
- kirkwood_ge00_init(&db88f6281_ge00_data);
|
||||
- kirkwood_sata_init(&db88f6281_sata_data);
|
||||
- kirkwood_uart0_init();
|
||||
- kirkwood_sdio_init(&db88f6281_mvsdio_data);
|
||||
-}
|
||||
-
|
||||
-static int __init db88f6281_pci_init(void)
|
||||
-{
|
||||
- if (machine_is_db88f6281_bp()) {
|
||||
- u32 dev, rev;
|
||||
-
|
||||
- kirkwood_pcie_id(&dev, &rev);
|
||||
- if (dev == MV88F6282_DEV_ID)
|
||||
- kirkwood_pcie_init(KW_PCIE1 | KW_PCIE0);
|
||||
- else
|
||||
- kirkwood_pcie_init(KW_PCIE0);
|
||||
- }
|
||||
- return 0;
|
||||
-}
|
||||
-subsys_initcall(db88f6281_pci_init);
|
||||
-
|
||||
-MACHINE_START(DB88F6281_BP, "Marvell DB-88F6281-BP Development Board")
|
||||
- /* Maintainer: Saeed Bishara <saeed@marvell.com> */
|
||||
- .atag_offset = 0x100,
|
||||
- .init_machine = db88f6281_init,
|
||||
- .map_io = kirkwood_map_io,
|
||||
- .init_early = kirkwood_init_early,
|
||||
- .init_irq = kirkwood_init_irq,
|
||||
- .init_time = kirkwood_timer_init,
|
||||
- .restart = kirkwood_restart,
|
||||
-MACHINE_END
|
|
@ -1,97 +0,0 @@
|
|||
From 5db3b7ccb319679ac9c5791112c7eb42c25331e3 Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||||
Date: Thu, 23 May 2013 16:32:51 +0200
|
||||
Subject: [PATCH 17/29] pci: mvebu: no longer fake the slot location of
|
||||
downstream devices
|
||||
|
||||
By default, the Marvell hardware, for each PCIe interface, exhibits
|
||||
the following devices:
|
||||
|
||||
* On slot 0, a "Marvell Memory controller", identical on all PCIe
|
||||
interfaces, and which isn't useful when the Marvell SoC is the PCIe
|
||||
root complex (i.e, the normal case when we run Linux on the Marvell
|
||||
SoC).
|
||||
|
||||
* On slot 1, the real PCIe card connected into the PCIe slot of the
|
||||
board.
|
||||
|
||||
So, what the Marvell PCIe driver was doing in its PCI-to-PCI bridge
|
||||
emulation is that when the Linux PCI core was trying to access the
|
||||
device in slot 0, we were in fact forwarding the configuration
|
||||
transaction to the device in slot 1. For all other slots, we were
|
||||
telling the Linux PCI core that there was no device connected.
|
||||
|
||||
However, new versions of bootloaders from Marvell change the default
|
||||
PCIe configuration, and make the real device appear in slot 0, and the
|
||||
"Marvell Memory controller" in slot 1.
|
||||
|
||||
Therefore, this commit modifies the Marvell PCIe driver to adjust the
|
||||
PCIe hardware configuration to make sure that this behavior (real
|
||||
device in slot 0, "Marvell Memory controller" in slot 1) is the one
|
||||
we'll see regardless of what the bootloader has done. It allows to
|
||||
remove the little hack that was forwarding configuration transactions
|
||||
on slot 0 to slot 1, which is nice.
|
||||
|
||||
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||||
Acked-by: Bjorn Helgaas <bhelgaas@google.com>
|
||||
Signed-off-by: Jason Cooper <jason@lakedaemon.net>
|
||||
---
|
||||
drivers/pci/host/pci-mvebu.c | 19 +++++++++++++++----
|
||||
1 file changed, 15 insertions(+), 4 deletions(-)
|
||||
|
||||
--- a/drivers/pci/host/pci-mvebu.c
|
||||
+++ b/drivers/pci/host/pci-mvebu.c
|
||||
@@ -51,6 +51,7 @@
|
||||
#define PCIE_CTRL_X1_MODE 0x0001
|
||||
#define PCIE_STAT_OFF 0x1a04
|
||||
#define PCIE_STAT_BUS 0xff00
|
||||
+#define PCIE_STAT_DEV 0x1f0000
|
||||
#define PCIE_STAT_LINK_DOWN BIT(0)
|
||||
#define PCIE_DEBUG_CTRL 0x1a60
|
||||
#define PCIE_DEBUG_SOFT_RESET BIT(20)
|
||||
@@ -148,6 +149,16 @@ static void mvebu_pcie_set_local_bus_nr(
|
||||
writel(stat, port->base + PCIE_STAT_OFF);
|
||||
}
|
||||
|
||||
+static void mvebu_pcie_set_local_dev_nr(struct mvebu_pcie_port *port, int nr)
|
||||
+{
|
||||
+ u32 stat;
|
||||
+
|
||||
+ stat = readl(port->base + PCIE_STAT_OFF);
|
||||
+ stat &= ~PCIE_STAT_DEV;
|
||||
+ stat |= nr << 16;
|
||||
+ writel(stat, port->base + PCIE_STAT_OFF);
|
||||
+}
|
||||
+
|
||||
/*
|
||||
* Setup PCIE BARs and Address Decode Wins:
|
||||
* BAR[0,2] -> disabled, BAR[1] -> covers all DRAM banks
|
||||
@@ -572,8 +583,7 @@ static int mvebu_pcie_wr_conf(struct pci
|
||||
|
||||
/* Access the real PCIe interface */
|
||||
spin_lock_irqsave(&port->conf_lock, flags);
|
||||
- ret = mvebu_pcie_hw_wr_conf(port, bus,
|
||||
- PCI_DEVFN(1, PCI_FUNC(devfn)),
|
||||
+ ret = mvebu_pcie_hw_wr_conf(port, bus, devfn,
|
||||
where, size, val);
|
||||
spin_unlock_irqrestore(&port->conf_lock, flags);
|
||||
|
||||
@@ -606,8 +616,7 @@ static int mvebu_pcie_rd_conf(struct pci
|
||||
|
||||
/* Access the real PCIe interface */
|
||||
spin_lock_irqsave(&port->conf_lock, flags);
|
||||
- ret = mvebu_pcie_hw_rd_conf(port, bus,
|
||||
- PCI_DEVFN(1, PCI_FUNC(devfn)),
|
||||
+ ret = mvebu_pcie_hw_rd_conf(port, bus, devfn,
|
||||
where, size, val);
|
||||
spin_unlock_irqrestore(&port->conf_lock, flags);
|
||||
|
||||
@@ -817,6 +826,8 @@ static int __init mvebu_pcie_probe(struc
|
||||
continue;
|
||||
}
|
||||
|
||||
+ mvebu_pcie_set_local_dev_nr(port, 1);
|
||||
+
|
||||
if (mvebu_pcie_link_up(port)) {
|
||||
port->haslink = 1;
|
||||
dev_info(&pdev->dev, "PCIe%d.%d: link up\n",
|
|
@ -1,97 +0,0 @@
|
|||
From ce12bfd48e93b98717a258b8181aed0e19933e1e Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||||
Date: Thu, 23 May 2013 16:32:52 +0200
|
||||
Subject: [PATCH 18/29] pci: mvebu: allow the enumeration of devices beyond
|
||||
physical bridges
|
||||
|
||||
Until now, the Marvell PCIe driver was only allowing the enumeration
|
||||
of the devices in the secondary bus of the emulated PCI-to-PCI
|
||||
bridge. This works fine when a PCIe device is directly connected into
|
||||
a PCIe slot of the Marvell board.
|
||||
|
||||
However, when the device connected in the PCIe slot is a physical PCIe
|
||||
bridge, beyond which a real PCIe device is connected, it no longer
|
||||
worked, as the driver was preventing the Linux PCI core from seeing
|
||||
such devices.
|
||||
|
||||
This commit fixes that by ensuring that configuration transactions on
|
||||
subordinate busses are properly forwarded on the right PCIe interface.
|
||||
|
||||
Thanks to this patch, a PCIe card beyond a PCIe bridge, itself beyond
|
||||
the emulated PCI-to-PCI bridge is properly detected, with the
|
||||
following layout:
|
||||
|
||||
-[0000:00]-+-01.0-[01]----00.0
|
||||
+-09.0-[02-07]----00.0-[03-07]--+-01.0-[04]--
|
||||
| +-05.0-[05]--
|
||||
| +-07.0-[06]--
|
||||
| \-09.0-[07]----00.0
|
||||
\-0a.0-[08]----00.0
|
||||
|
||||
Where the PCIe interface that sits beyond the emulated PCI-to-PCI
|
||||
bridge at 09.0 allows to access the secondary bus 02, on which there
|
||||
is a PCIe bridge that allows to access the 3 to 7 busses, that are
|
||||
subordinates to this bridge. And on one of this bus (bus 7), there is
|
||||
one real PCIe device connected.
|
||||
|
||||
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||||
Acked-by: Bjorn Helgaas <bhelgaas@google.com>
|
||||
Signed-off-by: Jason Cooper <jason@lakedaemon.net>
|
||||
---
|
||||
drivers/pci/host/pci-mvebu.c | 31 ++++++++++++++++++++++++++++---
|
||||
1 file changed, 28 insertions(+), 3 deletions(-)
|
||||
|
||||
--- a/drivers/pci/host/pci-mvebu.c
|
||||
+++ b/drivers/pci/host/pci-mvebu.c
|
||||
@@ -554,7 +554,8 @@ mvebu_pcie_find_port(struct mvebu_pcie *
|
||||
if (bus->number == 0 && port->devfn == devfn)
|
||||
return port;
|
||||
if (bus->number != 0 &&
|
||||
- port->bridge.secondary_bus == bus->number)
|
||||
+ bus->number >= port->bridge.secondary_bus &&
|
||||
+ bus->number <= port->bridge.subordinate_bus)
|
||||
return port;
|
||||
}
|
||||
|
||||
@@ -578,7 +579,18 @@ static int mvebu_pcie_wr_conf(struct pci
|
||||
if (bus->number == 0)
|
||||
return mvebu_sw_pci_bridge_write(port, where, size, val);
|
||||
|
||||
- if (!port->haslink || PCI_SLOT(devfn) != 0)
|
||||
+ if (!port->haslink)
|
||||
+ return PCIBIOS_DEVICE_NOT_FOUND;
|
||||
+
|
||||
+ /*
|
||||
+ * On the secondary bus, we don't want to expose any other
|
||||
+ * device than the device physically connected in the PCIe
|
||||
+ * slot, visible in slot 0. In slot 1, there's a special
|
||||
+ * Marvell device that only makes sense when the Armada is
|
||||
+ * used as a PCIe endpoint.
|
||||
+ */
|
||||
+ if (bus->number == port->bridge.secondary_bus &&
|
||||
+ PCI_SLOT(devfn) != 0)
|
||||
return PCIBIOS_DEVICE_NOT_FOUND;
|
||||
|
||||
/* Access the real PCIe interface */
|
||||
@@ -609,7 +621,20 @@ static int mvebu_pcie_rd_conf(struct pci
|
||||
if (bus->number == 0)
|
||||
return mvebu_sw_pci_bridge_read(port, where, size, val);
|
||||
|
||||
- if (!port->haslink || PCI_SLOT(devfn) != 0) {
|
||||
+ if (!port->haslink) {
|
||||
+ *val = 0xffffffff;
|
||||
+ return PCIBIOS_DEVICE_NOT_FOUND;
|
||||
+ }
|
||||
+
|
||||
+ /*
|
||||
+ * On the secondary bus, we don't want to expose any other
|
||||
+ * device than the device physically connected in the PCIe
|
||||
+ * slot, visible in slot 0. In slot 1, there's a special
|
||||
+ * Marvell device that only makes sense when the Armada is
|
||||
+ * used as a PCIe endpoint.
|
||||
+ */
|
||||
+ if (bus->number == port->bridge.secondary_bus &&
|
||||
+ PCI_SLOT(devfn) != 0) {
|
||||
*val = 0xffffffff;
|
||||
return PCIBIOS_DEVICE_NOT_FOUND;
|
||||
}
|
|
@ -1,87 +0,0 @@
|
|||
From 370c8181fd848948aeae371bbc1124dc0dead22b Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||||
Date: Thu, 23 May 2013 16:32:53 +0200
|
||||
Subject: [PATCH 19/29] pci: mvebu: fix the emulation of the status register
|
||||
|
||||
The status register of the PCI configuration space of PCI-to-PCI
|
||||
bridges contain some read-only bits, and so write-1-to-clear bits. So,
|
||||
the Linux PCI core sometimes writes 0xffff to this status register,
|
||||
and in the current PCI-to-PCI bridge emulation code of the Marvell
|
||||
driver, we do take all those 1s being written. Even the read-only bits
|
||||
are being overwritten.
|
||||
|
||||
For now, all the read-only bits should be emulated to have the zero
|
||||
value.
|
||||
|
||||
The other bits, that are write-1-to-clear bits are used to report
|
||||
various kind of errors, and are never set by the emulated bridge, so
|
||||
there is no need to support this write-1-to-clear bits mechanism.
|
||||
|
||||
As a conclusion, the easiest solution is to simply emulate this status
|
||||
register by returning zero when read, and ignore the writes to it.
|
||||
|
||||
This has two visible effects:
|
||||
|
||||
* The devsel is no longer 'unknown' in, i.e
|
||||
|
||||
Flags: bus master, 66MHz, user-definable features, ?? devsel, latency 0
|
||||
|
||||
becomes:
|
||||
|
||||
Flags: bus master, 66MHz, user-definable features, fast devsel, latency 0
|
||||
|
||||
in lspci -v.
|
||||
|
||||
This was caused by a value of 11b being read for devsel, which is
|
||||
an invalid value. This 11b value being read was due to a previous
|
||||
write of 0xffff into the status register.
|
||||
|
||||
* The capability list is no longer broken, because we indicate to the
|
||||
Linux PCI core that we don't have a Capabilities Pointer in the PCI
|
||||
configuration space of this bridge. The following message is
|
||||
therefore no longer visible in lspci -v:
|
||||
|
||||
Capabilities: [fc] <chain broken>
|
||||
|
||||
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||||
Acked-by: Bjorn Helgaas <bhelgaas@google.com>
|
||||
Signed-off-by: Jason Cooper <jason@lakedaemon.net>
|
||||
---
|
||||
drivers/pci/host/pci-mvebu.c | 5 +----
|
||||
1 file changed, 1 insertion(+), 4 deletions(-)
|
||||
|
||||
--- a/drivers/pci/host/pci-mvebu.c
|
||||
+++ b/drivers/pci/host/pci-mvebu.c
|
||||
@@ -69,7 +69,6 @@ struct mvebu_sw_pci_bridge {
|
||||
u16 vendor;
|
||||
u16 device;
|
||||
u16 command;
|
||||
- u16 status;
|
||||
u16 class;
|
||||
u8 interface;
|
||||
u8 revision;
|
||||
@@ -359,7 +358,6 @@ static void mvebu_sw_pci_bridge_init(str
|
||||
|
||||
memset(bridge, 0, sizeof(struct mvebu_sw_pci_bridge));
|
||||
|
||||
- bridge->status = PCI_STATUS_CAP_LIST;
|
||||
bridge->class = PCI_CLASS_BRIDGE_PCI;
|
||||
bridge->vendor = PCI_VENDOR_ID_MARVELL;
|
||||
bridge->device = MARVELL_EMULATED_PCI_PCI_BRIDGE_ID;
|
||||
@@ -386,7 +384,7 @@ static int mvebu_sw_pci_bridge_read(stru
|
||||
break;
|
||||
|
||||
case PCI_COMMAND:
|
||||
- *value = bridge->status << 16 | bridge->command;
|
||||
+ *value = bridge->command;
|
||||
break;
|
||||
|
||||
case PCI_CLASS_REVISION:
|
||||
@@ -479,7 +477,6 @@ static int mvebu_sw_pci_bridge_write(str
|
||||
switch (where & ~3) {
|
||||
case PCI_COMMAND:
|
||||
bridge->command = value & 0xffff;
|
||||
- bridge->status = value >> 16;
|
||||
break;
|
||||
|
||||
case PCI_BASE_ADDRESS_0 ... PCI_BASE_ADDRESS_1:
|
|
@ -1,29 +0,0 @@
|
|||
From 799e69d38053e344267360a583676eafe2ed8648 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
|
||||
Date: Wed, 29 May 2013 09:32:43 +0000
|
||||
Subject: [PATCH 20/29] net: mv643xx_eth: use phy_disconnect instead of
|
||||
phy_detach
|
||||
|
||||
Using a separated mdio bus driver with mvmdio, phy_detach on network device
|
||||
removal will not stop the phy and finally lead to NULL pointer dereference
|
||||
in mvmdio due to non-existent network device. Use phy_disconnect instead
|
||||
to properly stop phy device from accessing network device prior removal of
|
||||
the network device.
|
||||
|
||||
Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
drivers/net/ethernet/marvell/mv643xx_eth.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/net/ethernet/marvell/mv643xx_eth.c
|
||||
+++ b/drivers/net/ethernet/marvell/mv643xx_eth.c
|
||||
@@ -2803,7 +2803,7 @@ static int mv643xx_eth_remove(struct pla
|
||||
|
||||
unregister_netdev(mp->dev);
|
||||
if (mp->phy != NULL)
|
||||
- phy_detach(mp->phy);
|
||||
+ phy_disconnect(mp->phy);
|
||||
cancel_work_sync(&mp->tx_timeout_task);
|
||||
|
||||
if (!IS_ERR(mp->clk))
|
|
@ -1,33 +0,0 @@
|
|||
From 002271ca6718b5dfb8082873fb0a60abc1d9e8d5 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
|
||||
Date: Wed, 29 May 2013 09:32:44 +0000
|
||||
Subject: [PATCH 21/29] net: mv643xx_eth: use managed devm_ioremap for port
|
||||
registers
|
||||
|
||||
Make use of managed devm_ioremap and remove corresponding iounmap.
|
||||
|
||||
Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
drivers/net/ethernet/marvell/mv643xx_eth.c | 3 +--
|
||||
1 file changed, 1 insertion(+), 2 deletions(-)
|
||||
|
||||
--- a/drivers/net/ethernet/marvell/mv643xx_eth.c
|
||||
+++ b/drivers/net/ethernet/marvell/mv643xx_eth.c
|
||||
@@ -2469,7 +2469,7 @@ static int mv643xx_eth_shared_probe(stru
|
||||
if (msp == NULL)
|
||||
return -ENOMEM;
|
||||
|
||||
- msp->base = ioremap(res->start, resource_size(res));
|
||||
+ msp->base = devm_ioremap(&pdev->dev, res->start, resource_size(res));
|
||||
if (msp->base == NULL)
|
||||
return -ENOMEM;
|
||||
|
||||
@@ -2497,7 +2497,6 @@ static int mv643xx_eth_shared_remove(str
|
||||
{
|
||||
struct mv643xx_eth_shared_private *msp = platform_get_drvdata(pdev);
|
||||
|
||||
- iounmap(msp->base);
|
||||
if (!IS_ERR(msp->clk))
|
||||
clk_disable_unprepare(msp->clk);
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
From 30b19330e175f621b04718bc4e55db75768997aa Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
|
||||
Date: Wed, 29 May 2013 09:32:45 +0000
|
||||
Subject: [PATCH 22/29] net: mv643xx_eth: add phy_node to platform_data struct
|
||||
|
||||
This adds a struct device_node pointer for a phy passed by phandle
|
||||
to mv643xx_eth node.
|
||||
|
||||
Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
include/linux/mv643xx_eth.h | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
--- a/include/linux/mv643xx_eth.h
|
||||
+++ b/include/linux/mv643xx_eth.h
|
||||
@@ -30,6 +30,7 @@ struct mv643xx_eth_shared_platform_data
|
||||
#define MV643XX_ETH_PHY_ADDR(x) (0x80 | (x))
|
||||
#define MV643XX_ETH_PHY_NONE 0xff
|
||||
|
||||
+struct device_node;
|
||||
struct mv643xx_eth_platform_data {
|
||||
/*
|
||||
* Pointer back to our parent instance, and our port number.
|
||||
@@ -41,6 +42,7 @@ struct mv643xx_eth_platform_data {
|
||||
* Whether a PHY is present, and if yes, at which address.
|
||||
*/
|
||||
int phy_addr;
|
||||
+ struct device_node *phy_node;
|
||||
|
||||
/*
|
||||
* Use this MAC address if it is valid, overriding the
|
|
@ -1,60 +0,0 @@
|
|||
From db22a1196162f981444d241f92d02e2e50d12ed7 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
|
||||
Date: Wed, 29 May 2013 09:32:46 +0000
|
||||
Subject: [PATCH 23/29] net: mv643xx_eth: use of_phy_connect if phy_node
|
||||
present
|
||||
|
||||
This connects to a phy node passed to the port device instead of probing
|
||||
the phy by phy_addr.
|
||||
|
||||
Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
drivers/net/ethernet/marvell/mv643xx_eth.c | 25 ++++++++++++++++++-------
|
||||
1 file changed, 18 insertions(+), 7 deletions(-)
|
||||
|
||||
--- a/drivers/net/ethernet/marvell/mv643xx_eth.c
|
||||
+++ b/drivers/net/ethernet/marvell/mv643xx_eth.c
|
||||
@@ -60,6 +60,7 @@
|
||||
#include <linux/types.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/clk.h>
|
||||
+#include <linux/of_mdio.h>
|
||||
|
||||
static char mv643xx_eth_driver_name[] = "mv643xx_eth";
|
||||
static char mv643xx_eth_driver_version[] = "1.4";
|
||||
@@ -2714,17 +2715,27 @@ static int mv643xx_eth_probe(struct plat
|
||||
netif_set_real_num_tx_queues(dev, mp->txq_count);
|
||||
netif_set_real_num_rx_queues(dev, mp->rxq_count);
|
||||
|
||||
- if (pd->phy_addr != MV643XX_ETH_PHY_NONE) {
|
||||
+ err = 0;
|
||||
+ if (pd->phy_node) {
|
||||
+ mp->phy = of_phy_connect(mp->dev, pd->phy_node,
|
||||
+ mv643xx_eth_adjust_link, 0,
|
||||
+ PHY_INTERFACE_MODE_GMII);
|
||||
+ if (!mp->phy)
|
||||
+ err = -ENODEV;
|
||||
+ } else if (pd->phy_addr != MV643XX_ETH_PHY_NONE) {
|
||||
mp->phy = phy_scan(mp, pd->phy_addr);
|
||||
|
||||
- if (IS_ERR(mp->phy)) {
|
||||
+ if (IS_ERR(mp->phy))
|
||||
err = PTR_ERR(mp->phy);
|
||||
- if (err == -ENODEV)
|
||||
- err = -EPROBE_DEFER;
|
||||
- goto out;
|
||||
- }
|
||||
- phy_init(mp, pd->speed, pd->duplex);
|
||||
+ else
|
||||
+ phy_init(mp, pd->speed, pd->duplex);
|
||||
}
|
||||
+ if (err == -ENODEV) {
|
||||
+ err = -EPROBE_DEFER;
|
||||
+ goto out;
|
||||
+ }
|
||||
+ if (err)
|
||||
+ goto out;
|
||||
|
||||
SET_ETHTOOL_OPS(dev, &mv643xx_eth_ethtool_ops);
|
||||
|
|
@ -1,50 +0,0 @@
|
|||
From 4c1ae9f272bf34388d0fbdc99aa18af2b6c9eda1 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
|
||||
Date: Wed, 29 May 2013 09:32:47 +0000
|
||||
Subject: [PATCH 24/29] net: mv643xx_eth: proper initialization for Kirkwood
|
||||
SoCs
|
||||
|
||||
Ethernet controllers found on Kirkwood SoCs not only suffer from loosing
|
||||
MAC address register contents on clock gating but also some important
|
||||
registers are reset to values that would break ethernet. This patch
|
||||
clears the CLK125_BYPASS_EN bit for DT enabled Kirkwood only by using
|
||||
of_device_is_compatible() instead of #ifdefs. Non-DT Kirkwood is not
|
||||
affected as it installs a clock gating workaround because of the MAC
|
||||
address issue above. Other Orion SoCs do not suffer from register reset,
|
||||
do not have the bit in question, or do not have the register at all.
|
||||
Moreover, system controllers on PPC using this driver should also be
|
||||
protected from clearing that bit.
|
||||
|
||||
Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
drivers/net/ethernet/marvell/mv643xx_eth.c | 11 +++++++++++
|
||||
1 file changed, 11 insertions(+)
|
||||
|
||||
--- a/drivers/net/ethernet/marvell/mv643xx_eth.c
|
||||
+++ b/drivers/net/ethernet/marvell/mv643xx_eth.c
|
||||
@@ -116,6 +116,8 @@ static char mv643xx_eth_driver_version[]
|
||||
#define LINK_UP 0x00000002
|
||||
#define TXQ_COMMAND 0x0048
|
||||
#define TXQ_FIX_PRIO_CONF 0x004c
|
||||
+#define PORT_SERIAL_CONTROL1 0x004c
|
||||
+#define CLK125_BYPASS_EN 0x00000010
|
||||
#define TX_BW_RATE 0x0050
|
||||
#define TX_BW_MTU 0x0058
|
||||
#define TX_BW_BURST 0x005c
|
||||
@@ -2700,6 +2702,15 @@ static int mv643xx_eth_probe(struct plat
|
||||
|
||||
mp->dev = dev;
|
||||
|
||||
+ /* Kirkwood resets some registers on gated clocks. Especially
|
||||
+ * CLK125_BYPASS_EN must be cleared but is not available on
|
||||
+ * all other SoCs/System Controllers using this driver.
|
||||
+ */
|
||||
+ if (of_device_is_compatible(pdev->dev.of_node,
|
||||
+ "marvell,kirkwood-eth-port"))
|
||||
+ wrlp(mp, PORT_SERIAL_CONTROL1,
|
||||
+ rdlp(mp, PORT_SERIAL_CONTROL1) & ~CLK125_BYPASS_EN);
|
||||
+
|
||||
/*
|
||||
* Start with a default rate, and if there is a clock, allow
|
||||
* it to override the default.
|
|
@ -1,322 +0,0 @@
|
|||
From 0e701e28611fc08558406accadae40be36fe5289 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
|
||||
Date: Wed, 29 May 2013 09:32:48 +0000
|
||||
Subject: [PATCH 25/29] net: mv643xx_eth: add DT parsing support
|
||||
|
||||
This adds device tree parsing support for the shared driver of mv643xx_eth.
|
||||
As the bindings are slightly different from current PPC bindings new binding
|
||||
documentation is also added. Following PPC-style device setup, the shared
|
||||
driver now also adds port platform_devices and sets up port platform_data.
|
||||
|
||||
Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
.../devicetree/bindings/net/marvell-orion-net.txt | 85 ++++++++++++
|
||||
drivers/net/ethernet/marvell/mv643xx_eth.c | 153 ++++++++++++++++++++-
|
||||
2 files changed, 234 insertions(+), 4 deletions(-)
|
||||
create mode 100644 Documentation/devicetree/bindings/net/marvell-orion-net.txt
|
||||
|
||||
--- /dev/null
|
||||
+++ b/Documentation/devicetree/bindings/net/marvell-orion-net.txt
|
||||
@@ -0,0 +1,85 @@
|
||||
+Marvell Orion/Discovery ethernet controller
|
||||
+=============================================
|
||||
+
|
||||
+The Marvell Discovery ethernet controller can be found on Marvell Orion SoCs
|
||||
+(Kirkwood, Dove, Orion5x, and Discovery Innovation) and as part of Marvell
|
||||
+Discovery system controller chips (mv64[345]60).
|
||||
+
|
||||
+The Discovery ethernet controller is described with two levels of nodes. The
|
||||
+first level describes the ethernet controller itself and the second level
|
||||
+describes up to 3 ethernet port nodes within that controller. The reason for
|
||||
+the multiple levels is that the port registers are interleaved within a single
|
||||
+set of controller registers. Each port node describes port-specific properties.
|
||||
+
|
||||
+Note: The above separation is only true for Discovery system controllers.
|
||||
+For Orion SoCs we stick to the separation, although there each controller has
|
||||
+only one port associated. Multiple ports are implemented as multiple single-port
|
||||
+controllers. As Kirkwood has some issues with proper initialization after reset,
|
||||
+an extra compatible string is added for it.
|
||||
+
|
||||
+* Ethernet controller node
|
||||
+
|
||||
+Required controller properties:
|
||||
+ - #address-cells: shall be 1.
|
||||
+ - #size-cells: shall be 0.
|
||||
+ - compatible: shall be one of "marvell,orion-eth", "marvell,kirkwood-eth".
|
||||
+ - reg: address and length of the controller registers.
|
||||
+
|
||||
+Optional controller properties:
|
||||
+ - clocks: phandle reference to the controller clock.
|
||||
+ - marvell,tx-checksum-limit: max tx packet size for hardware checksum.
|
||||
+
|
||||
+* Ethernet port node
|
||||
+
|
||||
+Required port properties:
|
||||
+ - device_type: shall be "network".
|
||||
+ - compatible: shall be one of "marvell,orion-eth-port",
|
||||
+ "marvell,kirkwood-eth-port".
|
||||
+ - reg: port number relative to ethernet controller, shall be 0, 1, or 2.
|
||||
+ - interrupts: port interrupt.
|
||||
+ - local-mac-address: 6 bytes MAC address.
|
||||
+
|
||||
+Optional port properties:
|
||||
+ - marvell,tx-queue-size: size of the transmit ring buffer.
|
||||
+ - marvell,tx-sram-addr: address of transmit descriptor buffer located in SRAM.
|
||||
+ - marvell,tx-sram-size: size of transmit descriptor buffer located in SRAM.
|
||||
+ - marvell,rx-queue-size: size of the receive ring buffer.
|
||||
+ - marvell,rx-sram-addr: address of receive descriptor buffer located in SRAM.
|
||||
+ - marvell,rx-sram-size: size of receive descriptor buffer located in SRAM.
|
||||
+
|
||||
+and
|
||||
+
|
||||
+ - phy-handle: phandle reference to ethernet PHY.
|
||||
+
|
||||
+or
|
||||
+
|
||||
+ - speed: port speed if no PHY connected.
|
||||
+ - duplex: port mode if no PHY connected.
|
||||
+
|
||||
+* Node example:
|
||||
+
|
||||
+mdio-bus {
|
||||
+ ...
|
||||
+ ethphy: ethernet-phy@8 {
|
||||
+ device_type = "ethernet-phy";
|
||||
+ ...
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+eth: ethernet-controller@72000 {
|
||||
+ compatible = "marvell,orion-eth";
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+ reg = <0x72000 0x2000>;
|
||||
+ clocks = <&gate_clk 2>;
|
||||
+ marvell,tx-checksum-limit = <1600>;
|
||||
+
|
||||
+ ethernet@0 {
|
||||
+ device_type = "network";
|
||||
+ compatible = "marvell,orion-eth-port";
|
||||
+ reg = <0>;
|
||||
+ interrupts = <29>;
|
||||
+ phy-handle = <ðphy>;
|
||||
+ local-mac-address = [00 00 00 00 00 00];
|
||||
+ };
|
||||
+};
|
||||
--- a/drivers/net/ethernet/marvell/mv643xx_eth.c
|
||||
+++ b/drivers/net/ethernet/marvell/mv643xx_eth.c
|
||||
@@ -60,6 +60,9 @@
|
||||
#include <linux/types.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/clk.h>
|
||||
+#include <linux/of.h>
|
||||
+#include <linux/of_irq.h>
|
||||
+#include <linux/of_net.h>
|
||||
#include <linux/of_mdio.h>
|
||||
|
||||
static char mv643xx_eth_driver_name[] = "mv643xx_eth";
|
||||
@@ -2452,13 +2455,148 @@ static void infer_hw_params(struct mv643
|
||||
}
|
||||
}
|
||||
|
||||
+#if defined(CONFIG_OF)
|
||||
+static const struct of_device_id mv643xx_eth_shared_ids[] = {
|
||||
+ { .compatible = "marvell,orion-eth", },
|
||||
+ { .compatible = "marvell,kirkwood-eth", },
|
||||
+ { }
|
||||
+};
|
||||
+MODULE_DEVICE_TABLE(of, mv643xx_eth_shared_ids);
|
||||
+#endif
|
||||
+
|
||||
+#if defined(CONFIG_OF) && !defined(CONFIG_MV64X60)
|
||||
+#define mv643xx_eth_property(_np, _name, _v) \
|
||||
+ do { \
|
||||
+ u32 tmp; \
|
||||
+ if (!of_property_read_u32(_np, "marvell," _name, &tmp)) \
|
||||
+ _v = tmp; \
|
||||
+ } while (0)
|
||||
+
|
||||
+static struct platform_device *port_platdev[3];
|
||||
+
|
||||
+static int mv643xx_eth_shared_of_add_port(struct platform_device *pdev,
|
||||
+ struct device_node *pnp)
|
||||
+{
|
||||
+ struct platform_device *ppdev;
|
||||
+ struct mv643xx_eth_platform_data ppd;
|
||||
+ struct resource res;
|
||||
+ const char *mac_addr;
|
||||
+ int ret;
|
||||
+
|
||||
+ memset(&ppd, 0, sizeof(ppd));
|
||||
+ ppd.shared = pdev;
|
||||
+
|
||||
+ memset(&res, 0, sizeof(res));
|
||||
+ if (!of_irq_to_resource(pnp, 0, &res)) {
|
||||
+ dev_err(&pdev->dev, "missing interrupt on %s\n", pnp->name);
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+
|
||||
+ if (of_property_read_u32(pnp, "reg", &ppd.port_number)) {
|
||||
+ dev_err(&pdev->dev, "missing reg property on %s\n", pnp->name);
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+
|
||||
+ if (ppd.port_number >= 3) {
|
||||
+ dev_err(&pdev->dev, "invalid reg property on %s\n", pnp->name);
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+
|
||||
+ mac_addr = of_get_mac_address(pnp);
|
||||
+ if (mac_addr)
|
||||
+ memcpy(ppd.mac_addr, mac_addr, 6);
|
||||
+
|
||||
+ mv643xx_eth_property(pnp, "tx-queue-size", ppd.tx_queue_size);
|
||||
+ mv643xx_eth_property(pnp, "tx-sram-addr", ppd.tx_sram_addr);
|
||||
+ mv643xx_eth_property(pnp, "tx-sram-size", ppd.tx_sram_size);
|
||||
+ mv643xx_eth_property(pnp, "rx-queue-size", ppd.rx_queue_size);
|
||||
+ mv643xx_eth_property(pnp, "rx-sram-addr", ppd.rx_sram_addr);
|
||||
+ mv643xx_eth_property(pnp, "rx-sram-size", ppd.rx_sram_size);
|
||||
+
|
||||
+ ppd.phy_node = of_parse_phandle(pnp, "phy-handle", 0);
|
||||
+ if (!ppd.phy_node) {
|
||||
+ ppd.phy_addr = MV643XX_ETH_PHY_NONE;
|
||||
+ of_property_read_u32(pnp, "speed", &ppd.speed);
|
||||
+ of_property_read_u32(pnp, "duplex", &ppd.duplex);
|
||||
+ }
|
||||
+
|
||||
+ ppdev = platform_device_alloc(MV643XX_ETH_NAME, ppd.port_number);
|
||||
+ if (!ppdev)
|
||||
+ return -ENOMEM;
|
||||
+ ppdev->dev.coherent_dma_mask = DMA_BIT_MASK(32);
|
||||
+
|
||||
+ ret = platform_device_add_resources(ppdev, &res, 1);
|
||||
+ if (ret)
|
||||
+ goto port_err;
|
||||
+
|
||||
+ ret = platform_device_add_data(ppdev, &ppd, sizeof(ppd));
|
||||
+ if (ret)
|
||||
+ goto port_err;
|
||||
+
|
||||
+ ret = platform_device_add(ppdev);
|
||||
+ if (ret)
|
||||
+ goto port_err;
|
||||
+
|
||||
+ port_platdev[ppd.port_number] = ppdev;
|
||||
+
|
||||
+ return 0;
|
||||
+
|
||||
+port_err:
|
||||
+ platform_device_put(ppdev);
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+static int mv643xx_eth_shared_of_probe(struct platform_device *pdev)
|
||||
+{
|
||||
+ struct mv643xx_eth_shared_platform_data *pd;
|
||||
+ struct device_node *pnp, *np = pdev->dev.of_node;
|
||||
+ int ret;
|
||||
+
|
||||
+ /* bail out if not registered from DT */
|
||||
+ if (!np)
|
||||
+ return 0;
|
||||
+
|
||||
+ pd = devm_kzalloc(&pdev->dev, sizeof(*pd), GFP_KERNEL);
|
||||
+ if (!pd)
|
||||
+ return -ENOMEM;
|
||||
+ pdev->dev.platform_data = pd;
|
||||
+
|
||||
+ mv643xx_eth_property(np, "tx-checksum-limit", pd->tx_csum_limit);
|
||||
+
|
||||
+ for_each_available_child_of_node(np, pnp) {
|
||||
+ ret = mv643xx_eth_shared_of_add_port(pdev, pnp);
|
||||
+ if (ret)
|
||||
+ return ret;
|
||||
+ }
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static void mv643xx_eth_shared_of_remove(void)
|
||||
+{
|
||||
+ int n;
|
||||
+
|
||||
+ for (n = 0; n < 3; n++) {
|
||||
+ platform_device_del(port_platdev[n]);
|
||||
+ port_platdev[n] = NULL;
|
||||
+ }
|
||||
+}
|
||||
+#else
|
||||
+static int mv643xx_eth_shared_of_probe(struct platform_device *pdev)
|
||||
+{
|
||||
+ return 0
|
||||
+}
|
||||
+
|
||||
+#define mv643xx_eth_shared_of_remove()
|
||||
+#endif
|
||||
+
|
||||
static int mv643xx_eth_shared_probe(struct platform_device *pdev)
|
||||
{
|
||||
static int mv643xx_eth_version_printed;
|
||||
- struct mv643xx_eth_shared_platform_data *pd = pdev->dev.platform_data;
|
||||
+ struct mv643xx_eth_shared_platform_data *pd;
|
||||
struct mv643xx_eth_shared_private *msp;
|
||||
const struct mbus_dram_target_info *dram;
|
||||
struct resource *res;
|
||||
+ int ret;
|
||||
|
||||
if (!mv643xx_eth_version_printed++)
|
||||
pr_notice("MV-643xx 10/100/1000 ethernet driver version %s\n",
|
||||
@@ -2471,6 +2609,7 @@ static int mv643xx_eth_shared_probe(stru
|
||||
msp = devm_kzalloc(&pdev->dev, sizeof(*msp), GFP_KERNEL);
|
||||
if (msp == NULL)
|
||||
return -ENOMEM;
|
||||
+ platform_set_drvdata(pdev, msp);
|
||||
|
||||
msp->base = devm_ioremap(&pdev->dev, res->start, resource_size(res));
|
||||
if (msp->base == NULL)
|
||||
@@ -2487,12 +2626,15 @@ static int mv643xx_eth_shared_probe(stru
|
||||
if (dram)
|
||||
mv643xx_eth_conf_mbus_windows(msp, dram);
|
||||
|
||||
+ ret = mv643xx_eth_shared_of_probe(pdev);
|
||||
+ if (ret)
|
||||
+ return ret;
|
||||
+ pd = pdev->dev.platform_data;
|
||||
+
|
||||
msp->tx_csum_limit = (pd != NULL && pd->tx_csum_limit) ?
|
||||
pd->tx_csum_limit : 9 * 1024;
|
||||
infer_hw_params(msp);
|
||||
|
||||
- platform_set_drvdata(pdev, msp);
|
||||
-
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -2500,9 +2642,9 @@ static int mv643xx_eth_shared_remove(str
|
||||
{
|
||||
struct mv643xx_eth_shared_private *msp = platform_get_drvdata(pdev);
|
||||
|
||||
+ mv643xx_eth_shared_of_remove();
|
||||
if (!IS_ERR(msp->clk))
|
||||
clk_disable_unprepare(msp->clk);
|
||||
-
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -2512,6 +2654,7 @@ static struct platform_driver mv643xx_et
|
||||
.driver = {
|
||||
.name = MV643XX_ETH_SHARED_NAME,
|
||||
.owner = THIS_MODULE,
|
||||
+ .of_match_table = of_match_ptr(mv643xx_eth_shared_ids),
|
||||
},
|
||||
};
|
||||
|
||||
@@ -2720,6 +2863,8 @@ static int mv643xx_eth_probe(struct plat
|
||||
if (!IS_ERR(mp->clk)) {
|
||||
clk_prepare_enable(mp->clk);
|
||||
mp->t_clk = clk_get_rate(mp->clk);
|
||||
+ } else if (!IS_ERR(mp->shared->clk)) {
|
||||
+ mp->t_clk = clk_get_rate(mp->shared->clk);
|
||||
}
|
||||
|
||||
set_params(mp, pd);
|
|
@ -1,617 +0,0 @@
|
|||
From 678cc6aa6f66182cddfc0c8fc34d4ef196669b83 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
|
||||
Date: Sun, 7 Jul 2013 22:34:56 +0200
|
||||
Subject: [PATCH 26/29] ARM: kirkwood: add gigabit ethernet and mvmdio device
|
||||
tree nodes
|
||||
|
||||
This patch adds mv643xx_eth and mvmdio device tree nodes for DT enabled
|
||||
Kirkwood boards. Phy nodes are also added with reg property set on a
|
||||
per-board basis.
|
||||
|
||||
Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
|
||||
Signed-off-by: Jason Cooper <jason@lakedaemon.net>
|
||||
---
|
||||
arch/arm/boot/dts/kirkwood-cloudbox.dts | 16 +++++++
|
||||
arch/arm/boot/dts/kirkwood-db.dtsi | 16 +++++++
|
||||
arch/arm/boot/dts/kirkwood-dnskw.dtsi | 16 +++++++
|
||||
arch/arm/boot/dts/kirkwood-dockstar.dts | 17 +++++++
|
||||
arch/arm/boot/dts/kirkwood-dreamplug.dts | 28 ++++++++++++
|
||||
arch/arm/boot/dts/kirkwood-goflexnet.dts | 16 +++++++
|
||||
.../arm/boot/dts/kirkwood-guruplug-server-plus.dts | 30 +++++++++++++
|
||||
arch/arm/boot/dts/kirkwood-ib62x0.dts | 16 +++++++
|
||||
arch/arm/boot/dts/kirkwood-iconnect.dts | 16 +++++++
|
||||
arch/arm/boot/dts/kirkwood-iomega_ix2_200.dts | 24 ++++++++++
|
||||
arch/arm/boot/dts/kirkwood-is2.dts | 2 +
|
||||
arch/arm/boot/dts/kirkwood-km_kirkwood.dts | 16 +++++++
|
||||
arch/arm/boot/dts/kirkwood-lsxl.dtsi | 28 ++++++++++++
|
||||
arch/arm/boot/dts/kirkwood-mplcec4.dts | 27 +++++++++++
|
||||
.../boot/dts/kirkwood-netgear_readynas_duo_v2.dts | 16 +++++++
|
||||
arch/arm/boot/dts/kirkwood-ns2-common.dtsi | 16 +++++++
|
||||
arch/arm/boot/dts/kirkwood-ns2.dts | 2 +
|
||||
arch/arm/boot/dts/kirkwood-ns2lite.dts | 2 +
|
||||
arch/arm/boot/dts/kirkwood-ns2max.dts | 2 +
|
||||
arch/arm/boot/dts/kirkwood-ns2mini.dts | 2 +
|
||||
arch/arm/boot/dts/kirkwood-openblocks_a6.dts | 16 +++++++
|
||||
arch/arm/boot/dts/kirkwood-topkick.dts | 16 +++++++
|
||||
arch/arm/boot/dts/kirkwood-ts219-6281.dts | 4 +-
|
||||
arch/arm/boot/dts/kirkwood-ts219-6282.dts | 4 +-
|
||||
arch/arm/boot/dts/kirkwood-ts219.dtsi | 16 +++++++
|
||||
arch/arm/boot/dts/kirkwood.dtsi | 52 ++++++++++++++++++++++
|
||||
26 files changed, 414 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/arch/arm/boot/dts/kirkwood-cloudbox.dts
|
||||
+++ b/arch/arm/boot/dts/kirkwood-cloudbox.dts
|
||||
@@ -87,3 +87,19 @@
|
||||
gpios = <&gpio0 17 0>;
|
||||
};
|
||||
};
|
||||
+
|
||||
+&mdio {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ ethphy0: ethernet-phy@0 {
|
||||
+ device_type = "ethernet-phy";
|
||||
+ reg = <0>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+ð0 {
|
||||
+ status = "okay";
|
||||
+ ethernet0-port@0 {
|
||||
+ phy-handle = <ðphy0>;
|
||||
+ };
|
||||
+};
|
||||
--- a/arch/arm/boot/dts/kirkwood-db.dtsi
|
||||
+++ b/arch/arm/boot/dts/kirkwood-db.dtsi
|
||||
@@ -87,3 +87,19 @@
|
||||
};
|
||||
};
|
||||
};
|
||||
+
|
||||
+&mdio {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ ethphy0: ethernet-phy@8 {
|
||||
+ device_type = "ethernet-phy";
|
||||
+ reg = <8>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+ð0 {
|
||||
+ status = "okay";
|
||||
+ ethernet0-port@0 {
|
||||
+ phy-handle = <ðphy0>;
|
||||
+ };
|
||||
+};
|
||||
--- a/arch/arm/boot/dts/kirkwood-dnskw.dtsi
|
||||
+++ b/arch/arm/boot/dts/kirkwood-dnskw.dtsi
|
||||
@@ -217,3 +217,19 @@
|
||||
};
|
||||
};
|
||||
};
|
||||
+
|
||||
+&mdio {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ ethphy0: ethernet-phy@8 {
|
||||
+ device_type = "ethernet-phy";
|
||||
+ reg = <8>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+ð0 {
|
||||
+ status = "okay";
|
||||
+ ethernet0-port@0 {
|
||||
+ phy-handle = <ðphy0>;
|
||||
+ };
|
||||
+};
|
||||
--- a/arch/arm/boot/dts/kirkwood-dockstar.dts
|
||||
+++ b/arch/arm/boot/dts/kirkwood-dockstar.dts
|
||||
@@ -91,3 +91,20 @@
|
||||
};
|
||||
};
|
||||
};
|
||||
+
|
||||
+&mdio {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ ethphy0: ethernet-phy@0 {
|
||||
+ device_type = "ethernet-phy";
|
||||
+ compatible = "marvell,88e1116";
|
||||
+ reg = <0>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+ð0 {
|
||||
+ status = "okay";
|
||||
+ ethernet0-port@0 {
|
||||
+ phy-handle = <ðphy0>;
|
||||
+ };
|
||||
+};
|
||||
--- a/arch/arm/boot/dts/kirkwood-dreamplug.dts
|
||||
+++ b/arch/arm/boot/dts/kirkwood-dreamplug.dts
|
||||
@@ -99,3 +99,31 @@
|
||||
};
|
||||
};
|
||||
};
|
||||
+
|
||||
+&mdio {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ ethphy0: ethernet-phy@0 {
|
||||
+ device_type = "ethernet-phy";
|
||||
+ reg = <0>;
|
||||
+ };
|
||||
+
|
||||
+ ethphy1: ethernet-phy@1 {
|
||||
+ device_type = "ethernet-phy";
|
||||
+ reg = <1>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+ð0 {
|
||||
+ status = "okay";
|
||||
+ ethernet0-port@0 {
|
||||
+ phy-handle = <ðphy0>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+ð1 {
|
||||
+ status = "okay";
|
||||
+ ethernet1-port@0 {
|
||||
+ phy-handle = <ðphy1>;
|
||||
+ };
|
||||
+};
|
||||
--- a/arch/arm/boot/dts/kirkwood-goflexnet.dts
|
||||
+++ b/arch/arm/boot/dts/kirkwood-goflexnet.dts
|
||||
@@ -170,3 +170,19 @@
|
||||
};
|
||||
};
|
||||
};
|
||||
+
|
||||
+&mdio {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ ethphy0: ethernet-phy@0 {
|
||||
+ device_type = "ethernet-phy";
|
||||
+ reg = <0>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+ð0 {
|
||||
+ status = "okay";
|
||||
+ ethernet0-port@0 {
|
||||
+ phy-handle = <ðphy0>;
|
||||
+ };
|
||||
+};
|
||||
--- a/arch/arm/boot/dts/kirkwood-guruplug-server-plus.dts
|
||||
+++ b/arch/arm/boot/dts/kirkwood-guruplug-server-plus.dts
|
||||
@@ -96,3 +96,33 @@
|
||||
};
|
||||
};
|
||||
};
|
||||
+
|
||||
+&mdio {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ ethphy0: ethernet-phy@0 {
|
||||
+ device_type = "ethernet-phy";
|
||||
+ compatible = "marvell,88e1121";
|
||||
+ reg = <0>;
|
||||
+ };
|
||||
+
|
||||
+ ethphy1: ethernet-phy@1 {
|
||||
+ device_type = "ethernet-phy";
|
||||
+ compatible = "marvell,88e1121";
|
||||
+ reg = <1>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+ð0 {
|
||||
+ status = "okay";
|
||||
+ ethernet0-port@0 {
|
||||
+ phy-handle = <ðphy0>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+ð1 {
|
||||
+ status = "okay";
|
||||
+ ethernet1-port@0 {
|
||||
+ phy-handle = <ðphy1>;
|
||||
+ };
|
||||
+};
|
||||
--- a/arch/arm/boot/dts/kirkwood-ib62x0.dts
|
||||
+++ b/arch/arm/boot/dts/kirkwood-ib62x0.dts
|
||||
@@ -119,3 +119,19 @@
|
||||
|
||||
|
||||
};
|
||||
+
|
||||
+&mdio {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ ethphy0: ethernet-phy@8 {
|
||||
+ device_type = "ethernet-phy";
|
||||
+ reg = <8>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+ð0 {
|
||||
+ status = "okay";
|
||||
+ ethernet0-port@0 {
|
||||
+ phy-handle = <ðphy0>;
|
||||
+ };
|
||||
+};
|
||||
--- a/arch/arm/boot/dts/kirkwood-iconnect.dts
|
||||
+++ b/arch/arm/boot/dts/kirkwood-iconnect.dts
|
||||
@@ -176,3 +176,19 @@
|
||||
};
|
||||
};
|
||||
};
|
||||
+
|
||||
+&mdio {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ ethphy0: ethernet-phy@11 {
|
||||
+ device_type = "ethernet-phy";
|
||||
+ reg = <11>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+ð0 {
|
||||
+ status = "okay";
|
||||
+ ethernet0-port@0 {
|
||||
+ phy-handle = <ðphy0>;
|
||||
+ };
|
||||
+};
|
||||
--- a/arch/arm/boot/dts/kirkwood-iomega_ix2_200.dts
|
||||
+++ b/arch/arm/boot/dts/kirkwood-iomega_ix2_200.dts
|
||||
@@ -191,3 +191,27 @@
|
||||
};
|
||||
};
|
||||
};
|
||||
+
|
||||
+&mdio {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ ethphy1: ethernet-phy@11 {
|
||||
+ device_type = "ethernet-phy";
|
||||
+ reg = <11>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+ð0 {
|
||||
+ status = "okay";
|
||||
+ ethernet0-port@0 {
|
||||
+ speed = <1000>;
|
||||
+ duplex = <1>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+ð1 {
|
||||
+ status = "okay";
|
||||
+ ethernet1-port@0 {
|
||||
+ phy-handle = <ðphy1>;
|
||||
+ };
|
||||
+};
|
||||
--- a/arch/arm/boot/dts/kirkwood-is2.dts
|
||||
+++ b/arch/arm/boot/dts/kirkwood-is2.dts
|
||||
@@ -28,3 +28,5 @@
|
||||
};
|
||||
};
|
||||
};
|
||||
+
|
||||
+ðphy0 { reg = <8>; };
|
||||
--- a/arch/arm/boot/dts/kirkwood-km_kirkwood.dts
|
||||
+++ b/arch/arm/boot/dts/kirkwood-km_kirkwood.dts
|
||||
@@ -43,3 +43,19 @@
|
||||
};
|
||||
};
|
||||
};
|
||||
+
|
||||
+&mdio {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ ethphy0: ethernet-phy@0 {
|
||||
+ device_type = "ethernet-phy";
|
||||
+ reg = <0>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+ð0 {
|
||||
+ status = "okay";
|
||||
+ ethernet0-port@0 {
|
||||
+ phy-handle = <ðphy0>;
|
||||
+ };
|
||||
+};
|
||||
--- a/arch/arm/boot/dts/kirkwood-lsxl.dtsi
|
||||
+++ b/arch/arm/boot/dts/kirkwood-lsxl.dtsi
|
||||
@@ -201,3 +201,31 @@
|
||||
};
|
||||
};
|
||||
};
|
||||
+
|
||||
+&mdio {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ ethphy0: ethernet-phy@0 {
|
||||
+ device_type = "ethernet-phy";
|
||||
+ reg = <0>;
|
||||
+ };
|
||||
+
|
||||
+ ethphy1: ethernet-phy@8 {
|
||||
+ device_type = "ethernet-phy";
|
||||
+ reg = <8>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+ð0 {
|
||||
+ status = "okay";
|
||||
+ ethernet0-port@0 {
|
||||
+ phy-handle = <ðphy0>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+ð1 {
|
||||
+ status = "okay";
|
||||
+ ethernet1-port@0 {
|
||||
+ phy-handle = <ðphy1>;
|
||||
+ };
|
||||
+};
|
||||
--- a/arch/arm/boot/dts/kirkwood-mplcec4.dts
|
||||
+++ b/arch/arm/boot/dts/kirkwood-mplcec4.dts
|
||||
@@ -190,3 +190,30 @@
|
||||
};
|
||||
};
|
||||
|
||||
+&mdio {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ ethphy0: ethernet-phy@1 {
|
||||
+ device_type = "ethernet-phy";
|
||||
+ reg = <1>;
|
||||
+ };
|
||||
+
|
||||
+ ethphy1: ethernet-phy@2 {
|
||||
+ device_type = "ethernet-phy";
|
||||
+ reg = <2>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+ð0 {
|
||||
+ status = "okay";
|
||||
+ ethernet0-port@0 {
|
||||
+ phy-handle = <ðphy0>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+ð1 {
|
||||
+ status = "okay";
|
||||
+ ethernet1-port@0 {
|
||||
+ phy-handle = <ðphy1>;
|
||||
+ };
|
||||
+};
|
||||
--- a/arch/arm/boot/dts/kirkwood-netgear_readynas_duo_v2.dts
|
||||
+++ b/arch/arm/boot/dts/kirkwood-netgear_readynas_duo_v2.dts
|
||||
@@ -178,3 +178,19 @@
|
||||
};
|
||||
};
|
||||
};
|
||||
+
|
||||
+&mdio {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ ethphy0: ethernet-phy@0 {
|
||||
+ device_type = "ethernet-phy";
|
||||
+ reg = <0>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+ð0 {
|
||||
+ status = "okay";
|
||||
+ ethernet0-port@0 {
|
||||
+ phy-handle = <ðphy0>;
|
||||
+ };
|
||||
+};
|
||||
--- a/arch/arm/boot/dts/kirkwood-ns2-common.dtsi
|
||||
+++ b/arch/arm/boot/dts/kirkwood-ns2-common.dtsi
|
||||
@@ -82,3 +82,19 @@
|
||||
};
|
||||
|
||||
};
|
||||
+
|
||||
+&mdio {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ ethphy0: ethernet-phy {
|
||||
+ device_type = "ethernet-phy";
|
||||
+ /* overwrite reg property in board file */
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+ð0 {
|
||||
+ status = "okay";
|
||||
+ ethernet0-port@0 {
|
||||
+ phy-handle = <ðphy0>;
|
||||
+ };
|
||||
+};
|
||||
--- a/arch/arm/boot/dts/kirkwood-ns2.dts
|
||||
+++ b/arch/arm/boot/dts/kirkwood-ns2.dts
|
||||
@@ -28,3 +28,5 @@
|
||||
};
|
||||
};
|
||||
};
|
||||
+
|
||||
+ðphy0 { reg = <8>; };
|
||||
--- a/arch/arm/boot/dts/kirkwood-ns2lite.dts
|
||||
+++ b/arch/arm/boot/dts/kirkwood-ns2lite.dts
|
||||
@@ -28,3 +28,5 @@
|
||||
};
|
||||
};
|
||||
};
|
||||
+
|
||||
+ðphy0 { reg = <0>; };
|
||||
--- a/arch/arm/boot/dts/kirkwood-ns2max.dts
|
||||
+++ b/arch/arm/boot/dts/kirkwood-ns2max.dts
|
||||
@@ -47,3 +47,5 @@
|
||||
};
|
||||
};
|
||||
};
|
||||
+
|
||||
+ðphy0 { reg = <8>; };
|
||||
--- a/arch/arm/boot/dts/kirkwood-ns2mini.dts
|
||||
+++ b/arch/arm/boot/dts/kirkwood-ns2mini.dts
|
||||
@@ -48,3 +48,5 @@
|
||||
};
|
||||
};
|
||||
};
|
||||
+
|
||||
+ðphy0 { reg = <0>; };
|
||||
--- a/arch/arm/boot/dts/kirkwood-openblocks_a6.dts
|
||||
+++ b/arch/arm/boot/dts/kirkwood-openblocks_a6.dts
|
||||
@@ -210,3 +210,19 @@
|
||||
};
|
||||
};
|
||||
};
|
||||
+
|
||||
+&mdio {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ ethphy0: ethernet-phy@0 {
|
||||
+ device_type = "ethernet-phy";
|
||||
+ reg = <0>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+ð0 {
|
||||
+ status = "okay";
|
||||
+ ethernet0-port@0 {
|
||||
+ phy-handle = <ðphy0>;
|
||||
+ };
|
||||
+};
|
||||
--- a/arch/arm/boot/dts/kirkwood-topkick.dts
|
||||
+++ b/arch/arm/boot/dts/kirkwood-topkick.dts
|
||||
@@ -201,3 +201,19 @@
|
||||
};
|
||||
};
|
||||
};
|
||||
+
|
||||
+&mdio {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ ethphy0: ethernet-phy@0 {
|
||||
+ device_type = "ethernet-phy";
|
||||
+ reg = <0>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+ð0 {
|
||||
+ status = "okay";
|
||||
+ ethernet0-port@0 {
|
||||
+ phy-handle = <ðphy0>;
|
||||
+ };
|
||||
+};
|
||||
--- a/arch/arm/boot/dts/kirkwood-ts219-6281.dts
|
||||
+++ b/arch/arm/boot/dts/kirkwood-ts219-6281.dts
|
||||
@@ -50,4 +50,6 @@
|
||||
gpios = <&gpio0 16 1>;
|
||||
};
|
||||
};
|
||||
-};
|
||||
\ No newline at end of file
|
||||
+};
|
||||
+
|
||||
+ðphy0 { reg = <8>; };
|
||||
--- a/arch/arm/boot/dts/kirkwood-ts219-6282.dts
|
||||
+++ b/arch/arm/boot/dts/kirkwood-ts219-6282.dts
|
||||
@@ -50,4 +50,6 @@
|
||||
gpios = <&gpio1 5 1>;
|
||||
};
|
||||
};
|
||||
-};
|
||||
\ No newline at end of file
|
||||
+};
|
||||
+
|
||||
+ðphy0 { reg = <0>; };
|
||||
--- a/arch/arm/boot/dts/kirkwood-ts219.dtsi
|
||||
+++ b/arch/arm/boot/dts/kirkwood-ts219.dtsi
|
||||
@@ -81,3 +81,19 @@
|
||||
};
|
||||
};
|
||||
};
|
||||
+
|
||||
+&mdio {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ ethphy0: ethernet-phy {
|
||||
+ device_type = "ethernet-phy";
|
||||
+ /* overwrite reg property in board file */
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+ð0 {
|
||||
+ status = "okay";
|
||||
+ ethernet0-port@0 {
|
||||
+ phy-handle = <ðphy0>;
|
||||
+ };
|
||||
+};
|
||||
--- a/arch/arm/boot/dts/kirkwood.dtsi
|
||||
+++ b/arch/arm/boot/dts/kirkwood.dtsi
|
||||
@@ -203,5 +203,57 @@
|
||||
clocks = <&gate_clk 4>;
|
||||
status = "disabled";
|
||||
};
|
||||
+
|
||||
+ mdio: mdio-bus@72004 {
|
||||
+ compatible = "marvell,orion-mdio";
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+ reg = <0x72004 0x84>;
|
||||
+ interrupts = <46>;
|
||||
+ clocks = <&gate_clk 0>;
|
||||
+ status = "disabled";
|
||||
+
|
||||
+ /* add phy nodes in board file */
|
||||
+ };
|
||||
+
|
||||
+ eth0: ethernet-controller@72000 {
|
||||
+ compatible = "marvell,kirkwood-eth";
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+ reg = <0x72000 0x4000>;
|
||||
+ clocks = <&gate_clk 0>;
|
||||
+ marvell,tx-checksum-limit = <1600>;
|
||||
+ status = "disabled";
|
||||
+
|
||||
+ ethernet0-port@0 {
|
||||
+ device_type = "network";
|
||||
+ compatible = "marvell,kirkwood-eth-port";
|
||||
+ reg = <0>;
|
||||
+ interrupts = <11>;
|
||||
+ /* overwrite MAC address in bootloader */
|
||||
+ local-mac-address = [00 00 00 00 00 00];
|
||||
+ /* set phy-handle property in board file */
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ eth1: ethernet-controller@76000 {
|
||||
+ compatible = "marvell,kirkwood-eth";
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+ reg = <0x76000 0x4000>;
|
||||
+ clocks = <&gate_clk 19>;
|
||||
+ marvell,tx-checksum-limit = <1600>;
|
||||
+ status = "disabled";
|
||||
+
|
||||
+ ethernet1-port@0 {
|
||||
+ device_type = "network";
|
||||
+ compatible = "marvell,kirkwood-eth-port";
|
||||
+ reg = <0>;
|
||||
+ interrupts = <15>;
|
||||
+ /* overwrite MAC address in bootloader */
|
||||
+ local-mac-address = [00 00 00 00 00 00];
|
||||
+ /* set phy-handle property in board file */
|
||||
+ };
|
||||
+ };
|
||||
};
|
||||
};
|
File diff suppressed because it is too large
Load Diff
|
@ -1,29 +0,0 @@
|
|||
From 57bad8fd425fd4fd2ae6e4ae1e7e19c9281d2d3d Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
|
||||
Date: Tue, 2 Jul 2013 13:00:23 +0200
|
||||
Subject: [PATCH 28/29] ARM: kirkwood: remove legacy clk alias for mv643xx_eth
|
||||
|
||||
With all boards converted to DT enabled mv643xx_eth we can now
|
||||
remove the clock alias for gbe clocks.
|
||||
|
||||
Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
|
||||
Signed-off-by: Jason Cooper <jason@lakedaemon.net>
|
||||
---
|
||||
arch/arm/mach-kirkwood/board-dt.c | 2 --
|
||||
1 file changed, 2 deletions(-)
|
||||
|
||||
--- a/arch/arm/mach-kirkwood/board-dt.c
|
||||
+++ b/arch/arm/mach-kirkwood/board-dt.c
|
||||
@@ -66,12 +66,10 @@ static void __init kirkwood_legacy_clk_i
|
||||
*/
|
||||
clkspec.args[0] = CGC_BIT_GE0;
|
||||
clk = of_clk_get_from_provider(&clkspec);
|
||||
- orion_clkdev_add(NULL, "mv643xx_eth_port.0", clk);
|
||||
clk_prepare_enable(clk);
|
||||
|
||||
clkspec.args[0] = CGC_BIT_GE1;
|
||||
clk = of_clk_get_from_provider(&clkspec);
|
||||
- orion_clkdev_add(NULL, "mv643xx_eth_port.1", clk);
|
||||
clk_prepare_enable(clk);
|
||||
}
|
||||
|
|
@ -1,62 +0,0 @@
|
|||
From dc4eff91629aa5132f9c0737ef6d9ef013d4f8ce Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Gorski <jogo@openwrt.org>
|
||||
Date: Mon, 8 Jul 2013 00:44:55 +0200
|
||||
Subject: [PATCH 29/29] net: mv643xx_eth: do not use port number as platform
|
||||
device id
|
||||
|
||||
The port number is only local to the ethernet block, not global, so
|
||||
there can be two ethernet blocks both using the same port, like
|
||||
kirkwood with both using port 0.
|
||||
|
||||
Fix this by using the array index offset for the allocated platform
|
||||
devices as the id.
|
||||
|
||||
Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
drivers/net/ethernet/marvell/mv643xx_eth.c | 13 +++++++++++--
|
||||
1 file changed, 11 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/drivers/net/ethernet/marvell/mv643xx_eth.c
|
||||
+++ b/drivers/net/ethernet/marvell/mv643xx_eth.c
|
||||
@@ -2482,6 +2482,7 @@ static int mv643xx_eth_shared_of_add_por
|
||||
struct resource res;
|
||||
const char *mac_addr;
|
||||
int ret;
|
||||
+ int dev_num = 0;
|
||||
|
||||
memset(&ppd, 0, sizeof(ppd));
|
||||
ppd.shared = pdev;
|
||||
@@ -2502,6 +2503,14 @@ static int mv643xx_eth_shared_of_add_por
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
+ while (dev_num < 3 && port_platdev[dev_num])
|
||||
+ dev_num++;
|
||||
+
|
||||
+ if (dev_num == 3) {
|
||||
+ dev_err(&pdev->dev, "too many ports registered\n");
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+
|
||||
mac_addr = of_get_mac_address(pnp);
|
||||
if (mac_addr)
|
||||
memcpy(ppd.mac_addr, mac_addr, 6);
|
||||
@@ -2520,7 +2529,7 @@ static int mv643xx_eth_shared_of_add_por
|
||||
of_property_read_u32(pnp, "duplex", &ppd.duplex);
|
||||
}
|
||||
|
||||
- ppdev = platform_device_alloc(MV643XX_ETH_NAME, ppd.port_number);
|
||||
+ ppdev = platform_device_alloc(MV643XX_ETH_NAME, dev_num);
|
||||
if (!ppdev)
|
||||
return -ENOMEM;
|
||||
ppdev->dev.coherent_dma_mask = DMA_BIT_MASK(32);
|
||||
@@ -2537,7 +2546,7 @@ static int mv643xx_eth_shared_of_add_por
|
||||
if (ret)
|
||||
goto port_err;
|
||||
|
||||
- port_platdev[ppd.port_number] = ppdev;
|
||||
+ port_platdev[dev_num] = ppdev;
|
||||
|
||||
return 0;
|
||||
|
|
@ -1,132 +0,0 @@
|
|||
From f7d3f7790b75b098e1c92530dc3d28ba3b40b5a4 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Gorski <jogo@openwrt.org>
|
||||
Date: Sat, 10 Aug 2013 12:48:51 +0200
|
||||
Subject: [PATCH 28/29] of: add support for parsing mac addresses from mtd
|
||||
|
||||
Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
---
|
||||
drivers/of/of_net.c | 100 +++++++++++++++++++++++++++++++++++++++++++++++++++-
|
||||
1 file changed, 99 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/of/of_net.c
|
||||
+++ b/drivers/of/of_net.c
|
||||
@@ -10,6 +10,7 @@
|
||||
#include <linux/of_net.h>
|
||||
#include <linux/phy.h>
|
||||
#include <linux/export.h>
|
||||
+#include <linux/mtd/mtd.h>
|
||||
|
||||
/**
|
||||
* It maps 'enum phy_interface_t' found in include/linux/phy.h
|
||||
@@ -55,6 +56,103 @@ const int of_get_phy_mode(struct device_
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(of_get_phy_mode);
|
||||
|
||||
+static const void *of_get_mac_address_mtd(struct device_node *np)
|
||||
+{
|
||||
+ const __be32 *list;
|
||||
+ int size, ret;
|
||||
+ size_t ret_len;
|
||||
+ phandle phandle;
|
||||
+ struct device_node *part_node;
|
||||
+ struct mtd_info *mtd;
|
||||
+ const char *part;
|
||||
+ u8 mac[ETH_ALEN];
|
||||
+ u64 offset;
|
||||
+ bool parse_mac = false;
|
||||
+
|
||||
+ if (!IS_ENABLED(CONFIG_MTD))
|
||||
+ return NULL;
|
||||
+
|
||||
+ list = of_get_property(np, "mtd-mac-address", &size);
|
||||
+
|
||||
+ if (!list) {
|
||||
+ list = of_get_property(np, "mtd-mac-address-string", &size);
|
||||
+ parse_mac = true;
|
||||
+ }
|
||||
+
|
||||
+ if (!list)
|
||||
+ return NULL;
|
||||
+
|
||||
+ if (size != sizeof(*list) * 2)
|
||||
+ return NULL;
|
||||
+
|
||||
+ phandle = be32_to_cpup(list++);
|
||||
+ if (!phandle)
|
||||
+ return NULL;
|
||||
+
|
||||
+ part_node = of_find_node_by_phandle(phandle);
|
||||
+ if (!part_node)
|
||||
+ return NULL;
|
||||
+
|
||||
+ offset = be32_to_cpup(list++);
|
||||
+
|
||||
+ part = of_get_property(part_node, "label", NULL);
|
||||
+ if (!part)
|
||||
+ part = part_node->name;
|
||||
+
|
||||
+ mtd = get_mtd_device_nm(part);
|
||||
+
|
||||
+ of_node_put(part_node);
|
||||
+
|
||||
+ if (IS_ERR(mtd))
|
||||
+ return NULL;
|
||||
+
|
||||
+ if (parse_mac) {
|
||||
+ u8 mac_str[18];
|
||||
+
|
||||
+ ret = mtd_read(mtd, offset, 18, &ret_len, (u_char *)&mac_str);
|
||||
+ if (!ret && ret_len != 18)
|
||||
+ ret = -EIO;
|
||||
+
|
||||
+ if (!ret)
|
||||
+ ret_len = sscanf(mac_str, "%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx",
|
||||
+ mac, mac + 1, mac + 2, mac + 3,
|
||||
+ mac + 4, mac + 5);
|
||||
+
|
||||
+ } else {
|
||||
+ ret = mtd_read(mtd, offset, ETH_ALEN, &ret_len, (u_char *)&mac);
|
||||
+ }
|
||||
+
|
||||
+ put_mtd_device(mtd);
|
||||
+
|
||||
+ if (!ret && ret_len == ETH_ALEN && is_valid_ether_addr(mac)) {
|
||||
+ struct property *pp = kzalloc(sizeof(*pp), GFP_KERNEL);
|
||||
+
|
||||
+ if (!pp)
|
||||
+ return NULL;
|
||||
+
|
||||
+ pp->name = kstrdup("mac-address", GFP_KERNEL);
|
||||
+ pp->value = kzalloc(ETH_ALEN, GFP_KERNEL);
|
||||
+
|
||||
+ if (!pp->name || !pp->value) {
|
||||
+ kfree(pp->name);
|
||||
+ kfree(pp);
|
||||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
+ memcpy(pp->value, mac, ETH_ALEN);
|
||||
+ pp->length = ETH_ALEN;
|
||||
+
|
||||
+ if (of_find_property(np, "mac-address", NULL))
|
||||
+ of_update_property(np, pp);
|
||||
+ else
|
||||
+ of_add_property(np, pp);
|
||||
+
|
||||
+ return pp->value;
|
||||
+ }
|
||||
+
|
||||
+ return NULL;
|
||||
+}
|
||||
+
|
||||
/**
|
||||
* Search the device tree for the best MAC address to use. 'mac-address' is
|
||||
* checked first, because that is supposed to contain to "most recent" MAC
|
||||
@@ -89,6 +187,6 @@ const void *of_get_mac_address(struct de
|
||||
if (pp && (pp->length == 6) && is_valid_ether_addr(pp->value))
|
||||
return pp->value;
|
||||
|
||||
- return NULL;
|
||||
+ return of_get_mac_address_mtd(np);
|
||||
}
|
||||
EXPORT_SYMBOL(of_get_mac_address);
|
|
@ -1,87 +0,0 @@
|
|||
--- a/arch/arm/boot/dts/kirkwood-ib62x0.dts
|
||||
+++ b/arch/arm/boot/dts/kirkwood-ib62x0.dts
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
/ {
|
||||
model = "RaidSonic ICY BOX IB-NAS62x0 (Rev B)";
|
||||
- compatible = "raidsonic,ib-nas6210-b", "raidsonic,ib-nas6220-b", "raidsonic,ib-nas6210", "raidsonic,ib-nas6220", "raidsonic,ib-nas62x0", "marvell,kirkwood-88f6281", "marvell,kirkwood";
|
||||
+ compatible = "raidsonic,ib-nas6210-b", "raidsonic,ib-nas6220-b", "raidsonic,ib-nas6210", "raidsonic,ib-nas6220", "raidsonic,ib-nas62x0", "marvell,kirkwood-88f6281", "marvell,kirkwood";
|
||||
|
||||
memory {
|
||||
device_type = "memory";
|
||||
@@ -50,6 +50,7 @@
|
||||
marvell,function = "gpio";
|
||||
};
|
||||
};
|
||||
+
|
||||
serial@12000 {
|
||||
status = "okay";
|
||||
};
|
||||
@@ -64,19 +65,23 @@
|
||||
|
||||
partition@0 {
|
||||
label = "u-boot";
|
||||
- reg = <0x0000000 0x100000>;
|
||||
+ reg = <0x0000000 0xe0000>;
|
||||
+ };
|
||||
+
|
||||
+ partition@e0000 {
|
||||
+ label = "u-boot environment";
|
||||
+ reg = <0xe0000 0x100000>;
|
||||
};
|
||||
|
||||
partition@100000 {
|
||||
- label = "uImage";
|
||||
- reg = <0x0100000 0x600000>;
|
||||
+ label = "second stage u-boot";
|
||||
+ reg = <0x100000 0x200000>;
|
||||
};
|
||||
|
||||
- partition@700000 {
|
||||
+ partition@200000 {
|
||||
label = "root";
|
||||
- reg = <0x0700000 0xf900000>;
|
||||
+ reg = <0x200000 0xfe00000>;
|
||||
};
|
||||
-
|
||||
};
|
||||
};
|
||||
|
||||
@@ -84,6 +89,7 @@
|
||||
compatible = "gpio-keys";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
+
|
||||
button@1 {
|
||||
label = "USB Copy";
|
||||
linux,code = <133>;
|
||||
@@ -95,6 +101,7 @@
|
||||
gpios = <&gpio0 28 1>;
|
||||
};
|
||||
};
|
||||
+
|
||||
gpio-leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
@@ -112,12 +119,11 @@
|
||||
gpios = <&gpio0 27 0>;
|
||||
};
|
||||
};
|
||||
+
|
||||
gpio_poweroff {
|
||||
compatible = "gpio-poweroff";
|
||||
gpios = <&gpio0 24 0>;
|
||||
};
|
||||
-
|
||||
-
|
||||
};
|
||||
|
||||
&mdio {
|
||||
@@ -131,6 +137,7 @@
|
||||
|
||||
ð0 {
|
||||
status = "okay";
|
||||
+
|
||||
ethernet0-port@0 {
|
||||
phy-handle = <ðphy0>;
|
||||
};
|
|
@ -1,130 +0,0 @@
|
|||
--- /dev/null
|
||||
+++ b/arch/arm/boot/dts/kirkwood-pogo_e02.dts
|
||||
@@ -0,0 +1,117 @@
|
||||
+/dts-v1/;
|
||||
+
|
||||
+/include/ "kirkwood.dtsi"
|
||||
+/include/ "kirkwood-6281.dtsi"
|
||||
+
|
||||
+/ {
|
||||
+ model = "Cloud Engines Pogoplug E02";
|
||||
+ compatible = "cloudengines,pogoe02", "marvell,kirkwood-88f6281", "marvell,kirkwood";
|
||||
+
|
||||
+ memory {
|
||||
+ device_type = "memory";
|
||||
+ reg = <0x00000000 0x10000000>;
|
||||
+ };
|
||||
+
|
||||
+ chosen {
|
||||
+ bootargs = "console=ttyS0,115200n8 earlyprintk";
|
||||
+ };
|
||||
+
|
||||
+ ocp@f1000000 {
|
||||
+ pinctrl: pinctrl@10000 {
|
||||
+
|
||||
+ pinctrl-0 = < &pmx_usb_power_enable &pmx_led_orange
|
||||
+ &pmx_led_green >;
|
||||
+ pinctrl-names = "default";
|
||||
+
|
||||
+ pmx_usb_power_enable: pmx-usb-power-enable {
|
||||
+ marvell,pins = "mpp29";
|
||||
+ marvell,function = "gpio";
|
||||
+ };
|
||||
+ pmx_led_green: pmx-led_green {
|
||||
+ marvell,pins = "mpp48";
|
||||
+ marvell,function = "gpio";
|
||||
+ };
|
||||
+ pmx_led_orange: pmx-led_orange {
|
||||
+ marvell,pins = "mpp49";
|
||||
+ marvell,function = "gpio";
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ serial@12000 {
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+
|
||||
+ nand@3000000 {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ partition@0 {
|
||||
+ label = "u-boot";
|
||||
+ reg = <0x0000000 0x100000>;
|
||||
+ };
|
||||
+
|
||||
+ partition@100000 {
|
||||
+ label = "uImage";
|
||||
+ reg = <0x0100000 0x400000>;
|
||||
+ };
|
||||
+
|
||||
+ partition@500000 {
|
||||
+ label = "rootfs";
|
||||
+ reg = <0x0500000 0x2000000>;
|
||||
+ };
|
||||
+
|
||||
+ partition@2500000 {
|
||||
+ label = "data";
|
||||
+ reg = <0x2500000 0x5b00000>;
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ gpio-leds {
|
||||
+ compatible = "gpio-leds";
|
||||
+
|
||||
+ health {
|
||||
+ label = "status:green:health";
|
||||
+ gpios = <&gpio1 16 1>;
|
||||
+ linux,default-trigger = "default-on";
|
||||
+ };
|
||||
+ fault {
|
||||
+ label = "status:orange:fault";
|
||||
+ gpios = <&gpio1 17 1>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ regulators {
|
||||
+ compatible = "simple-bus";
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+
|
||||
+ usb_power: regulator@1 {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ reg = <1>;
|
||||
+ regulator-name = "USB Power";
|
||||
+ regulator-min-microvolt = <5000000>;
|
||||
+ regulator-max-microvolt = <5000000>;
|
||||
+ enable-active-high;
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ gpio = <&gpio0 29 0>;
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&mdio {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ ethphy0: ethernet-phy@0 {
|
||||
+ device_type = "ethernet-phy";
|
||||
+ reg = <0>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+ð0 {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ ethernet0-port@0 {
|
||||
+ phy-handle = <ðphy0>;
|
||||
+ };
|
||||
+};
|
||||
--- a/arch/arm/boot/dts/Makefile
|
||||
+++ b/arch/arm/boot/dts/Makefile
|
||||
@@ -86,6 +86,7 @@ dtb-$(CONFIG_ARCH_KIRKWOOD) += kirkwood-
|
||||
kirkwood-ns2max.dtb \
|
||||
kirkwood-ns2mini.dtb \
|
||||
kirkwood-nsa310.dtb \
|
||||
+ kirkwood-pogo_e02.dtb \
|
||||
kirkwood-topkick.dtb \
|
||||
kirkwood-ts219-6281.dtb \
|
||||
kirkwood-ts219-6282.dtb \
|
|
@ -1,41 +0,0 @@
|
|||
--- a/arch/arm/boot/dts/kirkwood-iconnect.dts
|
||||
+++ b/arch/arm/boot/dts/kirkwood-iconnect.dts
|
||||
@@ -85,28 +85,23 @@
|
||||
status = "okay";
|
||||
|
||||
partition@0 {
|
||||
- label = "uboot";
|
||||
- reg = <0x0000000 0xc0000>;
|
||||
+ label = "u-boot";
|
||||
+ reg = <0x0000000 0xe0000>;
|
||||
};
|
||||
|
||||
- partition@a0000 {
|
||||
- label = "env";
|
||||
- reg = <0xa0000 0x20000>;
|
||||
+ partition@e0000 {
|
||||
+ label = "u-boot environment";
|
||||
+ reg = <0xe0000 0x100000>;
|
||||
};
|
||||
|
||||
partition@100000 {
|
||||
- label = "zImage";
|
||||
- reg = <0x100000 0x300000>;
|
||||
+ label = "second stage u-boot";
|
||||
+ reg = <0x100000 0x200000>;
|
||||
};
|
||||
|
||||
- partition@540000 {
|
||||
- label = "initrd";
|
||||
- reg = <0x540000 0x300000>;
|
||||
- };
|
||||
-
|
||||
- partition@980000 {
|
||||
- label = "boot";
|
||||
- reg = <0x980000 0x1f400000>;
|
||||
+ partition@200000 {
|
||||
+ label = "root";
|
||||
+ reg = <0x200000 0x1fe00000>;
|
||||
};
|
||||
};
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
--- a/arch/arm/boot/dts/kirkwood-dockstar.dts
|
||||
+++ b/arch/arm/boot/dts/kirkwood-dockstar.dts
|
||||
@@ -45,18 +45,22 @@
|
||||
|
||||
partition@0 {
|
||||
label = "u-boot";
|
||||
- reg = <0x0000000 0x100000>;
|
||||
- read-only;
|
||||
+ reg = <0x0000000 0xe0000>;
|
||||
+ };
|
||||
+
|
||||
+ partition@e0000 {
|
||||
+ label = "u-boot environment";
|
||||
+ reg = <0xe0000 0x100000>;
|
||||
};
|
||||
|
||||
partition@100000 {
|
||||
- label = "uImage";
|
||||
- reg = <0x0100000 0x400000>;
|
||||
+ label = "second stage u-boot";
|
||||
+ reg = <0x100000 0x200000>;
|
||||
};
|
||||
|
||||
- partition@500000 {
|
||||
- label = "data";
|
||||
- reg = <0x0500000 0xfb00000>;
|
||||
+ partition@200000 {
|
||||
+ label = "root";
|
||||
+ reg = <0x200000 0xfe00000>;
|
||||
};
|
||||
};
|
||||
};
|
Loading…
Reference in New Issue