1
0
mirror of git://projects.qi-hardware.com/openwrt-xburst.git synced 2024-11-24 03:58:35 +02:00

Merge commit 'nbd/master' into xburst

This commit is contained in:
Lars-Peter Clausen 2010-03-21 16:56:08 +01:00
commit 37e44c0bce
72 changed files with 1794 additions and 861 deletions

View File

@ -63,6 +63,12 @@ define DownloadMethod/cvs
)
endef
SVN_VERSION=$(shell svn --version | head -1 | awk '{ print $3 }' | cut -d. -f2)
ifeq ($(SVN_VERSION),5)
else
SVN_OPTS:=--trust-server-cert
endif
define DownloadMethod/svn
$(call wrap_mirror, \
echo "Checking out files from the svn repository..."; \
@ -70,7 +76,7 @@ define DownloadMethod/svn
cd $(TMP_DIR)/dl && \
rm -rf $(SUBDIR) && \
[ \! -d $(SUBDIR) ] && \
svn export --non-interactive -r$(VERSION) $(URL) $(SUBDIR) && \
svn export --non-interactive $(SVN_OPTS) -r$(VERSION) $(URL) $(SUBDIR) && \
echo "Packing checkout..." && \
$(call dl_pack,$(TMP_DIR)/dl/$(FILE),$(SUBDIR)) && \
mv $(TMP_DIR)/dl/$(FILE) $(DL_DIR)/ && \

View File

@ -15,6 +15,7 @@ start_daemon() {
config_get vci "$cfg" vci
config_get encaps "$cfg" encaps
config_get payload "$cfg" payload
config_get qos "$cfg" qos
case "$encaps" in
1|vc) encaps=1;;
*) encaps=0;;
@ -23,7 +24,8 @@ start_daemon() {
0|routed) payload=0;;
*) payload=1;;
esac
br2684ctl -b -c "$unit" -e "$encaps" -p "$payload" -a "${atmdev:+$atmdev.}${vpi:-8}.${vci:-35}"
[ "$qos" ] && qos="-q $qos"
br2684ctl -b -c "$unit" -e "$encaps" -p "$payload" $qos -a "${atmdev:+$atmdev.}${vpi:-8}.${vci:-35}"
}
start() {

View File

@ -10,10 +10,10 @@ include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=compcache
PKG_VERSION:=0.5.4
PKG_VERSION:=0.6.2
PKG_RELEASE:=$(PKG_VERSION)-1
PKG_SOURCE_URL:=http://compcache.googlecode.com/files/
PKG_MD5SUM:=e83535925a014ac34e1eaeb4f7a2f49a
PKG_MD5SUM:=27aec78dc50e34fb800c74e879057743
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
@ -25,22 +25,25 @@ define KernelPackage/compcache
TITLE:=Driver for compressed ram swap device
VERSION:=$(LINUX_VERSION)-$(BOARD)-$(LINUX_RELEASE)+$(PKG_RELEASE)
FILES:=$(PKG_BUILD_DIR)/ramzswap.$(LINUX_KMOD_SUFFIX) \
$(PKG_BUILD_DIR)/sub-projects/compression/lzo-kmod/lzo1x.$(LINUX_KMOD_SUFFIX) \
$(PKG_BUILD_DIR)/sub-projects/allocators/xvmalloc-kmod/xvmalloc.$(LINUX_KMOD_SUFFIX)
$(PKG_BUILD_DIR)/sub-projects/compression/lzo-kmod/lzo1x.$(LINUX_KMOD_SUFFIX)
endef
include $(INCLUDE_DIR)/kernel-defaults.mk
XVM = sub-projects/allocators/xvmalloc-kmod
LZO = sub-projects/compression/lzo-kmod
RZSC = sub-projects/rzscontrol
BUILDFLAGS:=-DCONFIG_BLK_DEV_RAMZSWAP_STATS \
-I$(PKG_BUILD_DIR)/$(XVM) \
BUILDFLAGS:=-DCONFIG_RAMZSWAP_STATS \
-I$(PKG_BUILD_DIR)/$(LZO) \
-g -Wall
-Wall
RZSCFLAGS:=-I$(PKG_BUILD_DIR)/$(RZSC)/../include \
-I$(PKG_BUILD_DIR)/$(RZSC)/../..
define Build/Compile
$(MAKE) $(KERNEL_MAKEOPTS) EXTRA_CFLAGS="$(BUILDFLAGS)" M="$(PKG_BUILD_DIR)" modules
$(TARGET_CC) $(TARGET_CFLAGS) $(RZSCFLAGS) $(PKG_BUILD_DIR)/$(RZSC)/rzscontrol.c -o $(PKG_BUILD_DIR)/rzscontrol
endef
define KernelPackage/compcache/install
@ -52,6 +55,8 @@ define KernelPackage/compcache/install
$(1)/etc/config/compcache
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/compcache.init $(1)/etc/init.d/compcache
$(INSTALL_DIR) $(1)/sbin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/rzscontrol $(1)/sbin/rzscontrol
endef
define KernelPackage/compcache/config

View File

@ -18,7 +18,6 @@ load_modules() {
params_set="disksize_kb=$size_kbytes"
fi
if [ "`lsmod | grep 'ramzswap'`" == "" ]; then
insmod xvmalloc
insmod lzo1x
insmod ramzswap $params_set
swapon /dev/ramzswap0
@ -34,7 +33,6 @@ remove_modules() {
[ "`cat /proc/swaps | grep 'ramzswap0'`" != "" ] && swapoff /dev/ramzswap0
[ "`lsmod | grep 'ramzswap'`" != "" ] && rmmod ramzswap &> /dev/null
[ "`lsmod | grep 'lzo1x'`" != "" ] && rmmod lzo1x &> /dev/null
[ "`lsmod | grep 'xvmalloc'`" != "" ] && rmmod xvmalloc &> /dev/null
fi
}

View File

@ -1,60 +1,53 @@
diff -uNr compcache-0.5.4-old/Makefile compcache-0.5.4/Makefile
--- compcache-0.5.4-old/Makefile 2009-10-17 08:49:42.000000000 +0200
+++ compcache-0.5.4/Makefile 2009-10-17 09:39:34.000000000 +0200
@@ -1,19 +1,26 @@
diff -uNr compcache-org/Makefile compcache-0.6.2/Makefile
--- compcache-org/Makefile 2010-01-24 17:46:50.000000000 +0100
+++ compcache-0.6.2/Makefile 2010-03-18 16:00:41.000000000 +0100
@@ -1,14 +1,17 @@
KERNEL_BUILD_PATH ?= "/lib/modules/$(shell uname -r)/build"
XVM = sub-projects/allocators/xvmalloc-kmod
-EXTRA_CFLAGS := -DCONFIG_BLK_DEV_RAMZSWAP_STATS \
- -I$(PWD)/$(XVM) \
+LZO = sub-projects/compression/lzo-kmod
+
+EXTRA_CFLAGS += -DCONFIG_BLK_DEV_RAMZSWAP_STATS \
+ -I$(PWD)/$(XVM) \
+ -I$(PWD)/$(LZO) \
-g -Wall
EXTRA_CFLAGS := -DCONFIG_RAMZSWAP_STATS \
-Wall
obj-m += $(XVM)/xvmalloc.o \
+ $(LZO)/lzo1x.o \
ramzswap.o
-obj-m += ramzswap.o
+obj-m += ramzswap.o $(LZO)/lzo1x.o
ramzswap-objs := ramzswap_drv.o $(XVM)/xvmalloc.o
+
all:
make -C $(KERNEL_BUILD_PATH) M=$(PWD)/$(XVM) modules
+ make -C $(KERNEL_BUILD_PATH) M=$(PWD)/$(LZO) modules
make -C $(KERNEL_BUILD_PATH) M=$(PWD) modules
@ln -sf $(XVM)/xvmalloc.ko
+ @ln -sf $(LZO)/xvmalloc.ko
+ make -C $(KERNEL_BUILD_PATH) M=$(PWD)/$(LZO) modules
make -C sub-projects/rzscontrol
doc:
@@ -16,5 +19,6 @@
clean:
make -C $(KERNEL_BUILD_PATH) M=$(PWD) clean
make -C $(KERNEL_BUILD_PATH) M=$(PWD)/$(XVM) clean
+ make -C $(KERNEL_BUILD_PATH) M=$(PWD)/$(LZO) clean
make -C sub-projects/rzscontrol clean
@rm -rf *.ko
diff -uNr compcache-0.5.4-old/ramzswap.c compcache-0.5.4/ramzswap.c
--- compcache-0.5.4-old/ramzswap.c 2009-10-17 08:50:06.000000000 +0200
+++ compcache-0.5.4/ramzswap.c 2009-10-17 09:35:59.000000000 +0200
@@ -20,7 +20,6 @@
diff -uNr compcache-org/ramzswap_drv.c compcache-0.6.2/ramzswap_drv.c
--- compcache-org/ramzswap_drv.c 2010-01-24 17:52:19.000000000 +0100
+++ compcache-0.6.2/ramzswap_drv.c 2010-03-18 16:03:23.000000000 +0100
@@ -23,13 +23,13 @@
#include <linux/device.h>
#include <linux/genhd.h>
#include <linux/highmem.h>
-#include <linux/lzo.h>
#include <linux/mutex.h>
#include <linux/proc_fs.h>
#include <linux/string.h>
diff -uNr compcache-0.5.4-old/ramzswap.h compcache-0.5.4/ramzswap.h
--- compcache-0.5.4-old/ramzswap.h 2009-10-17 08:50:06.000000000 +0200
+++ compcache-0.5.4/ramzswap.h 2009-10-17 09:40:45.000000000 +0200
@@ -16,6 +16,7 @@
#define _RAMZSWAP_H_
#include <linux/swap.h>
#include <linux/swapops.h>
#include <linux/vmalloc.h>
#include <linux/version.h>
#include "xvmalloc.h"
+#include "lzo.h"
#include "compat.h"
#include "ramzswap_drv.h"
/*
* Stored at beginning of each compressed object.
diff -uNr compcache-0.5.4-old/sub-projects/compression/lzo-kmod/lzo1x.c compcache-0.5.4/sub-projects/compression/lzo-kmod/lzo1x.c
--- compcache-0.5.4-old/sub-projects/compression/lzo-kmod/lzo1x.c 1970-01-01 01:00:00.000000000 +0100
+++ compcache-0.5.4/sub-projects/compression/lzo-kmod/lzo1x.c 2009-10-17 09:35:59.000000000 +0200
diff -uNr compcache-old/sub-projects/compression/lzo-kmod/lzo1x.c compcache/sub-projects/compression/lzo-kmod/lzo1x.c
--- compcache-old/sub-projects/compression/lzo-kmod/lzo1x.c 1970-01-01 01:00:00.000000000 +0100
+++ compcache/sub-projects/compression/lzo-kmod/lzo1x.c 2009-10-17 09:35:59.000000000 +0200
@@ -0,0 +1,7 @@
+#include <linux/module.h>
+
@ -63,9 +56,9 @@ diff -uNr compcache-0.5.4-old/sub-projects/compression/lzo-kmod/lzo1x.c compcach
+
+MODULE_LICENSE("GPL");
+MODULE_DESCRIPTION("LZO1X Lib");
diff -uNr compcache-0.5.4-old/sub-projects/compression/lzo-kmod/lzo1x_compress.c compcache-0.5.4/sub-projects/compression/lzo-kmod/lzo1x_compress.c
--- compcache-0.5.4-old/sub-projects/compression/lzo-kmod/lzo1x_compress.c 1970-01-01 01:00:00.000000000 +0100
+++ compcache-0.5.4/sub-projects/compression/lzo-kmod/lzo1x_compress.c 2009-10-17 09:35:59.000000000 +0200
diff -uNr compcache-old/sub-projects/compression/lzo-kmod/lzo1x_compress.c compcache/sub-projects/compression/lzo-kmod/lzo1x_compress.c
--- compcache-old/sub-projects/compression/lzo-kmod/lzo1x_compress.c 1970-01-01 01:00:00.000000000 +0100
+++ compcache/sub-projects/compression/lzo-kmod/lzo1x_compress.c 2009-10-17 09:35:59.000000000 +0200
@@ -0,0 +1,227 @@
+/*
+ * LZO1X Compressor from MiniLZO
@ -294,9 +287,9 @@ diff -uNr compcache-0.5.4-old/sub-projects/compression/lzo-kmod/lzo1x_compress.c
+MODULE_LICENSE("GPL");
+MODULE_DESCRIPTION("LZO1X-1 Compressor");
+
diff -uNr compcache-0.5.4-old/sub-projects/compression/lzo-kmod/lzo1x_decompress.c compcache-0.5.4/sub-projects/compression/lzo-kmod/lzo1x_decompress.c
--- compcache-0.5.4-old/sub-projects/compression/lzo-kmod/lzo1x_decompress.c 1970-01-01 01:00:00.000000000 +0100
+++ compcache-0.5.4/sub-projects/compression/lzo-kmod/lzo1x_decompress.c 2009-10-17 09:35:59.000000000 +0200
diff -uNr compcache-old/sub-projects/compression/lzo-kmod/lzo1x_decompress.c compcache/sub-projects/compression/lzo-kmod/lzo1x_decompress.c
--- compcache-old/sub-projects/compression/lzo-kmod/lzo1x_decompress.c 1970-01-01 01:00:00.000000000 +0100
+++ compcache/sub-projects/compression/lzo-kmod/lzo1x_decompress.c 2009-10-17 09:35:59.000000000 +0200
@@ -0,0 +1,255 @@
+/*
+ * LZO1X Decompressor from MiniLZO
@ -553,9 +546,9 @@ diff -uNr compcache-0.5.4-old/sub-projects/compression/lzo-kmod/lzo1x_decompress
+MODULE_LICENSE("GPL");
+MODULE_DESCRIPTION("LZO1X Decompressor");
+
diff -uNr compcache-0.5.4-old/sub-projects/compression/lzo-kmod/lzodefs.h compcache-0.5.4/sub-projects/compression/lzo-kmod/lzodefs.h
--- compcache-0.5.4-old/sub-projects/compression/lzo-kmod/lzodefs.h 1970-01-01 01:00:00.000000000 +0100
+++ compcache-0.5.4/sub-projects/compression/lzo-kmod/lzodefs.h 2009-10-17 09:35:59.000000000 +0200
diff -uNr compcache-old/sub-projects/compression/lzo-kmod/lzodefs.h compcache/sub-projects/compression/lzo-kmod/lzodefs.h
--- compcache-old/sub-projects/compression/lzo-kmod/lzodefs.h 1970-01-01 01:00:00.000000000 +0100
+++ compcache/sub-projects/compression/lzo-kmod/lzodefs.h 2009-10-17 09:35:59.000000000 +0200
@@ -0,0 +1,43 @@
+/*
+ * lzodefs.h -- architecture, OS and compiler specific defines
@ -600,9 +593,9 @@ diff -uNr compcache-0.5.4-old/sub-projects/compression/lzo-kmod/lzodefs.h compca
+#define DX2(p, s1, s2) (((((size_t)((p)[2]) << (s2)) ^ (p)[1]) \
+ << (s1)) ^ (p)[0])
+#define DX3(p, s1, s2, s3) ((DX2((p)+1, s2, s3) << (s1)) ^ (p)[0])
diff -uNr compcache-0.5.4-old/sub-projects/compression/lzo-kmod/lzo.h compcache-0.5.4/sub-projects/compression/lzo-kmod/lzo.h
--- compcache-0.5.4-old/sub-projects/compression/lzo-kmod/lzo.h 1970-01-01 01:00:00.000000000 +0100
+++ compcache-0.5.4/sub-projects/compression/lzo-kmod/lzo.h 2009-10-17 09:35:59.000000000 +0200
diff -uNr compcache-old/sub-projects/compression/lzo-kmod/lzo.h compcache/sub-projects/compression/lzo-kmod/lzo.h
--- compcache-old/sub-projects/compression/lzo-kmod/lzo.h 1970-01-01 01:00:00.000000000 +0100
+++ compcache/sub-projects/compression/lzo-kmod/lzo.h 2009-10-17 09:35:59.000000000 +0200
@@ -0,0 +1,44 @@
+#ifndef __LZO_H__
+#define __LZO_H__
@ -648,9 +641,9 @@ diff -uNr compcache-0.5.4-old/sub-projects/compression/lzo-kmod/lzo.h compcache-
+#define LZO_E_NOT_YET_IMPLEMENTED (-9)
+
+#endif
diff -uNr compcache-0.5.4-old/sub-projects/compression/lzo-kmod/Makefile compcache-0.5.4/sub-projects/compression/lzo-kmod/Makefile
--- compcache-0.5.4-old/sub-projects/compression/lzo-kmod/Makefile 1970-01-01 01:00:00.000000000 +0100
+++ compcache-0.5.4/sub-projects/compression/lzo-kmod/Makefile 2009-10-17 09:35:59.000000000 +0200
diff -uNr compcache-old/sub-projects/compression/lzo-kmod/Makefile compcache/sub-projects/compression/lzo-kmod/Makefile
--- compcache-old/sub-projects/compression/lzo-kmod/Makefile 1970-01-01 01:00:00.000000000 +0100
+++ compcache/sub-projects/compression/lzo-kmod/Makefile 2009-10-17 09:35:59.000000000 +0200
@@ -0,0 +1,8 @@
+obj-m += lzo1x_compress.o lzo1x_decompress.o
+

View File

@ -1,24 +0,0 @@
diff -uNr compcache-0.5.2/compcache.c compcache/compcache.c
--- compcache-0.5.2/compcache.c 2009-03-10 13:03:56.000000000 +0100
+++ compcache/ramzswap.c 2009-04-01 17:38:20.000000000 +0200
@@ -68,15 +68,15 @@
static int page_zero_filled(void *ptr)
{
u32 pos;
- u64 *page;
-
- page = (u64 *)ptr;
-
+#if defined(CONFIG_64BIT)
+ u64 *page = (u64 *)ptr;
+#else
+ u32 *page = (u32 *)ptr;
+#endif
for (pos = 0; pos != PAGE_SIZE / sizeof(*page); pos++) {
if (page[pos])
return 0;
}
-
return 1;
}

View File

@ -1,39 +0,0 @@
diff -uNr compcache-0.5.4-old/ramzswap.c compcache-0.5.4/ramzswap.c
--- compcache-0.5.4-old/ramzswap.c 2009-10-18 09:14:53.000000000 +0200
+++ compcache-0.5.4/ramzswap.c 2009-10-18 09:12:08.000000000 +0200
@@ -126,7 +126,9 @@
{
int len;
size_t succ_writes, mem_used;
- unsigned int good_compress_perc = 0, no_compress_perc = 0;
+ unsigned int good_compress_perc = 0,
+ av_compression_perc = 0,
+ no_compress_perc = 0;
mem_used = xv_get_total_size_bytes(rzs.mem_pool)
+ (stats.pages_expand << PAGE_SHIFT);
@@ -154,6 +156,8 @@
if (succ_writes && stats.pages_stored) {
good_compress_perc = stats.good_compress * 100
/ stats.pages_stored;
+ av_compression_perc = stats.compr_size * 100
+ / (stats.good_compress << PAGE_SHIFT);
no_compress_perc = stats.pages_expand * 100
/ stats.pages_stored;
}
@@ -168,6 +172,7 @@
"NotifyFree: %8llu\n"
"ZeroPages: %8u\n"
"GoodCompress: %8u %%\n"
+ "AvCompression: %8u %%\n"
"NoCompress: %8u %%\n"
"PagesStored: %8u\n"
"PagesUsed: %8zu\n"
@@ -182,6 +187,7 @@
stats.notify_free,
stats.pages_zero,
good_compress_perc,
+ av_compression_perc,
no_compress_perc,
stats.pages_stored,
mem_used >> PAGE_SHIFT,

View File

@ -263,7 +263,7 @@ dhcp_add() {
leasetime="${leasetime:-12h}"
start="$(dhcp_calc "${start:-100}")"
limit="$((${limit:-150} + 1))"
limit="${limit:-150}"
eval "$(ipcalc.sh $ipaddr $netmask $start $limit)"
if [ "$dynamicdhcp" = "0" ]; then END="static"; fi
append args "--dhcp-range=$networkid,$START,$END,$NETMASK,$leasetime${options:+ $options}"

View File

@ -30,6 +30,13 @@ config rule
option dest_port 68
option target ACCEPT
#Allow ping
config rule
option src wan
option proto icmp
option icmp_type echo-request
option target ACCEPT
# include a file with users custom iptables rules
config include
option path /etc/firewall.user

View File

@ -103,7 +103,7 @@ endef
define KernelPackage/hostap-pci
$(call KernelPackage/hostap/Default)
TITLE:=Host AP driver for PCI adaptors
DEPENDS:=@PCI_SUPPORT kmod-hostap
DEPENDS:= kmod-hostap
KCONFIG:=CONFIG_HOSTAP_PCI
AUTOLOAD:=$(call AutoLoad,60,hostap_pci)
endef

View File

@ -16,3 +16,8 @@ config IFXMIPS_ANNEX_B
Annex-B
endchoice
config IFXMIPS_DSL_DEBUG
bool "ifxmips-dsl debugging"
help
Say Y, if you need ifxmips-dsl to display debug messages.

View File

@ -81,8 +81,6 @@ CONFIGURE_ARGS += --enable-kernel-include="$(LINUX_DIR)/include" \
--with-channels-per-line="$(IFX_DSL_CHANNELS_PER_LINE)" \
--enable-danube \
--enable-add-drv-cflags="-DMODULE" \
--enable-debug=yes \
--enable-debug-prints=yes \
--disable-dsl-delt-static \
--disable-adsl-led \
--enable-dsl-ceoc \
@ -103,6 +101,13 @@ CONFIGURE_ARGS += --enable-kernel-include="$(LINUX_DIR)/include" \
EXTRA_CFLAGS = -fno-pic -mno-abicalls -mlong-calls -G 0
ifeq ($(CONFIG_IFXMIPS_DSL_DEBUG),y)
CONFIGURE_ARGS += \
--enable-debug=yes \
--enable-debug-prints=yes
EXTRA_CFLAGS += -DDEBUG
endif
define Build/Prepare
$(PKG_UNPACK)
$(INSTALL_DIR) $(PKG_BUILD_DIR)/src/mei/

View File

@ -1,12 +1,13 @@
Index: drv_dsl_cpe_api-3.24.4.4/src/mei/ifxmips_mei.c
===================================================================
--- drv_dsl_cpe_api-3.24.4.4.orig/src/mei/ifxmips_mei.c 2009-10-31 23:30:20.000000000 +0100
+++ drv_dsl_cpe_api-3.24.4.4/src/mei/ifxmips_mei.c 2009-11-01 04:41:58.000000000 +0100
@@ -41,18 +41,19 @@
+++ drv_dsl_cpe_api-3.24.4.4/src/mei/ifxmips_mei.c 2010-01-24 14:21:32.000000000 +0100
@@ -41,18 +41,20 @@
#include <linux/init.h>
#include <linux/ioport.h>
#include <linux/delay.h>
+#include <linux/device.h>
+#include <linux/sched.h>
#include <asm/uaccess.h>
#include <asm/hardirq.h>
-#include <asm/ifx/ifx_regs.h>
@ -29,7 +30,7 @@ Index: drv_dsl_cpe_api-3.24.4.4/src/mei/ifxmips_mei.c
#define IFXMIPS_RCU_RST_REQ_ARC_JTAG IFX_RCU_RST_REQ_ARC_JTAG
#define IFXMIPS_RCU_RST_REQ_DFE IFX_RCU_RST_REQ_DFE
#define IFXMIPS_RCU_RST_REQ_AFE IFX_RCU_RST_REQ_AFE
@@ -76,7 +77,7 @@
@@ -76,7 +78,7 @@
#define ifxmips_r32(reg) __raw_readl(reg)
#define ifxmips_w32(val, reg) __raw_writel(val, reg)
#define ifxmips_w32_mask(clear, set, reg) ifxmips_w32((ifxmips_r32(reg) & ~clear) | set, reg)
@ -38,7 +39,7 @@ Index: drv_dsl_cpe_api-3.24.4.4/src/mei/ifxmips_mei.c
#define IFX_MEI_EMSG(fmt, args...) printk(KERN_ERR "[%s %d]: " fmt,__FUNCTION__, __LINE__, ## args)
#define IFX_MEI_DMSG(fmt, args...) printk(KERN_INFO "[%s %d]: " fmt,__FUNCTION__, __LINE__, ## args)
@@ -173,7 +174,8 @@
@@ -173,7 +175,8 @@
extern void ifxmips_mask_and_ack_irq(unsigned int irq_nr);
#define MEI_MASK_AND_ACK_IRQ ifxmips_mask_and_ack_irq
@ -48,7 +49,7 @@ Index: drv_dsl_cpe_api-3.24.4.4/src/mei/ifxmips_mei.c
static struct file_operations bsp_mei_operations = {
owner:THIS_MODULE,
@@ -2294,10 +2296,10 @@
@@ -2294,10 +2297,10 @@
IFX_MEI_EMSG ("request_irq %d failed!\n", pDev->nIrq[IFX_DFEIR]);
return -1;
}
@ -61,7 +62,7 @@ Index: drv_dsl_cpe_api-3.24.4.4/src/mei/ifxmips_mei.c
// IFX_MEI_DMSG("Device %d initialized. IER %#x\n", num, bsp_get_irq_ier(pDev->nIrq[IFX_DYING_GASP]));
return 0;
}
@@ -2922,6 +2924,7 @@
@@ -2922,6 +2925,7 @@
IFX_MEI_ModuleInit (void)
{
int i = 0;
@ -69,7 +70,7 @@ Index: drv_dsl_cpe_api-3.24.4.4/src/mei/ifxmips_mei.c
printk ("IFX MEI Version %ld.%02ld.%02ld", bsp_mei_version.major, bsp_mei_version.minor, bsp_mei_version.revision);
@@ -2935,14 +2938,15 @@
@@ -2935,14 +2939,15 @@
IFX_MEI_InitProcFS (i);
#endif
}
@ -87,7 +88,7 @@ Index: drv_dsl_cpe_api-3.24.4.4/src/mei/ifxmips_mei.c
return 0;
}
@@ -2996,3 +3000,5 @@
@@ -2996,3 +3001,5 @@
module_init (IFX_MEI_ModuleInit);
module_exit (IFX_MEI_ModuleExit);

View File

@ -0,0 +1,287 @@
--- drv_dsl_cpe_api-3.24.4.4.orig/src/mei/ifxmips_mei.c 2010-03-14 02:59:49.000000000 +0100
+++ drv_dsl_cpe_api-3.24.4.4/src/mei//ifxmips_mei.c 2010-03-14 03:02:13.000000000 +0100
@@ -78,8 +78,8 @@
#define ifxmips_w32(val, reg) __raw_writel(val, reg)
#define ifxmips_w32_mask(clear, set, reg) ifxmips_w32((ifxmips_r32(reg) & ~clear) | set, reg)
*/
-#define IFX_MEI_EMSG(fmt, args...) printk(KERN_ERR "[%s %d]: " fmt,__FUNCTION__, __LINE__, ## args)
-#define IFX_MEI_DMSG(fmt, args...) printk(KERN_INFO "[%s %d]: " fmt,__FUNCTION__, __LINE__, ## args)
+#define IFX_MEI_EMSG(fmt, args...) pr_err("[%s %d]: " fmt,__FUNCTION__, __LINE__, ## args)
+#define IFX_MEI_DMSG(fmt, args...) pr_debug("[%s %d]: " fmt,__FUNCTION__, __LINE__, ## args)
#ifdef CONFIG_IFXMIPS_MEI_FW_LOOPBACK
//#define DFE_MEM_TEST
@@ -1300,7 +1300,7 @@ IFX_MEI_RunAdslModem (DSL_DEV_Device_t *
IFX_MEI_EMSG (">>> malloc fail for codeswap buff!!! <<<\n");
return DSL_DEV_MEI_ERR_FAILURE;
}
- printk("allocate %dKB swap buff memory at: 0x%p\n", ksize(mei_arc_swap_buff)/1024, mei_arc_swap_buff);
+ IFX_MEI_DMSG("allocate %dKB swap buff memory at: 0x%p\n", ksize(mei_arc_swap_buff)/1024, mei_arc_swap_buff);
}
DSL_DEV_PRIVATE(pDev)->img_hdr =
@@ -1475,7 +1475,7 @@ IFX_MEI_DFEMemoryFree (DSL_DEV_Device_t
}
if(mei_arc_swap_buff != NULL){
- printk("free %dKB swap buff memory at: 0x%p\n", ksize(mei_arc_swap_buff)/1024, mei_arc_swap_buff);
+ IFX_MEI_DMSG("free %dKB swap buff memory at: 0x%p\n", ksize(mei_arc_swap_buff)/1024, mei_arc_swap_buff);
kfree(mei_arc_swap_buff);
mei_arc_swap_buff=NULL;
}
@@ -1495,7 +1495,7 @@ IFX_MEI_DFEMemoryAlloc (DSL_DEV_Device_t
// DSL_DEV_PRIVATE(pDev)->adsl_mem_info;
int allocate_size = SDRAM_SEGMENT_SIZE;
- printk(KERN_INFO "[%s %d]: image_size = %ld\n", __func__, __LINE__, size);
+ IFX_MEI_DMSG("image_size = %ld\n", size);
// Alloc Swap Pages
for (idx = 0; size > 0 && idx < MAX_BAR_REGISTERS; idx++) {
// skip bar15 for XDATA usage.
@@ -1595,7 +1595,7 @@ DSL_BSP_FWDownload (DSL_DEV_Device_t * p
ssize_t retval = -ENOMEM;
int idx = 0;
- printk("\n%s\n", __func__);
+ IFX_MEI_DMSG("\n");
if (*loff == 0) {
if (size < sizeof (img_hdr_tmp)) {
@@ -1647,7 +1647,7 @@ DSL_BSP_FWDownload (DSL_DEV_Device_t * p
goto error;
}
adsl_mem_info[XDATA_REGISTER].type = FREE_RELOAD;
- printk(KERN_INFO "[%s %d] -> IFX_MEI_BarUpdate()\n", __func__, __LINE__);
+ IFX_MEI_DMSG("-> IFX_MEI_BarUpdate()\n");
IFX_MEI_BarUpdate (pDev, (DSL_DEV_PRIVATE(pDev)->nBar));
}
else if (DSL_DEV_PRIVATE(pDev)-> image_size == 0) {
@@ -1926,7 +1926,7 @@ static void
WriteMbox (u32 * mboxarray, u32 size)
{
IFX_MEI_DebugWrite (&dsl_devices[0], IMBOX_BASE, mboxarray, size);
- printk ("write to %X\n", IMBOX_BASE);
+ IFX_MEI_DMSG("write to %X\n", IMBOX_BASE);
IFX_MEI_LongWordWriteOffset (&dsl_devices[0], (u32) ME_ME2ARC_INT, MEI_TO_ARC_MSGAV);
}
@@ -1935,7 +1935,7 @@ static void
ReadMbox (u32 * mboxarray, u32 size)
{
IFX_MEI_DebugRead (&dsl_devices[0], OMBOX_BASE, mboxarray, size);
- printk ("read from %X\n", OMBOX_BASE);
+ IFX_MEI_DMSG("read from %X\n", OMBOX_BASE);
}
static void
@@ -1965,7 +1965,7 @@ arc_code_page_download (uint32_t arc_cod
{
int count;
- printk ("try to download pages,size=%d\n", arc_code_length);
+ IFX_MEI_DMSG("try to download pages,size=%d\n", arc_code_length);
IFX_MEI_ControlModeSet (&dsl_devices[0], MEI_MASTER_MODE);
IFX_MEI_HaltArc (&dsl_devices[0]);
IFX_MEI_LongWordWriteOffset (&dsl_devices[0], (u32) ME_DX_AD, 0);
@@ -2004,21 +2004,21 @@ dfe_loopback_irq_handler (DSL_DEV_Device
memset (&rd_mbox[0], 0, 10 * 4);
ReadMbox (&rd_mbox[0], 6);
if (rd_mbox[0] == 0x0) {
- printk ("Get ARC_ACK\n");
+ FX_MEI_DMSG("Get ARC_ACK\n");
got_int = 1;
}
else if (rd_mbox[0] == 0x5) {
- printk ("Get ARC_BUSY\n");
+ IFX_MEI_DMSG("Get ARC_BUSY\n");
got_int = 2;
}
else if (rd_mbox[0] == 0x3) {
- printk ("Get ARC_EDONE\n");
+ IFX_MEI_DMSG("Get ARC_EDONE\n");
if (rd_mbox[1] == 0x0) {
got_int = 3;
- printk ("Get E_MEMTEST\n");
+ IFX_MEI_DMSG("Get E_MEMTEST\n");
if (rd_mbox[2] != 0x1) {
got_int = 4;
- printk ("Get Result %X\n", rd_mbox[2]);
+ IFX_MEI_DMSG("Get Result %X\n", rd_mbox[2]);
}
}
}
@@ -2036,21 +2036,21 @@ wait_mem_test_result (void)
uint32_t mbox[5];
mbox[0] = 0;
- printk ("Waiting Starting\n");
+ IFX_MEI_DMSG("Waiting Starting\n");
while (mbox[0] == 0) {
ReadMbox (&mbox[0], 5);
}
- printk ("Try to get mem test result.\n");
+ IFX_MEI_DMSG("Try to get mem test result.\n");
ReadMbox (&mbox[0], 5);
if (mbox[0] == 0xA) {
- printk ("Success.\n");
+ IFX_MEI_DMSG("Success.\n");
}
else if (mbox[0] == 0xA) {
- printk ("Fail,address %X,except data %X,receive data %X\n",
+ IFX_MEI_EMSG("Fail,address %X,except data %X,receive data %X\n",
mbox[1], mbox[2], mbox[3]);
}
else {
- printk ("Fail\n");
+ IFX_MEI_EMSG("Fail\n");
}
}
@@ -2066,7 +2066,7 @@ arc_ping_testing (DSL_DEV_Device_t *pDev
rd_mbox[i] = 0;
}
- printk ("send ping msg\n");
+ FX_MEI_DMSG("send ping msg\n");
wr_mbox[0] = MEI_PING;
WriteMbox (&wr_mbox[0], 10);
@@ -2074,7 +2074,7 @@ arc_ping_testing (DSL_DEV_Device_t *pDev
MEI_WAIT (100);
}
- printk ("send start event\n");
+ IFX_MEI_DMSG("send start event\n");
got_int = 0;
wr_mbox[0] = 0x4;
@@ -2093,14 +2093,14 @@ arc_ping_testing (DSL_DEV_Device_t *pDev
IFX_MEI_LongWordWriteOffset (&dsl_devices[0],
(u32) ME_ME2ARC_INT,
MEI_TO_ARC_MSGAV);
- printk ("sleeping\n");
+ IFX_MEI_DMSG("sleeping\n");
while (1) {
if (got_int > 0) {
if (got_int > 3)
- printk ("got_int >>>> 3\n");
+ IFX_MEI_DMSG("got_int >>>> 3\n");
else
- printk ("got int = %d\n", got_int);
+ IFX_MEI_DMSG("got int = %d\n", got_int);
got_int = 0;
//schedule();
DSL_ENABLE_IRQ (pDev->nIrq[IFX_DFEIR]);
@@ -2151,7 +2151,7 @@ DFE_Loopback_Test (void)
DSL_DEV_PRIVATE(pDev)->adsl_mem_info[idx].type = FREE_RELOAD;
IFX_MEI_WRITE_REGISTER_L ((((uint32_t) DSL_DEV_PRIVATE(pDev)->adsl_mem_info[idx].address) & 0x0fffffff),
IFXMIPS_MEI_BASE_ADDR + ME_XMEM_BAR_BASE + idx * 4);
- printk ("bar%d(%X)=%X\n", idx,
+ IFX_MEI_DMSG("bar%d(%X)=%X\n", idx,
IFXMIPS_MEI_BASE_ADDR + ME_XMEM_BAR_BASE +
idx * 4, (((uint32_t)
((ifx_mei_device_private_t *)
@@ -2168,20 +2168,20 @@ DFE_Loopback_Test (void)
return DSL_DEV_MEI_ERR_FAILURE;
}
//WriteARCreg(AUX_IC_CTRL,2);
- printk(KERN_INFO "[%s %s %d]: Setting MEI_MASTER_MODE..\n", __FILE__, __func__, __LINE__);
+ IFX_MEI_DMSG("Setting MEI_MASTER_MODE..\n");
IFX_MEI_ControlModeSet (pDev, MEI_MASTER_MODE);
#define AUX_IC_CTRL 0x11
_IFX_MEI_DBGLongWordWrite (pDev, MEI_DEBUG_DEC_AUX_MASK,
AUX_IC_CTRL, 2);
- printk(KERN_INFO "[%s %s %d]: Setting JTAG_MASTER_MODE..\n", __FILE__, __func__, __LINE__);
+ IFX_MEI_DMSG("Setting JTAG_MASTER_MODE..\n");
IFX_MEI_ControlModeSet (pDev, JTAG_MASTER_MODE);
- printk(KERN_INFO "[%s %s %d]: Halting ARC...\n", __FILE__, __func__, __LINE__);
+ IFX_MEI_DMSG("Halting ARC...\n");
IFX_MEI_HaltArc (&dsl_devices[0]);
#ifdef DFE_PING_TEST
- printk ("ping test image size=%d\n", sizeof (arc_ahb_access_code));
+ IFX_MEI_DMSG("ping test image size=%d\n", sizeof (arc_ahb_access_code));
memcpy ((u8 *) (DSL_DEV_PRIVATE(pDev)->
adsl_mem_info[0].address + 0x1004),
&arc_ahb_access_code[0], sizeof (arc_ahb_access_code));
@@ -2189,13 +2189,13 @@ DFE_Loopback_Test (void)
#endif //DFE_PING_TEST
- printk ("ARC ping test code download complete\n");
+ IFX_MEI_DMSG("ARC ping test code download complete\n");
#endif //defined( DFE_PING_TEST )|| defined( DFE_ATM_LOOPBACK)
#ifdef DFE_MEM_TEST
IFX_MEI_LongWordWriteOffset (&dsl_devices[0], (u32) ME_ARC2ME_MASK, MSGAV_EN);
arc_code_page_download (1537, &code_array[0]);
- printk ("ARC mem test code download complete\n");
+ IFX_MEI_DMSG("ARC mem test code download complete\n");
#endif //DFE_MEM_TEST
#ifdef DFE_ATM_LOOPBACK
arc_debug_data = 0xf;
@@ -2214,7 +2214,7 @@ DFE_Loopback_Test (void)
IFX_MEI_DebugWrite (&dsl_devices[0], 0x32010, &arc_debug_data, 1);
#endif //DFE_ATM_LOOPBACK
IFX_MEI_IRQEnable (pDev);
- printk(KERN_INFO "[%s %s %d]: run ARC...\n", __FILE__, __func__, __LINE__);
+ IFX_MEI_DMSG("run ARC...\n");
IFX_MEI_RunArc (&dsl_devices[0]);
#ifdef DFE_PING_TEST
@@ -2525,7 +2525,7 @@ IFX_MEI_Ioctls (DSL_DEV_Device_t * pDev,
break;
case DSL_FIO_BSP_DSL_START:
- printk("\n%s: DSL_FIO_BSP_DSL_START\n",__func__);
+ IFX_MEI_DMSG("DSL_FIO_BSP_DSL_START\n");
if ((meierr = IFX_MEI_RunAdslModem (pDev)) != DSL_DEV_MEI_ERR_SUCCESS) {
IFX_MEI_EMSG ("IFX_MEI_RunAdslModem() error...");
meierr = DSL_DEV_MEI_ERR_FAILURE;
@@ -2926,11 +2926,11 @@ IFX_MEI_ModuleInit (void)
int i = 0;
static struct class *dsl_class;
- printk ("IFX MEI Version %ld.%02ld.%02ld", bsp_mei_version.major, bsp_mei_version.minor, bsp_mei_version.revision);
+ pr_info("IFX MEI Version %ld.%02ld.%02ld", bsp_mei_version.major, bsp_mei_version.minor, bsp_mei_version.revision);
for (i = 0; i < BSP_MAX_DEVICES; i++) {
if (IFX_MEI_InitDevice (i) != 0) {
- printk ("%s: Init device fail!\n", __FUNCTION__);
+ IFX_MEI_EMSG("Init device fail!\n");
return -EIO;
}
IFX_MEI_InitDevNode (i);
@@ -2942,7 +2942,7 @@ IFX_MEI_ModuleInit (void)
dsl_bsp_event_callback[i].function = NULL;
#ifdef CONFIG_IFXMIPS_MEI_FW_LOOPBACK
- printk(KERN_INFO "[%s %s %d]: Start loopback test...\n", __FILE__, __func__, __LINE__);
+ IFX_MEI_DMSG("Start loopback test...\n");
DFE_Loopback_Test ();
#endif
dsl_class = class_create(THIS_MODULE, "ifx_mei");
--- drv_dsl_cpe_api-3.24.4.4.orig/src/mei/ifxmips_atm_core.c 2010-03-13 16:42:49.000000000 +0100
+++ drv_dsl_cpe_api-3.24.4.4/src/mei/ifxmips_atm_core.c 2010-03-14 03:39:05.000000000 +0100
@@ -2336,7 +2335,7 @@ static int atm_showtime_enter(struct por
IFX_REG_W32(0x0F, UTP_CFG);
#endif
- printk("enter showtime, cell rate: 0 - %d, 1 - %d, xdata addr: 0x%08x\n", g_atm_priv_data.port[0].tx_max_cell_rate, g_atm_priv_data.port[1].tx_max_cell_rate, (unsigned int)g_xdata_addr);
+ pr_debug("enter showtime, cell rate: 0 - %d, 1 - %d, xdata addr: 0x%08x\n", g_atm_priv_data.port[0].tx_max_cell_rate, g_atm_priv_data.port[1].tx_max_cell_rate, (unsigned int)g_xdata_addr);
return IFX_SUCCESS;
}
@@ -2352,7 +2351,7 @@ static int atm_showtime_exit(void)
// TODO: ReTX clean state
g_xdata_addr = NULL;
- printk("leave showtime\n");
+ pr_debug("leave showtime\n");
return IFX_SUCCESS;
}

View File

@ -10,7 +10,7 @@ BLOCK_MENU:=Block Devices
define KernelPackage/ata-core
SUBMENU:=$(BLOCK_MENU)
TITLE:=Serial and Parallel ATA support
DEPENDS:=@PCI_SUPPORT @LINUX_2_6 +kmod-scsi-core @(!TARGET_ubicom32||!TARGET_etrax)
DEPENDS:=@PCI_SUPPORT @LINUX_2_6 +kmod-scsi-core @(!TARGET_ubicom32||!TARGET_etrax||!TARGET_x86)
KCONFIG:=CONFIG_ATA
FILES:=$(LINUX_DIR)/drivers/ata/libata.$(LINUX_KMOD_SUFFIX)
AUTOLOAD:=$(call AutoLoad,21,libata,1)
@ -21,7 +21,7 @@ $(eval $(call KernelPackage,ata-core))
define KernelPackage/ata/Depends
SUBMENU:=$(BLOCK_MENU)
DEPENDS:=kmod-ata-core $(1)
DEPENDS:=!TARGET_x86:kmod-ata-core $(1)
endef
@ -223,8 +223,14 @@ endef
ifneq ($(CONFIG_arm)$(CONFIG_powerpc),y)
define KernelPackage/ide-core/2.6
ifeq ($(CONFIG_PCI_SUPPORT),y)
FILES+=$(LINUX_DIR)/drivers/ide/ide-generic.$(LINUX_KMOD_SUFFIX) \
$(LINUX_DIR)/drivers/ide/ide-pci-generic.$(LINUX_KMOD_SUFFIX)
AUTOLOAD+=$(call AutoLoad,30,ide-generic ide-pci-generic,1)
else
FILES+=$(LINUX_DIR)/drivers/ide/ide-generic.$(LINUX_KMOD_SUFFIX)
AUTOLOAD+=$(call AutoLoad,30,ide-generic,1)
endif
endef
endif
@ -302,6 +308,7 @@ $(eval $(call KernelPackage,ide-it821x))
define KernelPackage/scsi-core
SUBMENU:=$(BLOCK_MENU)
TITLE:=SCSI device support
DEPENDS:=@!TARGET_x86
KCONFIG:= \
CONFIG_SCSI \
CONFIG_BLK_DEV_SD
@ -379,7 +386,7 @@ define KernelPackage/dm
CONFIG_BLK_DEV_DM \
CONFIG_DM_MIRROR
FILES:=$(LINUX_DIR)/drivers/md/dm-*.$(LINUX_KMOD_SUFFIX)
AUTOLOAD:=$(call AutoLoad,30,dm-mod dm-region-hash dm-mirror dm-log)
AUTOLOAD:=$(call AutoLoad,30,dm-mod dm-log dm-region-hash dm-mirror)
endef
define KernelPackage/dm/description
@ -451,7 +458,7 @@ $(eval $(call KernelPackage,axonram))
define KernelPackage/libsas
SUBMENU:=$(BLOCK_MENU)
TITLE:=SAS Domain Transport Attributes
DEPENDS:=+kmod-scsi-core @TARGET_x86
DEPENDS:=@TARGET_x86
KCONFIG:=CONFIG_SCSI_SAS_LIBSAS \
CONFIG_SCSI_SAS_ATTRS \
CONFIG_SCSI_SAS_ATA=y \
@ -474,7 +481,11 @@ define KernelPackage/mvsas
TITLE:=Marvell 88SE6440 SAS/SATA driver
DEPENDS:=@TARGET_x86 +kmod-libsas
KCONFIG:=CONFIG_SCSI_MVSAS
ifneq ($(CONFIG_LINUX_2_6_25)$(CONFIG_LINUX_2_6_30),)
FILES:=$(LINUX_DIR)/drivers/scsi/mvsas.$(LINUX_KMOD_SUFFIX)
else
FILES:=$(LINUX_DIR)/drivers/scsi/mvsas/mvsas.$(LINUX_KMOD_SUFFIX)
endif
AUTOLOAD:=$(call AutoLoad,40,mvsas,1)
endef

View File

@ -149,7 +149,7 @@ $(call KernelPackage/crypto/Depends,)
AUTOLOAD:=$(call AutoLoad,09,aes$(AES_SUFFIX))
endef
define KernelPackage/crypto-aes/x86-2.6
define KernelPackage/crypto-aes/x86
FILES+=$(LINUX_DIR)/arch/x86/crypto/aes-i586.$(LINUX_KMOD_SUFFIX)
AUTOLOAD:=$(call AutoLoad,09,aes$(AES_SUFFIX) aes-i586)
endef
@ -252,6 +252,7 @@ $(call KernelPackage/crypto/Depends,)
CONFIG_CRYPTO_TEA \
CONFIG_CRYPTO_TGR192 \
CONFIG_CRYPTO_TWOFISH \
CONFIG_CRYPTO_TWOFISH_COMMON \
CONFIG_CRYPTO_TWOFISH_586 \
CONFIG_CRYPTO_WP512
FILES:= \
@ -266,6 +267,7 @@ $(call KernelPackage/crypto/Depends,)
$(LINUX_DIR)/crypto/sha512$(SHA512_SUFFIX).$(LINUX_KMOD_SUFFIX) \
$(LINUX_DIR)/crypto/tea.$(LINUX_KMOD_SUFFIX) \
$(LINUX_DIR)/crypto/twofish.$(LINUX_KMOD_SUFFIX) \
$(LINUX_DIR)/crypto/twofish_common.$(LINUX_KMOD_SUFFIX) \
$(LINUX_DIR)/crypto/wp512.$(LINUX_KMOD_SUFFIX)
endef
@ -277,6 +279,10 @@ define KernelPackage/crypto-misc/2.6
$(LINUX_DIR)/crypto/tgr192.$(LINUX_KMOD_SUFFIX)
endef
define KernelPackage/crypto-misc/x86
FILES+=$(LINUX_DIR)/arch/x86/crypto/twofish-i586.$(LINUX_KMOD_SUFFIX)
endef
$(eval $(call KernelPackage,crypto-misc))

View File

@ -362,14 +362,12 @@ define KernelPackage/fs-btrfs
SUBMENU:=$(FS_MENU)
TITLE:=BTRFS filesystem support
KCONFIG:=\
CONFIG_CRYPTO_CRC32C \
CONFIG_LIBCRC32C \
CONFIG_BTRFS_FS \
CONFIG_BTRFS_FS_POSIX_ACL=n
# for crc32c
DEPENDS:=+kmod-crypto-core
DEPENDS:=+kmod-crypto-core +kmod-crypto-misc
FILES:=\
$(LINUX_DIR)/crypto/crc32c.$(LINUX_KMOD_SUFFIX) \
$(LINUX_DIR)/lib/libcrc32c.$(LINUX_KMOD_SUFFIX) \
$(LINUX_DIR)/fs/btrfs/btrfs.$(LINUX_KMOD_SUFFIX)
AUTOLOAD:=$(call AutoLoad,30,crc32c libcrc32c btrfs,1)

View File

@ -102,7 +102,7 @@ $(call KernelPackage/hwmon/Depends,@TARGET_rdc||TARGET_x86)
FILES:= \
$(LINUX_DIR)/drivers/hwmon/hwmon-vid.$(LINUX_KMOD_SUFFIX) \
$(LINUX_DIR)/drivers/hwmon/w83627hf.$(LINUX_KMOD_SUFFIX)
AUTOLOAD:=$(call AutoLoad,50,hwmon-vid w83627h)
AUTOLOAD:=$(call AutoLoad,50,hwmon-vid w83627hf)
endef
define KernelPacakge/hwmon-w83627hf/description

View File

@ -290,7 +290,7 @@ define KernelPackage/tg3
TITLE:=Broadcom Tigon3 Gigabit Ethernet
FILES:=$(LINUX_DIR)/drivers/net/tg3.$(LINUX_KMOD_SUFFIX)
KCONFIG:=CONFIG_TIGON3
DEPENDS:=@LINUX_2_6 +kmod-libphy @!TARGET_ubicom32
DEPENDS:=@LINUX_2_6 +!TARGET_brcm47xx:kmod-libphy @!TARGET_ubicom32
SUBMENU:=$(NETWORK_DEVICES_MENU)
AUTOLOAD:=$(call AutoLoad,50,tg3)
endef

View File

@ -49,7 +49,12 @@ endef
define KernelPackage/ipt-conntrack/description
Netfilter (IPv4) kernel modules for connection tracking
Includes:
- conntrack
- defrag
- iptables_raw
- NOTRACK
- state
- xt_NOTRACK
endef
$(eval $(call KernelPackage,ipt-conntrack))
@ -71,7 +76,6 @@ define KernelPackage/ipt-conntrack-extra/description
- conntrack
- helper
- recent
- NOTRACK
endef
$(eval $(call KernelPackage,ipt-conntrack-extra))
@ -309,8 +313,6 @@ define KernelPackage/ipt-extra/description
- ipt_physdev
- ipt_pkttype
- ipt_recent
- iptable_raw
- xt_NOTRACK
endef
$(eval $(call KernelPackage,ipt-extra))

View File

@ -88,11 +88,12 @@ define KernelPackage/capi
KCONFIG:= \
CONFIG_ISDN_CAPI \
CONFIG_ISDN_CAPI_CAPI20 \
CONFIG_ISDN_CAPIFS
CONFIG_ISDN_CAPIFS \
CONFIG_ISDN_CAPI_CAPIFS
FILES:= \
$(LINUX_DIR)/drivers/isdn/capi/kernelcapi.$(LINUX_KMOD_SUFFIX) \
$(LINUX_DIR)/drivers/isdn/capi/capifs.$(LINUX_KMOD_SUFFIX)
$(LINUX_DIR)/drivers/isdn/capi/capi.$(LINUX_KMOD_SUFFIX) \
$(LINUX_DIR)/drivers/isdn/capi/capifs.$(LINUX_KMOD_SUFFIX) \
$(LINUX_DIR)/drivers/isdn/capi/capi.$(LINUX_KMOD_SUFFIX)
AUTOLOAD:=$(call AutoLoad,30,kernelcapi capifs capi)
endef
@ -108,19 +109,7 @@ define KernelPackage/misdn
KCONFIG:= \
CONFIG_MISDN \
CONFIG_MISDN_DSP \
CONFIG_MISDN_L1OIP \
CONFIG_ISDN_AUDIO=n \
CONFIG_ISDN_WITH_ABC=n \
CONFIG_ISDN_DRV_LOOP=n \
CONFIG_ISDN_DIVERSION=n \
CONFIG_ISDN_DRV_HISAX=n \
CONFIG_ISDN_DRV_ICN=n \
CONFIG_ISDN_DRV_PCBIT=n \
CONFIG_ISDN_DRV_SC=n \
CONFIG_ISDN_DRV_ACT2000=n \
CONFIG_ISDN_DRV_EICON=n \
CONFIG_ISDN_DRV_TPAM=n \
CONFIG_HYSDN=n
CONFIG_MISDN_L1OIP
FILES:= \
$(LINUX_DIR)/drivers/isdn/mISDN/mISDN_core.$(LINUX_KMOD_SUFFIX) \
$(LINUX_DIR)/drivers/isdn/mISDN/mISDN_dsp.$(LINUX_KMOD_SUFFIX) \
@ -155,19 +144,12 @@ define KernelPackage/isdn4linux
CONFIG_ISDN_MPP=y \
CONFIG_IPPP_FILTER=y \
CONFIG_ISDN_PPP_BSDCOMP \
CONFIG_ISDN_CAPI_MIDDLEWARE=y \
CONFIG_ISDN_CAPI_CAPIFS_BOOL=y \
CONFIG_ISDN_AUDIO=y \
CONFIG_ISDN_TTY_FAX=y \
CONFIG_ISDN_X25=y \
CONFIG_ISDN_DIVERSION \
CONFIG_ISDN_CAPI_CAPIDRV=n \
CONFIG_ISDN_DRV_ACT2000=n \
CONFIG_ISDN_DRV_GIGASET=n \
CONFIG_ISDN_DRV_HISAX=n \
CONFIG_ISDN_DRV_ICN=n \
CONFIG_ISDN_DRV_LOOP=n \
CONFIG_ISDN_DRV_PCBIT=n \
CONFIG_ISDN_DRV_SC=n \
CONFIG_HYSDN=n
CONFIG_ISDN_DIVERSION
FILES:= \
$(LINUX_DIR)/drivers/isdn/divert/dss1_divert.$(LINUX_KMOD_SUFFIX)
AUTOLOAD:=$(call AutoLoad,40,isdn isdn_bsdcomp dss1_divert)
@ -217,10 +199,12 @@ define KernelPackage/ipsec
DEPENDS:=@LINUX_2_6 +kmod-crypto-core +kmod-crypto-des +kmod-crypto-hmac +kmod-crypto-md5 +kmod-crypto-sha1
KCONFIG:= \
CONFIG_NET_KEY \
CONFIG_XFRM_USER
CONFIG_XFRM_USER \
CONFIG_XFRM_IPCOMP
FILES:= \
$(LINUX_DIR)/net/key/af_key.$(LINUX_KMOD_SUFFIX) \
$(LINUX_DIR)/net/xfrm/xfrm_user.$(LINUX_KMOD_SUFFIX)
$(LINUX_DIR)/net/xfrm/xfrm_user.$(LINUX_KMOD_SUFFIX) \
$(LINUX_DIR)/net/xfrm/xfrm_ipcomp.$(LINUX_KMOD_SUFFIX)
endef
define KernelPackage/ipsec/description

View File

@ -141,7 +141,7 @@ $(call KernelPackage/sound/Depends)
CONFIG_SND_SOC \
CONFIG_SND_SOC_ALL_CODECS=n
FILES:=$(LINUX_DIR)/sound/soc/snd-soc-core.ko
AUTOLOAD:=$(call AutoLoad,35, snd-soc-core)
AUTOLOAD:=$(call AutoLoad,55, snd-soc-core)
endef
$(eval $(call KernelPackage,sound-soc-core))

View File

@ -495,11 +495,11 @@ $(eval $(call KernelPackage,usb-serial-option))
define KernelPackage/usb-storage
$(call KernelPackage/usb/Depends,+kmod-scsi-core)
$(call KernelPackage/usb/Depends,+!TARGET_x86:kmod-scsi-core)
TITLE:=USB Storage support
KCONFIG:=CONFIG_USB_STORAGE
FILES:=$(LINUX_DIR)/drivers/usb/storage/usb-storage.$(LINUX_KMOD_SUFFIX)
AUTOLOAD:=$(call AutoLoad,60,scsi_mod sd_mod usb-storage,1)
AUTOLOAD:=$(call AutoLoad,60,usb-storage,1)
endef
define KernelPackage/usb-storage/description
@ -508,6 +508,44 @@ endef
$(eval $(call KernelPackage,usb-storage))
define KernelPackage/usb-storage-extras
SUBMENU:=$(USB_MENU)
TITLE:=Extra drivers for usb-storage
DEPENDS:=@LINUX_2_6 +kmod-usb-storage
KCONFIG:= \
CONFIG_USB_STORAGE_ALAUDA \
CONFIG_USB_STORAGE_CYPRESS_ATACB \
CONFIG_USB_STORAGE_DATAFAB \
CONFIG_USB_STORAGE_FREECOM \
CONFIG_USB_STORAGE_ISD200 \
CONFIG_USB_STORAGE_JUMPSHOT \
CONFIG_USB_STORAGE_KARMA \
CONFIG_USB_STORAGE_SDDR09 \
CONFIG_USB_STORAGE_SDDR55 \
CONFIG_USB_STORAGE_USBAT
FILES:= \
$(LINUX_DIR)/drivers/usb/storage/ums-alauda.$(LINUX_KMOD_SUFFIX) \
$(LINUX_DIR)/drivers/usb/storage/ums-cypress.$(LINUX_KMOD_SUFFIX) \
$(LINUX_DIR)/drivers/usb/storage/ums-datafab.$(LINUX_KMOD_SUFFIX) \
$(LINUX_DIR)/drivers/usb/storage/ums-freecom.$(LINUX_KMOD_SUFFIX) \
$(LINUX_DIR)/drivers/usb/storage/ums-isd200.$(LINUX_KMOD_SUFFIX) \
$(LINUX_DIR)/drivers/usb/storage/ums-jumpshot.$(LINUX_KMOD_SUFFIX) \
$(LINUX_DIR)/drivers/usb/storage/ums-karma.$(LINUX_KMOD_SUFFIX) \
$(LINUX_DIR)/drivers/usb/storage/ums-sddr09.$(LINUX_KMOD_SUFFIX) \
$(LINUX_DIR)/drivers/usb/storage/ums-sddr55.$(LINUX_KMOD_SUFFIX) \
$(LINUX_DIR)/drivers/usb/storage/ums-usbat.$(LINUX_KMOD_SUFFIX)
AUTOLOAD:=$(call AutoLoad,60,ums-alauda ums-cypress ums-datafab \
ums-freecom ums-isd200 ums-jumpshot \
ums-karma ums-sddr09 ums-sddr55 ums-usbat)
endef
define KernelPackage/usb-storage-extras/description
Say Y here if you want to have some more drivers,
such as for SmartMedia card readers.
endef
$(eval $(call KernelPackage,usb-storage-extras))
define KernelPackage/usb-video
$(call KernelPackage/usb/Depends,@LINUX_2_6)

View File

@ -323,6 +323,21 @@ endef
$(eval $(call KernelPackage,video-gspca-pac7311))
define KernelPackage/video-gspca-sn9c20x
$(call KernelPackage/video-gspca/Depends,@LINUX_2_6 @USB_SUPPORT +kmod-usb-core)
TITLE:=sn9c20x webcam support
KCONFIG:=CONFIG_USB_GSPCA_SN9C20X
FILES:=$(LINUX_DIR)/drivers/media/video/gspca/gspca_sn9c20x.$(LINUX_KMOD_SUFFIX)
AUTOLOAD:=$(call AutoLoad,75,sn9c20x)
endef
define KernelPackage/video-gspca-sn9c20x/description
The SN9C20X USB Camera Driver (sn9c20x) kernel module.
endef
$(eval $(call KernelPackage,video-gspca-sn9c20x))
define KernelPackage/video-gspca-sonixb
$(call KernelPackage/video-gspca/Depends,)
TITLE:=sonixb webcam support

View File

@ -162,7 +162,7 @@ define KernelPackage/madwifi
TITLE:=Driver for Atheros wireless chipsets
URL:=http://madwifi-project.org/
MAINTAINER:=Felix Fietkau <nbd@openwrt.org>
DEPENDS:=+wireless-tools @LINUX_2_6 @PCI_SUPPORT||TARGET_atheros @(!(TARGET_avr32||TARGET_cobalt||TARGET_ep93xx||TARGET_etrax||TARGET_octeon||TARGET_pxcab||TARGET_sibyte)||BROKEN)
DEPENDS:=+wireless-tools @LINUX_2_6 @PCI_SUPPORT @(!(TARGET_avr32||TARGET_cobalt||TARGET_ep93xx||TARGET_etrax||TARGET_octeon||TARGET_pxcab||TARGET_sibyte)||BROKEN)
FILES:=$(MADWIFI_FILES)
AUTOLOAD:=$(call AutoLoad,50,$(MADWIFI_AUTOLOAD))
endef

View File

@ -0,0 +1,28 @@
Index: u-boot-1.1.5/board/ifx/danube/flash.c
===================================================================
--- u-boot-1.1.5.orig/board/ifx/danube/flash.c 2010-03-19 12:12:27.000000000 +0100
+++ u-boot-1.1.5/board/ifx/danube/flash.c 2010-03-19 12:12:30.000000000 +0100
@@ -477,7 +477,10 @@
printf("%s:%s[%d]\n", __FILE__, __func__, __LINE__);
info->flash_id = FLASH_MAN_MX ;//0x00030000
break;
-
+ case (uchar)EON_MANUFACT:
+ printf("%s:%s[%d]\n", __FILE__, __func__, __LINE__);
+ info->flash_id = FLASH_MAN_AMD ;
+ break;
default:
printf("%s:%s[%d]\n", __FILE__, __func__, __LINE__);
info->flash_id = FLASH_UNKNOWN;
Index: u-boot-1.1.5/include/flash.h
===================================================================
--- u-boot-1.1.5.orig/include/flash.h 2010-03-19 12:16:23.000000000 +0100
+++ u-boot-1.1.5/include/flash.h 2010-03-19 12:16:48.000000000 +0100
@@ -130,6 +130,7 @@
#define TOSH_MANUFACT 0x00980098 /* TOSHIBA manuf. ID in D23..D16, D7..D0 */
#define MT2_MANUFACT 0x002C002C /* alternate MICRON manufacturer ID*/
#define EXCEL_MANUFACT 0x004A004A /* Excel Semiconductor */
+#define EON_MANUFACT 0x0000007F
#define EON_ID_EN29LV320B 0x22f9
#define FLASH_29LV320B 0xE0

100
scripts/pad_image Executable file
View File

@ -0,0 +1,100 @@
#!/bin/bash
function usage {
echo "Usage: prepare_image image_type kernel_image rootfs_image header_size"
echo "Padd root and kernel image to the correct size and append the jffs2 start marker as needed"
exit 1
}
function pad_file {
echo "Padding $1 to size $2"
dd if=$1 of=$1.paddingtempfile bs=$2 count=1 conv=sync &> /dev/null
mv $1.paddingtempfile $1
}
#filesize filestart padding
function calc_pad {
[ $((($1 + $2) & ($3 - 1))) == 0 ] && {
echo $1
return 0
}
echo $(((($1 + $2) | ($3 - 1)) + 1 - $2))
}
function prep_squash {
echo "kernel_size: $kernel_size"
echo "header_size: $header_size"
kernel_pad_size=$(calc_pad $kernel_size $header_size 32)
kernel_end=$(($header_size + $kernel_pad_size))
pad_file $kernel_image $kernel_pad_size
#4k
rootfs_pad_size=$(calc_pad $rootfs_size $kernel_end 4096)
pad_file $rootfs_image $rootfs_pad_size
echo -ne '\xde\xad\xc0\xde' >> $rootfs_image
#8k
rootfs_pad_size=$(calc_pad $rootfs_size $kernel_end 8192)
[ $rootfs_pad_size == rootfs_old_padsize ] || {
pad_file $rootfs_image $rootfs_pad_size
rootfs_old_padsize=$rootfs_pad_size
echo -ne '\xde\xad\xc0\xde' >> $rootfs_image
}
#64k
rootfs_pad_size=$(calc_pad $rootfs_size $kernel_end 65536)
[ $rootfs_pad_size == rootfs_old_padsize ] || {
pad_file $rootfs_image $rootfs_pad_size
rootfs_old_padsize=$rootfs_pad_size
echo -ne '\xde\xad\xc0\xde' >> $rootfs_image
}
#128k
rootfs_pad_size=$(calc_pad $rootfs_size $kernel_end 131072)
[ $rootfs_pad_size == rootfs_old_padsize ] || {
pad_file $rootfs_image $rootfs_pad_size
rootfs_old_padsize=$rootfs_pad_size
echo -ne '\xde\xad\xc0\xde' >> $rootfs_image
}
}
function prep_jffs2 {
kernel_pad_size=$(calc_pad $kernel_size $header_size $1)
pad_file $kernel_image $kernel_pad_size
}
image_type=$1
kernel_image=$2
rootfs_image=$3
header_size=$4
if [ -z "$image_type" ] || [ -z "$rootfs_image" ] || [ -z "$kernel_image" ] || [ -z "$header_size" ]; then
usage
fi
if [ ! -e "$rootfs_image" ] || [ -z "$kernel_image" ]; then
echo "input file not found"
exit 1
fi
kernel_size=$(stat -c "%s" "$kernel_image")
rootfs_size=$(stat -c "%s" "$rootfs_image")
if [ $kernel_size == 0 ] || [ $rootfs_size == 0 ]; then
echo "kernel or rootfs empty"
exit 1
fi
case $image_type in
squashfs )
prep_squash ;;
jffs2-64k )
prep_jffs2 65536 ;;
jffs2-128k )
prep_jffs2 131072 ;;
* )
echo "Unknown image type"
exit 1 ;;
esac

View File

@ -33,6 +33,8 @@ if( opendir SD, "$Bin/../staging_dir" )
}
}
if( @arches > 1 )
{
# Query arch
do {
print("Target? > ");
@ -41,24 +43,25 @@ if( opendir SD, "$Bin/../staging_dir" )
($arch, $libc) = @{$arches[$tid-1]};
}
else
{
($arch, $libc) = @{$arches[0]};
}
}
closedir SD;
# Find gdb
my ($gdb) = glob("$Bin/../build_dir/toolchain-${arch}_*_${libc}/gdb-*/gdb/gdb");
if( -x $gdb )
if( defined($gdb) && -x $gdb )
{
my ( $fh, $fp ) = tempfile();
# Find library paths
my $libdirs = join ':', (
glob("$Bin/../staging_dir/target-${arch}_${libc}/root-*/{,usr/}lib/"),
glob("$Bin/../staging_dir/target-${arch}_${libc}/{,usr/}lib/"),
glob("$Bin/../staging_dir/toolchain-${arch}_*_${libc}/lib/")
);
# Find sysroot
my ($sysroot) = glob("$Bin/../staging_dir/target-${arch}_${libc}/root-*/");
print $fh "set solib-search-path $libdirs\n";
print $fh "set sysroot $sysroot\n" if $sysroot;
print $fh "target remote $ARGV[0]\n";
system($gdb, '-x', $fp, $ARGV[1]);

View File

@ -31,8 +31,8 @@ static struct resource ar913x_wmac_resources[] = {
.end = AR91XX_WMAC_BASE + AR91XX_WMAC_SIZE - 1,
.flags = IORESOURCE_MEM,
}, {
.start = AR71XX_CPU_IRQ_WMAC,
.end = AR71XX_CPU_IRQ_WMAC,
.start = AR71XX_CPU_IRQ_IP2,
.end = AR71XX_CPU_IRQ_IP2,
.flags = IORESOURCE_IRQ,
},
};

View File

@ -1,7 +1,7 @@
/*
* Atheros AR71xx SoC specific interrupt handling
*
* Copyright (C) 2008-2009 Gabor Juhos <juhosg@openwrt.org>
* Copyright (C) 2008-2010 Gabor Juhos <juhosg@openwrt.org>
* Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org>
*
* Parts of this file are based on Atheros' 2.6.15 BSP
@ -21,177 +21,13 @@
#include <asm/mach-ar71xx/ar71xx.h>
static void (* ar71xx_ip2_irq_handler)(void) = spurious_interrupt;
#ifdef CONFIG_PCI
static void ar71xx_pci_irq_dispatch(void)
{
u32 pending;
pending = ar71xx_reset_rr(AR71XX_RESET_REG_PCI_INT_STATUS) &
ar71xx_reset_rr(AR71XX_RESET_REG_PCI_INT_ENABLE);
if (pending & PCI_INT_DEV0)
do_IRQ(AR71XX_PCI_IRQ_DEV0);
else if (pending & PCI_INT_DEV1)
do_IRQ(AR71XX_PCI_IRQ_DEV1);
else if (pending & PCI_INT_DEV2)
do_IRQ(AR71XX_PCI_IRQ_DEV2);
else if (pending & PCI_INT_CORE)
do_IRQ(AR71XX_PCI_IRQ_CORE);
else
spurious_interrupt();
}
static void ar71xx_pci_irq_unmask(unsigned int irq)
{
irq -= AR71XX_PCI_IRQ_BASE;
ar71xx_reset_wr(AR71XX_RESET_REG_PCI_INT_ENABLE,
ar71xx_reset_rr(AR71XX_RESET_REG_PCI_INT_ENABLE) | (1 << irq));
/* flush write */
ar71xx_reset_rr(AR71XX_RESET_REG_PCI_INT_ENABLE);
}
static void ar71xx_pci_irq_mask(unsigned int irq)
{
irq -= AR71XX_PCI_IRQ_BASE;
ar71xx_reset_wr(AR71XX_RESET_REG_PCI_INT_ENABLE,
ar71xx_reset_rr(AR71XX_RESET_REG_PCI_INT_ENABLE) & ~(1 << irq));
/* flush write */
ar71xx_reset_rr(AR71XX_RESET_REG_PCI_INT_ENABLE);
}
static struct irq_chip ar71xx_pci_irq_chip = {
.name = "AR71XX PCI ",
.mask = ar71xx_pci_irq_mask,
.unmask = ar71xx_pci_irq_unmask,
.mask_ack = ar71xx_pci_irq_mask,
};
static struct irqaction ar71xx_pci_irqaction = {
.handler = no_action,
.name = "cascade [AR71XX PCI]",
};
static void __init ar71xx_pci_irq_init(void)
{
int i;
ar71xx_ip2_irq_handler = ar71xx_pci_irq_dispatch;
ar71xx_reset_wr(AR71XX_RESET_REG_PCI_INT_ENABLE, 0);
ar71xx_reset_wr(AR71XX_RESET_REG_PCI_INT_STATUS, 0);
for (i = AR71XX_PCI_IRQ_BASE;
i < AR71XX_PCI_IRQ_BASE + AR71XX_PCI_IRQ_COUNT; i++) {
irq_desc[i].status = IRQ_DISABLED;
set_irq_chip_and_handler(i, &ar71xx_pci_irq_chip,
handle_level_irq);
}
setup_irq(AR71XX_CPU_IRQ_PCI, &ar71xx_pci_irqaction);
}
static void ar724x_pci_irq_dispatch(void)
{
u32 pending;
pending = ar724x_pci_rr(AR724X_PCI_REG_INT_STATUS) &
ar724x_pci_rr(AR724X_PCI_REG_INT_MASK);
if (pending & AR724X_PCI_INT_DEV0)
do_IRQ(AR71XX_PCI_IRQ_DEV0);
else
spurious_interrupt();
}
static void ar724x_pci_irq_unmask(unsigned int irq)
{
switch (irq) {
case AR71XX_PCI_IRQ_DEV0:
irq -= AR71XX_PCI_IRQ_BASE;
ar724x_pci_wr(AR724X_PCI_REG_INT_MASK,
ar724x_pci_rr(AR724X_PCI_REG_INT_MASK) |
AR724X_PCI_INT_DEV0);
/* flush write */
ar724x_pci_rr(AR724X_PCI_REG_INT_MASK);
}
}
static void ar724x_pci_irq_mask(unsigned int irq)
{
switch (irq) {
case AR71XX_PCI_IRQ_DEV0:
irq -= AR71XX_PCI_IRQ_BASE;
ar724x_pci_wr(AR724X_PCI_REG_INT_MASK,
ar724x_pci_rr(AR724X_PCI_REG_INT_MASK) &
~AR724X_PCI_INT_DEV0);
/* flush write */
ar724x_pci_rr(AR724X_PCI_REG_INT_MASK);
ar724x_pci_wr(AR724X_PCI_REG_INT_STATUS,
ar724x_pci_rr(AR724X_PCI_REG_INT_STATUS) |
AR724X_PCI_INT_DEV0);
/* flush write */
ar724x_pci_rr(AR724X_PCI_REG_INT_STATUS);
}
}
static struct irq_chip ar724x_pci_irq_chip = {
.name = "AR724X PCI ",
.mask = ar724x_pci_irq_mask,
.unmask = ar724x_pci_irq_unmask,
.mask_ack = ar724x_pci_irq_mask,
};
static struct irqaction ar724x_pci_irqaction = {
.handler = no_action,
.name = "cascade [AR724X PCI]",
};
static void __init ar724x_pci_irq_init(void)
{
u32 t;
int i;
t = ar71xx_reset_rr(AR724X_RESET_REG_RESET_MODULE);
if (t & (AR724X_RESET_PCIE | AR724X_RESET_PCIE_PHY |
AR724X_RESET_PCIE_PHY_SERIAL)) {
return;
}
ar71xx_ip2_irq_handler = ar724x_pci_irq_dispatch;
ar724x_pci_wr(AR724X_PCI_REG_INT_MASK, 0);
ar724x_pci_wr(AR724X_PCI_REG_INT_STATUS, 0);
for (i = AR71XX_PCI_IRQ_BASE;
i < AR71XX_PCI_IRQ_BASE + AR71XX_PCI_IRQ_COUNT; i++) {
irq_desc[i].status = IRQ_DISABLED;
set_irq_chip_and_handler(i, &ar724x_pci_irq_chip,
handle_level_irq);
}
setup_irq(AR71XX_CPU_IRQ_PCI, &ar724x_pci_irqaction);
}
#else
static inline void ar71xx_pci_irq_init(void) {};
static inline void ar724x_pci_irq_init(void) {};
#endif /* CONFIG_PCI */
static void ar71xx_gpio_irq_dispatch(void)
{
void __iomem *base = ar71xx_gpio_base;
u32 pending;
pending = ar71xx_gpio_rr(GPIO_REG_INT_PENDING)
& ar71xx_gpio_rr(GPIO_REG_INT_ENABLE);
pending = __raw_readl(base + GPIO_REG_INT_PENDING) &
__raw_readl(base + GPIO_REG_INT_ENABLE);
if (pending)
do_IRQ(AR71XX_GPIO_IRQ_BASE + fls(pending) - 1);
@ -201,22 +37,30 @@ static void ar71xx_gpio_irq_dispatch(void)
static void ar71xx_gpio_irq_unmask(unsigned int irq)
{
void __iomem *base = ar71xx_gpio_base;
u32 t;
irq -= AR71XX_GPIO_IRQ_BASE;
ar71xx_gpio_wr(GPIO_REG_INT_ENABLE,
ar71xx_gpio_rr(GPIO_REG_INT_ENABLE) | (1 << irq));
t = __raw_readl(base + GPIO_REG_INT_ENABLE);
__raw_writel(t | (1 << irq), base + GPIO_REG_INT_ENABLE);
/* flush write */
ar71xx_gpio_rr(GPIO_REG_INT_ENABLE);
(void) __raw_readl(base + GPIO_REG_INT_ENABLE);
}
static void ar71xx_gpio_irq_mask(unsigned int irq)
{
void __iomem *base = ar71xx_gpio_base;
u32 t;
irq -= AR71XX_GPIO_IRQ_BASE;
ar71xx_gpio_wr(GPIO_REG_INT_ENABLE,
ar71xx_gpio_rr(GPIO_REG_INT_ENABLE) & ~(1 << irq));
t = __raw_readl(base + GPIO_REG_INT_ENABLE);
__raw_writel(t & ~(1 << irq), base + GPIO_REG_INT_ENABLE);
/* flush write */
ar71xx_gpio_rr(GPIO_REG_INT_ENABLE);
(void) __raw_readl(base + GPIO_REG_INT_ENABLE);
}
#if 0
@ -247,16 +91,17 @@ static struct irqaction ar71xx_gpio_irqaction = {
static void __init ar71xx_gpio_irq_init(void)
{
void __iomem *base = ar71xx_gpio_base;
int i;
ar71xx_gpio_wr(GPIO_REG_INT_ENABLE, 0);
ar71xx_gpio_wr(GPIO_REG_INT_PENDING, 0);
__raw_writel(0, base + GPIO_REG_INT_ENABLE);
__raw_writel(0, base + GPIO_REG_INT_PENDING);
/* setup type of all GPIO interrupts to level sensitive */
ar71xx_gpio_wr(GPIO_REG_INT_TYPE, GPIO_INT_ALL);
__raw_writel(GPIO_INT_ALL, base + GPIO_REG_INT_TYPE);
/* setup polarity of all GPIO interrupts to active high */
ar71xx_gpio_wr(GPIO_REG_INT_POLARITY, GPIO_INT_ALL);
__raw_writel(GPIO_INT_ALL, base + GPIO_REG_INT_POLARITY);
for (i = AR71XX_GPIO_IRQ_BASE;
i < AR71XX_GPIO_IRQ_BASE + AR71XX_GPIO_IRQ_COUNT; i++) {
@ -305,32 +150,44 @@ static void ar71xx_misc_irq_dispatch(void)
static void ar71xx_misc_irq_unmask(unsigned int irq)
{
void __iomem *base = ar71xx_reset_base;
u32 t;
irq -= AR71XX_MISC_IRQ_BASE;
ar71xx_reset_wr(AR71XX_RESET_REG_MISC_INT_ENABLE,
ar71xx_reset_rr(AR71XX_RESET_REG_MISC_INT_ENABLE) | (1 << irq));
t = __raw_readl(base + AR71XX_RESET_REG_MISC_INT_ENABLE);
__raw_writel(t | (1 << irq), base + AR71XX_RESET_REG_MISC_INT_ENABLE);
/* flush write */
ar71xx_reset_rr(AR71XX_RESET_REG_MISC_INT_ENABLE);
(void) __raw_readl(base + AR71XX_RESET_REG_MISC_INT_ENABLE);
}
static void ar71xx_misc_irq_mask(unsigned int irq)
{
void __iomem *base = ar71xx_reset_base;
u32 t;
irq -= AR71XX_MISC_IRQ_BASE;
ar71xx_reset_wr(AR71XX_RESET_REG_MISC_INT_ENABLE,
ar71xx_reset_rr(AR71XX_RESET_REG_MISC_INT_ENABLE) & ~(1 << irq));
t = __raw_readl(base + AR71XX_RESET_REG_MISC_INT_ENABLE);
__raw_writel(t & ~(1 << irq), base + AR71XX_RESET_REG_MISC_INT_ENABLE);
/* flush write */
ar71xx_reset_rr(AR71XX_RESET_REG_MISC_INT_ENABLE);
(void) __raw_readl(base + AR71XX_RESET_REG_MISC_INT_ENABLE);
}
static void ar724x_misc_irq_ack(unsigned int irq)
{
void __iomem *base = ar71xx_reset_base;
u32 t;
irq -= AR71XX_MISC_IRQ_BASE;
ar71xx_reset_wr(AR71XX_RESET_REG_MISC_INT_STATUS,
ar71xx_reset_rr(AR71XX_RESET_REG_MISC_INT_STATUS) & ~(1 << irq));
t = __raw_readl(base + AR71XX_RESET_REG_MISC_INT_STATUS);
__raw_writel(t & ~(1 << irq), base + AR71XX_RESET_REG_MISC_INT_STATUS);
/* flush write */
ar71xx_reset_rr(AR71XX_RESET_REG_MISC_INT_STATUS);
(void) __raw_readl(base + AR71XX_RESET_REG_MISC_INT_STATUS);
}
static struct irq_chip ar71xx_misc_irq_chip = {
@ -346,10 +203,11 @@ static struct irqaction ar71xx_misc_irqaction = {
static void __init ar71xx_misc_irq_init(void)
{
void __iomem *base = ar71xx_reset_base;
int i;
ar71xx_reset_wr(AR71XX_RESET_REG_MISC_INT_ENABLE, 0);
ar71xx_reset_wr(AR71XX_RESET_REG_MISC_INT_STATUS, 0);
__raw_writel(0, base + AR71XX_RESET_REG_MISC_INT_ENABLE);
__raw_writel(0, base + AR71XX_RESET_REG_MISC_INT_STATUS);
if (ar71xx_soc == AR71XX_SOC_AR7240)
ar71xx_misc_irq_chip.ack = ar724x_misc_irq_ack;
@ -366,11 +224,6 @@ static void __init ar71xx_misc_irq_init(void)
setup_irq(AR71XX_CPU_IRQ_MISC, &ar71xx_misc_irqaction);
}
static void ar913x_wmac_irq_dispatch(void)
{
do_IRQ(AR71XX_CPU_IRQ_WMAC);
}
asmlinkage void plat_irq_dispatch(void)
{
unsigned long pending;
@ -381,7 +234,7 @@ asmlinkage void plat_irq_dispatch(void)
do_IRQ(AR71XX_CPU_IRQ_TIMER);
else if (pending & STATUSF_IP2)
ar71xx_ip2_irq_handler();
do_IRQ(AR71XX_CPU_IRQ_IP2);
else if (pending & STATUSF_IP4)
do_IRQ(AR71XX_CPU_IRQ_GE0);
@ -407,22 +260,5 @@ void __init arch_init_irq(void)
cp0_perfcount_irq = AR71XX_MISC_IRQ_PERFC;
switch (ar71xx_soc) {
case AR71XX_SOC_AR7130:
case AR71XX_SOC_AR7141:
case AR71XX_SOC_AR7161:
ar71xx_pci_irq_init();
break;
case AR71XX_SOC_AR7240:
ar724x_pci_irq_init();
break;
case AR71XX_SOC_AR9130:
case AR71XX_SOC_AR9132:
ar71xx_ip2_irq_handler = ar913x_wmac_irq_dispatch;
break;
default:
BUG();
}
ar71xx_gpio_irq_init();
}

View File

@ -13,7 +13,6 @@
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/serial_8250.h>
#include <linux/bootmem.h>
#include <asm/bootinfo.h>
@ -22,7 +21,6 @@
#include <asm/mips_machine.h>
#include <asm/mach-ar71xx/ar71xx.h>
#include <asm/mach-ar71xx/pci.h>
#include "machtype.h"
#include "devices.h"

View File

@ -79,8 +79,7 @@
#define AR71XX_PCI_IRQ_BASE 48
#define AR71XX_PCI_IRQ_COUNT 8
#define AR71XX_CPU_IRQ_PCI (AR71XX_CPU_IRQ_BASE + 2)
#define AR71XX_CPU_IRQ_WMAC (AR71XX_CPU_IRQ_BASE + 2)
#define AR71XX_CPU_IRQ_IP2 (AR71XX_CPU_IRQ_BASE + 2)
#define AR71XX_CPU_IRQ_USB (AR71XX_CPU_IRQ_BASE + 3)
#define AR71XX_CPU_IRQ_GE0 (AR71XX_CPU_IRQ_BASE + 4)
#define AR71XX_CPU_IRQ_GE1 (AR71XX_CPU_IRQ_BASE + 5)
@ -357,34 +356,6 @@ void ar71xx_ddr_flush(u32 reg);
#define AR724X_PCI_INT_DEV0 BIT(14)
static inline void ar724x_pci_wr(unsigned reg, u32 val)
{
void __iomem *base;
base = ioremap_nocache(AR724X_PCI_CTRL_BASE, AR724X_PCI_CTRL_SIZE);
__raw_writel(val, base + reg);
iounmap(base);
}
static inline void ar724x_pci_wr_nf(unsigned reg, u32 val)
{
void __iomem *base;
base = ioremap_nocache(AR724X_PCI_CTRL_BASE, AR724X_PCI_CTRL_SIZE);
iounmap(base);
}
static inline u32 ar724x_pci_rr(unsigned reg)
{
void __iomem *base;
u32 ret;
base = ioremap_nocache(AR724X_PCI_CTRL_BASE, AR724X_PCI_CTRL_SIZE);
ret = __raw_readl(base + reg);
iounmap(base);
return ret;
}
/*
* RESET block
*/

View File

@ -1,7 +1,7 @@
/*
* Atheros AR71xx PCI host controller driver
*
* Copyright (C) 2008-2009 Gabor Juhos <juhosg@openwrt.org>
* Copyright (C) 2008-2010 Gabor Juhos <juhosg@openwrt.org>
* Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org>
*
* Parts of this file are based on Atheros' 2.6.15 BSP
@ -17,6 +17,7 @@
#include <linux/bitops.h>
#include <linux/pci.h>
#include <linux/pci_regs.h>
#include <linux/interrupt.h>
#include <asm/mach-ar71xx/ar71xx.h>
#include <asm/mach-ar71xx/pci.h>
@ -45,16 +46,6 @@ static inline void ar71xx_pci_delay(void)
mdelay(AR71XX_PCI_DELAY);
}
static inline u32 ar71xx_pcicfg_rr(unsigned int reg)
{
return __raw_readl(ar71xx_pcicfg_base + reg);
}
static inline void ar71xx_pcicfg_wr(unsigned int reg, u32 val)
{
__raw_writel(val, ar71xx_pcicfg_base + reg);
}
/* Byte lane enable bits */
static u8 ble_table[4][4] = {
{0x0, 0xf, 0xf, 0xf},
@ -93,26 +84,27 @@ static inline u32 ar71xx_pci_bus_addr(struct pci_bus *bus, unsigned int devfn,
int ar71xx_pci_be_handler(int is_fixup)
{
void __iomem *base = ar71xx_pcicfg_base;
u32 pci_err;
u32 ahb_err;
pci_err = ar71xx_pcicfg_rr(PCI_REG_PCI_ERR) & 3;
pci_err = __raw_readl(base + PCI_REG_PCI_ERR) & 3;
if (pci_err) {
if (!is_fixup)
printk(KERN_ALERT "PCI error %d at PCI addr 0x%x\n",
pci_err,
ar71xx_pcicfg_rr(PCI_REG_PCI_ERR_ADDR));
__raw_readl(base + PCI_REG_PCI_ERR_ADDR));
ar71xx_pcicfg_wr(PCI_REG_PCI_ERR, pci_err);
__raw_writel(pci_err, base + PCI_REG_PCI_ERR);
}
ahb_err = ar71xx_pcicfg_rr(PCI_REG_AHB_ERR) & 1;
ahb_err = __raw_readl(base + PCI_REG_AHB_ERR) & 1;
if (ahb_err) {
if (!is_fixup)
printk(KERN_ALERT "AHB error at AHB address 0x%x\n",
ar71xx_pcicfg_rr(PCI_REG_AHB_ERR_ADDR));
__raw_readl(base + PCI_REG_AHB_ERR_ADDR));
ar71xx_pcicfg_wr(PCI_REG_AHB_ERR, ahb_err);
__raw_writel(ahb_err, base + PCI_REG_AHB_ERR);
}
return ((ahb_err | pci_err) ? 1 : 0);
@ -121,6 +113,7 @@ int ar71xx_pci_be_handler(int is_fixup)
static inline int ar71xx_pci_set_cfgaddr(struct pci_bus *bus,
unsigned int devfn, int where, int size, u32 cmd)
{
void __iomem *base = ar71xx_pcicfg_base;
u32 addr;
addr = ar71xx_pci_bus_addr(bus, devfn, where);
@ -129,9 +122,9 @@ static inline int ar71xx_pci_set_cfgaddr(struct pci_bus *bus,
bus->number, PCI_SLOT(devfn), PCI_FUNC(devfn),
where, size, addr);
ar71xx_pcicfg_wr(PCI_REG_CFG_AD, addr);
ar71xx_pcicfg_wr(PCI_REG_CFG_CBE,
cmd | ar71xx_pci_get_ble(where, size, 0));
__raw_writel(addr, base + PCI_REG_CFG_AD);
__raw_writel(cmd | ar71xx_pci_get_ble(where, size, 0),
base + PCI_REG_CFG_CBE);
return ar71xx_pci_be_handler(1);
}
@ -139,6 +132,7 @@ static inline int ar71xx_pci_set_cfgaddr(struct pci_bus *bus,
static int ar71xx_pci_read_config(struct pci_bus *bus, unsigned int devfn,
int where, int size, u32 *value)
{
void __iomem *base = ar71xx_pcicfg_base;
static u32 mask[8] = {0, 0xff, 0xffff, 0, 0xffffffff, 0, 0, 0};
unsigned long flags;
u32 data;
@ -156,8 +150,8 @@ static int ar71xx_pci_read_config(struct pci_bus *bus, unsigned int devfn,
t = PCI_CRP_CMD_READ | (where & ~3);
ar71xx_pcicfg_wr(PCI_REG_CRP_AD_CBE, t);
data = ar71xx_pcicfg_rr(PCI_REG_CRP_RDDATA);
__raw_writel(t, base + PCI_REG_CRP_AD_CBE);
data = __raw_readl(base + PCI_REG_CRP_RDDATA);
DBG("PCI: rd local cfg, ad_cbe:%08x, data:%08x\n", t, data);
@ -168,7 +162,7 @@ static int ar71xx_pci_read_config(struct pci_bus *bus, unsigned int devfn,
PCI_CFG_CMD_READ);
if (err == 0) {
data = ar71xx_pcicfg_rr(PCI_REG_CFG_RDDATA);
data = __raw_readl(base + PCI_REG_CFG_RDDATA);
} else {
ret = PCIBIOS_DEVICE_NOT_FOUND;
data = ~0;
@ -188,6 +182,7 @@ static int ar71xx_pci_read_config(struct pci_bus *bus, unsigned int devfn,
static int ar71xx_pci_write_config(struct pci_bus *bus, unsigned int devfn,
int where, int size, u32 value)
{
void __iomem *base = ar71xx_pcicfg_base;
unsigned long flags;
int ret;
@ -207,8 +202,8 @@ static int ar71xx_pci_write_config(struct pci_bus *bus, unsigned int devfn,
DBG("PCI: wr local cfg, ad_cbe:%08x, value:%08x\n", t, value);
ar71xx_pcicfg_wr(PCI_REG_CRP_AD_CBE, t);
ar71xx_pcicfg_wr(PCI_REG_CRP_WRDATA, value);
__raw_writel(t, base + PCI_REG_CRP_AD_CBE);
__raw_writel(value, base + PCI_REG_CRP_WRDATA);
} else {
int err;
@ -216,7 +211,7 @@ static int ar71xx_pci_write_config(struct pci_bus *bus, unsigned int devfn,
PCI_CFG_CMD_WRITE);
if (err == 0)
ar71xx_pcicfg_wr(PCI_REG_CFG_WRDATA, value);
__raw_writel(value, base + PCI_REG_CFG_WRDATA);
else
ret = PCIBIOS_DEVICE_NOT_FOUND;
}
@ -300,8 +295,87 @@ static struct pci_controller ar71xx_pci_controller = {
.io_resource = &ar71xx_pci_io_resource,
};
static void ar71xx_pci_irq_handler(unsigned int irq, struct irq_desc *desc)
{
void __iomem *base = ar71xx_reset_base;
u32 pending;
pending = __raw_readl(base + AR71XX_RESET_REG_PCI_INT_STATUS) &
__raw_readl(base + AR71XX_RESET_REG_PCI_INT_ENABLE);
if (pending & PCI_INT_DEV0)
generic_handle_irq(AR71XX_PCI_IRQ_DEV0);
else if (pending & PCI_INT_DEV1)
generic_handle_irq(AR71XX_PCI_IRQ_DEV1);
else if (pending & PCI_INT_DEV2)
generic_handle_irq(AR71XX_PCI_IRQ_DEV2);
else if (pending & PCI_INT_CORE)
generic_handle_irq(AR71XX_PCI_IRQ_CORE);
else
spurious_interrupt();
}
static void ar71xx_pci_irq_unmask(unsigned int irq)
{
void __iomem *base = ar71xx_reset_base;
u32 t;
irq -= AR71XX_PCI_IRQ_BASE;
t = __raw_readl(base + AR71XX_RESET_REG_PCI_INT_ENABLE);
__raw_writel(t | (1 << irq), base + AR71XX_RESET_REG_PCI_INT_ENABLE);
/* flush write */
(void) __raw_readl(base + AR71XX_RESET_REG_PCI_INT_ENABLE);
}
static void ar71xx_pci_irq_mask(unsigned int irq)
{
void __iomem *base = ar71xx_reset_base;
u32 t;
irq -= AR71XX_PCI_IRQ_BASE;
t = __raw_readl(base + AR71XX_RESET_REG_PCI_INT_ENABLE);
__raw_writel(t & ~(1 << irq), base + AR71XX_RESET_REG_PCI_INT_ENABLE);
/* flush write */
(void) __raw_readl(base + AR71XX_RESET_REG_PCI_INT_ENABLE);
}
static struct irq_chip ar71xx_pci_irq_chip = {
.name = "AR71XX PCI ",
.mask = ar71xx_pci_irq_mask,
.unmask = ar71xx_pci_irq_unmask,
.mask_ack = ar71xx_pci_irq_mask,
};
static void __init ar71xx_pci_irq_init(void)
{
void __iomem *base = ar71xx_reset_base;
int i;
__raw_writel(0, base + AR71XX_RESET_REG_PCI_INT_ENABLE);
__raw_writel(0, base + AR71XX_RESET_REG_PCI_INT_STATUS);
for (i = AR71XX_PCI_IRQ_BASE;
i < AR71XX_PCI_IRQ_BASE + AR71XX_PCI_IRQ_COUNT; i++) {
irq_desc[i].status = IRQ_DISABLED;
set_irq_chip_and_handler(i, &ar71xx_pci_irq_chip,
handle_level_irq);
}
set_irq_chained_handler(AR71XX_CPU_IRQ_IP2, ar71xx_pci_irq_handler);
}
int __init ar71xx_pcibios_init(void)
{
void __iomem *ddr_base = ar71xx_ddr_base;
ar71xx_device_stop(RESET_MODULE_PCI_BUS | RESET_MODULE_PCI_CORE);
ar71xx_pci_delay();
@ -310,15 +384,17 @@ int __init ar71xx_pcibios_init(void)
ar71xx_pcicfg_base = ioremap_nocache(AR71XX_PCI_CFG_BASE,
AR71XX_PCI_CFG_SIZE);
if (ar71xx_pcicfg_base == NULL)
return -ENOMEM;
ar71xx_ddr_wr(AR71XX_DDR_REG_PCI_WIN0, PCI_WIN0_OFFS);
ar71xx_ddr_wr(AR71XX_DDR_REG_PCI_WIN1, PCI_WIN1_OFFS);
ar71xx_ddr_wr(AR71XX_DDR_REG_PCI_WIN2, PCI_WIN2_OFFS);
ar71xx_ddr_wr(AR71XX_DDR_REG_PCI_WIN3, PCI_WIN3_OFFS);
ar71xx_ddr_wr(AR71XX_DDR_REG_PCI_WIN4, PCI_WIN4_OFFS);
ar71xx_ddr_wr(AR71XX_DDR_REG_PCI_WIN5, PCI_WIN5_OFFS);
ar71xx_ddr_wr(AR71XX_DDR_REG_PCI_WIN6, PCI_WIN6_OFFS);
ar71xx_ddr_wr(AR71XX_DDR_REG_PCI_WIN7, PCI_WIN7_OFFS);
__raw_writel(PCI_WIN0_OFFS, ddr_base + AR71XX_DDR_REG_PCI_WIN0);
__raw_writel(PCI_WIN1_OFFS, ddr_base + AR71XX_DDR_REG_PCI_WIN1);
__raw_writel(PCI_WIN2_OFFS, ddr_base + AR71XX_DDR_REG_PCI_WIN2);
__raw_writel(PCI_WIN3_OFFS, ddr_base + AR71XX_DDR_REG_PCI_WIN3);
__raw_writel(PCI_WIN4_OFFS, ddr_base + AR71XX_DDR_REG_PCI_WIN4);
__raw_writel(PCI_WIN5_OFFS, ddr_base + AR71XX_DDR_REG_PCI_WIN5);
__raw_writel(PCI_WIN6_OFFS, ddr_base + AR71XX_DDR_REG_PCI_WIN6);
__raw_writel(PCI_WIN7_OFFS, ddr_base + AR71XX_DDR_REG_PCI_WIN7);
ar71xx_pci_delay();
@ -326,6 +402,7 @@ int __init ar71xx_pcibios_init(void)
(void)ar71xx_pci_be_handler(1);
ar71xx_pci_fixup_enable = 1;
ar71xx_pci_irq_init();
register_pci_controller(&ar71xx_pci_controller);
return 0;

View File

@ -1,7 +1,7 @@
/*
* Atheros AR724x PCI host controller driver
*
* Copyright (C) 2009 Gabor Juhos <juhosg@openwrt.org>
* Copyright (C) 2009-2010 Gabor Juhos <juhosg@openwrt.org>
*
* Parts of this file are based on Atheros' 2.6.15 BSP
*
@ -16,6 +16,7 @@
#include <linux/bitops.h>
#include <linux/pci.h>
#include <linux/pci_regs.h>
#include <linux/interrupt.h>
#include <asm/mach-ar71xx/ar71xx.h>
#include <asm/mach-ar71xx/pci.h>
@ -29,6 +30,7 @@
static void __iomem *ar724x_pci_localcfg_base;
static void __iomem *ar724x_pci_devcfg_base;
static void __iomem *ar724x_pci_ctrl_base;
static int ar724x_pci_fixup_enable;
static DEFINE_SPINLOCK(ar724x_pci_lock);
@ -215,6 +217,7 @@ static void __init ar724x_pci_reset(void)
static int __init ar724x_pci_setup(void)
{
void __iomem *base = ar724x_pci_ctrl_base;
u32 t;
/* setup COMMAND register */
@ -225,19 +228,21 @@ static int __init ar724x_pci_setup(void)
ar724x_pci_write(ar724x_pci_localcfg_base, 0x20, 4, 0x1ff01000);
ar724x_pci_write(ar724x_pci_localcfg_base, 0x24, 4, 0x1ff01000);
t = ar724x_pci_rr(AR724X_PCI_REG_RESET);
t = __raw_readl(base + AR724X_PCI_REG_RESET);
if (t != 0x7) {
udelay(100000);
ar724x_pci_wr_nf(AR724X_PCI_REG_RESET, 0);
__raw_writel(0, base + AR724X_PCI_REG_RESET);
udelay(100);
ar724x_pci_wr_nf(AR724X_PCI_REG_RESET, 4);
__raw_writel(4, base + AR724X_PCI_REG_RESET);
udelay(100000);
}
ar724x_pci_wr(AR724X_PCI_REG_APP, AR724X_PCI_APP_LTSSM_ENABLE);
__raw_writel(AR724X_PCI_APP_LTSSM_ENABLE, base + AR724X_PCI_REG_APP);
/* flush write */
(void) __raw_readl(base + AR724X_PCI_REG_APP);
udelay(1000);
t = ar724x_pci_rr(AR724X_PCI_REG_APP);
t = __raw_readl(base + AR724X_PCI_REG_APP);
if ((t & AR724X_PCI_APP_LTSSM_ENABLE) == 0x0) {
printk(KERN_WARNING "PCI: no PCIe module found\n");
return -ENODEV;
@ -246,23 +251,131 @@ static int __init ar724x_pci_setup(void)
return 0;
}
static void ar724x_pci_irq_handler(unsigned int irq, struct irq_desc *desc)
{
void __iomem *base = ar724x_pci_ctrl_base;
u32 pending;
pending = __raw_readl(base + AR724X_PCI_REG_INT_STATUS) &
__raw_readl(base + AR724X_PCI_REG_INT_MASK);
if (pending & AR724X_PCI_INT_DEV0)
generic_handle_irq(AR71XX_PCI_IRQ_DEV0);
else
spurious_interrupt();
}
static void ar724x_pci_irq_unmask(unsigned int irq)
{
void __iomem *base = ar724x_pci_ctrl_base;
u32 t;
switch (irq) {
case AR71XX_PCI_IRQ_DEV0:
irq -= AR71XX_PCI_IRQ_BASE;
t = __raw_readl(base + AR724X_PCI_REG_INT_MASK);
__raw_writel(t | AR724X_PCI_INT_DEV0,
base + AR724X_PCI_REG_INT_MASK);
/* flush write */
(void) __raw_readl(base + AR724X_PCI_REG_INT_MASK);
}
}
static void ar724x_pci_irq_mask(unsigned int irq)
{
void __iomem *base = ar724x_pci_ctrl_base;
u32 t;
switch (irq) {
case AR71XX_PCI_IRQ_DEV0:
irq -= AR71XX_PCI_IRQ_BASE;
t = __raw_readl(base + AR724X_PCI_REG_INT_MASK);
__raw_writel(t & ~AR724X_PCI_INT_DEV0,
base + AR724X_PCI_REG_INT_MASK);
/* flush write */
(void) __raw_readl(base + AR724X_PCI_REG_INT_MASK);
t = __raw_readl(base + AR724X_PCI_REG_INT_STATUS);
__raw_writel(t | AR724X_PCI_INT_DEV0,
base + AR724X_PCI_REG_INT_STATUS);
/* flush write */
(void) __raw_readl(base + AR724X_PCI_REG_INT_STATUS);
}
}
static struct irq_chip ar724x_pci_irq_chip = {
.name = "AR724X PCI ",
.mask = ar724x_pci_irq_mask,
.unmask = ar724x_pci_irq_unmask,
.mask_ack = ar724x_pci_irq_mask,
};
static void __init ar724x_pci_irq_init(void)
{
void __iomem *base = ar724x_pci_ctrl_base;
u32 t;
int i;
t = ar71xx_reset_rr(AR724X_RESET_REG_RESET_MODULE);
if (t & (AR724X_RESET_PCIE | AR724X_RESET_PCIE_PHY |
AR724X_RESET_PCIE_PHY_SERIAL)) {
return;
}
__raw_writel(0, base + AR724X_PCI_REG_INT_MASK);
__raw_writel(0, base + AR724X_PCI_REG_INT_STATUS);
for (i = AR71XX_PCI_IRQ_BASE;
i < AR71XX_PCI_IRQ_BASE + AR71XX_PCI_IRQ_COUNT; i++) {
irq_desc[i].status = IRQ_DISABLED;
set_irq_chip_and_handler(i, &ar724x_pci_irq_chip,
handle_level_irq);
}
set_irq_chained_handler(AR71XX_CPU_IRQ_IP2, ar724x_pci_irq_handler);
}
int __init ar724x_pcibios_init(void)
{
int ret;
int ret = -ENOMEM;
ar724x_pci_localcfg_base = ioremap_nocache(AR724X_PCI_CRP_BASE,
AR724X_PCI_CRP_SIZE);
if (ar724x_pci_localcfg_base == NULL)
goto err;
ar724x_pci_devcfg_base = ioremap_nocache(AR724X_PCI_CFG_BASE,
AR724X_PCI_CFG_SIZE);
if (ar724x_pci_devcfg_base == NULL)
goto err_unmap_localcfg;
ar724x_pci_ctrl_base = ioremap_nocache(AR724X_PCI_CTRL_BASE,
AR724X_PCI_CTRL_SIZE);
if (ar724x_pci_ctrl_base == NULL)
goto err_unmap_devcfg;
ar724x_pci_reset();
ret = ar724x_pci_setup();
if (ret)
return ret;
goto err_unmap_ctrl;
ar724x_pci_fixup_enable = 1;
ar724x_pci_irq_init();
register_pci_controller(&ar724x_pci_controller);
return 0;
err_unmap_ctrl:
iounmap(ar724x_pci_ctrl_base);
err_unmap_devcfg:
iounmap(ar724x_pci_devcfg_base);
err_unmap_localcfg:
iounmap(ar724x_pci_localcfg_base);
err:
return ret;
}

View File

@ -20,11 +20,16 @@ CONFIG_ATHEROS_WDT=y
# CONFIG_BCM47XX is not set
# CONFIG_BCM63XX is not set
CONFIG_BITREVERSE=y
# CONFIG_BSD_PROCESS_ACCT is not set
# CONFIG_BUG is not set
# CONFIG_CAVIUM_OCTEON_REFERENCE_BOARD is not set
# CONFIG_CAVIUM_OCTEON_SIMULATOR is not set
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_CEVT_R4K=y
CONFIG_CEVT_R4K_LIB=y
# CONFIG_CMDLINE_BOOL is not set
CONFIG_CMDLINE="console=ttyS0,9600 rootfstype=squashfs,jffs2"
CONFIG_CMDLINE_BOOL=y
# CONFIG_CMDLINE_OVERRIDE is not set
CONFIG_CPU_BIG_ENDIAN=y
# CONFIG_CPU_CAVIUM_OCTEON is not set
CONFIG_CPU_HAS_PREFETCH=y
@ -157,6 +162,7 @@ CONFIG_MVSWITCH_PHY=y
# CONFIG_NXP_STB225 is not set
CONFIG_PAGEFLAGS_EXTENDED=y
CONFIG_PCI=y
CONFIG_PCI_DISABLE_COMMON_QUIRKS=y
CONFIG_PCI_DOMAINS=y
CONFIG_PHYLIB=y
# CONFIG_PMC_MSP is not set
@ -181,6 +187,7 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=1
# CONFIG_SIBYTE_RHONE is not set
# CONFIG_SIBYTE_SENTOSA is not set
# CONFIG_SIBYTE_SWARM is not set
# CONFIG_SWAP is not set
CONFIG_SWCONFIG=y
CONFIG_SYS_HAS_CPU_MIPS32_R1=y
CONFIG_SYS_HAS_EARLY_PRINTK=y

View File

@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
ARCH:=mipsel
BOARD:=brcm47xx
BOARDNAME:=Broadcom BCM947xx/953xx
FEATURES:=squashfs usb
FEATURES:=squashfs usb pcmcia
LINUX_VERSION:=2.6.32.9

View File

@ -5,6 +5,9 @@ INITRAMFS=1
. /etc/preinit
set_state init
echo "- init -"
# if we have no root parameter, just go to running from ramfs
[ -z $rootfs ] && {
export NOMOUNT="No Root"
@ -76,3 +79,5 @@ mount -o move /sys /mnt/sys
mount none /tmp -t tmpfs
killall -q hotplug2
exec switch_root -c /dev/console /mnt /sbin/init
set_state done

View File

@ -154,8 +154,10 @@ CONFIG_BINFMT_ELF=y
# CONFIG_BLK_CPQ_CISS_DA is not set
# CONFIG_BLK_CPQ_DA is not set
# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
# CONFIG_BLK_DEV_4DRIVES is not set
# CONFIG_BLK_DEV_AEC62XX is not set
# CONFIG_BLK_DEV_ALI15X3 is not set
# CONFIG_BLK_DEV_ALI14XX is not set
# CONFIG_BLK_DEV_AMD74XX is not set
# CONFIG_BLK_DEV_ATIIXP is not set
# CONFIG_BLK_DEV_BSG is not set
@ -169,6 +171,7 @@ CONFIG_BINFMT_ELF=y
# CONFIG_BLK_DEV_CS5535 is not set
# CONFIG_BLK_DEV_CS5536 is not set
# CONFIG_BLK_DEV_DAC960 is not set
# CONFIG_BLK_DEV_DTC2278 is not set
# CONFIG_BLK_DEV_DELKIN is not set
# CONFIG_BLK_DEV_FD is not set
# CONFIG_BLK_DEV_GENERIC is not set
@ -177,6 +180,7 @@ CONFIG_BINFMT_ELF=y
# CONFIG_BLK_DEV_HD_ONLY is not set
# CONFIG_BLK_DEV_HPT34X is not set
# CONFIG_BLK_DEV_HPT366 is not set
# CONFIG_BLK_DEV_HT6560B is not set
# CONFIG_BLK_DEV_IDEACPI is not set
# CONFIG_BLK_DEV_IDECD is not set
# CONFIG_BLK_DEV_IDECS is not set
@ -203,6 +207,7 @@ CONFIG_BLK_DEV_INITRD=y
# CONFIG_BLK_DEV_PDC202XX_OLD is not set
# CONFIG_BLK_DEV_PIIX is not set
# CONFIG_BLK_DEV_PLATFORM is not set
# CONFIG_BLK_DEV_QD65XX is not set
# CONFIG_BLK_DEV_RAM is not set
# CONFIG_BLK_DEV_RZ1000 is not set
# CONFIG_BLK_DEV_SC1200 is not set
@ -218,6 +223,7 @@ CONFIG_BLK_DEV_INITRD=y
# CONFIG_BLK_DEV_TRIFLEX is not set
# CONFIG_BLK_DEV_TRM290 is not set
# CONFIG_BLK_DEV_UB is not set
# CONFIG_BLK_DEV_UMC8672 is not set
# CONFIG_BLK_DEV_UMEM is not set
# CONFIG_BLK_DEV_VIA82CXXX is not set
# CONFIG_BLK_DEV_XIP is not set
@ -324,6 +330,7 @@ CONFIG_COMPAT_NET_DEV_OPS=y
# CONFIG_CONFIGFS_FS is not set
# CONFIG_CONNECTOR is not set
# CONFIG_CONTEXT_SWITCH_TRACER is not set
# CONFIG_COPS is not set
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
# CONFIG_CPU_DCACHE_DISABLE is not set
# CONFIG_CPU_FREQ is not set
@ -618,6 +625,7 @@ CONFIG_GENERIC_HARDIRQS=y
CONFIG_GENERIC_HWEIGHT=y
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_GENERIC_TIME=y
# CONFIG_GIGASET_DEBUG is not set
# CONFIG_GFS2_FS is not set
# CONFIG_GPIO_BT8XX is not set
# CONFIG_GPIO_DEVICE is not set
@ -699,6 +707,7 @@ CONFIG_HOTPLUG=y
# CONFIG_HW_RANDOM_INTEL is not set
# CONFIG_HW_RANDOM_TIMERIOMEM is not set
# CONFIG_HW_RANDOM_VIA is not set
# CONFIG_HYSDN is not set
CONFIG_HZ=100
# CONFIG_HZ_1000 is not set
CONFIG_HZ_100=y
@ -997,7 +1006,20 @@ CONFIG_IPW2200_MONITOR=y
# CONFIG_IRDA is not set
# CONFIG_IRQSOFF_TRACER is not set
# CONFIG_ISCSI_TCP is not set
# CONFIG_ISDN is not set
CONFIG_ISDN=y
# CONFIG_ISDN_AUDIO is not set
# CONFIG_ISDN_CAPI_CAPIDRV is not set
# CONFIG_ISDN_DIVERSION is not set
# CONFIG_ISDN_DRV_ACT2000 is not set
# CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON is not set
# CONFIG_ISDN_DRV_EICON is not set
# CONFIG_ISDN_DRV_HISAX is not set
# CONFIG_ISDN_DRV_ICN is not set
# CONFIG_ISDN_DRV_LOOP is not set
# CONFIG_ISDN_DRV_PCBIT is not set
# CONFIG_ISDN_DRV_SC is not set
# CONFIG_ISDN_DRV_TPAM is not set
# CONFIG_ISDN_WITH_ABC is not set
# CONFIG_ISL29003 is not set
# CONFIG_ISO9660_FS is not set
# CONFIG_IWL3945 is not set
@ -1097,6 +1119,7 @@ CONFIG_LOG_BUF_SHIFT=14
# CONFIG_LOGITECH_FF is not set
# CONFIG_LSF is not set
# CONFIG_LSI_ET1011C_PHY is not set
# CONFIG_LTPC is not set
# CONFIG_LXT_PHY is not set
# CONFIG_MAC80211 is not set
# CONFIG_MAC_EMUMOUSEBTN is not set
@ -1825,6 +1848,7 @@ CONFIG_SCSI_LOWLEVEL=y
# CONFIG_SCSI_MPT2SAS is not set
CONFIG_SCSI_MULTI_LUN=y
# CONFIG_SCSI_MVSAS is not set
# CONFIG_SCSI_MVSAS_DEBUG is not set
# CONFIG_SCSI_NCR53C406A is not set
# CONFIG_SCSI_NETLINK is not set
# CONFIG_SCSI_NSP32 is not set
@ -2010,6 +2034,7 @@ CONFIG_SLAB=y
# CONFIG_SND_CS46XX is not set
# CONFIG_SND_CS5530 is not set
# CONFIG_SND_CS5535AUDIO is not set
# CONFIG_SND_CTXFI is not set
# CONFIG_SND_DARLA20 is not set
# CONFIG_SND_DARLA24 is not set
# CONFIG_SND_DEBUG is not set
@ -2042,7 +2067,9 @@ CONFIG_SND_DRIVERS=y
# CONFIG_SND_ICE1712 is not set
# CONFIG_SND_ICE1724 is not set
# CONFIG_SND_INDIGODJ is not set
# CONFIG_SND_INDIGODJX is not set
# CONFIG_SND_INDIGOIO is not set
# CONFIG_SND_INDIGOIOX is not set
# CONFIG_SND_INDIGO is not set
# CONFIG_SND_INTEL8X0 is not set
# CONFIG_SND_INTEL8X0M is not set
@ -2053,6 +2080,7 @@ CONFIG_SND_DRIVERS=y
# CONFIG_SND_KORG1212 is not set
# CONFIG_SND_LAYLA20 is not set
# CONFIG_SND_LAYLA24 is not set
# CONFIG_SND_LX6464ES is not set
# CONFIG_SND_MAESTRO3 is not set
# CONFIG_SND_MIA is not set
# CONFIG_SND_MIPS is not set
@ -2069,7 +2097,7 @@ CONFIG_SND_DRIVERS=y
# CONFIG_SND_OPTI93X is not set
CONFIG_SND_OSSEMUL=y
# CONFIG_SND_OXYGEN is not set
# CONFIG_SND_PCI is not set
CONFIG_SND_PCI=y
# CONFIG_SND_PCMCIA is not set
# CONFIG_SND_PCM is not set
# CONFIG_SND_PCM_OSS is not set
@ -2088,6 +2116,7 @@ CONFIG_SND_PCM_OSS_PLUGINS=y
# CONFIG_SND_SBAWE is not set
# CONFIG_SND_SEQUENCER is not set
# CONFIG_SND_SERIAL_U16550 is not set
# CONFIG_SND_SIS7019 is not set
# CONFIG_SND_SGALAXY is not set
# CONFIG_SND_SOC is not set
# CONFIG_SND_SONICVIBES is not set

View File

@ -337,6 +337,7 @@ CONFIG_COMPAT_NET_DEV_OPS=y
# CONFIG_CONNECTOR is not set
CONFIG_CONSTRUCTORS=y
# CONFIG_CONTEXT_SWITCH_TRACER is not set
# CONFIG_COPS is not set
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
# CONFIG_CPU_DCACHE_DISABLE is not set
# CONFIG_CPU_FREQ is not set
@ -606,6 +607,7 @@ CONFIG_GENERIC_HARDIRQS=y
CONFIG_GENERIC_HWEIGHT=y
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_GENERIC_TIME=y
# CONFIG_GIGASET_DEBUG is not set
# CONFIG_GFS2_FS is not set
# CONFIG_GPIO_BT8XX is not set
# CONFIG_GPIO_DEVICE is not set
@ -696,6 +698,7 @@ CONFIG_HOTPLUG=y
# CONFIG_HW_RANDOM_INTEL is not set
# CONFIG_HW_RANDOM_TIMERIOMEM is not set
# CONFIG_HW_RANDOM_VIA is not set
# CONFIG_HYSDN is not set
CONFIG_HZ=100
# CONFIG_HZ_1000 is not set
CONFIG_HZ_100=y
@ -995,7 +998,20 @@ CONFIG_IPW2200_MONITOR=y
# CONFIG_IRDA is not set
# CONFIG_IRQSOFF_TRACER is not set
# CONFIG_ISCSI_TCP is not set
# CONFIG_ISDN is not set
CONFIG_ISDN=y
# CONFIG_ISDN_AUDIO is not set
# CONFIG_ISDN_CAPI_CAPIDRV is not set
# CONFIG_ISDN_DIVERSION is not set
# CONFIG_ISDN_DRV_ACT2000 is not set
# CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON is not set
# CONFIG_ISDN_DRV_EICON is not set
# CONFIG_ISDN_DRV_HISAX is not set
# CONFIG_ISDN_DRV_ICN is not set
# CONFIG_ISDN_DRV_LOOP is not set
# CONFIG_ISDN_DRV_PCBIT is not set
# CONFIG_ISDN_DRV_SC is not set
# CONFIG_ISDN_DRV_TPAM is not set
# CONFIG_ISDN_WITH_ABC is not set
# CONFIG_ISL29003 is not set
# CONFIG_ISO9660_FS is not set
# CONFIG_IWL3945 is not set
@ -1099,6 +1115,7 @@ CONFIG_LOG_BUF_SHIFT=14
# CONFIG_LOGO is not set
# CONFIG_LSF is not set
# CONFIG_LSI_ET1011C_PHY is not set
# CONFIG_LTPC is not set
# CONFIG_LXT_PHY is not set
CONFIG_MAC80211_DEFAULT_PS_VALUE=1
CONFIG_MAC80211_DEFAULT_PS=y
@ -1835,6 +1852,7 @@ CONFIG_SCSI_LOWLEVEL=y
# CONFIG_SCSI_MPT2SAS is not set
CONFIG_SCSI_MULTI_LUN=y
# CONFIG_SCSI_MVSAS is not set
# CONFIG_SCSI_MVSAS_DEBUG is not set
# CONFIG_SCSI_NCR53C406A is not set
# CONFIG_SCSI_NETLINK is not set
# CONFIG_SCSI_NSP32 is not set
@ -2024,6 +2042,7 @@ CONFIG_SLAB=y
# CONFIG_SND_CS46XX is not set
# CONFIG_SND_CS5530 is not set
# CONFIG_SND_CS5535AUDIO is not set
# CONFIG_SND_CTXFI is not set
# CONFIG_SND_DARLA20 is not set
# CONFIG_SND_DARLA24 is not set
# CONFIG_SND_DEBUG is not set
@ -2056,7 +2075,9 @@ CONFIG_SND_DRIVERS=y
# CONFIG_SND_ICE1712 is not set
# CONFIG_SND_ICE1724 is not set
# CONFIG_SND_INDIGODJ is not set
# CONFIG_SND_INDIGODJX is not set
# CONFIG_SND_INDIGOIO is not set
# CONFIG_SND_INDIGOIOX is not set
# CONFIG_SND_INDIGO is not set
# CONFIG_SND_INTEL8X0 is not set
# CONFIG_SND_INTEL8X0M is not set
@ -2067,6 +2088,7 @@ CONFIG_SND_DRIVERS=y
# CONFIG_SND_KORG1212 is not set
# CONFIG_SND_LAYLA20 is not set
# CONFIG_SND_LAYLA24 is not set
# CONFIG_SND_LX6464ES is not set
# CONFIG_SND_MAESTRO3 is not set
# CONFIG_SND_MIA is not set
# CONFIG_SND_MIPS is not set
@ -2083,7 +2105,7 @@ CONFIG_SND_DRIVERS=y
# CONFIG_SND_OPTI93X is not set
CONFIG_SND_OSSEMUL=y
# CONFIG_SND_OXYGEN is not set
# CONFIG_SND_PCI is not set
CONFIG_SND_PCI=y
# CONFIG_SND_PCMCIA is not set
# CONFIG_SND_PCM is not set
# CONFIG_SND_PCM_OSS is not set
@ -2101,6 +2123,7 @@ CONFIG_SND_PCM_OSS_PLUGINS=y
# CONFIG_SND_SBAWE is not set
# CONFIG_SND_SEQUENCER is not set
# CONFIG_SND_SERIAL_U16550 is not set
# CONFIG_SND_SIS7019 is not set
# CONFIG_SND_SGALAXY is not set
# CONFIG_SND_SOC is not set
# CONFIG_SND_SONICVIBES is not set

View File

@ -5,6 +5,7 @@
# CONFIG_AB3100_CORE is not set
# CONFIG_ACCESSIBILITY is not set
# CONFIG_ACENIC is not set
# CONFIG_ACPI_POWER_METER is not set
# CONFIG_ACORN_PARTITION is not set
# CONFIG_ADAPTEC_STARFIRE is not set
# CONFIG_ADFS_FS is not set
@ -344,6 +345,7 @@ CONFIG_COMPAT_NET_DEV_OPS=y
# CONFIG_CONNECTOR is not set
CONFIG_CONSTRUCTORS=y
# CONFIG_CONTEXT_SWITCH_TRACER is not set
# CONFIG_COPS is not set
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
# CONFIG_CPU_DCACHE_DISABLE is not set
# CONFIG_CPU_FREQ is not set
@ -653,6 +655,7 @@ CONFIG_GENERIC_HARDIRQS=y
CONFIG_GENERIC_HWEIGHT=y
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_GENERIC_TIME=y
# CONFIG_GIGASET_DEBUG is not set
# CONFIG_GFS2_FS is not set
# CONFIG_GPIO_BT8XX is not set
# CONFIG_GPIO_DEVICE is not set
@ -747,6 +750,7 @@ CONFIG_HOTPLUG=y
# CONFIG_HW_RANDOM_TIMERIOMEM is not set
# CONFIG_HW_RANDOM_VIA is not set
# CONFIG_HYPERV is not set
# CONFIG_HYSDN is not set
CONFIG_HZ=100
# CONFIG_HZ_1000 is not set
CONFIG_HZ_100=y
@ -787,6 +791,7 @@ CONFIG_HZ_100=y
# CONFIG_I2C_PIIX4 is not set
# CONFIG_I2C_PROSAVAGE is not set
# CONFIG_I2C_SAVAGE4 is not set
# CONFIG_I2C_SCMI is not set
# CONFIG_I2C_SIMTEC is not set
# CONFIG_I2C_SIS5595 is not set
# CONFIG_I2C_SIS630 is not set
@ -1050,7 +1055,20 @@ CONFIG_IPW2200_MONITOR=y
# CONFIG_IRDA is not set
# CONFIG_IRQSOFF_TRACER is not set
# CONFIG_ISCSI_TCP is not set
# CONFIG_ISDN is not set
CONFIG_ISDN=y
# CONFIG_ISDN_AUDIO is not set
# CONFIG_ISDN_CAPI_CAPIDRV is not set
# CONFIG_ISDN_DIVERSION is not set
# CONFIG_ISDN_DRV_ACT2000 is not set
# CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON is not set
# CONFIG_ISDN_DRV_EICON is not set
# CONFIG_ISDN_DRV_HISAX is not set
# CONFIG_ISDN_DRV_ICN is not set
# CONFIG_ISDN_DRV_LOOP is not set
# CONFIG_ISDN_DRV_PCBIT is not set
# CONFIG_ISDN_DRV_SC is not set
# CONFIG_ISDN_DRV_TPAM is not set
# CONFIG_ISDN_WITH_ABC is not set
# CONFIG_ISL29003 is not set
# CONFIG_ISO9660_FS is not set
# CONFIG_IWL3945 is not set
@ -1160,6 +1178,7 @@ CONFIG_LOG_BUF_SHIFT=14
# CONFIG_LOGO is not set
# CONFIG_LSF is not set
# CONFIG_LSI_ET1011C_PHY is not set
# CONFIG_LTPC is not set
# CONFIG_LXT_PHY is not set
CONFIG_MAC80211_DEFAULT_PS_VALUE=1
CONFIG_MAC80211_DEFAULT_PS=y
@ -1736,6 +1755,7 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
CONFIG_PRINTK=y
# CONFIG_PRISM2_USB is not set
# CONFIG_PRISM54 is not set
# CONFIG_PROBE_INITRD_HEADER is not set
CONFIG_PROC_FS=y
CONFIG_PROC_KCORE=y
# CONFIG_PROC_PAGE_MONITOR is not set
@ -1935,6 +1955,7 @@ CONFIG_SCSI_LOWLEVEL=y
# CONFIG_SCSI_MPT2SAS is not set
CONFIG_SCSI_MULTI_LUN=y
# CONFIG_SCSI_MVSAS is not set
# CONFIG_SCSI_MVSAS_DEBUG is not set
# CONFIG_SCSI_NCR53C406A is not set
# CONFIG_SCSI_NETLINK is not set
# CONFIG_SCSI_NSP32 is not set
@ -1985,6 +2006,7 @@ CONFIG_SELECT_MEMORY_MODEL=y
# CONFIG_SENSORS_ADT7475 is not set
# CONFIG_SENSORS_APPLESMC is not set
# CONFIG_SENSORS_ASB100 is not set
# CONFIG_SENSORS_ATK0110 is not set
# CONFIG_SENSORS_ATXP1 is not set
# CONFIG_SENSORS_CORETEMP is not set
# CONFIG_SENSORS_DME1737 is not set
@ -2006,6 +2028,7 @@ CONFIG_SELECT_MEMORY_MODEL=y
# CONFIG_SENSORS_IT87 is not set
# CONFIG_SENSORS_K8TEMP is not set
# CONFIG_SENSORS_LIS3_SPI is not set
# CONFIG_SENSORS_LIS3LV02D is not set
# CONFIG_SENSORS_LM63 is not set
# CONFIG_SENSORS_LM70 is not set
# CONFIG_SENSORS_LM75 is not set
@ -2126,6 +2149,7 @@ CONFIG_SLAB=y
# CONFIG_SND_CS46XX is not set
# CONFIG_SND_CS5530 is not set
# CONFIG_SND_CS5535AUDIO is not set
# CONFIG_SND_CTXFI is not set
# CONFIG_SND_DARLA20 is not set
# CONFIG_SND_DARLA24 is not set
# CONFIG_SND_DEBUG is not set
@ -2158,7 +2182,9 @@ CONFIG_SND_DRIVERS=y
# CONFIG_SND_ICE1712 is not set
# CONFIG_SND_ICE1724 is not set
# CONFIG_SND_INDIGODJ is not set
# CONFIG_SND_INDIGODJX is not set
# CONFIG_SND_INDIGOIO is not set
# CONFIG_SND_INDIGOIOX is not set
# CONFIG_SND_INDIGO is not set
# CONFIG_SND_INTEL8X0 is not set
# CONFIG_SND_INTEL8X0M is not set
@ -2169,6 +2195,7 @@ CONFIG_SND_DRIVERS=y
# CONFIG_SND_KORG1212 is not set
# CONFIG_SND_LAYLA20 is not set
# CONFIG_SND_LAYLA24 is not set
# CONFIG_SND_LX6464ES is not set
# CONFIG_SND_MAESTRO3 is not set
# CONFIG_SND_MIA is not set
# CONFIG_SND_MIPS is not set
@ -2185,7 +2212,7 @@ CONFIG_SND_DRIVERS=y
# CONFIG_SND_OPTI93X is not set
CONFIG_SND_OSSEMUL=y
# CONFIG_SND_OXYGEN is not set
# CONFIG_SND_PCI is not set
CONFIG_SND_PCI=y
# CONFIG_SND_PCMCIA is not set
# CONFIG_SND_PCM is not set
# CONFIG_SND_PCM_OSS is not set
@ -2205,6 +2232,7 @@ CONFIG_SND_PCM_OSS_PLUGINS=y
# CONFIG_SND_SEQUENCER is not set
# CONFIG_SND_SERIAL_U16550 is not set
# CONFIG_SND_SGALAXY is not set
# CONFIG_SND_SIS7019 is not set
# CONFIG_SND_SOC is not set
# CONFIG_SND_SONICVIBES is not set
# CONFIG_SND_SPI is not set
@ -2231,6 +2259,7 @@ CONFIG_SND_VERBOSE_PROCFS=y
# CONFIG_SOFT_WATCHDOG is not set
# CONFIG_SOLARIS_X86_PARTITION is not set
# CONFIG_SONYPI is not set
# CONFIG_SONY_LAPTOP is not set
# CONFIG_SOUND is not set
# CONFIG_SOUND_PRIME is not set
# CONFIG_SPARSEMEM_MANUAL is not set

View File

@ -6,6 +6,7 @@
# CONFIG_AB4500_CORE is not set
# CONFIG_ACCESSIBILITY is not set
# CONFIG_ACENIC is not set
# CONFIG_ACPI_POWER_METER is not set
# CONFIG_ACORN_PARTITION is not set
# CONFIG_AD525X_DPOT is not set
# CONFIG_ADAPTEC_STARFIRE is not set
@ -660,6 +661,7 @@ CONFIG_GENERIC_HARDIRQS=y
CONFIG_GENERIC_HWEIGHT=y
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_GENERIC_TIME=y
# CONFIG_GIGASET_DEBUG is not set
# CONFIG_GFS2_FS is not set
# CONFIG_GPIO_ADP5588 is not set
# CONFIG_GPIO_BT8XX is not set
@ -756,6 +758,7 @@ CONFIG_HOTPLUG=y
# CONFIG_HW_RANDOM_TIMERIOMEM is not set
# CONFIG_HW_RANDOM_VIA is not set
# CONFIG_HYPERV is not set
# CONFIG_HYSDN is not set
CONFIG_HZ=100
# CONFIG_HZ_1000 is not set
CONFIG_HZ_100=y
@ -1063,7 +1066,20 @@ CONFIG_IPW2200_MONITOR=y
# CONFIG_IRDA is not set
# CONFIG_IRQSOFF_TRACER is not set
# CONFIG_ISCSI_TCP is not set
# CONFIG_ISDN is not set
CONFIG_ISDN=y
# CONFIG_ISDN_AUDIO is not set
# CONFIG_ISDN_CAPI_CAPIDRV is not set
# CONFIG_ISDN_DIVERSION is not set
# CONFIG_ISDN_DRV_ACT2000 is not set
# CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON is not set
# CONFIG_ISDN_DRV_EICON is not set
# CONFIG_ISDN_DRV_HISAX is not set
# CONFIG_ISDN_DRV_ICN is not set
# CONFIG_ISDN_DRV_LOOP is not set
# CONFIG_ISDN_DRV_PCBIT is not set
# CONFIG_ISDN_DRV_SC is not set
# CONFIG_ISDN_DRV_TPAM is not set
# CONFIG_ISDN_WITH_ABC is not set
# CONFIG_ISL29003 is not set
# CONFIG_ISO9660_FS is not set
# CONFIG_IWL3945 is not set
@ -1173,6 +1189,7 @@ CONFIG_LOG_BUF_SHIFT=14
# CONFIG_LOGO is not set
# CONFIG_LSF is not set
# CONFIG_LSI_ET1011C_PHY is not set
# CONFIG_LTPC is not set
# CONFIG_LXT_PHY is not set
CONFIG_MAC80211_DEFAULT_PS_VALUE=1
CONFIG_MAC80211_DEFAULT_PS=y
@ -1755,6 +1772,7 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
CONFIG_PRINTK=y
# CONFIG_PRISM2_USB is not set
# CONFIG_PRISM54 is not set
# CONFIG_PROBE_INITRD_HEADER is not set
CONFIG_PROC_FS=y
CONFIG_PROC_KCORE=y
# CONFIG_PROC_PAGE_MONITOR is not set
@ -1960,6 +1978,7 @@ CONFIG_SCSI_LOWLEVEL=y
# CONFIG_SCSI_MPT2SAS is not set
CONFIG_SCSI_MULTI_LUN=y
# CONFIG_SCSI_MVSAS is not set
# CONFIG_SCSI_MVSAS_DEBUG is not set
# CONFIG_SCSI_NCR53C406A is not set
# CONFIG_SCSI_NETLINK is not set
# CONFIG_SCSI_NSP32 is not set
@ -2012,6 +2031,7 @@ CONFIG_SELECT_MEMORY_MODEL=y
# CONFIG_SENSORS_AMC6821 is not set
# CONFIG_SENSORS_APPLESMC is not set
# CONFIG_SENSORS_ASB100 is not set
# CONFIG_SENSORS_ATK0110 is not set
# CONFIG_SENSORS_ATXP1 is not set
# CONFIG_SENSORS_CORETEMP is not set
# CONFIG_SENSORS_DME1737 is not set
@ -2032,6 +2052,7 @@ CONFIG_SELECT_MEMORY_MODEL=y
# CONFIG_SENSORS_I5K_AMB is not set
# CONFIG_SENSORS_IT87 is not set
# CONFIG_SENSORS_K8TEMP is not set
# CONFIG_SENSORS_LIS3LV02D is not set
# CONFIG_SENSORS_LIS3_I2C is not set
# CONFIG_SENSORS_LIS3_SPI is not set
# CONFIG_SENSORS_LM63 is not set
@ -2155,6 +2176,7 @@ CONFIG_SLAB=y
# CONFIG_SND_CS46XX is not set
# CONFIG_SND_CS5530 is not set
# CONFIG_SND_CS5535AUDIO is not set
# CONFIG_SND_CTXFI is not set
# CONFIG_SND_DARLA20 is not set
# CONFIG_SND_DARLA24 is not set
# CONFIG_SND_DEBUG is not set
@ -2187,7 +2209,9 @@ CONFIG_SND_DRIVERS=y
# CONFIG_SND_ICE1712 is not set
# CONFIG_SND_ICE1724 is not set
# CONFIG_SND_INDIGODJ is not set
# CONFIG_SND_INDIGODJX is not set
# CONFIG_SND_INDIGOIO is not set
# CONFIG_SND_INDIGOIOX is not set
# CONFIG_SND_INDIGO is not set
# CONFIG_SND_INTEL8X0 is not set
# CONFIG_SND_INTEL8X0M is not set
@ -2198,6 +2222,7 @@ CONFIG_SND_DRIVERS=y
# CONFIG_SND_KORG1212 is not set
# CONFIG_SND_LAYLA20 is not set
# CONFIG_SND_LAYLA24 is not set
# CONFIG_SND_LX6464ES is not set
# CONFIG_SND_MAESTRO3 is not set
# CONFIG_SND_MIA is not set
# CONFIG_SND_MIPS is not set
@ -2214,7 +2239,7 @@ CONFIG_SND_DRIVERS=y
# CONFIG_SND_OPTI93X is not set
CONFIG_SND_OSSEMUL=y
# CONFIG_SND_OXYGEN is not set
# CONFIG_SND_PCI is not set
CONFIG_SND_PCI=y
# CONFIG_SND_PCMCIA is not set
# CONFIG_SND_PCM is not set
# CONFIG_SND_PCM_OSS is not set
@ -2232,6 +2257,7 @@ CONFIG_SND_PCM_OSS_PLUGINS=y
# CONFIG_SND_SBAWE is not set
# CONFIG_SND_SEQUENCER is not set
# CONFIG_SND_SERIAL_U16550 is not set
# CONFIG_SND_SIS7019 is not set
# CONFIG_SND_SGALAXY is not set
# CONFIG_SND_SOC is not set
# CONFIG_SND_SONICVIBES is not set
@ -2259,6 +2285,7 @@ CONFIG_SND_VERBOSE_PROCFS=y
# CONFIG_SOFT_WATCHDOG is not set
# CONFIG_SOLARIS_X86_PARTITION is not set
# CONFIG_SONYPI is not set
# CONFIG_SONY_LAPTOP is not set
# CONFIG_SOUND is not set
# CONFIG_SOUND_PRIME is not set
# CONFIG_SPARSEMEM_MANUAL is not set

View File

@ -6,6 +6,7 @@
# CONFIG_AB4500_CORE is not set
# CONFIG_ACCESSIBILITY is not set
# CONFIG_ACENIC is not set
# CONFIG_ACPI_POWER_METER is not set
# CONFIG_ACORN_PARTITION is not set
# CONFIG_AD525X_DPOT is not set
# CONFIG_ADAPTEC_STARFIRE is not set
@ -660,6 +661,7 @@ CONFIG_GENERIC_HARDIRQS=y
CONFIG_GENERIC_HWEIGHT=y
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_GENERIC_TIME=y
# CONFIG_GIGASET_DEBUG is not set
# CONFIG_GFS2_FS is not set
# CONFIG_GPIO_ADP5588 is not set
# CONFIG_GPIO_BT8XX is not set
@ -756,6 +758,7 @@ CONFIG_HOTPLUG=y
# CONFIG_HW_RANDOM_TIMERIOMEM is not set
# CONFIG_HW_RANDOM_VIA is not set
# CONFIG_HYPERV is not set
# CONFIG_HYSDN is not set
CONFIG_HZ=100
# CONFIG_HZ_1000 is not set
CONFIG_HZ_100=y
@ -1063,7 +1066,20 @@ CONFIG_IPW2200_MONITOR=y
# CONFIG_IRDA is not set
# CONFIG_IRQSOFF_TRACER is not set
# CONFIG_ISCSI_TCP is not set
# CONFIG_ISDN is not set
CONFIG_ISDN=y
# CONFIG_ISDN_AUDIO is not set
# CONFIG_ISDN_CAPI_CAPIDRV is not set
# CONFIG_ISDN_DIVERSION is not set
# CONFIG_ISDN_DRV_ACT2000 is not set
# CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON is not set
# CONFIG_ISDN_DRV_EICON is not set
# CONFIG_ISDN_DRV_HISAX is not set
# CONFIG_ISDN_DRV_ICN is not set
# CONFIG_ISDN_DRV_LOOP is not set
# CONFIG_ISDN_DRV_PCBIT is not set
# CONFIG_ISDN_DRV_SC is not set
# CONFIG_ISDN_DRV_TPAM is not set
# CONFIG_ISDN_WITH_ABC is not set
# CONFIG_ISL29003 is not set
# CONFIG_ISO9660_FS is not set
# CONFIG_IWL3945 is not set
@ -1173,6 +1189,7 @@ CONFIG_LOG_BUF_SHIFT=14
# CONFIG_LOGO is not set
# CONFIG_LSF is not set
# CONFIG_LSI_ET1011C_PHY is not set
# CONFIG_LTPC is not set
# CONFIG_LXT_PHY is not set
CONFIG_MAC80211_DEFAULT_PS_VALUE=1
CONFIG_MAC80211_DEFAULT_PS=y
@ -1755,6 +1772,7 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
CONFIG_PRINTK=y
# CONFIG_PRISM2_USB is not set
# CONFIG_PRISM54 is not set
# CONFIG_PROBE_INITRD_HEADER is not set
CONFIG_PROC_FS=y
CONFIG_PROC_KCORE=y
# CONFIG_PROC_PAGE_MONITOR is not set
@ -1960,6 +1978,7 @@ CONFIG_SCSI_LOWLEVEL=y
# CONFIG_SCSI_MPT2SAS is not set
CONFIG_SCSI_MULTI_LUN=y
# CONFIG_SCSI_MVSAS is not set
# CONFIG_SCSI_MVSAS_DEBUG is not set
# CONFIG_SCSI_NCR53C406A is not set
# CONFIG_SCSI_NETLINK is not set
# CONFIG_SCSI_NSP32 is not set
@ -2012,6 +2031,7 @@ CONFIG_SELECT_MEMORY_MODEL=y
# CONFIG_SENSORS_AMC6821 is not set
# CONFIG_SENSORS_APPLESMC is not set
# CONFIG_SENSORS_ASB100 is not set
# CONFIG_SENSORS_ATK0110 is not set
# CONFIG_SENSORS_ATXP1 is not set
# CONFIG_SENSORS_CORETEMP is not set
# CONFIG_SENSORS_DME1737 is not set
@ -2032,6 +2052,7 @@ CONFIG_SELECT_MEMORY_MODEL=y
# CONFIG_SENSORS_I5K_AMB is not set
# CONFIG_SENSORS_IT87 is not set
# CONFIG_SENSORS_K8TEMP is not set
# CONFIG_SENSORS_LIS3LV02D is not set
# CONFIG_SENSORS_LIS3_I2C is not set
# CONFIG_SENSORS_LIS3_SPI is not set
# CONFIG_SENSORS_LM63 is not set
@ -2155,6 +2176,7 @@ CONFIG_SLAB=y
# CONFIG_SND_CS46XX is not set
# CONFIG_SND_CS5530 is not set
# CONFIG_SND_CS5535AUDIO is not set
# CONFIG_SND_CTXFI is not set
# CONFIG_SND_DARLA20 is not set
# CONFIG_SND_DARLA24 is not set
# CONFIG_SND_DEBUG is not set
@ -2187,7 +2209,9 @@ CONFIG_SND_DRIVERS=y
# CONFIG_SND_ICE1712 is not set
# CONFIG_SND_ICE1724 is not set
# CONFIG_SND_INDIGODJ is not set
# CONFIG_SND_INDIGODJX is not set
# CONFIG_SND_INDIGOIO is not set
# CONFIG_SND_INDIGOIOX is not set
# CONFIG_SND_INDIGO is not set
# CONFIG_SND_INTEL8X0 is not set
# CONFIG_SND_INTEL8X0M is not set
@ -2198,6 +2222,7 @@ CONFIG_SND_DRIVERS=y
# CONFIG_SND_KORG1212 is not set
# CONFIG_SND_LAYLA20 is not set
# CONFIG_SND_LAYLA24 is not set
# CONFIG_SND_LX6464ES is not set
# CONFIG_SND_MAESTRO3 is not set
# CONFIG_SND_MIA is not set
# CONFIG_SND_MIPS is not set
@ -2214,7 +2239,7 @@ CONFIG_SND_DRIVERS=y
# CONFIG_SND_OPTI93X is not set
CONFIG_SND_OSSEMUL=y
# CONFIG_SND_OXYGEN is not set
# CONFIG_SND_PCI is not set
CONFIG_SND_PCI=y
# CONFIG_SND_PCMCIA is not set
# CONFIG_SND_PCM is not set
# CONFIG_SND_PCM_OSS is not set
@ -2232,6 +2257,7 @@ CONFIG_SND_PCM_OSS_PLUGINS=y
# CONFIG_SND_SBAWE is not set
# CONFIG_SND_SEQUENCER is not set
# CONFIG_SND_SERIAL_U16550 is not set
# CONFIG_SND_SIS7019 is not set
# CONFIG_SND_SGALAXY is not set
# CONFIG_SND_SOC is not set
# CONFIG_SND_SONICVIBES is not set
@ -2259,6 +2285,7 @@ CONFIG_SND_VERBOSE_PROCFS=y
# CONFIG_SOFT_WATCHDOG is not set
# CONFIG_SOLARIS_X86_PARTITION is not set
# CONFIG_SONYPI is not set
# CONFIG_SONY_LAPTOP is not set
# CONFIG_SOUND is not set
# CONFIG_SOUND_PRIME is not set
# CONFIG_SPARSEMEM_MANUAL is not set

View File

@ -10,8 +10,9 @@
--- a/fs/Makefile
+++ b/fs/Makefile
@@ -125,3 +125,4 @@ obj-$(CONFIG_OCFS2_FS) += ocfs2/
obj-$(CONFIG_BTRFS_FS) += btrfs/
@@ -127,3 +127,5 @@
obj-$(CONFIG_GFS2_FS) += gfs2/
obj-$(CONFIG_EXOFS_FS) += exofs/
obj-$(CONFIG_CEPH_FS) += ceph/
+obj-$(CONFIG_YAFFS_FS) += yaffs2/
+

View File

@ -55,6 +55,7 @@ enum {
};
extern int ifxmips_pci_external_clock;
extern int ifxmips_pci_req_mask;
static unsigned int chiprev;
static int cmdline_mac;
@ -70,6 +71,7 @@ struct ifxmips_board {
struct gpio_led *ifxmips_leds;
struct gpio_led *gpio_leds;
int pci_external_clock;
int pci_req_mask;
int num_devs;
};
@ -335,9 +337,10 @@ struct ifxmips_board *ifxmips_find_board(void)
int __init ifxmips_init_devices(void)
{
struct ifxmips_board *board = ifxmips_find_board();
struct ifxmips_board *board;
chiprev = (ifxmips_r32(IFXMIPS_MPS_CHIPID) & 0x0FFFFFFF);
board = ifxmips_find_board();
ifxmips_brn = ifxmips_find_brn_block();
if (!cmdline_mac)
@ -392,6 +395,8 @@ int __init ifxmips_init_devices(void)
ifxmips_gpio_dev.resource = &board->gpiodev_resource;
if (board->pci_external_clock)
ifxmips_pci_external_clock = 1;
if (board->pci_req_mask)
ifxmips_pci_req_mask = board->pci_req_mask;
printk(KERN_INFO "using board definition %s\n", board->name);
return platform_add_devices(board->devs, board->num_devs);
}

View File

@ -99,7 +99,7 @@ static inline void gpio_set_value_cansleep(unsigned gpio, int value)
static inline int gpio_is_valid(int number)
{
return ((unsigned)number) < 16;
return ((unsigned)number) < 32;
}
#endif

View File

@ -143,7 +143,8 @@
#define IFXMIPS_EBU_PCC_CON ((u32 *)(IFXMIPS_EBU_BASE_ADDR + 0x0090))
#define IFXMIPS_EBU_PCC_IEN ((u32 *)(IFXMIPS_EBU_BASE_ADDR + 0x00A4))
#define IFXMIPS_EBU_PCC_ISTAT ((u32 *)(IFXMIPS_EBU_BASE_ADDR + 0x00A0))
#define IFXMIPS_EBU_BUSCON1 ((u32 *)(IFXMIPS_EBU_BASE_ADDR + 0x0064))
#define IFXMIPS_EBU_ADDRSEL1 ((u32 *)(IFXMIPS_EBU_BASE_ADDR + 0x0024))
/*------------ CGU */
#define IFXMIPS_CGU_BASE_ADDR (KSEG1 + 0x1F103000)

View File

@ -54,6 +54,10 @@ static struct pci_controller ifxmips_pci_controller =
u32 ifxmips_pci_mapped_cfg;
int ifxmips_pci_external_clock = 0;
/* Since the PCI REQ pins can be reused for other functionality, make it possible
to exclude those from interpretation by the PCI controller */
int ifxmips_pci_req_mask = 0xf;
static int __init
ifxmips_pci_set_external_clk(char *str)
{
@ -89,6 +93,17 @@ pcibios_plat_dev_init(struct pci_dev *dev)
return 0;
}
static u32 calc_bar11mask(void)
{
u32 mem, bar11mask;
/* BAR11MASK value depends on available memory on system. */
mem = num_physpages * PAGE_SIZE;
bar11mask = (0x0ffffff0 & ~((1 << (fls(mem) -1)) -1)) | 8;
return bar11mask;
}
static void __init
ifxmips_pci_startup(void)
{
@ -115,7 +130,7 @@ ifxmips_pci_startup(void)
/* enable external 2 PCI masters */
temp_buffer = ifxmips_r32(PCI_CR_PC_ARB);
temp_buffer &= (~(0xf << 16));
temp_buffer &= (~(ifxmips_pci_req_mask << 16));
/* enable internal arbiter */
temp_buffer |= (1 << INTERNAL_ARB_ENABLE_BIT);
/* enable internal PCI master reqest */
@ -138,7 +153,7 @@ ifxmips_pci_startup(void)
ifxmips_w32(0x19800000, PCI_CR_FCI_ADDR_MAP6);
ifxmips_w32(0x19c00000, PCI_CR_FCI_ADDR_MAP7);
ifxmips_w32(0x1ae00000, PCI_CR_FCI_ADDR_MAP11hg);
ifxmips_w32(0x0e000008, PCI_CR_BAR11MASK);
ifxmips_w32(calc_bar11mask(), PCI_CR_BAR11MASK);
ifxmips_w32(0, PCI_CR_PCI_ADDR_MAP11);
ifxmips_w32(0, PCI_CS_BASE_ADDR1);
#ifdef CONFIG_SWAP_IO_SPACE

View File

@ -27,6 +27,11 @@ define Image/Build/jffs2-64k
cat $(KDIR)/uImage.$(1) $(KDIR)/root.$(1) > $(BIN_DIR)/openwrt-$(BOARD)-$(1).image
endef
define Image/Build/jffs2-128k
dd if=$(KDIR)/uImage of=$(KDIR)/uImage.$(1) bs=128k conv=sync
cat $(KDIR)/uImage.$(1) $(KDIR)/root.$(1) > $(BIN_DIR)/openwrt-$(BOARD)-$(1).image
endef
define Image/Build
$(call Image/Build/$(1),$(1))
endef

View File

@ -1,7 +1,7 @@
Index: linux-2.6.30.8/drivers/serial/Kconfig
Index: linux-2.6.30.10/drivers/serial/Kconfig
===================================================================
--- linux-2.6.30.8.orig/drivers/serial/Kconfig 2009-09-24 17:28:02.000000000 +0200
+++ linux-2.6.30.8/drivers/serial/Kconfig 2009-10-19 21:31:32.000000000 +0200
--- linux-2.6.30.10.orig/drivers/serial/Kconfig 2009-12-04 07:00:07.000000000 +0100
+++ linux-2.6.30.10/drivers/serial/Kconfig 2010-03-18 12:24:20.000000000 +0100
@@ -1365,6 +1365,14 @@
help
Support for Console on the NWP serial ports.
@ -17,20 +17,20 @@ Index: linux-2.6.30.8/drivers/serial/Kconfig
config SERIAL_QE
tristate "Freescale QUICC Engine serial port support"
depends on QUICC_ENGINE
Index: linux-2.6.30.8/drivers/serial/Makefile
Index: linux-2.6.30.10/drivers/serial/Makefile
===================================================================
--- linux-2.6.30.8.orig/drivers/serial/Makefile 2009-09-24 17:28:02.000000000 +0200
+++ linux-2.6.30.8/drivers/serial/Makefile 2009-10-19 21:31:32.000000000 +0200
--- linux-2.6.30.10.orig/drivers/serial/Makefile 2009-12-04 07:00:07.000000000 +0100
+++ linux-2.6.30.10/drivers/serial/Makefile 2010-03-18 12:24:20.000000000 +0100
@@ -77,3 +77,4 @@
obj-$(CONFIG_SERIAL_KS8695) += serial_ks8695.o
obj-$(CONFIG_KGDB_SERIAL_CONSOLE) += kgdboc.o
obj-$(CONFIG_SERIAL_QE) += ucc_uart.o
+obj-$(CONFIG_SERIAL_IFXMIPS) += ifxmips_asc.o
Index: linux-2.6.30.8/drivers/serial/ifxmips_asc.c
Index: linux-2.6.30.10/drivers/serial/ifxmips_asc.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ linux-2.6.30.8/drivers/serial/ifxmips_asc.c 2009-10-19 21:41:27.000000000 +0200
@@ -0,0 +1,561 @@
+++ linux-2.6.30.10/drivers/serial/ifxmips_asc.c 2010-03-18 14:04:58.000000000 +0100
@@ -0,0 +1,555 @@
+/*
+ * Based on drivers/char/serial.c, by Linus Torvalds, Theodore Ts'o.
+ *
@ -258,7 +258,6 @@ Index: linux-2.6.30.8/drivers/serial/ifxmips_asc.c
+
+static int ifxmipsasc_startup(struct uart_port *port)
+{
+ unsigned long flags;
+ int retval;
+
+ port->uartclk = ifxmips_get_fpi_hz();
@ -271,8 +270,6 @@ Index: linux-2.6.30.8/drivers/serial/ifxmips_asc.c
+ wmb();
+ ifxmips_w32(ifxmips_r32(port->membase + IFXMIPS_ASC_CON) | ASCCON_M_8ASYNC | ASCCON_FEN | ASCCON_TOEN | ASCCON_ROEN, port->membase + IFXMIPS_ASC_CON);
+
+ local_irq_save(flags);
+
+ retval = request_irq(port->irq, ifxmipsasc_tx_int, IRQF_DISABLED, "asc_tx", port);
+ if (retval) {
+ printk(KERN_ERR "failed to request ifxmipsasc_tx_int\n");
@ -292,15 +289,12 @@ Index: linux-2.6.30.8/drivers/serial/ifxmips_asc.c
+ }
+
+ ifxmips_w32(ASC_IRNREN_RX_BUF | ASC_IRNREN_TX_BUF | ASC_IRNREN_ERR | ASC_IRNREN_TX, port->membase + IFXMIPS_ASC_IRNREN);
+
+ local_irq_restore(flags);
+ return 0;
+
+err2:
+ free_irq(port->irq + 2, port);
+err1:
+ free_irq(port->irq, port);
+ local_irq_restore(flags);
+ return retval;
+}
+

View File

@ -1,17 +1,17 @@
Index: linux-2.6.30.8/drivers/mtd/maps/Makefile
Index: linux-2.6.30.10/drivers/mtd/maps/Makefile
===================================================================
--- linux-2.6.30.8.orig/drivers/mtd/maps/Makefile 2009-09-24 17:28:02.000000000 +0200
+++ linux-2.6.30.8/drivers/mtd/maps/Makefile 2009-10-19 21:31:32.000000000 +0200
--- linux-2.6.30.10.orig/drivers/mtd/maps/Makefile 2010-03-18 14:27:04.000000000 +0100
+++ linux-2.6.30.10/drivers/mtd/maps/Makefile 2010-03-18 14:27:07.000000000 +0100
@@ -62,3 +62,4 @@
obj-$(CONFIG_MTD_BFIN_ASYNC) += bfin-async-flash.o
obj-$(CONFIG_MTD_RBTX4939) += rbtx4939-flash.o
obj-$(CONFIG_MTD_VMU) += vmu-flash.o
+obj-$(CONFIG_MTD_IFXMIPS) += ifxmips.o
Index: linux-2.6.30.8/drivers/mtd/maps/ifxmips.c
Index: linux-2.6.30.10/drivers/mtd/maps/ifxmips.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ linux-2.6.30.8/drivers/mtd/maps/ifxmips.c 2009-10-19 21:40:44.000000000 +0200
@@ -0,0 +1,277 @@
+++ linux-2.6.30.10/drivers/mtd/maps/ifxmips.c 2010-03-18 14:27:17.000000000 +0100
@@ -0,0 +1,281 @@
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
@ -116,11 +116,11 @@ Index: linux-2.6.30.8/drivers/mtd/maps/ifxmips.c
+ {
+ .name = "uboot_env",
+ .offset = 0x00020000,
+ .size = 0x00010000,
+ .size = 0x0,
+ },
+ {
+ .name = "kernel",
+ .offset = 0x00030000,
+ .offset = 0x0,
+ .size = 0x0,
+ },
+ {
@ -222,6 +222,10 @@ Index: linux-2.6.30.8/drivers/mtd/maps/ifxmips.c
+ rootfs_part = i;
+ }
+ } else {
+ /* if the flash is 64k sectors, the kernel will reside at 0xb0030000
+ if the flash is 128k sectors, the kernel will reside at 0xb0040000 */
+ ifxmips_partitions[1].size = ifxmips_mtd->erasesize;
+ ifxmips_partitions[2].offset = ifxmips_partitions[1].offset + ifxmips_mtd->erasesize;
+ parts = &ifxmips_partitions[0];
+ }
+
@ -232,8 +236,8 @@ Index: linux-2.6.30.8/drivers/mtd/maps/ifxmips.c
+ if (detect_squashfs_partition(parts[kernel_part].offset + uimage_size)) {
+ printk(KERN_INFO "ifxmips_mtd: found a squashfs following the uImage\n");
+ } else {
+ uimage_size &= ~0xffff;
+ uimage_size += 0x10000;
+ uimage_size &= ~(ifxmips_mtd->erasesize -1);
+ uimage_size += ifxmips_mtd->erasesize;
+ }
+
+ parts[kernel_part].size = uimage_size;

View File

@ -16,6 +16,8 @@ LINUX_VERSION:=2.6.32.8
include $(INCLUDE_DIR)/target.mk
DEFAULT_PACKAGES += wpad-mini kmod-mac80211-hwsim
define Target/Description
Build firmware images for MTI Malta CoreLV boards.
endef

View File

@ -11,7 +11,7 @@ BOARD:=rdc
BOARDNAME:=RDC 321x
FEATURES:=squashfs jffs2 pci usb pcmcia
CFLAGS:=-Os -pipe -march=i486 -funit-at-a-time
SUBTARGETS:=amit ar525w r8610 dir-450 sitecom bifferboard
SUBTARGETS:=ar525w r8610 sitecom bifferboard
LINUX_VERSION:=2.6.30.10

View File

@ -1,8 +0,0 @@
# CONFIG_MTD_PHYSMAP is not set
# CONFIG_MTD_R8610 is not set
CONFIG_MTD_RDC3210_ALLOW_JFFS2=y
CONFIG_MTD_RDC3210_BUSWIDTH=2
# CONFIG_MTD_RDC3210_FACTORY_PRESENT is not set
CONFIG_MTD_RDC3210_SIZE=0x400000
# CONFIG_MTD_RDC3210_STATIC_MAP is not set
CONFIG_MTD_RDC3210=y

View File

@ -1,8 +0,0 @@
CONFIG_CMDLINE="console=ttyS0,115200 rootfstype=squashfs,jffs2"
# CONFIG_MTD_PHYSMAP is not set
CONFIG_MTD_RDC3210_ALLOW_JFFS2=y
CONFIG_MTD_RDC3210_BUSWIDTH=2
# CONFIG_MTD_RDC3210_FACTORY_PRESENT is not set
CONFIG_MTD_RDC3210_SIZE=0x800000
# CONFIG_MTD_RDC3210_STATIC_MAP is not set
CONFIG_MTD_RDC3210=y

View File

@ -0,0 +1,36 @@
/*
* RDC321x boards
*
* Copyright (C) 2007-2009 OpenWrt.org
* Copyright (C) 2007 Florian Fainelli <florian@openwrt.org>
* Copyright (C) 2008-2009 Daniel Gimpelevich <daniel@gimpelevich.san-francisco.ca.us>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*
*/
#ifndef _RDC_BOARDS_H__
#define _RDC_BOARDS_H__
#include <linux/leds.h>
#include <linux/gpio_buttons.h>
struct rdc_platform_data {
struct gpio_led_platform_data led_data;
struct gpio_buttons_platform_data button_data;
};
#endif

View File

@ -1,5 +1,5 @@
#
# Makefile for the RDC321x specific parts of the kernel
#
obj-$(CONFIG_X86_RDC321X) := gpio.o platform.o pci.o reboot.o
obj-$(CONFIG_X86_RDC321X) := gpio.o platform.o pci.o reboot.o boards/sitecom.o boards/ar525w.o boards/bifferboard.o boards/r8610.o

View File

@ -0,0 +1,243 @@
/*
* ar525w RDC321x platform devices
*
* Copyright (C) 2007-2009 OpenWrt.org
* Copyright (C) 2007 Florian Fainelli <florian@openwrt.org>
* Copyright (C) 2008-2009 Daniel Gimpelevich <daniel@gimpelevich.san-francisco.ca.us>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*
*/
#include <linux/init.h>
#include <linux/mtd/physmap.h>
#include <linux/input.h>
#include <linux/vmalloc.h>
#include <linux/mtd/mtd.h>
#include <asm/rdc_boards.h>
struct image_header {
char magic[4]; /* ASICII: GMTK */
u32 checksum; /* CRC32 */
u32 version; /* x.x.x.x */
u32 kernelsz; /* The size of the kernel image */
u32 imagesz; /* The length of this image file ( kernel + romfs + this header) */
u32 pid; /* Product ID */
u32 fastcksum; /* Partial CRC32 on (First(256), medium(256), last(512)) */
u32 reserved;
};
static struct gpio_led ar525w_leds[] = {
{ .name = "rdc321x:dmz", .gpio = 1, .active_low = 1},
};
static struct gpio_button ar525w_btns[] = {
{
.gpio = 6,
.code = BTN_0,
.desc = "Reset",
.active_low = 1,
}
};
static u32 __initdata crctab[257] = {
0x00000000, 0x77073096, 0xee0e612c, 0x990951ba,
0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,
0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91,
0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec,
0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5,
0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940,
0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116,
0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f,
0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d,
0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a,
0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818,
0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457,
0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c,
0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb,
0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9,
0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086,
0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4,
0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad,
0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683,
0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe,
0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7,
0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252,
0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60,
0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79,
0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f,
0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04,
0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a,
0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21,
0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e,
0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45,
0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db,
0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0,
0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6,
0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf,
0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d,
0
};
static u32 __init crc32(u8 * buf, u32 len)
{
register int i;
u32 sum;
register u32 s0;
s0 = ~0;
for (i = 0; i < len; i++) {
s0 = (s0 >> 8) ^ crctab[(u8) (s0 & 0xFF) ^ buf[i]];
}
sum = ~s0;
return sum;
}
static int __init fixup_ar525w_header(struct mtd_info *master, struct image_header *header)
{
char *buffer;
int res;
u32 bufferlength = header->kernelsz + sizeof(struct image_header);
u32 len;
char crcbuf[0x400];
printk(KERN_INFO "Fixing up AR525W header, old image size: %u, new image size: %u\n",
header->imagesz, bufferlength);
buffer = vmalloc(bufferlength);
if (!buffer) {
printk(KERN_ERR "Can't allocate %u bytes\n", bufferlength);
return -ENOMEM;
}
res = master->read(master, 0x0, bufferlength, &len, buffer);
if (res || len != bufferlength)
goto out;
header = (struct image_header *) buffer;
header->imagesz = bufferlength;
header->checksum = 0;
header->fastcksum = 0;
memcpy(crcbuf, buffer, 0x100);
memcpy(crcbuf + 0x100, buffer + (bufferlength >> 1) - ((bufferlength & 0x6) >> 1), 0x100);
memcpy(crcbuf + 0x200, buffer + bufferlength - 0x200, 0x200);
header->fastcksum = crc32(crcbuf, sizeof(crcbuf));
header->checksum = crc32(buffer, bufferlength);
if (master->unlock)
master->unlock(master, 0, master->erasesize);
res = erase_write (master, 0, master->erasesize, buffer);
if (res)
printk(KERN_ERR "Can't rewrite image header\n");
out:
vfree(buffer);
return res;
}
static int __init parse_ar525w_partitions(struct mtd_info *master, struct mtd_partition **pparts, unsigned long plat_data)
{
struct image_header header;
int res;
size_t len;
struct mtd_partition *rdc_flash_parts;
struct rdc_platform_data *pdata = (struct rdc_platform_data *) plat_data;
if (master->size != 0x400000) //4MB
return -ENOSYS;
res = master->read(master, 0x0, sizeof(header), &len, (char *)&header);
if (res)
return res;
if (strncmp(header.magic, "GMTK", 4))
return -ENOSYS;
if (header.kernelsz > 0x400000 || header.kernelsz < master->erasesize) {
printk(KERN_ERR "AR525W image header found, but seems corrupt, kernel size %u\n", header.kernelsz);
return -EINVAL;
}
if (header.kernelsz + sizeof(header) != header.imagesz) {
res = fixup_ar525w_header(master, &header);
if (res)
return res;
}
rdc_flash_parts = kzalloc(sizeof(struct mtd_partition) * 3, GFP_KERNEL);
rdc_flash_parts[0].name = "firmware";
rdc_flash_parts[0].offset = 0x0;
rdc_flash_parts[0].size = 0x3E0000;
rdc_flash_parts[1].name = "rootfs";
rdc_flash_parts[1].offset = header.kernelsz + sizeof(header);
rdc_flash_parts[1].size = rdc_flash_parts[0].size - rdc_flash_parts[1].offset;
rdc_flash_parts[2].name = "bootloader";
rdc_flash_parts[2].offset = 0x3E0000;
rdc_flash_parts[2].size = 0x20000;
*pparts = rdc_flash_parts;
pdata->led_data.num_leds = ARRAY_SIZE(ar525w_leds);
pdata->led_data.leds = ar525w_leds;
pdata->button_data.nbuttons = ARRAY_SIZE(ar525w_btns);
pdata->button_data.buttons = ar525w_btns;
return 3;
}
static struct mtd_part_parser __initdata ar525w_parser = {
.owner = THIS_MODULE,
.parse_fn = parse_ar525w_partitions,
.name = "AR525W",
};
static int __init ar525w_setup(void)
{
return register_mtd_parser(&ar525w_parser);
}
arch_initcall(ar525w_setup);

View File

@ -0,0 +1,82 @@
/*
* Bifferboard RDC321x platform devices
*
* Copyright (C) 2010 bifferos@yahoo.co.uk
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*
*/
#include <linux/init.h>
#include <linux/mtd/physmap.h>
#include <linux/input.h>
#include <asm/rdc_boards.h>
static int __init parse_bifferboard_partitions(struct mtd_info *master, struct mtd_partition **pparts, unsigned long plat_data)
{
int res;
size_t len;
struct mtd_partition *rdc_flash_parts;
u32 kernel_len;
u16 tmp;
if (master->size == 0x100000)
kernel_len = master->size - 0x10000;
else {
res = master->read(master, 0x4000 + 1036, 2, &len, (char *) &tmp);
if (res)
return res;
kernel_len = tmp * master->erasesize;
}
rdc_flash_parts = kzalloc(sizeof(struct mtd_partition) * 4, GFP_KERNEL);
*pparts = rdc_flash_parts;
rdc_flash_parts[0].name = "biffboot";
rdc_flash_parts[0].offset = master->size - 0x10000;
rdc_flash_parts[0].size = 0x10000;
rdc_flash_parts[0].mask_flags = MTD_WRITEABLE;
rdc_flash_parts[1].name = "firmware";
rdc_flash_parts[1].offset = 0;
rdc_flash_parts[1].size = rdc_flash_parts[0].offset;
rdc_flash_parts[2].name = "kernel";
rdc_flash_parts[2].offset = 0x00000000;
rdc_flash_parts[2].size = kernel_len;
if (master->size == 0x100000)
return 2;
rdc_flash_parts[3].name = "rootfs";
rdc_flash_parts[3].offset = MTDPART_OFS_APPEND;
rdc_flash_parts[3].size = rdc_flash_parts[1].size - rdc_flash_parts[2].size;
return 4;
}
struct mtd_part_parser __initdata bifferboard_parser = {
.owner = THIS_MODULE,
.parse_fn = parse_bifferboard_partitions,
.name = "Bifferboard",
};
static int __init bifferboard_setup(void)
{
return register_mtd_parser(&bifferboard_parser);
}
arch_initcall(bifferboard_setup);

View File

@ -0,0 +1,65 @@
/*
* R8610 RDC321x platform devices
*
* Copyright (C) 2009, Florian Fainelli
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*
*/
#include <linux/init.h>
#include <linux/mtd/physmap.h>
#include <linux/input.h>
#include <asm/rdc_boards.h>
static int __init parse_r8610_partitions(struct mtd_info *master, struct mtd_partition **pparts, unsigned long plat_data)
{
struct mtd_partition *rdc_flash_parts;
rdc_flash_parts = kzalloc(sizeof(struct mtd_partition) * 4, GFP_KERNEL);
*pparts = rdc_flash_parts;
rdc_flash_parts[0].name = "kernel";
rdc_flash_parts[0].size = 0x001f0000;
rdc_flash_parts[0].offset = 0;
rdc_flash_parts[1].name = "config";
rdc_flash_parts[1].size = 0x10000;
rdc_flash_parts[1].offset = MTDPART_OFS_APPEND;
rdc_flash_parts[2].name = "rootfs";
rdc_flash_parts[2].size = 0x1E0000;
rdc_flash_parts[2].offset = MTDPART_OFS_APPEND;
rdc_flash_parts[3].name = "redboot";
rdc_flash_parts[3].size = 0x20000;
rdc_flash_parts[3].offset = MTDPART_OFS_APPEND;
rdc_flash_parts[3].mask_flags = MTD_WRITEABLE;
return 4;
}
struct mtd_part_parser __initdata r8610_parser = {
.owner = THIS_MODULE,
.parse_fn = parse_r8610_partitions,
.name = "R8610",
};
static int __init r8610_setup(void)
{
return register_mtd_parser(&r8610_parser);
}
arch_initcall(r8610_setup);

View File

@ -0,0 +1,111 @@
/*
* Sitecom RDC321x platform devices
*
* Copyright (C) 2007-2009 OpenWrt.org
* Copyright (C) 2007 Florian Fainelli <florian@openwrt.org>
* Copyright (C) 2008-2009 Daniel Gimpelevich <daniel@gimpelevich.san-francisco.ca.us>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*
*/
#include <linux/init.h>
#include <linux/mtd/physmap.h>
#include <linux/input.h>
#include <asm/rdc_boards.h>
struct image_header {
char magic[4];
u32 kernel_length;
u32 ramdisk_length;
char magic2[4];
u32 kernel_length2;
};
static struct gpio_led sitecom_leds[] = {
{ .name = "rdc321x:power", .gpio = 15, .active_low = 1},
{ .name = "rdc321x:usb0", .gpio = 0, .active_low = 1},
{ .name = "rdc321x:usb1", .gpio = 1, .active_low = 1},
};
static struct gpio_button sitecom_btns[] = {
{
.gpio = 6,
.code = BTN_0,
.desc = "Reset",
.active_low = 1,
}
};
static int __init parse_sitecom_partitions(struct mtd_info *master, struct mtd_partition **pparts, unsigned long plat_data)
{
struct image_header header;
int res;
size_t len;
struct mtd_partition *rdc_flash_parts;
struct rdc_platform_data *pdata = (struct rdc_platform_data *) plat_data;
if (master->size != 0x400000) //4MB
return -ENOSYS;
res = master->read(master, 0x8000, sizeof(header), &len, (char *)&header);
if (res)
return res;
if (strncmp(header.magic, "CSYS", 4) || strncmp(header.magic2, "WRRM", 4))
return -ENOSYS;
rdc_flash_parts = kzalloc(sizeof(struct mtd_partition) * 5, GFP_KERNEL);
rdc_flash_parts[0].name = "firmware";
rdc_flash_parts[0].offset = 0x8000;
rdc_flash_parts[0].size = 0x3F0000;
rdc_flash_parts[1].name = "config";
rdc_flash_parts[1].offset = 0;
rdc_flash_parts[1].size = 0x8000;
rdc_flash_parts[2].name = "kernel";
rdc_flash_parts[2].offset = 0x8014;
rdc_flash_parts[2].size = header.kernel_length;
rdc_flash_parts[3].name = "rootfs";
rdc_flash_parts[3].offset = 0x8014 + header.kernel_length;
rdc_flash_parts[3].size = 0x3F0000 - rdc_flash_parts[3].offset;
rdc_flash_parts[4].name = "bootloader";
rdc_flash_parts[4].offset = 0x3F0000;
rdc_flash_parts[4].size = 0x10000;
*pparts = rdc_flash_parts;
pdata->led_data.num_leds = ARRAY_SIZE(sitecom_leds);
pdata->led_data.leds = sitecom_leds;
pdata->button_data.nbuttons = ARRAY_SIZE(sitecom_btns);
pdata->button_data.buttons = sitecom_btns;
return 5;
}
struct mtd_part_parser __initdata sitecom_parser = {
.owner = THIS_MODULE,
.parse_fn = parse_sitecom_partitions,
.name = "Sitecom",
};
static int __init sitecom_setup(void)
{
return register_mtd_parser(&sitecom_parser);
}
arch_initcall(sitecom_setup);

View File

@ -23,267 +23,98 @@
*/
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/list.h>
#include <linux/device.h>
//#include <linux/kernel.h>
//#include <linux/list.h>
//#include <linux/device.h>
#include <linux/platform_device.h>
#include <linux/version.h>
#include <linux/leds.h>
#include <linux/gpio_buttons.h>
#include <linux/input.h>
//#include <linux/version.h>
//#include <linux/input.h>
#include <linux/mtd/map.h>
#include <linux/mtd/mtd.h>
#include <linux/mtd/physmap.h>
#include <linux/root_dev.h>
/* Flash */
#ifdef CONFIG_MTD_R8610
#define CONFIG_MTD_RDC3210 1
#elif defined CONFIG_MTD_RDC3210
static struct resource rdc_flash_resource[] = {
[0] = {
.start = (u32)-CONFIG_MTD_RDC3210_SIZE,
.end = (u32)-1,
.flags = IORESOURCE_MEM,
},
};
#include <asm/rdc_boards.h>
static struct platform_device rdc_flash_device = {
.name = "rdc321x-flash",
.id = -1,
.num_resources = ARRAY_SIZE(rdc_flash_resource),
.resource = rdc_flash_resource,
};
#else
static struct mtd_partition rdc_flash_parts[15];
static struct resource rdc_flash_resource = {
.end = (u32)-1,
.flags = IORESOURCE_MEM,
};
static struct physmap_flash_data rdc_flash_data = {
.parts = rdc_flash_parts,
};
static struct platform_device rdc_flash_device = {
.name = "physmap-flash",
.id = -1,
.resource = &rdc_flash_resource,
.num_resources = 1,
.dev.platform_data = &rdc_flash_data,
};
#endif
static struct rdc_platform_data rdcplat_data;
/* LEDS */
static struct gpio_led default_leds[] = {
{ .name = "rdc321x:dmz", .gpio = 1, .active_low = 1},
};
static struct gpio_led sitecom_leds[] = {
{ .name = "rdc321x:power", .gpio = 15, .active_low = 1},
{ .name = "rdc321x:usb0", .gpio = 0, .active_low = 1},
{ .name = "rdc321x:usb1", .gpio = 1, .active_low = 1},
};
static struct gpio_led_platform_data rdc321x_led_data = {
.num_leds = ARRAY_SIZE(default_leds),
.leds = default_leds,
};
static struct platform_device rdc321x_leds = {
.name = "leds-gpio",
.id = -1,
.dev = {
.platform_data = &rdc321x_led_data,
.platform_data = &rdcplat_data.led_data,
}
};
/* Button */
static struct gpio_button rdc321x_gpio_btn[] = {
{
.gpio = 6,
.code = BTN_0,
.desc = "Reset",
.active_low = 1,
}
};
static struct gpio_buttons_platform_data rdc321x_gpio_btn_data = {
.buttons = rdc321x_gpio_btn,
.nbuttons = ARRAY_SIZE(rdc321x_gpio_btn),
};
static struct platform_device rdc321x_button = {
static struct platform_device rdc321x_buttons = {
.name = "gpio-buttons",
.id = -1,
.dev = {
.platform_data = &rdc321x_gpio_btn_data,
.platform_data = &rdcplat_data.button_data,
}
};
static struct platform_device *rdc321x_devs[] = {
&rdc_flash_device,
static __initdata struct platform_device *rdc321x_devs[] = {
&rdc321x_leds,
&rdc321x_button,
&rdc321x_buttons,
};
static int probe_flash_start(struct map_info *the_map)
{
struct mtd_info *res;
const char *__initdata boards[] = {
"Sitecom",
"AR525W",
"Bifferboard",
"R8610",
0
};
the_map->virt = ioremap(the_map->phys, the_map->size);
if (the_map->virt == NULL)
return 1;
for (the_map->bankwidth = 32; the_map->bankwidth; the_map->bankwidth
>>= 1) {
res = do_map_probe("cfi_probe", the_map);
if (res == NULL)
res = do_map_probe("jedec_probe", the_map);
if (res != NULL)
break;
}
iounmap(the_map->virt);
if (res != NULL)
the_map->phys = (u32)-(s32)(the_map->size = res->size);
return res == NULL;
}
static struct map_info rdc_map_info = {
.name = "rdc_flash",
.size = 0x800000, //8MB
.phys = 0xFF800000, //(u32) -rdc_map_info.size;
.bankwidth = 2
};
static int __init rdc_board_setup(void)
{
#ifndef CONFIG_MTD_RDC3210
struct map_info rdc_map_info;
u32 the_header[8];
struct mtd_partition *partitions;
int count, res;
struct mtd_info *mtdinfo;
simple_map_init(&rdc_map_info);
while (true) {
rdc_map_info.virt = ioremap(rdc_map_info.phys, rdc_map_info.size);
if (rdc_map_info.virt == NULL)
continue;
mtdinfo = do_map_probe("cfi_probe", &rdc_map_info);
if (mtdinfo == NULL)
mtdinfo = do_map_probe("jedec_probe", &rdc_map_info);
if (mtdinfo != NULL)
break;
iounmap(rdc_map_info.virt);
if ((rdc_map_info.size >>= 1) < 0x100000) //1MB
panic("RDC321x: Could not find start of flash!");
rdc_map_info.phys = (u32) -rdc_map_info.size;
}
count = parse_mtd_partitions(mtdinfo, boards, &partitions, (unsigned long) &rdcplat_data);
if (count <= 0) {
panic("RDC321x: can't identify board type");
return -ENOSYS;
}
ROOT_DEV = 0;
rdc_map_info.name = rdc_flash_device.name;
rdc_map_info.size = 0x800000; //8MB
rdc_map_info.phys = (u32) -rdc_map_info.size;
rdc_map_info.bankwidth = 2;
rdc_map_info.set_vpp = NULL;
simple_map_init(&rdc_map_info);
while (probe_flash_start(&rdc_map_info)) {
if (rdc_map_info.size /= 2 < 0x100000) //1MB
panic("Could not find start of flash!");
rdc_map_info.phys = (u32) -rdc_map_info.size;
}
rdc_flash_resource.start = rdc_map_info.phys;
rdc_flash_data.width = rdc_map_info.bankwidth;
rdc_map_info.virt = ioremap_nocache(rdc_map_info.phys, 0x10);
if (rdc_map_info.virt == NULL)
panic("Could not ioremap to read device magic!");
the_header[0] = ((u32 *)rdc_map_info.virt)[0];
the_header[1] = ((u32 *)rdc_map_info.virt)[1];
the_header[2] = ((u32 *)rdc_map_info.virt)[2];
the_header[3] = ((u32 *)rdc_map_info.virt)[3];
iounmap(rdc_map_info.virt);
rdc_map_info.virt = ioremap_nocache(rdc_map_info.phys + 0x8000, 0x10);
if (rdc_map_info.virt == NULL)
panic("Could not ioremap to read device magic!");
the_header[4] = ((u32 *)rdc_map_info.virt)[0];
the_header[5] = ((u32 *)rdc_map_info.virt)[1];
the_header[6] = ((u32 *)rdc_map_info.virt)[2];
the_header[7] = ((u32 *)rdc_map_info.virt)[3];
iounmap(rdc_map_info.virt);
if (!memcmp(the_header, "GMTK", 4)) { /* Gemtek */
/* TODO */
} else if (!memcmp(the_header + 4, "CSYS", 4)) { /* Sitecom */
rdc_flash_parts[0].name = "system";
rdc_flash_parts[0].offset = 0;
rdc_flash_parts[0].size = rdc_map_info.size - 0x10000;
rdc_flash_parts[1].name = "config";
rdc_flash_parts[1].offset = 0;
rdc_flash_parts[1].size = 0x8000;
rdc_flash_parts[2].name = "magic";
rdc_flash_parts[2].offset = 0x8000;
rdc_flash_parts[2].size = 0x14;
rdc_flash_parts[3].name = "kernel";
rdc_flash_parts[3].offset = 0x8014;
rdc_flash_parts[3].size = the_header[5];
rdc_flash_parts[4].name = "rootfs";
rdc_flash_parts[4].offset = 0x8014 + the_header[5];
rdc_flash_parts[4].size = rdc_flash_parts[0].size - rdc_flash_parts[4].offset;
rdc_flash_parts[5].name = "bootloader";
rdc_flash_parts[5].offset = rdc_flash_parts[0].size;
rdc_flash_parts[5].size = 0x10000;
rdc_flash_data.nr_parts = 6;
res = add_mtd_partitions(mtdinfo, partitions, count);
if (res)
return res;
rdc321x_led_data.num_leds = ARRAY_SIZE(sitecom_leds);
rdc321x_led_data.leds = sitecom_leds;
} else if (!memcmp(((u8 *)the_header) + 14, "Li", 2)) { /* AMIT */
rdc_flash_parts[0].name = "kernel_parthdr";
rdc_flash_parts[0].offset = 0;
rdc_flash_parts[0].size = 0x10;
rdc_flash_parts[1].name = "kernel";
rdc_flash_parts[1].offset = 0x10;
rdc_flash_parts[1].size = 0xffff0;
rdc_flash_parts[2].name = "rootfs_parthdr";
rdc_flash_parts[2].offset = 0x100000;
rdc_flash_parts[2].size = 0x10;
rdc_flash_parts[3].name = "rootfs";
rdc_flash_parts[3].offset = 0x100010;
rdc_flash_parts[3].size = rdc_map_info.size - 0x160010;
rdc_flash_parts[4].name = "config_parthdr";
rdc_flash_parts[4].offset = rdc_map_info.size - 0x60000;
rdc_flash_parts[4].size = 0x10;
rdc_flash_parts[5].name = "config";
rdc_flash_parts[5].offset = rdc_map_info.size - 0x5fff0;
rdc_flash_parts[5].size = 0xfff0;
rdc_flash_parts[6].name = "recoveryfs_parthdr";
rdc_flash_parts[6].offset = rdc_map_info.size - 0x50000;
rdc_flash_parts[6].size = 0x10;
rdc_flash_parts[7].name = "recoveryfs";
rdc_flash_parts[7].offset = rdc_map_info.size - 0x4fff0;
rdc_flash_parts[7].size = 0x3fff0;
rdc_flash_parts[8].name = "recovery_parthdr";
rdc_flash_parts[8].offset = rdc_map_info.size - 0x10000;
rdc_flash_parts[8].size = 0x10;
rdc_flash_parts[9].name = "recovery";
rdc_flash_parts[9].offset = rdc_map_info.size - 0xfff0;
rdc_flash_parts[9].size = 0x7ff0;
rdc_flash_parts[10].name = "productinfo_parthdr";
rdc_flash_parts[10].offset = rdc_map_info.size - 0x8000;
rdc_flash_parts[10].size = 0x10;
rdc_flash_parts[11].name = "productinfo";
rdc_flash_parts[11].offset = rdc_map_info.size - 0x7ff0;
rdc_flash_parts[11].size = 0x1ff0;
rdc_flash_parts[12].name = "bootloader_parthdr";
rdc_flash_parts[12].offset = rdc_map_info.size - 0x6000;
rdc_flash_parts[12].size = 0x10;
rdc_flash_parts[13].name = "bootloader";
rdc_flash_parts[13].offset = rdc_map_info.size - 0x5ff0;
rdc_flash_parts[13].size = 0x5ff0;
rdc_flash_parts[14].name = "everything";
rdc_flash_parts[14].offset = 0;
rdc_flash_parts[14].size = rdc_map_info.size;
rdc_flash_data.nr_parts = 15;
} else { /* ZyXEL */
rdc_flash_parts[0].name = "kernel";
rdc_flash_parts[0].offset = 0;
rdc_flash_parts[0].size = 0x100000;
rdc_flash_parts[1].name = "rootfs";
rdc_flash_parts[1].offset = 0x100000;
rdc_flash_parts[1].size = rdc_map_info.size - 0x140000;
rdc_flash_parts[2].name = "linux";
rdc_flash_parts[2].offset = 0;
rdc_flash_parts[2].size = rdc_map_info.size - 0x40000;
rdc_flash_parts[3].name = "config";
rdc_flash_parts[3].offset = rdc_map_info.size - 0x40000;
rdc_flash_parts[3].size = 0x10000;
rdc_flash_parts[4].name = "productinfo";
rdc_flash_parts[4].offset = rdc_map_info.size - 0x30000;
rdc_flash_parts[4].size = 0x10000;
rdc_flash_parts[5].name = "bootloader";
rdc_flash_parts[5].offset = rdc_map_info.size - 0x20000;
rdc_flash_parts[5].size = 0x20000;
rdc_flash_data.nr_parts = 6;
}
#endif
return platform_add_devices(rdc321x_devs, ARRAY_SIZE(rdc321x_devs));
}
#ifdef CONFIG_MTD_RDC3210
arch_initcall(rdc_board_setup);
#else
late_initcall(rdc_board_setup);
#endif

View File

@ -243,7 +243,6 @@ static int __init rdc321x_wdt_probe(struct platform_device *pdev)
return err;
}
panic_on_unrecovered_nmi = 1;
dev_info(&pdev->dev, "watchdog init success\n");
return 0;

View File

@ -26,62 +26,20 @@ define Image/Prepare/squashfs
endef
define Image/Build/ar525w
touch $(BIN_DIR)/openwrt-$(BOARD)-$(1)-$(2).img
touch $(BIN_DIR)/openwrt-$(BOARD)-$(1)-$(2)-web.img
dd if=$(KDIR)/root.$(1) of=$(KDIR)/root.tmp $(call trxalign/$(1)) conv=sync
mv $(KDIR)/root.tmp $(KDIR)/root.$(1)
$(STAGING_DIR_HOST)/bin/airlink -b 1 -j $(shell bash -c 'echo $$[$(3)]') $(KDIR)/bzImage $(KDIR)/root.$(1) $(BIN_DIR)/openwrt-$(BOARD)-$(1)-$(2).img
$(STAGING_DIR_HOST)/bin/airlink -e -b 1 -j $(shell bash -c 'echo $$[$(3)]') $(KDIR)/bzImage $(KDIR)/root.$(1) $(BIN_DIR)/openwrt-$(BOARD)-$(1)-$(2)-web.img
endef
define Image/Postprocess/sitecom/squashfs
dd if=/dev/zero of=$(KDIR)/tmp2.img count=1 bs=32k #32k config data a start of flash
cat $(KDIR)/tmp.img >> $(KDIR)/tmp2.img
$(call prepare_generic_squashfs,$(KDIR)/tmp2.img)
dd if=$(KDIR)/tmp2.img of=$(KDIR)/tmp.img bs=32k skip=1
cp $(KDIR)/bzImage $(KDIR)/bzImage.tmp
$(SCRIPT_DIR)/pad_image $(1) $(KDIR)/bzImage.tmp $(KDIR)/root.$(1) 32
$(STAGING_DIR_HOST)/bin/airlink -b 1 $(KDIR)/bzImage.tmp $(KDIR)/root.$(1) $(BIN_DIR)/openwrt-$(BOARD)-$(1)-$(2).img
$(STAGING_DIR_HOST)/bin/airlink -e -b 1 $(KDIR)/bzImage.tmp $(KDIR)/root.$(1) $(BIN_DIR)/openwrt-$(BOARD)-$(1)-$(2)-web.img
endef
define Image/Build/sitecom
$(TOPDIR)/target/linux/rdc/image/mkimg_sitecom.pl $(KDIR)/bzImage > $(KDIR)/tmp.img
cp $(KDIR)/bzImage $(KDIR)/bzImage.tmp
#32k config data + 20 bytes header + 2 bytes checksum after kernel image
$(SCRIPT_DIR)/pad_image $(1) $(KDIR)/bzImage.tmp $(KDIR)/root.$(1) 32790
$(TOPDIR)/target/linux/rdc/image/mkimg_sitecom.pl $(KDIR)/bzImage.tmp > $(KDIR)/tmp.img
cat $(KDIR)/root.$(1) >> $(KDIR)/tmp.img
$(call Image/Postprocess/sitecom/$(1))
cp $(KDIR)/tmp.img $(BIN_DIR)/openwrt-$(BOARD)-$(1)-$(2).img
endef
define Image/Build/dir450
touch $(BIN_DIR)/openwrt-$(BOARD)-$(1)-$(2).img
dd if=$(KDIR)/root.$(1) of=$(KDIR)/root.tmp $(call trxalign/$(1)) conv=sync
mv $(KDIR)/root.tmp $(KDIR)/root.$(1)
$(CP) $(KDIR)/root.$(1) $(BIN_DIR)/onlyrootfs-$(BOARD)-$(1)-$(2).img
endef
define Image/Build/g570s
$(call Image/Prepare/$(1))
mv $(KDIR)/root.$(1) $(KDIR)/root.tmp
dd of=$(KDIR)/root.$(1) if=$(KDIR)/root.tmp $(call trxalign/$(1)) conv=sync
$(CP) $(KDIR)/bzImage $(BIN_DIR)/openwrt-tftp-$(BOARD)-$(1)-$(2).img
dd of=$(BIN_DIR)/openwrt-tftp-$(BOARD)-$(1)-$(2).img if=/dev/null bs=1024 seek=1024
cat $(KDIR)/root.$(1) >> $(BIN_DIR)/openwrt-tftp-$(BOARD)-$(1)-$(2).img
if [ ! -x $(STAGING_DIR_HOST)/bin/zyxel_combine ]; then echo "#ERR Please copy the ZyXEL \"combine\" tool as $(STAGING_DIR_HOST)/bin/zyxel_combine to build."; fi
sh -c "mkdir $(KDIR)/zyxel.tmp && cd $(KDIR)/zyxel.tmp && mv ../root.tmp initrd.bin && cp ../bzImage kernel.bin && $(STAGING_DIR_HOST)/bin/zyxel_combine -mcf kernel.bin initrd.bin && mv image $(BIN_DIR)/openwrt-$(BOARD)-$(1)-$(2).rmt" || :
$(RM) -r $(KDIR)/zyxel.tmp
endef
define Image/Prepare/amit/squashfs
echo -n "0123456789abcdef" > $(KDIR)/root.tmp
cat $(KDIR)/root.squashfs >> $(KDIR)/root.tmp
dd if=$(KDIR)/root.tmp of=$(KDIR)/root2.tmp bs=64k conv=sync
dd if=$(KDIR)/root2.tmp of=$(KDIR)/root.squashfs bs=1 skip=16
$(RM) $(KDIR)/root.tmp $(KDIR)/root2.tmp
$(call add_jffs2_mark,$(KDIR)/root.squashfs)
endef
define Image/Build/amit
$(call Image/Prepare/amit/$(1))
if [ ! -x $(STAGING_DIR_HOST)/bin/amit_makebin ]; then echo "#ERR Please copy the AMIT \"makebin\" tool from http://mgb111.pradnik.net/ as $(STAGING_DIR_HOST)/bin/amit_makebin to build."; fi
sh -c "mkdir -p $(KDIR)/amit.tmp/linux_src/arch/i386/boot $(KDIR)/amit.tmp/rom_disk && cd $(KDIR)/amit.tmp && ln -s ../../root.$(1) rom_disk/fs.img && ln -s ../../../../../bzImage linux_src/arch/i386/boot && $(STAGING_DIR_HOST)/bin/amit_makebin && mv upgrade.img $(BIN_DIR)/openwrt-$(BOARD)-$(1)-anas350.bin" || :
$(RM) -r $(KDIR)/amit.tmp
$(STAGING_DIR_HOST)/bin/makeamitbin -o $(BIN_DIR)/openwrt-$(BOARD)-$(1)-ar360w3g.bin -1 ALK_ATG001 -2 Atropos linux3g $(KDIR)/bzImage ramdisk3g $(KDIR)/root.$(1)
rm $(KDIR)/tmp.img $(KDIR)/bzImage.tmp
endef
define Image/Build/bifferboard

View File

@ -1,17 +1,11 @@
#!/usr/bin/perl
$bzimgsize = -s @ARGV[0];
$padding = 4 - ($bzimgsize + 2) % 4;
if ($padding == 4) {
$padding = 0; }
open (bzimg, @ARGV[0]);
while (<bzimg>) { $i .= $_; }
$i .= "\0"x$padding;
$i .= pack "v", -(unpack "%v*", $i);
print "CSYS";
print pack("V", length($i));
print pack("V", 0);
#-s @ARGV[1]
print "WRRM";
print pack("V", length($i));
print $i;

View File

@ -0,0 +1,28 @@
Index: linux-2.6.30.10/drivers/mtd/mtdblock.c
===================================================================
--- linux-2.6.30.10.orig/drivers/mtd/mtdblock.c 2010-03-19 00:17:37.000000000 +0100
+++ linux-2.6.30.10/drivers/mtd/mtdblock.c 2010-03-19 00:17:54.000000000 +0100
@@ -45,7 +45,7 @@
wake_up(wait_q);
}
-static int erase_write (struct mtd_info *mtd, unsigned long pos,
+int erase_write (struct mtd_info *mtd, unsigned long pos,
int len, const char *buf)
{
struct erase_info erase;
Index: linux-2.6.30.10/include/linux/mtd/mtd.h
===================================================================
--- linux-2.6.30.10.orig/include/linux/mtd/mtd.h 2010-03-19 00:17:42.000000000 +0100
+++ linux-2.6.30.10/include/linux/mtd/mtd.h 2010-03-19 00:21:22.000000000 +0100
@@ -319,6 +319,10 @@
int default_mtd_readv(struct mtd_info *mtd, struct kvec *vecs,
unsigned long count, loff_t from, size_t *retlen);
+int erase_write (struct mtd_info *mtd, unsigned long pos,
+ int len, const char *buf);
+
+
#ifdef CONFIG_MTD_PARTITIONS
void mtd_erase_callback(struct erase_info *instr);
#else

View File

@ -1,3 +0,0 @@
CONFIG_MTD_PHYSMAP=y
# CONFIG_MTD_R8610 is not set
# CONFIG_MTD_RDC3210 is not set

View File

@ -193,6 +193,8 @@ CONFIG_ISA=y
# CONFIG_IT87_WDT is not set
# CONFIG_ITCO_WDT is not set
CONFIG_KALLSYMS=y
CONFIG_KERNEL_GZIP=y
# CONFIG_KERNEL_LZMA is not set
CONFIG_KEXEC=y
CONFIG_KEYBOARD_ATKBD=y
# CONFIG_KEYBOARD_LKKBD is not set
@ -311,7 +313,6 @@ CONFIG_RTC=y
# CONFIG_SC520_WDT is not set
# CONFIG_SCHED_HRTICK is not set
CONFIG_SCHED_OMIT_FRAME_POINTER=y
# CONFIG_SCSI_LOWLEVEL is not set
CONFIG_SCSI=y
# CONFIG_SCx200_GPIO is not set
CONFIG_SCx200HR_TIMER=y

View File

@ -380,7 +380,6 @@ CONFIG_RWSEM_XCHGADD_ALGORITHM=y
# CONFIG_SCHED_MC is not set
CONFIG_SCHED_OMIT_FRAME_POINTER=y
# CONFIG_SCHED_SMT is not set
# CONFIG_SCSI_LOWLEVEL is not set
CONFIG_SCSI=y
# CONFIG_SCx200_GPIO is not set
CONFIG_SCx200HR_TIMER=y

View File

@ -430,7 +430,6 @@ CONFIG_SCHED_DEBUG=y
# CONFIG_SCHED_HRTICK is not set
CONFIG_SCHED_OMIT_FRAME_POINTER=y
CONFIG_SCHEDSTATS=y
# CONFIG_SCSI_LOWLEVEL is not set
CONFIG_SCSI=y
# CONFIG_SCx200 is not set
# CONFIG_SDIO_UART is not set

View File

@ -101,6 +101,8 @@
#define JZ_MMC_CLK_RATE 24000000
#define JZ4740_MMC_MAX_TIMEOUT 10000000
struct jz4740_mmc_host {
struct mmc_host *mmc;
struct platform_device *pdev;
@ -212,11 +214,11 @@ static void jz4740_mmc_write_data(struct jz4740_mmc_host *host, struct mmc_data
j = i >> 3;
i = i & 0x7;
while (j) {
timeout = 100000;
timeout = JZ4740_MMC_MAX_TIMEOUT;
do {
status = readw(host->base + JZ_REG_MMC_IREG);
} while (!(status & JZ_MMC_IRQ_TXFIFO_WR_REQ) && --timeout);
if (timeout == 0)
if (unlikely(timeout == 0))
goto err_timeout;
writew(JZ_MMC_IRQ_TXFIFO_WR_REQ, host->base + JZ_REG_MMC_IREG);
@ -233,11 +235,11 @@ static void jz4740_mmc_write_data(struct jz4740_mmc_host *host, struct mmc_data
--j;
}
if (i) {
timeout = 100000;
timeout = JZ4740_MMC_MAX_TIMEOUT;
do {
status = readw(host->base + JZ_REG_MMC_IREG);
} while (!(status & JZ_MMC_IRQ_TXFIFO_WR_REQ) && --timeout);
if (timeout == 0)
if (unlikely(timeout == 0))
goto err_timeout;
writew(JZ_MMC_IRQ_TXFIFO_WR_REQ, host->base + JZ_REG_MMC_IREG);
@ -256,11 +258,12 @@ static void jz4740_mmc_write_data(struct jz4740_mmc_host *host, struct mmc_data
goto err;
writew(JZ_MMC_IRQ_TXFIFO_WR_REQ, host->base + JZ_REG_MMC_IREG);
timeout = 100000;
timeout = JZ4740_MMC_MAX_TIMEOUT;
do {
status = readl(host->base + JZ_REG_MMC_STATUS);
} while ((status & JZ_MMC_STATUS_DATA_TRAN_DONE) == 0 && --timeout);
if (timeout == 0)
if (unlikely(timeout == 0))
goto err_timeout;
writew(JZ_MMC_IRQ_DATA_TRAN_DONE, host->base + JZ_REG_MMC_IREG);
@ -312,7 +315,7 @@ static void jz4740_mmc_read_data(struct jz4740_mmc_host *host, struct mmc_data *
j = i >> 5;
i = i & 0x1f;
while (j) {
timeout = 100000;
timeout = JZ4740_MMC_MAX_TIMEOUT;
do {
status = readw(host->base + JZ_REG_MMC_IREG);
} while (!(status & JZ_MMC_IRQ_RXFIFO_RD_REQ) && --timeout);
@ -336,7 +339,7 @@ static void jz4740_mmc_read_data(struct jz4740_mmc_host *host, struct mmc_data *
}
while (i >= 4) {
timeout = 100000;
timeout = JZ4740_MMC_MAX_TIMEOUT;
do {
status = readl(host->base + JZ_REG_MMC_STATUS);
} while ((status & JZ_MMC_STATUS_DATA_FIFO_EMPTY) && --timeout);
@ -416,6 +419,7 @@ static irqreturn_t jz_mmc_irq(int irq, void *devid)
writew(tmp & ~irq_reg, host->base + JZ_REG_MMC_IREG);
}
if (irq_reg & JZ_MMC_IRQ_SDIO) {
writew(JZ_MMC_IRQ_SDIO, host->base + JZ_REG_MMC_IREG);
mmc_signal_sdio_irq(host->mmc);
@ -466,14 +470,17 @@ handled:
static int jz4740_mmc_set_clock_rate(struct jz4740_mmc_host *host, int rate) {
int div = 0;
int real_rate = host->max_clock;
jz4740_mmc_clock_disable(host);
int real_rate;
while ((real_rate >> 1) >= rate && div < 7) {
jz4740_mmc_clock_disable(host);
clk_set_rate(host->clk, JZ_MMC_CLK_RATE);
real_rate = clk_get_rate(host->clk);
while (real_rate > rate && div < 7) {
++div;
real_rate >>= 1;
}
clk_set_rate(host->clk, JZ_MMC_CLK_RATE);
writew(div, host->base + JZ_REG_MMC_CLKRT);
return real_rate;
@ -543,7 +550,7 @@ static void jz4740_mmc_send_command(struct jz4740_mmc_host *host, struct mmc_com
host->waiting = 1;
jz4740_mmc_clock_enable(host, 1);
mod_timer(&host->timeout_timer, 4*HZ);
mod_timer(&host->timeout_timer, jiffies + 5*HZ);
}
static void jz4740_mmc_cmd_done(struct jz4740_mmc_host *host)
@ -551,8 +558,7 @@ static void jz4740_mmc_cmd_done(struct jz4740_mmc_host *host)
uint32_t status;
struct mmc_command *cmd = host->req->cmd;
struct mmc_request *req = host->req;
unsigned int timeout = 100000;
status = readl(host->base + JZ_REG_MMC_STATUS);
unsigned int timeout = JZ4740_MMC_MAX_TIMEOUT;
if (cmd->flags & MMC_RSP_PRESENT)
jz4740_mmc_read_response(host, cmd);
@ -567,12 +573,12 @@ static void jz4740_mmc_cmd_done(struct jz4740_mmc_host *host)
if (req->stop) {
jz4740_mmc_send_command(host, req->stop);
do {
status = readl(host->base + JZ_REG_MMC_STATUS);
} while ((status & JZ_MMC_STATUS_PRG_DONE) == 0 && --timeout);
status = readw(host->base + JZ_REG_MMC_IREG);
} while ((status & JZ_MMC_IRQ_PRG_DONE) == 0 && --timeout);
writew(JZ_MMC_IRQ_PRG_DONE, host->base + JZ_REG_MMC_IREG);
}
if (timeout == 0)
if (unlikely(timeout == 0))
req->stop->error = -ETIMEDOUT;
jz4740_mmc_request_done(host);

View File

@ -29,7 +29,7 @@ all: compile
$(BIN_DIR)/$(SDK_NAME).tar.bz2: clean
mkdir -p $(SDK_BUILD_DIR)/dl $(SDK_BUILD_DIR)/package
$(CP) $(INCLUDE_DIR) $(SCRIPT_DIR) $(TOPDIR)/docs $(SDK_BUILD_DIR)/
$(TAR) -cf - -C $(TOPDIR) $(foreach exclude,$(EXCLUDE_DIRS),--exclude="$(exclude)") --exclude="staging_dir/$(ARCH)" staging_dir/host staging_dir/target-$(ARCH)_$(LIBC)-$(LIBCV) staging_dir/toolchain-$(ARCH)_gcc-$(GCCV)_$(LIBC)-$(LIBCV) | \
$(TAR) -cf - -C $(TOPDIR) $(foreach exclude,$(EXCLUDE_DIRS),--exclude="$(exclude)") --exclude="staging_dir/$(ARCH)" staging_dir/host staging_dir/target-$(ARCH)$(ARCH_SUFFIX)_$(LIBC)-$(LIBCV) staging_dir/toolchain-$(ARCH)$(ARCH_SUFFIX)_gcc-$(GCCV)_$(LIBC)-$(LIBCV) | \
$(TAR) -xf - -C $(SDK_BUILD_DIR)
mkdir -p $(SDK_BUILD_DIR)/target/linux
$(CP) $(GENERIC_PLATFORM_DIR) $(PLATFORM_DIR) $(SDK_BUILD_DIR)/target/linux/

View File

@ -110,7 +110,7 @@ int generate_image(char *kname, char *fsname, char *fname, int EHDR)
uchar *bk, *bs;
int fkd, ffd, fsd;
fkd = open(kname, O_RDONLY);
ffd = creat(fname, 0x644);
ffd = creat(fname, 0644);
if ((fkd < 0) || (ffd < 0))
return -1;
if (fsname) {