add lantiq svip support

SVN-Revision: 32925
lede-17.01
John Crispin 2012-07-31 18:49:54 +00:00
parent 07c4524d33
commit f5f36911f0
22 changed files with 17723 additions and 53 deletions

View File

@ -6,9 +6,8 @@
# #
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
ARCH:=mips
BOARD:=lantiq BOARD:=lantiq
BOARDNAME:=Lantiq GPON/XWAY BOARDNAME:=Lantiq GPON/XWAY/SVIP
FEATURES:=squashfs jffs2 FEATURES:=squashfs jffs2
DEFAULT_SUBTARGET:=danube DEFAULT_SUBTARGET:=danube

View File

@ -35,5 +35,6 @@ CONFIG_RTL8306_PHY=y
# CONFIG_SOC_FALCON is not set # CONFIG_SOC_FALCON is not set
CONFIG_SOC_TYPE_XWAY=y CONFIG_SOC_TYPE_XWAY=y
CONFIG_SOC_XWAY=y CONFIG_SOC_XWAY=y
# CONFIG_SOC_SVIP is not set
CONFIG_USB_ARCH_HAS_XHCI=y CONFIG_USB_ARCH_HAS_XHCI=y
CONFIG_USB_SUPPORT=y CONFIG_USB_SUPPORT=y

View File

@ -15,6 +15,7 @@ CONFIG_SOC_AMAZON_SE=y
# CONFIG_SOC_FALCON is not set # CONFIG_SOC_FALCON is not set
CONFIG_SOC_TYPE_XWAY=y CONFIG_SOC_TYPE_XWAY=y
# CONFIG_SOC_XWAY is not set # CONFIG_SOC_XWAY is not set
# CONFIG_SOC_SVIP is not set
# CONFIG_USB_ARCH_HAS_EHCI is not set # CONFIG_USB_ARCH_HAS_EHCI is not set
# CONFIG_USB_ARCH_HAS_OHCI is not set # CONFIG_USB_ARCH_HAS_OHCI is not set
# CONFIG_USB_ARCH_HAS_XHCI is not set # CONFIG_USB_ARCH_HAS_XHCI is not set

View File

@ -31,6 +31,7 @@ CONFIG_PCI_LANTIQ=y
CONFIG_RTL8306_PHY=y CONFIG_RTL8306_PHY=y
# CONFIG_SOC_AMAZON_SE is not set # CONFIG_SOC_AMAZON_SE is not set
# CONFIG_SOC_FALCON is not set # CONFIG_SOC_FALCON is not set
# CONFIG_SOC_SVIP is not set
CONFIG_SOC_TYPE_XWAY=y CONFIG_SOC_TYPE_XWAY=y
CONFIG_SOC_XWAY=y CONFIG_SOC_XWAY=y
CONFIG_USB_ARCH_HAS_XHCI=y CONFIG_USB_ARCH_HAS_XHCI=y

View File

@ -14,6 +14,7 @@ CONFIG_MTD_NAND_PLATFORM=y
CONFIG_SOC_FALCON=y CONFIG_SOC_FALCON=y
# CONFIG_SOC_TYPE_XWAY is not set # CONFIG_SOC_TYPE_XWAY is not set
# CONFIG_SOC_XWAY is not set # CONFIG_SOC_XWAY is not set
# CONFIG_SOC_SVIP is not set
CONFIG_SPI=y CONFIG_SPI=y
CONFIG_SPI_FALCON=y CONFIG_SPI_FALCON=y
CONFIG_SPI_MASTER=y CONFIG_SPI_MASTER=y

View File

