add lantiq svip support
SVN-Revision: 32925
This commit is contained in:
parent
07c4524d33
commit
f5f36911f0
@ -6,9 +6,8 @@
|
||||
#
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
ARCH:=mips
|
||||
BOARD:=lantiq
|
||||
BOARDNAME:=Lantiq GPON/XWAY
|
||||
BOARDNAME:=Lantiq GPON/XWAY/SVIP
|
||||
FEATURES:=squashfs jffs2
|
||||
DEFAULT_SUBTARGET:=danube
|
||||
|
||||
|
@ -35,5 +35,6 @@ CONFIG_RTL8306_PHY=y
|
||||
# CONFIG_SOC_FALCON is not set
|
||||
CONFIG_SOC_TYPE_XWAY=y
|
||||
CONFIG_SOC_XWAY=y
|
||||
# CONFIG_SOC_SVIP is not set
|
||||
CONFIG_USB_ARCH_HAS_XHCI=y
|
||||
CONFIG_USB_SUPPORT=y
|
||||
|
@ -15,6 +15,7 @@ CONFIG_SOC_AMAZON_SE=y
|
||||
# CONFIG_SOC_FALCON is not set
|
||||
CONFIG_SOC_TYPE_XWAY=y
|
||||
# CONFIG_SOC_XWAY is not set
|
||||
# CONFIG_SOC_SVIP is not set
|
||||
# CONFIG_USB_ARCH_HAS_EHCI is not set
|
||||
# CONFIG_USB_ARCH_HAS_OHCI is not set
|
||||
# CONFIG_USB_ARCH_HAS_XHCI is not set
|
||||
|
@ -31,6 +31,7 @@ CONFIG_PCI_LANTIQ=y
|
||||
CONFIG_RTL8306_PHY=y
|
||||
# CONFIG_SOC_AMAZON_SE is not set
|
||||
# CONFIG_SOC_FALCON is not set
|
||||
# CONFIG_SOC_SVIP is not set
|
||||
CONFIG_SOC_TYPE_XWAY=y
|
||||
CONFIG_SOC_XWAY=y
|
||||
CONFIG_USB_ARCH_HAS_XHCI=y
|
||||
|
@ -14,6 +14,7 @@ CONFIG_MTD_NAND_PLATFORM=y
|
||||
CONFIG_SOC_FALCON=y
|
||||
# CONFIG_SOC_TYPE_XWAY is not set
|
||||
# CONFIG_SOC_XWAY is not set
|
||||
# CONFIG_SOC_SVIP is not set
|
||||
CONFIG_SPI=y
|
||||
CONFIG_SPI_FALCON=y
|
||||
CONFIG_SPI_MASTER=y
|
||||
|
@ -12,6 +12,7 @@ JFFS2_BLOCKSIZE = 64k 128k 256k
|
||||
ase_cmdline=-console=ttyLTQ0,115200 rootfstype=squashfs,jffs2
|
||||
xway_cmdline=-console=ttyLTQ1,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
|
||||
|
||||
define CompressLzma
|
||||
@ -42,6 +43,22 @@ define MkImageEVA
|
||||
cat ./eva.dummy.squashfs >> $(KDIR)/$(1).eva
|
||||
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
|
||||
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)
|
||||
@ -80,6 +97,12 @@ define Image/BuildKernelEVA/Template
|
||||
$(CP) $(KDIR)/$(1).eva $(BIN_DIR)/$(IMG_PREFIX)-$(1).eva
|
||||
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)
|
||||
|
||||
Image/BuildKernel/Profile/EASY50712=$(call Image/BuildKernel/Template,EASY50712,$(xway_cmdline))
|
||||
@ -198,6 +221,58 @@ define Image/Build/Profile/Generic
|
||||
endef
|
||||
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
|
||||
$(call Image/BuildKernel/Profile/$(PROFILE))
|
||||
endef
|
||||
|
@ -18,8 +18,10 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
delete mode 100644 arch/mips/lantiq/xway/prom-xway.c
|
||||
create mode 100644 arch/mips/lantiq/xway/prom.c
|
||||
|
||||
--- a/arch/mips/lantiq/xway/Makefile
|
||||
+++ b/arch/mips/lantiq/xway/Makefile
|
||||
Index: linux-3.3.8/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 @@
|
||||
-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_EASY50601) += mach-easy50601.o
|
||||
--- a/arch/mips/lantiq/xway/Makefile.rej
|
||||
+++ /dev/null
|
||||
@@ -1,11 +0,0 @@
|
||||
---- arch/mips/lantiq/xway/Makefile
|
||||
-+++ 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
|
||||
Index: linux-3.3.8/arch/mips/lantiq/xway/prom-ase.c
|
||||
===================================================================
|
||||
--- linux-3.3.8.orig/arch/mips/lantiq/xway/prom-ase.c 2012-07-31 08:34:34.000000000 +0200
|
||||
+++ /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
@@ -1,48 +0,0 @@
|
||||
-/*
|
||||
- * 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_wdt();
|
||||
-}
|
||||
--- a/arch/mips/lantiq/xway/prom-xway.c
|
||||
+++ /dev/null
|
||||
Index: linux-3.3.8/arch/mips/lantiq/xway/prom-xway.c
|
||||
===================================================================
|
||||
--- 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 @@
|
||||
-/*
|
||||
- * 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_wdt();
|
||||
-}
|
||||
--- /dev/null
|
||||
+++ b/arch/mips/lantiq/xway/prom.c
|
||||
Index: linux-3.3.8/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 @@
|
||||
+/*
|
||||
+ * This program is free software; you can redistribute it and/or modify it
|
||||
|
@ -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();
|
||||
|
233
target/linux/lantiq/patches-3.3/0070-icu-multi-base.patch
Normal file
233
target/linux/lantiq/patches-3.3/0070-icu-multi-base.patch
Normal 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, <q_icu_resource) < 0)
|
||||
- panic("Failed to insert icu memory");
|
||||
+ for (i=0; i < IM_NUM; i++) {
|
||||
+ if (insert_resource(&iomem_resource, <q_icu_resource[i]) < 0)
|
||||
+ panic("Failed to insert icu memory\n");
|
||||
+
|
||||
+ if (request_mem_region(ltq_icu_resource[i].start,
|
||||
+ resource_size(<q_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(<q_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(<q_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();
|
||||
|
@ -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
|
9518
target/linux/lantiq/patches-3.3/300-svip_header.patch
Normal file
9518
target/linux/lantiq/patches-3.3/300-svip_header.patch
Normal file
File diff suppressed because it is too large
Load Diff
7636
target/linux/lantiq/patches-3.3/310-svip_board.patch
Normal file
7636
target/linux/lantiq/patches-3.3/310-svip_board.patch
Normal file
File diff suppressed because it is too large
Load Diff
81
target/linux/lantiq/patches-3.3/535-svip_cp1.patch
Normal file
81
target/linux/lantiq/patches-3.3/535-svip_cp1.patch
Normal 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);
|
||||
}
|
||||
|
39
target/linux/lantiq/svip_be/config-default
Normal file
39
target/linux/lantiq/svip_be/config-default
Normal 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
|
8
target/linux/lantiq/svip_be/profiles/000-generic.mk
Normal file
8
target/linux/lantiq/svip_be/profiles/000-generic.mk
Normal file
@ -0,0 +1,8 @@
|
||||
define Profile/Generic
|
||||
NAME:=Generic - all boards
|
||||
PACKAGES:=
|
||||
endef
|
||||
|
||||
$(eval $(call Profile,Generic))
|
||||
|
||||
|
25
target/linux/lantiq/svip_be/profiles/001-lantiq.mk
Normal file
25
target/linux/lantiq/svip_be/profiles/001-lantiq.mk
Normal 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))
|
||||
|
11
target/linux/lantiq/svip_be/target.mk
Normal file
11
target/linux/lantiq/svip_be/target.mk
Normal 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
|
35
target/linux/lantiq/svip_le/config-default
Normal file
35
target/linux/lantiq/svip_le/config-default
Normal 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
|
8
target/linux/lantiq/svip_le/profiles/000-generic.mk
Normal file
8
target/linux/lantiq/svip_le/profiles/000-generic.mk
Normal file
@ -0,0 +1,8 @@
|
||||
define Profile/Generic
|
||||
NAME:=Generic - all boards
|
||||
PACKAGES:=
|
||||
endef
|
||||
|
||||
$(eval $(call Profile,Generic))
|
||||
|
||||
|
10
target/linux/lantiq/svip_le/profiles/001-lantiq.mk
Normal file
10
target/linux/lantiq/svip_le/profiles/001-lantiq.mk
Normal file
@ -0,0 +1,10 @@
|
||||
define Profile/EASY336
|
||||
NAME:=EASY336
|
||||
PACKAGES:=
|
||||
endef
|
||||
|
||||
define Profile/EASY336/Description
|
||||
Lantiq EASY336 evalkit
|
||||
endef
|
||||
|
||||
$(eval $(call Profile,EASY336))
|
11
target/linux/lantiq/svip_le/target.mk
Normal file
11
target/linux/lantiq/svip_le/target.mk
Normal 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
|
@ -45,6 +45,7 @@ CONFIG_SCSI_DMA=y
|
||||
# CONFIG_SOC_FALCON is not set
|
||||
CONFIG_SOC_TYPE_XWAY=y
|
||||
CONFIG_SOC_XWAY=y
|
||||
# CONFIG_SOC_SVIP is not set
|
||||
CONFIG_SPI=y
|
||||
CONFIG_SPI_BITBANG=y
|
||||
CONFIG_SPI_GPIO=y
|
||||
|
Loading…
Reference in New Issue
Block a user