diff --git a/include/download.mk b/include/download.mk index e0d743a4d..2d3f35fee 100644 --- a/include/download.mk +++ b/include/download.mk @@ -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)/ && \ diff --git a/package/br2684ctl/files/br2684ctl b/package/br2684ctl/files/br2684ctl index 739baabdd..cff667014 100755 --- a/package/br2684ctl/files/br2684ctl +++ b/package/br2684ctl/files/br2684ctl @@ -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() { diff --git a/package/compcache/Makefile b/package/compcache/Makefile index 98a1cadf5..2fec28952 100644 --- a/package/compcache/Makefile +++ b/package/compcache/Makefile @@ -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 diff --git a/package/compcache/files/compcache.init b/package/compcache/files/compcache.init index b9406d108..ec377ffaa 100644 --- a/package/compcache/files/compcache.init +++ b/package/compcache/files/compcache.init @@ -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 } diff --git a/package/compcache/patches/000-provide_lzo_kmod.patch b/package/compcache/patches/000-provide_lzo_kmod.patch index 1ad4fb63a..369bc1feb 100644 --- a/package/compcache/patches/000-provide_lzo_kmod.patch +++ b/package/compcache/patches/000-provide_lzo_kmod.patch @@ -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 #include #include -#include - #include - #include #include -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 + #include + #include + #include - #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 + @@ -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 + diff --git a/package/compcache/patches/100-use_register_width.patch b/package/compcache/patches/100-use_register_width.patch deleted file mode 100644 index 6200d56fd..000000000 --- a/package/compcache/patches/100-use_register_width.patch +++ /dev/null @@ -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; - } - diff --git a/package/compcache/patches/200-av_compress_ratio.patch b/package/compcache/patches/200-av_compress_ratio.patch deleted file mode 100644 index 82a1ecce8..000000000 --- a/package/compcache/patches/200-av_compress_ratio.patch +++ /dev/null @@ -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, diff --git a/package/dnsmasq/files/dnsmasq.init b/package/dnsmasq/files/dnsmasq.init index d796f2269..1b6dee426 100644 --- a/package/dnsmasq/files/dnsmasq.init +++ b/package/dnsmasq/files/dnsmasq.init @@ -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}" diff --git a/package/firewall/files/firewall.config b/package/firewall/files/firewall.config index 50a92f71e..b4aa4595d 100644 --- a/package/firewall/files/firewall.config +++ b/package/firewall/files/firewall.config @@ -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 diff --git a/package/hostap-driver/Makefile b/package/hostap-driver/Makefile index 52167c1f0..f78d7877d 100644 --- a/package/hostap-driver/Makefile +++ b/package/hostap-driver/Makefile @@ -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 diff --git a/package/ifxmips-dsl-api/Config.in b/package/ifxmips-dsl-api/Config.in index a1c3cd4f0..277d96ebf 100644 --- a/package/ifxmips-dsl-api/Config.in +++ b/package/ifxmips-dsl-api/Config.in @@ -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. diff --git a/package/ifxmips-dsl-api/Makefile b/package/ifxmips-dsl-api/Makefile index 992c241e1..fdb07214b 100644 --- a/package/ifxmips-dsl-api/Makefile +++ b/package/ifxmips-dsl-api/Makefile @@ -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/ diff --git a/package/ifxmips-dsl-api/patches/200-mei_compat.patch b/package/ifxmips-dsl-api/patches/200-mei_compat.patch index ae2d59350..58a1081cc 100644 --- a/package/ifxmips-dsl-api/patches/200-mei_compat.patch +++ b/package/ifxmips-dsl-api/patches/200-mei_compat.patch @@ -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 #include #include +#include ++#include #include #include -#include @@ -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); diff --git a/package/ifxmips-dsl-api/patches/400-debug-output.patch b/package/ifxmips-dsl-api/patches/400-debug-output.patch new file mode 100644 index 000000000..d3b05b1b2 --- /dev/null +++ b/package/ifxmips-dsl-api/patches/400-debug-output.patch @@ -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; + } + diff --git a/package/kernel/modules/block.mk b/package/kernel/modules/block.mk index 92b9e6390..db4624284 100644 --- a/package/kernel/modules/block.mk +++ b/package/kernel/modules/block.mk @@ -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 - FILES+=$(LINUX_DIR)/drivers/ide/ide-generic.$(LINUX_KMOD_SUFFIX) - AUTOLOAD+=$(call AutoLoad,30,ide-generic,1) + 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 - FILES:=$(LINUX_DIR)/drivers/scsi/mvsas.$(LINUX_KMOD_SUFFIX) + 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 diff --git a/package/kernel/modules/crypto.mk b/package/kernel/modules/crypto.mk index a068964c3..0e161fea0 100644 --- a/package/kernel/modules/crypto.mk +++ b/package/kernel/modules/crypto.mk @@ -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)) diff --git a/package/kernel/modules/fs.mk b/package/kernel/modules/fs.mk index 0075a2063..f497292d2 100644 --- a/package/kernel/modules/fs.mk +++ b/package/kernel/modules/fs.mk @@ -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) diff --git a/package/kernel/modules/hwmon.mk b/package/kernel/modules/hwmon.mk index d50fd3ea5..2219d38fa 100644 --- a/package/kernel/modules/hwmon.mk +++ b/package/kernel/modules/hwmon.mk @@ -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 diff --git a/package/kernel/modules/netdevices.mk b/package/kernel/modules/netdevices.mk index c15ce0fad..e2a00811c 100644 --- a/package/kernel/modules/netdevices.mk +++ b/package/kernel/modules/netdevices.mk @@ -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 diff --git a/package/kernel/modules/netfilter.mk b/package/kernel/modules/netfilter.mk index c8f8b1381..0b8cb21a9 100644 --- a/package/kernel/modules/netfilter.mk +++ b/package/kernel/modules/netfilter.mk @@ -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)) diff --git a/package/kernel/modules/netsupport.mk b/package/kernel/modules/netsupport.mk index 16a8378ad..53e218d26 100644 --- a/package/kernel/modules/netsupport.mk +++ b/package/kernel/modules/netsupport.mk @@ -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 diff --git a/package/kernel/modules/sound.mk b/package/kernel/modules/sound.mk index e4a4c73cf..46bc6853a 100644 --- a/package/kernel/modules/sound.mk +++ b/package/kernel/modules/sound.mk @@ -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)) diff --git a/package/kernel/modules/usb.mk b/package/kernel/modules/usb.mk index 7ad447c72..322c62398 100644 --- a/package/kernel/modules/usb.mk +++ b/package/kernel/modules/usb.mk @@ -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) diff --git a/package/kernel/modules/video.mk b/package/kernel/modules/video.mk index 4308a2a19..c0ab5d15a 100644 --- a/package/kernel/modules/video.mk +++ b/package/kernel/modules/video.mk @@ -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 diff --git a/package/madwifi/Makefile b/package/madwifi/Makefile index 3bd60f17d..4c8415a6b 100644 --- a/package/madwifi/Makefile +++ b/package/madwifi/Makefile @@ -162,7 +162,7 @@ define KernelPackage/madwifi TITLE:=Driver for Atheros wireless chipsets URL:=http://madwifi-project.org/ MAINTAINER:=Felix Fietkau - 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 diff --git a/package/uboot-ifxmips/patches/120-eon_flash.patch b/package/uboot-ifxmips/patches/120-eon_flash.patch new file mode 100644 index 000000000..0a2624c72 --- /dev/null +++ b/package/uboot-ifxmips/patches/120-eon_flash.patch @@ -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 diff --git a/scripts/pad_image b/scripts/pad_image new file mode 100755 index 000000000..14f149907 --- /dev/null +++ b/scripts/pad_image @@ -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 + diff --git a/scripts/remote-gdb b/scripts/remote-gdb index 9701b31c1..60efb9703 100755 --- a/scripts/remote-gdb +++ b/scripts/remote-gdb @@ -33,13 +33,20 @@ if( opendir SD, "$Bin/../staging_dir" ) } } - # Query arch - do { - print("Target? > "); - chomp($tid = ); - } while( !defined($tid) || $tid !~ /^\d+$/ || $tid < 1 || $tid > @arches ); + if( @arches > 1 ) + { + # Query arch + do { + print("Target? > "); + chomp($tid = ); + } while( !defined($tid) || $tid !~ /^\d+$/ || $tid < 1 || $tid > @arches ); - ($arch, $libc) = @{$arches[$tid-1]}; + ($arch, $libc) = @{$arches[$tid-1]}; + } + else + { + ($arch, $libc) = @{$arches[0]}; + } } closedir SD; @@ -47,18 +54,14 @@ if( opendir SD, "$Bin/../staging_dir" ) # 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]); diff --git a/target/linux/ar71xx/files/arch/mips/ar71xx/dev-ar913x-wmac.c b/target/linux/ar71xx/files/arch/mips/ar71xx/dev-ar913x-wmac.c index 67eaa833b..024d29044 100644 --- a/target/linux/ar71xx/files/arch/mips/ar71xx/dev-ar913x-wmac.c +++ b/target/linux/ar71xx/files/arch/mips/ar71xx/dev-ar913x-wmac.c @@ -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, }, }; diff --git a/target/linux/ar71xx/files/arch/mips/ar71xx/irq.c b/target/linux/ar71xx/files/arch/mips/ar71xx/irq.c index 3a91e00aa..352548c4e 100644 --- a/target/linux/ar71xx/files/arch/mips/ar71xx/irq.c +++ b/target/linux/ar71xx/files/arch/mips/ar71xx/irq.c @@ -1,7 +1,7 @@ /* * Atheros AR71xx SoC specific interrupt handling * - * Copyright (C) 2008-2009 Gabor Juhos + * Copyright (C) 2008-2010 Gabor Juhos * Copyright (C) 2008 Imre Kaloz * * Parts of this file are based on Atheros' 2.6.15 BSP @@ -21,177 +21,13 @@ #include -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(); } diff --git a/target/linux/ar71xx/files/arch/mips/ar71xx/setup.c b/target/linux/ar71xx/files/arch/mips/ar71xx/setup.c index 1d9feda67..10e45af73 100644 --- a/target/linux/ar71xx/files/arch/mips/ar71xx/setup.c +++ b/target/linux/ar71xx/files/arch/mips/ar71xx/setup.c @@ -13,7 +13,6 @@ #include #include -#include #include #include @@ -22,7 +21,6 @@ #include #include -#include #include "machtype.h" #include "devices.h" diff --git a/target/linux/ar71xx/files/arch/mips/include/asm/mach-ar71xx/ar71xx.h b/target/linux/ar71xx/files/arch/mips/include/asm/mach-ar71xx/ar71xx.h index e9e68f16d..31d2fd8e4 100644 --- a/target/linux/ar71xx/files/arch/mips/include/asm/mach-ar71xx/ar71xx.h +++ b/target/linux/ar71xx/files/arch/mips/include/asm/mach-ar71xx/ar71xx.h @@ -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 */ diff --git a/target/linux/ar71xx/files/arch/mips/pci/pci-ar71xx.c b/target/linux/ar71xx/files/arch/mips/pci/pci-ar71xx.c index b2d36caa0..7d0eee9db 100644 --- a/target/linux/ar71xx/files/arch/mips/pci/pci-ar71xx.c +++ b/target/linux/ar71xx/files/arch/mips/pci/pci-ar71xx.c @@ -1,7 +1,7 @@ /* * Atheros AR71xx PCI host controller driver * - * Copyright (C) 2008-2009 Gabor Juhos + * Copyright (C) 2008-2010 Gabor Juhos * Copyright (C) 2008 Imre Kaloz * * Parts of this file are based on Atheros' 2.6.15 BSP @@ -17,6 +17,7 @@ #include #include #include +#include #include #include @@ -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; diff --git a/target/linux/ar71xx/files/arch/mips/pci/pci-ar724x.c b/target/linux/ar71xx/files/arch/mips/pci/pci-ar724x.c index 5fcfc8738..fd5221607 100644 --- a/target/linux/ar71xx/files/arch/mips/pci/pci-ar724x.c +++ b/target/linux/ar71xx/files/arch/mips/pci/pci-ar724x.c @@ -1,7 +1,7 @@ /* * Atheros AR724x PCI host controller driver * - * Copyright (C) 2009 Gabor Juhos + * Copyright (C) 2009-2010 Gabor Juhos * * Parts of this file are based on Atheros' 2.6.15 BSP * @@ -16,6 +16,7 @@ #include #include #include +#include #include #include @@ -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; } diff --git a/target/linux/atheros/config-2.6.33 b/target/linux/atheros/config-2.6.33 index dfc72e347..a823710dc 100644 --- a/target/linux/atheros/config-2.6.33 +++ b/target/linux/atheros/config-2.6.33 @@ -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 diff --git a/target/linux/brcm47xx/Makefile b/target/linux/brcm47xx/Makefile index 66663035a..0d59b363e 100644 --- a/target/linux/brcm47xx/Makefile +++ b/target/linux/brcm47xx/Makefile @@ -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 diff --git a/target/linux/generic-2.6/base-files/init b/target/linux/generic-2.6/base-files/init index a3387eb10..9e8ba7c5e 100755 --- a/target/linux/generic-2.6/base-files/init +++ b/target/linux/generic-2.6/base-files/init @@ -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 diff --git a/target/linux/generic-2.6/config-2.6.30 b/target/linux/generic-2.6/config-2.6.30 index 0379ce239..1cbb6abca 100644 --- a/target/linux/generic-2.6/config-2.6.30 +++ b/target/linux/generic-2.6/config-2.6.30 @@ -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 diff --git a/target/linux/generic-2.6/config-2.6.31 b/target/linux/generic-2.6/config-2.6.31 index 320ccb928..f42f7d668 100644 --- a/target/linux/generic-2.6/config-2.6.31 +++ b/target/linux/generic-2.6/config-2.6.31 @@ -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 diff --git a/target/linux/generic-2.6/config-2.6.32 b/target/linux/generic-2.6/config-2.6.32 index 0a7d109b7..3fdf530a9 100644 --- a/target/linux/generic-2.6/config-2.6.32 +++ b/target/linux/generic-2.6/config-2.6.32 @@ -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 diff --git a/target/linux/generic-2.6/config-2.6.33 b/target/linux/generic-2.6/config-2.6.33 index c8e1e91b7..80fdf4c26 100644 --- a/target/linux/generic-2.6/config-2.6.33 +++ b/target/linux/generic-2.6/config-2.6.33 @@ -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 diff --git a/target/linux/generic-2.6/config-2.6.34 b/target/linux/generic-2.6/config-2.6.34 index c686c4814..03ed7879f 100644 --- a/target/linux/generic-2.6/config-2.6.34 +++ b/target/linux/generic-2.6/config-2.6.34 @@ -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 diff --git a/target/linux/generic-2.6/patches-2.6.34/510-yaffs_support.patch b/target/linux/generic-2.6/patches-2.6.34/510-yaffs_support.patch index e490452e5..b14de5940 100644 --- a/target/linux/generic-2.6/patches-2.6.34/510-yaffs_support.patch +++ b/target/linux/generic-2.6/patches-2.6.34/510-yaffs_support.patch @@ -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/ ++ diff --git a/target/linux/ifxmips/files/arch/mips/ifxmips/board.c b/target/linux/ifxmips/files/arch/mips/ifxmips/board.c index 7d77e9ce6..0f084a81b 100644 --- a/target/linux/ifxmips/files/arch/mips/ifxmips/board.c +++ b/target/linux/ifxmips/files/arch/mips/ifxmips/board.c @@ -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); } diff --git a/target/linux/ifxmips/files/arch/mips/include/asm/mach-ifxmips/gpio.h b/target/linux/ifxmips/files/arch/mips/include/asm/mach-ifxmips/gpio.h index 6f05e38ea..4176bfd80 100644 --- a/target/linux/ifxmips/files/arch/mips/include/asm/mach-ifxmips/gpio.h +++ b/target/linux/ifxmips/files/arch/mips/include/asm/mach-ifxmips/gpio.h @@ -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 diff --git a/target/linux/ifxmips/files/arch/mips/include/asm/mach-ifxmips/ifxmips.h b/target/linux/ifxmips/files/arch/mips/include/asm/mach-ifxmips/ifxmips.h index 1076dc463..7d5ae23be 100644 --- a/target/linux/ifxmips/files/arch/mips/include/asm/mach-ifxmips/ifxmips.h +++ b/target/linux/ifxmips/files/arch/mips/include/asm/mach-ifxmips/ifxmips.h @@ -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) diff --git a/target/linux/ifxmips/files/arch/mips/pci/pci-ifxmips.c b/target/linux/ifxmips/files/arch/mips/pci/pci-ifxmips.c index e50cb3bdc..6ff765e85 100644 --- a/target/linux/ifxmips/files/arch/mips/pci/pci-ifxmips.c +++ b/target/linux/ifxmips/files/arch/mips/pci/pci-ifxmips.c @@ -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 diff --git a/target/linux/ifxmips/image/Makefile b/target/linux/ifxmips/image/Makefile index 15e0bc5dc..ac887c4e4 100644 --- a/target/linux/ifxmips/image/Makefile +++ b/target/linux/ifxmips/image/Makefile @@ -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 diff --git a/target/linux/ifxmips/patches-2.6.30/120-serial.patch b/target/linux/ifxmips/patches-2.6.30/120-serial.patch index 8aa9dbbe4..1169378e4 100644 --- a/target/linux/ifxmips/patches-2.6.30/120-serial.patch +++ b/target/linux/ifxmips/patches-2.6.30/120-serial.patch @@ -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; +} + diff --git a/target/linux/ifxmips/patches-2.6.30/140-mtd.patch b/target/linux/ifxmips/patches-2.6.30/140-mtd.patch index 797a11cff..294d97335 100644 --- a/target/linux/ifxmips/patches-2.6.30/140-mtd.patch +++ b/target/linux/ifxmips/patches-2.6.30/140-mtd.patch @@ -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; diff --git a/target/linux/malta/Makefile b/target/linux/malta/Makefile index 69fae6aa5..17b1790e8 100644 --- a/target/linux/malta/Makefile +++ b/target/linux/malta/Makefile @@ -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 diff --git a/target/linux/rdc/Makefile b/target/linux/rdc/Makefile index b65101167..2144ec71f 100644 --- a/target/linux/rdc/Makefile +++ b/target/linux/rdc/Makefile @@ -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 diff --git a/target/linux/rdc/ar525w/config-2.6.30 b/target/linux/rdc/ar525w/config-2.6.30 index 109f9e064..e69de29bb 100644 --- a/target/linux/rdc/ar525w/config-2.6.30 +++ b/target/linux/rdc/ar525w/config-2.6.30 @@ -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 diff --git a/target/linux/rdc/bifferboard/config-2.6.30 b/target/linux/rdc/bifferboard/config-2.6.30 index c97dcdaac..e69de29bb 100644 --- a/target/linux/rdc/bifferboard/config-2.6.30 +++ b/target/linux/rdc/bifferboard/config-2.6.30 @@ -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 diff --git a/target/linux/rdc/files-2.6.30/arch/x86/include/asm/rdc_boards.h b/target/linux/rdc/files-2.6.30/arch/x86/include/asm/rdc_boards.h new file mode 100644 index 000000000..4f8ef377d --- /dev/null +++ b/target/linux/rdc/files-2.6.30/arch/x86/include/asm/rdc_boards.h @@ -0,0 +1,36 @@ +/* + * RDC321x boards + * + * Copyright (C) 2007-2009 OpenWrt.org + * Copyright (C) 2007 Florian Fainelli + * Copyright (C) 2008-2009 Daniel Gimpelevich + * + * 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 +#include + +struct rdc_platform_data { + struct gpio_led_platform_data led_data; + struct gpio_buttons_platform_data button_data; +}; + +#endif diff --git a/target/linux/rdc/files-2.6.30/arch/x86/mach-rdc321x/Makefile b/target/linux/rdc/files-2.6.30/arch/x86/mach-rdc321x/Makefile index 21d887923..13d0b3183 100644 --- a/target/linux/rdc/files-2.6.30/arch/x86/mach-rdc321x/Makefile +++ b/target/linux/rdc/files-2.6.30/arch/x86/mach-rdc321x/Makefile @@ -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 diff --git a/target/linux/rdc/files-2.6.30/arch/x86/mach-rdc321x/boards/ar525w.c b/target/linux/rdc/files-2.6.30/arch/x86/mach-rdc321x/boards/ar525w.c new file mode 100644 index 000000000..041a3ba34 --- /dev/null +++ b/target/linux/rdc/files-2.6.30/arch/x86/mach-rdc321x/boards/ar525w.c @@ -0,0 +1,243 @@ +/* + * ar525w RDC321x platform devices + * + * Copyright (C) 2007-2009 OpenWrt.org + * Copyright (C) 2007 Florian Fainelli + * Copyright (C) 2008-2009 Daniel Gimpelevich + * + * 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 +#include +#include +#include +#include + +#include + +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); diff --git a/target/linux/rdc/files-2.6.30/arch/x86/mach-rdc321x/boards/bifferboard.c b/target/linux/rdc/files-2.6.30/arch/x86/mach-rdc321x/boards/bifferboard.c new file mode 100644 index 000000000..076459e69 --- /dev/null +++ b/target/linux/rdc/files-2.6.30/arch/x86/mach-rdc321x/boards/bifferboard.c @@ -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 +#include +#include + +#include + +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); diff --git a/target/linux/rdc/files-2.6.30/arch/x86/mach-rdc321x/boards/r8610.c b/target/linux/rdc/files-2.6.30/arch/x86/mach-rdc321x/boards/r8610.c new file mode 100644 index 000000000..d10afa3d4 --- /dev/null +++ b/target/linux/rdc/files-2.6.30/arch/x86/mach-rdc321x/boards/r8610.c @@ -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 +#include +#include + +#include + +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); diff --git a/target/linux/rdc/files-2.6.30/arch/x86/mach-rdc321x/boards/sitecom.c b/target/linux/rdc/files-2.6.30/arch/x86/mach-rdc321x/boards/sitecom.c new file mode 100644 index 000000000..11f34f8d2 --- /dev/null +++ b/target/linux/rdc/files-2.6.30/arch/x86/mach-rdc321x/boards/sitecom.c @@ -0,0 +1,111 @@ +/* + * Sitecom RDC321x platform devices + * + * Copyright (C) 2007-2009 OpenWrt.org + * Copyright (C) 2007 Florian Fainelli + * Copyright (C) 2008-2009 Daniel Gimpelevich + * + * 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 +#include +#include + +#include + +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); diff --git a/target/linux/rdc/files-2.6.30/arch/x86/mach-rdc321x/platform.c b/target/linux/rdc/files-2.6.30/arch/x86/mach-rdc321x/platform.c index 3b3de774e..f655458bc 100644 --- a/target/linux/rdc/files-2.6.30/arch/x86/mach-rdc321x/platform.c +++ b/target/linux/rdc/files-2.6.30/arch/x86/mach-rdc321x/platform.c @@ -23,267 +23,98 @@ */ #include -#include -#include -#include +//#include +//#include +//#include #include -#include -#include -#include -#include +//#include +//#include #include #include #include #include -/* 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 -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]; - - 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; + struct mtd_partition *partitions; + int count, res; + struct mtd_info *mtdinfo; + 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!"); + + 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; } - 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; - - 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; + + count = parse_mtd_partitions(mtdinfo, boards, &partitions, (unsigned long) &rdcplat_data); + + if (count <= 0) { + panic("RDC321x: can't identify board type"); + return -ENOSYS; } -#endif + + ROOT_DEV = 0; + res = add_mtd_partitions(mtdinfo, partitions, count); + if (res) + return res; + 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 diff --git a/target/linux/rdc/files-2.6.30/drivers/watchdog/rdc321x_wdt.c b/target/linux/rdc/files-2.6.30/drivers/watchdog/rdc321x_wdt.c index 2572c0e2c..694917949 100644 --- a/target/linux/rdc/files-2.6.30/drivers/watchdog/rdc321x_wdt.c +++ b/target/linux/rdc/files-2.6.30/drivers/watchdog/rdc321x_wdt.c @@ -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; diff --git a/target/linux/rdc/image/Makefile b/target/linux/rdc/image/Makefile index 9b4c13508..59d59b4a7 100644 --- a/target/linux/rdc/image/Makefile +++ b/target/linux/rdc/image/Makefile @@ -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 diff --git a/target/linux/rdc/image/mkimg_sitecom.pl b/target/linux/rdc/image/mkimg_sitecom.pl index 4dd4a398c..cfd5e652f 100755 --- a/target/linux/rdc/image/mkimg_sitecom.pl +++ b/target/linux/rdc/image/mkimg_sitecom.pl @@ -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 () { $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; diff --git a/target/linux/rdc/patches-2.6.30/012-export_erase_write.patch b/target/linux/rdc/patches-2.6.30/012-export_erase_write.patch new file mode 100644 index 000000000..2d6feba24 --- /dev/null +++ b/target/linux/rdc/patches-2.6.30/012-export_erase_write.patch @@ -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 diff --git a/target/linux/rdc/r8610/config-2.6.30 b/target/linux/rdc/r8610/config-2.6.30 index edda24234..e69de29bb 100644 --- a/target/linux/rdc/r8610/config-2.6.30 +++ b/target/linux/rdc/r8610/config-2.6.30 @@ -1,3 +0,0 @@ -CONFIG_MTD_PHYSMAP=y -# CONFIG_MTD_R8610 is not set -# CONFIG_MTD_RDC3210 is not set diff --git a/target/linux/x86/config-2.6.30 b/target/linux/x86/config-2.6.30 index b66a2e9d9..24fcb1340 100644 --- a/target/linux/x86/config-2.6.30 +++ b/target/linux/x86/config-2.6.30 @@ -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 diff --git a/target/linux/x86/config-default b/target/linux/x86/config-default index 535eab3c3..9b20f1eab 100644 --- a/target/linux/x86/config-default +++ b/target/linux/x86/config-default @@ -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 diff --git a/target/linux/x86/olpc/config-2.6.31 b/target/linux/x86/olpc/config-2.6.31 index 1144e9f28..7db4baa7c 100644 --- a/target/linux/x86/olpc/config-2.6.31 +++ b/target/linux/x86/olpc/config-2.6.31 @@ -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 diff --git a/target/linux/xburst/files-2.6.32/drivers/mmc/host/jz_mmc.c b/target/linux/xburst/files-2.6.32/drivers/mmc/host/jz_mmc.c index 0f1a310a7..6c42a12b8 100644 --- a/target/linux/xburst/files-2.6.32/drivers/mmc/host/jz_mmc.c +++ b/target/linux/xburst/files-2.6.32/drivers/mmc/host/jz_mmc.c @@ -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); diff --git a/target/sdk/Makefile b/target/sdk/Makefile index e171d831d..0d4bfcd6e 100644 --- a/target/sdk/Makefile +++ b/target/sdk/Makefile @@ -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/ diff --git a/tools/firmware-utils/src/airlink.c b/tools/firmware-utils/src/airlink.c index 63bd51835..560a58df5 100644 --- a/tools/firmware-utils/src/airlink.c +++ b/tools/firmware-utils/src/airlink.c @@ -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) {