@ -12,6 +12,7 @@ JFFS2_BLOCKSIZE = 64k 128k 256k
ase_cmdline=-console=ttyLTQ0,115200 rootfstype=squashfs,jffs2 ase_cmdline=-console=ttyLTQ0,115200 rootfstype=squashfs,jffs2
xway_cmdline=-console=ttyLTQ1,115200 rootfstype=squashfs,jffs2 xway_cmdline=-console=ttyLTQ1,115200 rootfstype=squashfs,jffs2
falcon_cmdline=-console=ttyLTQ0,115200 rootfstype=squashfs,jffs2 falcon_cmdline=-console=ttyLTQ0,115200 rootfstype=squashfs,jffs2
svip_cmdline=-console=ttyLTQ0,115200 rootfstype=squashfs,jffs2
sx76x_cmdline=console=ttyLTQ1,115200 rootfstype=squashfs,jffs2 sx76x_cmdline=console=ttyLTQ1,115200 rootfstype=squashfs,jffs2
define CompressLzma define CompressLzma
@ -42,6 +43,22 @@ define MkImageEVA
cat ./eva.dummy.squashfs >> $(KDIR)/$(1).eva cat ./eva.dummy.squashfs >> $(KDIR)/$(1).eva
endef endef
define CompressGzip
gzip -c $(1) > $(2)
endef
define PatchKernelGzip
cp $(KDIR)/vmlinux $(KDIR)/vmlinux-$(1)
$(STAGING_DIR_HOST)/bin/patch-cmdline $(KDIR)/vmlinux-$(1) '$(strip $(2))'
$(call CompressGzip,$(KDIR)/vmlinux-$(1),$(KDIR)/vmlinux-$(1).gzip)
endef
define MkImageGzip
mkimage -A mips -O linux -T kernel -a 0x80002000 -C gzip \
-e 0x80002000 -n 'MIPS OpenWrt Linux-$(LINUX_VERSION)' \
-d $(KDIR)/vmlinux-$(1).gzip $(KDIR)/uImage-$(1)
endef
define Image/Build/squashfs define Image/Build/squashfs
cat $(KDIR)/uImage-$(2) $(KDIR)/root.$(1) > $(BIN_DIR)/$(IMG_PREFIX)-$(2)-$(1).image cat $(KDIR)/uImage-$(2) $(KDIR)/root.$(1) > $(BIN_DIR)/$(IMG_PREFIX)-$(2)-$(1).image
$(call prepare_generic_squashfs,$(BIN_DIR)/$(IMG_PREFIX)-$(2)-$(1).image) $(call prepare_generic_squashfs,$(BIN_DIR)/$(IMG_PREFIX)-$(2)-$(1).image)
@ -80,6 +97,12 @@ define Image/BuildKernelEVA/Template
$(CP) $(KDIR)/$(1).eva $(BIN_DIR)/$(IMG_PREFIX)-$(1).eva $(CP) $(KDIR)/$(1).eva $(BIN_DIR)/$(IMG_PREFIX)-$(1).eva
endef endef
define Image/BuildKernelGzip/Template
$(call PatchKernelGzip,$(1),$(if $(2),$(2) machtype=$(1),))
$(call MkImageGzip,$(1))
$(CP) $(KDIR)/uImage-$(1) $(BIN_DIR)/$(IMG_PREFIX)-$(1)-uImage
endef
ifeq ($(CONFIG_TARGET_lantiq_danube),y) ifeq ($(CONFIG_TARGET_lantiq_danube),y)
Image/BuildKernel/Profile/EASY50712=$(call Image/BuildKernel/Template,EASY50712,$(xway_cmdline)) Image/BuildKernel/Profile/EASY50712=$(call Image/BuildKernel/Template,EASY50712,$(xway_cmdline))
@ -198,6 +221,58 @@ define Image/Build/Profile/Generic
endef endef
endif endif
ifeq ($(CONFIG_TARGET_lantiq_svip_be),y)
define Image/BuildKernel/Profile/EASY33016
$(call Image/BuildKernelGzip/Template,EASY33016,$(svip_cmdline))
endef
define Image/Build/Profile/EASY33016
$(call Image/Build/$(1),$(1),EASY33016)
endef
define Image/BuildKernel/Profile/EASY336
$(call Image/BuildKernelGzip/Template,EASY33016,$(svip_cmdline))
endef
define Image/Build/Profile/EASY336
$(call Image/Build/$(1),$(1),EASY33016)
endef
define Image/BuildKernel/Profile/Generic
$(call Image/BuildKernelGzip/Template,EASY33016,$(svip_cmdline))
$(call Image/BuildKernelGzip/Template,EASY336,$(svip_cmdline))
$(call Image/BuildKernelGzip/Template,NONE)
endef
define Image/Build/Profile/Generic
$(call Image/Build/$(1),$(1),EASY33016)
$(call Image/Build/$(1),$(1),EASY336)
$(call Image/Build/$(1),$(1),NONE)
$(CP) $(KDIR)/root.$(1) $(BIN_DIR)/$(IMG_PREFIX)-$(1).rootfs
endef
endif
ifeq ($(CONFIG_TARGET_lantiq_svip_le),y)
define Image/BuildKernel/Profile/EASY336
$(call Image/BuildKernelGzip/Template,EASY33016,$(svip_cmdline))
endef
define Image/Build/Profile/EASY336
$(call Image/Build/$(1),$(1),EASY33016)
endef
define Image/BuildKernel/Profile/Generic
$(call Image/BuildKernelGzip/Template,EASY336,$(svip_cmdline))
$(call Image/BuildKernelGzip/Template,NONE)
endef
define Image/Build/Profile/Generic
$(call Image/Build/$(1),$(1),EASY336)
$(call Image/Build/$(1),$(1),NONE)
$(CP) $(KDIR)/root.$(1) $(BIN_DIR)/$(IMG_PREFIX)-$(1).rootfs
endef
endif
define Image/BuildKernel define Image/BuildKernel
$(call Image/BuildKernel/Profile/$(PROFILE)) $(call Image/BuildKernel/Profile/$(PROFILE))
endef endef

View File

@ -18,8 +18,10 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
delete mode 100644 arch/mips/lantiq/xway/prom-xway.c delete mode 100644 arch/mips/lantiq/xway/prom-xway.c
create mode 100644 arch/mips/lantiq/xway/prom.c create mode 100644 arch/mips/lantiq/xway/prom.c
--- a/arch/mips/lantiq/xway/Makefile Index: linux-3.3.8/arch/mips/lantiq/xway/Makefile
+++ b/arch/mips/lantiq/xway/Makefile ===================================================================
--- linux-3.3.8.orig/arch/mips/lantiq/xway/Makefile 2012-07-31 08:34:35.000000000 +0200
+++ linux-3.3.8/arch/mips/lantiq/xway/Makefile 2012-07-31 08:52:14.155414782 +0200
@@ -1,7 +1,4 @@ @@ -1,7 +1,4 @@
-obj-y := sysctrl.o reset.o gpio.o gpio_stp.o gpio_ebu.o devices.o dma.o clk.o -obj-y := sysctrl.o reset.o gpio.o gpio_stp.o gpio_ebu.o devices.o dma.o clk.o
- -
@ -29,22 +31,10 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
obj-$(CONFIG_LANTIQ_MACH_EASY50712) += mach-easy50712.o obj-$(CONFIG_LANTIQ_MACH_EASY50712) += mach-easy50712.o
obj-$(CONFIG_LANTIQ_MACH_EASY50601) += mach-easy50601.o obj-$(CONFIG_LANTIQ_MACH_EASY50601) += mach-easy50601.o
--- a/arch/mips/lantiq/xway/Makefile.rej Index: linux-3.3.8/arch/mips/lantiq/xway/prom-ase.c
+++ /dev/null ===================================================================
@@ -1,11 +0,0 @@ --- linux-3.3.8.orig/arch/mips/lantiq/xway/prom-ase.c 2012-07-31 08:34:34.000000000 +0200
---- arch/mips/lantiq/xway/Makefile +++ /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ arch/mips/lantiq/xway/Makefile
-@@ -1,7 +1,4 @@
--obj-y := sysctrl.o reset.o gpio.o gpio_stp.o gpio_ebu.o devices.o dma.o clk.o
--
--obj-$(CONFIG_SOC_XWAY) += prom-xway.o
--obj-$(CONFIG_SOC_AMAZON_SE) += prom-ase.o
-+obj-y := prom.o sysctrl.o reset.o gpio.o gpio_stp.o gpio_ebu.o devices.o dma.o clk.o
-
- obj-$(CONFIG_LANTIQ_MACH_EASY50712) += mach-easy50712.o
- obj-$(CONFIG_LANTIQ_MACH_EASY50601) += mach-easy50601.o
--- a/arch/mips/lantiq/xway/prom-ase.c
+++ /dev/null
@@ -1,48 +0,0 @@ @@ -1,48 +0,0 @@
-/* -/*
- * This program is free software; you can redistribute it and/or modify it - * This program is free software; you can redistribute it and/or modify it
@ -94,8 +84,10 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
- ltq_register_gpio(); - ltq_register_gpio();
- ltq_register_wdt(); - ltq_register_wdt();
-} -}
--- a/arch/mips/lantiq/xway/prom-xway.c Index: linux-3.3.8/arch/mips/lantiq/xway/prom-xway.c
+++ /dev/null ===================================================================
--- linux-3.3.8.orig/arch/mips/lantiq/xway/prom-xway.c 2012-07-31 08:34:34.000000000 +0200
+++ /dev/null 1970-01-01 00:00:00.000000000 +0000
@@ -1,64 +0,0 @@ @@ -1,64 +0,0 @@
-/* -/*
- * This program is free software; you can redistribute it and/or modify it - * This program is free software; you can redistribute it and/or modify it
@ -161,8 +153,10 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
- ltq_register_gpio(); - ltq_register_gpio();
- ltq_register_wdt(); - ltq_register_wdt();
-} -}
--- /dev/null Index: linux-3.3.8/arch/mips/lantiq/xway/prom.c
+++ b/arch/mips/lantiq/xway/prom.c ===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ linux-3.3.8/arch/mips/lantiq/xway/prom.c 2012-07-31 08:52:14.155414782 +0200
@@ -0,0 +1,79 @@ @@ -0,0 +1,79 @@
+/* +/*
+ * This program is free software; you can redistribute it and/or modify it + * This program is free software; you can redistribute it and/or modify it

View File

@ -1,29 +0,0 @@
From 875a7139535da541aa2e9de308b3f6f791a131d0 Mon Sep 17 00:00:00 2001
From: John Crispin <blogic@openwrt.org>
Date: Tue, 20 Mar 2012 09:44:27 +0100
Subject: [PATCH 63/70] MIPS: lantiq: irqs were not cleared properly on boot
---
arch/mips/lantiq/irq.c | 10 +++++-----
1 files changed, 5 insertions(+), 5 deletions(-)
--- a/arch/mips/lantiq/irq.c
+++ b/arch/mips/lantiq/irq.c
@@ -326,12 +326,12 @@ void __init arch_init_irq(void)
panic("Failed to remap eiu memory\n");
}
- /* make sure all irqs are turned off by default */
- for (i = 0; i < 5; i++)
+ for (i = 0; i < 5; i++) {
+ /* make sure all irqs are turned off by default */
ltq_icu_w32(0, LTQ_ICU_IM0_IER + (i * LTQ_ICU_OFFSET));
-
- /* clear all possibly pending interrupts */
- ltq_icu_w32(~0, LTQ_ICU_IM0_ISR + (i * LTQ_ICU_OFFSET));
+ /* clear all possibly pending interrupts */
+ ltq_icu_w32(~0, LTQ_ICU_IM0_ISR + (i * LTQ_ICU_OFFSET));
+ }
mips_cpu_irq_init();

View File

@ -0,0 +1,233 @@
Index: linux-3.3.8/arch/mips/include/asm/mach-lantiq/xway/lantiq_irq.h
===================================================================
--- linux-3.3.8.orig/arch/mips/include/asm/mach-lantiq/xway/lantiq_irq.h 2012-07-31 08:34:35.000000000 +0200
+++ linux-3.3.8/arch/mips/include/asm/mach-lantiq/xway/lantiq_irq.h 2012-07-31 08:34:46.063369976 +0200
@@ -9,6 +9,8 @@
#ifndef _LANTIQ_XWAY_IRQ_H__
#define _LANTIQ_XWAY_IRQ_H__
+#define IM_NUM 5
+
#define INT_NUM_IRQ0 8
#define INT_NUM_IM0_IRL0 (INT_NUM_IRQ0 + 0)
#define INT_NUM_IM1_IRL0 (INT_NUM_IRQ0 + 32)
Index: linux-3.3.8/arch/mips/lantiq/irq.c
===================================================================
--- linux-3.3.8.orig/arch/mips/lantiq/irq.c 2012-07-31 08:34:35.000000000 +0200
+++ linux-3.3.8/arch/mips/lantiq/irq.c 2012-07-31 08:51:40.203413329 +0200
@@ -48,8 +48,8 @@
*/
#define LTQ_ICU_EBU_IRQ 22
-#define ltq_icu_w32(x, y) ltq_w32((x), ltq_icu_membase + (y))
-#define ltq_icu_r32(x) ltq_r32(ltq_icu_membase + (x))
+#define ltq_icu_w32(x, y, m) ltq_w32((x), ltq_icu_membase[m] + (y))
+#define ltq_icu_r32(x, m) ltq_r32(ltq_icu_membase[m] + (x))
#define ltq_eiu_w32(x, y) ltq_w32((x), ltq_eiu_membase + (y))
#define ltq_eiu_r32(x) ltq_r32(ltq_eiu_membase + (x))
@@ -63,11 +63,78 @@
LTQ_EIU_IR5,
};
-static struct resource ltq_icu_resource = {
- .name = "icu",
- .start = LTQ_ICU_BASE_ADDR,
- .end = LTQ_ICU_BASE_ADDR + LTQ_ICU_SIZE - 1,
- .flags = IORESOURCE_MEM,
+static struct resource ltq_icu_resource[IM_NUM] = {
+{
+ .name = "icu_im0",
+ .start = LTQ_ICU_BASE_ADDR,
+ .end = LTQ_ICU_BASE_ADDR + LTQ_ICU_OFFSET - 1,
+ .flags = IORESOURCE_MEM,
+},
+#if IM_NUM >= 2
+{
+ .name = "icu_im1",
+#ifdef LTQ_ICU_BASE_ADDR1
+ .start = LTQ_ICU_BASE_ADDR1,
+ .end = LTQ_ICU_BASE_ADDR1 + LTQ_ICU_OFFSET - 1,
+#else
+ .start = LTQ_ICU_BASE_ADDR + (LTQ_ICU_OFFSET * 1),
+ .end = LTQ_ICU_BASE_ADDR + (LTQ_ICU_OFFSET * 2) - 1,
+#endif
+ .flags = IORESOURCE_MEM,
+},
+#endif
+#if IM_NUM >= 3
+{
+ .name = "icu_im2",
+#ifdef LTQ_ICU_BASE_ADDR2
+ .start = LTQ_ICU_BASE_ADDR2,
+ .end = LTQ_ICU_BASE_ADDR2 + LTQ_ICU_OFFSET - 1,
+#else
+ .start = LTQ_ICU_BASE_ADDR + (LTQ_ICU_OFFSET * 2),
+ .end = LTQ_ICU_BASE_ADDR + (LTQ_ICU_OFFSET * 3) - 1,
+#endif
+ .flags = IORESOURCE_MEM,
+},
+#endif
+#if IM_NUM >= 4
+{
+ .name = "icu_im3",
+#ifdef LTQ_ICU_BASE_ADDR3
+ .start = LTQ_ICU_BASE_ADDR3,
+ .end = LTQ_ICU_BASE_ADDR3 + LTQ_ICU_OFFSET - 1,
+#else
+ .start = LTQ_ICU_BASE_ADDR + (LTQ_ICU_OFFSET * 3),
+ .end = LTQ_ICU_BASE_ADDR + (LTQ_ICU_OFFSET * 4) - 1,
+#endif
+ .flags = IORESOURCE_MEM,
+},
+#endif
+#if IM_NUM >= 5
+{
+ .name = "icu_im4",
+#ifdef LTQ_ICU_BASE_ADDR4
+ .start = LTQ_ICU_BASE_ADDR4,
+ .end = LTQ_ICU_BASE_ADDR4 + LTQ_ICU_OFFSET - 1,
+#else
+ .start = LTQ_ICU_BASE_ADDR + (LTQ_ICU_OFFSET * 4),
+ .end = LTQ_ICU_BASE_ADDR + (LTQ_ICU_OFFSET * 5) - 1,
+#endif
+ .flags = IORESOURCE_MEM,
+},
+#endif
+#if IM_NUM >= 6
+{
+ .name = "icu_im5",
+#ifdef LTQ_ICU_BASE_ADDR5
+ .start = LTQ_ICU_BASE_ADDR5,
+ .end = LTQ_ICU_BASE_ADDR5 + LTQ_ICU_OFFSET - 1,
+#else
+ .start = LTQ_ICU_BASE_ADDR + (LTQ_ICU_OFFSET * 5),
+ .end = LTQ_ICU_BASE_ADDR + (LTQ_ICU_OFFSET * 6) - 1,
+#endif
+ .flags = IORESOURCE_MEM,
+},
+#endif
};
static struct resource ltq_eiu_resource = {
@@ -77,50 +144,56 @@
.flags = IORESOURCE_MEM,
};
-static void __iomem *ltq_icu_membase;
+static void __iomem *ltq_icu_membase[IM_NUM];
static void __iomem *ltq_eiu_membase;
void ltq_disable_irq(struct irq_data *d)
{
- u32 ier = LTQ_ICU_IM0_IER;
int irq_nr = d->irq - INT_NUM_IRQ0;
+ unsigned int im_nr;
- ier += LTQ_ICU_OFFSET * (irq_nr / INT_NUM_IM_OFFSET);
+ im_nr = (irq_nr / INT_NUM_IM_OFFSET);
irq_nr %= INT_NUM_IM_OFFSET;
- ltq_icu_w32(ltq_icu_r32(ier) & ~(1 << irq_nr), ier);
+
+ ltq_icu_w32(ltq_icu_r32(LTQ_ICU_IM0_IER, im_nr) & ~(1 << irq_nr),
+ LTQ_ICU_IM0_IER, im_nr);
}
void ltq_mask_and_ack_irq(struct irq_data *d)
{
- u32 ier = LTQ_ICU_IM0_IER;
- u32 isr = LTQ_ICU_IM0_ISR;
int irq_nr = d->irq - INT_NUM_IRQ0;
+ unsigned int im_nr;
- ier += LTQ_ICU_OFFSET * (irq_nr / INT_NUM_IM_OFFSET);
- isr += LTQ_ICU_OFFSET * (irq_nr / INT_NUM_IM_OFFSET);
+ irq_nr -= INT_NUM_IRQ0;
+ im_nr = (irq_nr / INT_NUM_IM_OFFSET);
irq_nr %= INT_NUM_IM_OFFSET;
- ltq_icu_w32(ltq_icu_r32(ier) & ~(1 << irq_nr), ier);
- ltq_icu_w32((1 << irq_nr), isr);
+
+ ltq_icu_w32(ltq_icu_r32(LTQ_ICU_IM0_IER, im_nr) & ~(1 << irq_nr), LTQ_ICU_IM0_IER, im_nr);
+ ltq_icu_w32((1 << irq_nr), LTQ_ICU_IM0_ISR, im_nr);
}
static void ltq_ack_irq(struct irq_data *d)
{
- u32 isr = LTQ_ICU_IM0_ISR;
int irq_nr = d->irq - INT_NUM_IRQ0;
+ unsigned int im_nr;
- isr += LTQ_ICU_OFFSET * (irq_nr / INT_NUM_IM_OFFSET);
+ irq_nr -= INT_NUM_IRQ0;
+ im_nr = (irq_nr / INT_NUM_IM_OFFSET);
irq_nr %= INT_NUM_IM_OFFSET;
- ltq_icu_w32((1 << irq_nr), isr);
+
+ ltq_icu_w32((1 << irq_nr), LTQ_ICU_IM0_ISR, im_nr);
}
void ltq_enable_irq(struct irq_data *d)
{
- u32 ier = LTQ_ICU_IM0_IER;
int irq_nr = d->irq - INT_NUM_IRQ0;
+ unsigned int im_nr;
- ier += LTQ_ICU_OFFSET * (irq_nr / INT_NUM_IM_OFFSET);
+ irq_nr -= INT_NUM_IRQ0;
+ im_nr = (irq_nr / INT_NUM_IM_OFFSET);
irq_nr %= INT_NUM_IM_OFFSET;
- ltq_icu_w32(ltq_icu_r32(ier) | (1 << irq_nr), ier);
+
+ ltq_icu_w32(ltq_icu_r32(LTQ_ICU_IM0_IER, im_nr) | (1 << irq_nr), LTQ_ICU_IM0_IER, im_nr);
}
static unsigned int ltq_startup_eiu_irq(struct irq_data *d)
@@ -187,7 +260,7 @@
{
u32 irq;
- irq = ltq_icu_r32(LTQ_ICU_IM0_IOSR + (module * LTQ_ICU_OFFSET));
+ irq = ltq_icu_r32(LTQ_ICU_IM0_IOSR, module);
if (irq == 0)
return;
@@ -250,8 +323,19 @@
{
int i;
- if (insert_resource(&iomem_resource, &ltq_icu_resource) < 0)
- panic("Failed to insert icu memory");
+ for (i=0; i < IM_NUM; i++) {
+ if (insert_resource(&iomem_resource, &ltq_icu_resource[i]) < 0)
+ panic("Failed to insert icu memory\n");
+
+ if (request_mem_region(ltq_icu_resource[i].start,
+ resource_size(&ltq_icu_resource[i]), "icu") < 0)
+ panic("Failed to request icu memory\n");
+
+ ltq_icu_membase[i] = ioremap_nocache(ltq_icu_resource[i].start,
+ resource_size(&ltq_icu_resource[i]));
+ if (!ltq_icu_membase[i])
+ panic("Failed to remap icu memory\n");
+ }
if (request_mem_region(ltq_icu_resource.start,
resource_size(&ltq_icu_resource), "icu") < 0)
@@ -277,11 +361,11 @@
}
/* make sure all irqs are turned off by default */
- for (i = 0; i < 5; i++)
- ltq_icu_w32(0, LTQ_ICU_IM0_IER + (i * LTQ_ICU_OFFSET));
-
- /* clear all possibly pending interrupts */
- ltq_icu_w32(~0, LTQ_ICU_IM0_ISR + (i * LTQ_ICU_OFFSET));
+ for (i = 0; i < IM_NUM; i++)
+ ltq_icu_w32(0, LTQ_ICU_IM0_IER, i);
+ /* clear all possibly pending interrupts */
+ ltq_icu_w32(~0, LTQ_ICU_IM0_ISR, i);
+ }
mips_cpu_irq_init();

View File

@ -0,0 +1,11 @@
--- a/arch/mips/include/asm/mach-lantiq/falcon/falcon_irq.h
+++ b/arch/mips/include/asm/mach-lantiq/falcon/falcon_irq.h
@@ -18,6 +18,8 @@
#ifndef _FALCON_IRQ__
#define _FALCON_IRQ__
+#define IM_NUM 5
+
#define INT_NUM_IRQ0 8
#define INT_NUM_IM0_IRL0 (INT_NUM_IRQ0 + 0)
#define INT_NUM_IM1_IRL0 (INT_NUM_IM0_IRL0 + 32)diff --git a/target/linux/lantiq/patches-2.6.32/300-svip_header.patch b/target/linux/lantiq/patches-2.6.32/300-svip_header.patch

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,81 @@
Index: linux-3.3.8/arch/mips/lantiq/devices.c
===================================================================
--- linux-3.3.8.orig/arch/mips/lantiq/devices.c 2012-07-31 09:45:42.315551926 +0200
+++ linux-3.3.8/arch/mips/lantiq/devices.c 2012-07-31 09:46:14.051553281 +0200
@@ -102,19 +102,29 @@
}
#endif
+#ifdef CONFIG_SOC_SVIP
+extern unsigned int *prom_cp1_base;
+#else
static unsigned int *cp1_base = 0;
+#endif
unsigned int*
ltq_get_cp1_base(void)
{
+#ifdef CONFIG_SOC_SVIP
+ return prom_cp1_base;
+#else
return cp1_base;
+#endif
}
EXPORT_SYMBOL(ltq_get_cp1_base);
void __init
ltq_register_tapi(void)
{
+#ifndef CONFIG_SOC_SVIP
#define CP1_SIZE (1 << 20)
dma_addr_t dma;
cp1_base =
(void*)CPHYSADDR(dma_alloc_coherent(NULL, CP1_SIZE, &dma, GFP_ATOMIC));
+#endif
}
Index: linux-3.3.8/arch/mips/lantiq/prom.c
===================================================================
--- linux-3.3.8.orig/arch/mips/lantiq/prom.c 2012-07-31 09:45:42.315551926 +0200
+++ linux-3.3.8/arch/mips/lantiq/prom.c 2012-07-31 10:31:28.759669332 +0200
@@ -129,6 +129,7 @@
}
EXPORT_SYMBOL(ltq_remap_resource);
+
void __init prom_init(void)
{
ltq_soc_detect(&soc_info);
Index: linux-3.3.8/arch/mips/lantiq/setup.c
===================================================================
--- linux-3.3.8.orig/arch/mips/lantiq/setup.c 2012-07-31 09:45:42.315551926 +0200
+++ linux-3.3.8/arch/mips/lantiq/setup.c 2012-07-31 10:31:35.215669606 +0200
@@ -21,8 +21,15 @@
/* set to 1 if the bootloader is BRN-BOOT instead of u-boot */
unsigned long ltq_brn_boot = 0;
+#ifdef CONFIG_SOC_SVIP
+unsigned int *prom_cp1_base;
+#endif
+
void __init plat_mem_setup(void)
{
+#ifdef CONFIG_SOC_SVIP
+ int prom_cp1_size = 0x800000;
+#endif
/* assume 16M as default incase uboot fails to pass proper ramsize */
unsigned long memsize = 16;
char **envp = (char **) KSEG1ADDR(fw_arg2);
@@ -54,6 +61,14 @@
envp++;
}
memsize *= 1024 * 1024;
+
+#ifdef CONFIG_SOC_SVIP
+ memsize -= prom_cp1_size;
+ prom_cp1_base = (unsigned int *)KSEG1ADDR(memsize);
+
+ printk("Using %ldMB Ram and reserving %dMB for cp1\n",
+ memsize>>20, prom_cp1_size>>20);
+#endif
add_memory_region(0x00000000, memsize, BOOT_MEM_RAM);
}

View File

@ -0,0 +1,39 @@
CONFIG_ADM6996_PHY=y
CONFIG_AR8216_PHY=y
CONFIG_BOARD_SCACHE=y
CONFIG_CLKDEV_LOOKUP=y
# CONFIG_CPU_LITTLE_ENDIAN is not set
CONFIG_FSNOTIFY=y
# CONFIG_GENERIC_PWM is not set
CONFIG_HAVE_MACH_CLKDEV=y
CONFIG_INPUT=y
CONFIG_INPUT_EVDEV=y
CONFIG_INPUT_POLLDEV=y
CONFIG_IRQ_FORCED_THREADING=y
# CONFIG_ISDN is not set
CONFIG_LANTIQ_MACH_EASY33016=y
CONFIG_LANTIQ_MACH_EASY336=y
CONFIG_LANTIQ_SVIP_ETH=y
CONFIG_LANTIQ_SVIP_VIRTUAL_ETH=y
CONFIG_MDIO_BOARDINFO=y
CONFIG_MIPS_CPU_SCACHE=y
CONFIG_MIPS_L1_CACHE_SHIFT=6
CONFIG_MTD_NAND=y
CONFIG_MTD_NAND_ECC=y
CONFIG_MTD_NAND_PLATFORM=y
# CONFIG_MTD_SM_COMMON is not set
CONFIG_RTL8306_PHY=y
# CONFIG_SOC_AMAZON_SE is not set
# CONFIG_SOC_FALCON is not set
CONFIG_SOC_SVIP=y
# CONFIG_SOC_TYPE_XWAY is not set
# CONFIG_SOC_XWAY is not set
CONFIG_SPI=y
CONFIG_SPI_MASTER=y
CONFIG_SPI_SVIP=y
CONFIG_SVIP_NAT=y
CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
# CONFIG_USB_ARCH_HAS_EHCI is not set
# CONFIG_USB_ARCH_HAS_OHCI is not set
# CONFIG_USB_ARCH_HAS_XHCI is not set
CONFIG_USB_SUPPORT=y

View File

@ -0,0 +1,8 @@
define Profile/Generic
NAME:=Generic - all boards
PACKAGES:=
endef
$(eval $(call Profile,Generic))

View File

@ -0,0 +1,25 @@
define Profile/EASY336
NAME:=EASY336
PACKAGES:=
endef
define Profile/EASY336/Description
Lantiq EASY336 evalkit
endef
$(eval $(call Profile,EASY336))
define Profile/EASY33016
NAME:=EASY33016
PACKAGES:= \
kmod-ifxos ifx-vos ifx-evtlog svip-switch \
voice-lib-tapi voice-lib-cli voice-tapi-cli \
voice-tapi voice-tapidemo-xt voice-vatests voice-vxt voice-xtbox
endef
define Profile/EASY33016/Description
Lantiq EASY33016 evalkit
endef
$(eval $(call Profile,EASY33016))

View File

@ -0,0 +1,11 @@
ARCH:=mips
SUBTARGET:=svip_be
BOARDNAME:=SVIP Big Endian
FEATURES:=squashfs jffs2
DEVICE_TYPE:=other
DEFAULT_PACKAGES+= uboot-svip hostapd-mini
define Target/Description
Lantiq SVIP Big Endian
endef

View File

@ -0,0 +1,35 @@
CONFIG_ADM6996_PHY=y
CONFIG_AR8216_PHY=y
CONFIG_CLKDEV_LOOKUP=y
# CONFIG_CPU_LITTLE_ENDIAN is not set
CONFIG_FSNOTIFY=y
# CONFIG_GENERIC_PWM is not set
CONFIG_HAVE_MACH_CLKDEV=y
CONFIG_INPUT=y
CONFIG_INPUT_EVDEV=y
CONFIG_INPUT_POLLDEV=y
CONFIG_IRQ_FORCED_THREADING=y
# CONFIG_ISDN is not set
CONFIG_LANTIQ_MACH_EASY33016=y
CONFIG_LANTIQ_MACH_EASY336=y
CONFIG_MDIO_BOARDINFO=y
# CONFIG_PCIE_LANTIQ is not set
# CONFIG_PCI_LANTIQ is not set
# CONFIG_PCI_LANTIQ_NONE is not set
CONFIG_RTL8306_PHY=y
# CONFIG_SOC_AMAZON_SE is not set
# CONFIG_SOC_FALCON is not set
CONFIG_SOC_SVIP=y
# CONFIG_SOC_TYPE_XWAY is not set
# CONFIG_SOC_XWAY is not set
CONFIG_SPI=y
CONFIG_SPI_MASTER=y
CONFIG_SPI_SVIP=y
CONFIG_SVIP_NAT=y
CONFIG_LANTIQ_SVIP_VIRTUAL_ETH=y
CONFIG_LANTIQ_SVIP_ETH=y
CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
# CONFIG_USB_ARCH_HAS_EHCI is not set
# CONFIG_USB_ARCH_HAS_OHCI is not set
# CONFIG_USB_ARCH_HAS_XHCI is not set
CONFIG_USB_SUPPORT=y

View File

@ -0,0 +1,8 @@
define Profile/Generic
NAME:=Generic - all boards
PACKAGES:=
endef
$(eval $(call Profile,Generic))

View File

@ -0,0 +1,10 @@
define Profile/EASY336
NAME:=EASY336
PACKAGES:=
endef
define Profile/EASY336/Description
Lantiq EASY336 evalkit
endef
$(eval $(call Profile,EASY336))

View File

@ -0,0 +1,11 @@
ARCH:=mipsel
SUBTARGET:=svip_le
BOARDNAME:=SVIP Little Endian
FEATURES:=squashfs jffs2
DEVICE_TYPE:=other
DEFAULT_PACKAGES+= uboot-svip hostapd-mini
define Target/Description
Lantiq SVIP Little Endian
endef

View File

@ -45,6 +45,7 @@ CONFIG_SCSI_DMA=y
# CONFIG_SOC_FALCON is not set # CONFIG_SOC_FALCON is not set
CONFIG_SOC_TYPE_XWAY=y CONFIG_SOC_TYPE_XWAY=y
CONFIG_SOC_XWAY=y CONFIG_SOC_XWAY=y
# CONFIG_SOC_SVIP is not set
CONFIG_SPI=y CONFIG_SPI=y
CONFIG_SPI_BITBANG=y CONFIG_SPI_BITBANG=y
CONFIG_SPI_GPIO=y CONFIG_SPI_GPIO=y