diff --git a/package/kernel/modules/sound.mk b/package/kernel/modules/sound.mk index 9350dbf34..53f65e5ad 100644 --- a/package/kernel/modules/sound.mk +++ b/package/kernel/modules/sound.mk @@ -10,7 +10,7 @@ SOUND_MENU:=Sound Support define KernelPackage/sound-core SUBMENU:=$(SOUND_MENU) TITLE:=Sound support - DEPENDS:=@PCI_SUPPORT||USB_SUPPORT||TARGET_uml + DEPENDS:=@AUDIO_SUPPORT KCONFIG:= \ CONFIG_SOUND \ CONFIG_SND \ diff --git a/package/mac80211/patches/520-ath9k_ack_timeout_workaround.patch b/package/mac80211/patches/520-ath9k_ack_timeout_workaround.patch index 398bec8eb..f489f0ff4 100644 --- a/package/mac80211/patches/520-ath9k_ack_timeout_workaround.patch +++ b/package/mac80211/patches/520-ath9k_ack_timeout_workaround.patch @@ -1,13 +1,19 @@ --- a/drivers/net/wireless/ath/ath9k/hw.c +++ b/drivers/net/wireless/ath/ath9k/hw.c -@@ -1233,6 +1233,11 @@ void ath9k_hw_init_global_settings(struc +@@ -1233,6 +1233,17 @@ void ath9k_hw_init_global_settings(struc /* As defined by IEEE 802.11-2007 17.3.8.6 */ slottime = ah->slottime + 3 * ah->coverage_class; acktimeout = slottime + sifstime; + -+ /* Workaround for a hw issue */ ++ /* ++ * Workaround for early ACK timeouts, add an offset to match the ++ * initval's 64us ack timeout value. ++ * This was initially only meant to work around an issue with delayed ++ * BA frames in some implementations, but it has been found to fix ACK ++ * timeout issues in other cases as well. ++ */ + if (conf->channel && conf->channel->band == IEEE80211_BAND_2GHZ) -+ acktimeout = max(64, acktimeout); ++ acktimeout += 64 - sifstime - ah->slottime; + ath9k_hw_setslottime(ah, slottime); ath9k_hw_set_ack_timeout(ah, acktimeout); diff --git a/package/swconfig/src/cli.c b/package/swconfig/src/cli.c index 23a8e95f9..7e77bd2c6 100644 --- a/package/swconfig/src/cli.c +++ b/package/swconfig/src/cli.c @@ -2,6 +2,7 @@ * swconfig.c: Switch configuration utility * * Copyright (C) 2008 Felix Fietkau + * Copyright (C) 2010 Martin Mares * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -34,9 +35,12 @@ #include "swlib.h" enum { - GET, - SET, - LOAD + CMD_NONE, + CMD_GET, + CMD_SET, + CMD_LOAD, + CMD_HELP, + CMD_SHOW, }; static void @@ -79,10 +83,80 @@ list_attributes(struct switch_dev *dev) print_attrs(dev->port_ops); } +static void +print_attr_val(const struct switch_attr *attr, const struct switch_val *val) +{ + int i; + + switch (attr->type) { + case SWITCH_TYPE_INT: + printf("%d", val->value.i); + break; + case SWITCH_TYPE_STRING: + printf("%s", val->value.s); + break; + case SWITCH_TYPE_PORTS: + for(i = 0; i < val->len; i++) { + printf("%d%s ", + val->value.ports[i].id, + (val->value.ports[i].flags & + SWLIB_PORT_FLAG_TAGGED) ? "t" : ""); + } + break; + default: + printf("?unknown-type?"); + } +} + +static void +show_attrs(struct switch_dev *dev, struct switch_attr *attr, struct switch_val *val) +{ + while (attr) { + if (attr->type != SWITCH_TYPE_NOVAL) { + printf("\t%s: ", attr->name); + if (swlib_get_attr(dev, attr, val) < 0) + printf("???"); + else + print_attr_val(attr, val); + putchar('\n'); + } + attr = attr->next; + } +} + +static void +show_global(struct switch_dev *dev) +{ + struct switch_val val; + + printf("Global attributes:\n"); + show_attrs(dev, dev->ops, &val); +} + +static void +show_port(struct switch_dev *dev, int port) +{ + struct switch_val val; + + printf("Port %d:\n", port); + val.port_vlan = port; + show_attrs(dev, dev->port_ops, &val); +} + +static void +show_vlan(struct switch_dev *dev, int vlan) +{ + struct switch_val val; + + printf("VLAN %d:\n", vlan); + val.port_vlan = vlan; + show_attrs(dev, dev->vlan_ops, &val); +} + static void print_usage(void) { - printf("swconfig dev [port |vlan ] (help|set |get |load )\n"); + printf("swconfig dev [port |vlan ] (help|set |get |load |show)\n"); exit(1); } @@ -124,13 +198,12 @@ int main(int argc, char **argv) struct switch_port *ports; - int cmd = 0; + int cmd = CMD_NONE; char *cdev = NULL; int cport = -1; int cvlan = -1; char *ckey = NULL; char *cvalue = NULL; - int chelp = 0; if(argc < 4) print_usage(); @@ -142,44 +215,38 @@ int main(int argc, char **argv) for(i = 3; i < argc; i++) { - int p; - if (!strcmp(argv[i], "help")) { - chelp = 1; - continue; - } - if( i + 1 >= argc) + char *arg = argv[i]; + if (cmd != CMD_NONE) { print_usage(); - p = atoi(argv[i + 1]); - if (!strcmp(argv[i], "port")) { - cport = p; - } else if (!strcmp(argv[i], "vlan")) { - cvlan = p; - } else if (!strcmp(argv[i], "set")) { - if(argc <= i + 1) - print_usage(); - cmd = SET; - ckey = argv[i + 1]; - if (argc > i + 2) - cvalue = argv[i + 2]; - else - cvalue = NULL; - i++; - } else if (!strcmp(argv[i], "get")) { - cmd = GET; - ckey = argv[i + 1]; - } else if (!strcmp(argv[i], "load")) { + } else if (!strcmp(arg, "port") && i+1 < argc) { + cport = atoi(argv[++i]); + } else if (!strcmp(arg, "vlan") && i+1 < argc) { + cvlan = atoi(argv[++i]); + } else if (!strcmp(arg, "help")) { + cmd = CMD_HELP; + } else if (!strcmp(arg, "set") && i+1 < argc) { + cmd = CMD_SET; + ckey = argv[++i]; + if (i+1 < argc) + cvalue = argv[++i]; + } else if (!strcmp(arg, "get") && i+1 < argc) { + cmd = CMD_GET; + ckey = argv[++i]; + } else if (!strcmp(arg, "load") && i+1 < argc) { if ((cport >= 0) || (cvlan >= 0)) print_usage(); - - ckey = argv[i + 1]; - cmd = LOAD; + cmd = CMD_LOAD; + ckey = argv[++i]; + } else if (!strcmp(arg, "show")) { + cmd = CMD_SHOW; } else { print_usage(); } - i++; } - if(cport > -1 && cvlan > -1) + if (cmd == CMD_NONE) + print_usage(); + if (cport > -1 && cvlan > -1) print_usage(); dev = swlib_connect(cdev); @@ -192,13 +259,7 @@ int main(int argc, char **argv) memset(ports, 0, sizeof(struct switch_port) * dev->ports); swlib_scan(dev); - if(chelp) - { - list_attributes(dev); - goto out; - } - - if (cmd != LOAD) { + if (cmd == CMD_GET || cmd == CMD_SET) { if(cport > -1) a = swlib_lookup_attr(dev, SWLIB_ATTR_GROUP_PORT, ckey); else if(cvlan > -1) @@ -215,7 +276,7 @@ int main(int argc, char **argv) switch(cmd) { - case SET: + case CMD_SET: if ((a->type != SWITCH_TYPE_NOVAL) && (cvalue == NULL)) print_usage(); @@ -230,7 +291,7 @@ int main(int argc, char **argv) goto out; } break; - case GET: + case CMD_GET: if(cvlan > -1) val.port_vlan = cvlan; if(cport > -1) @@ -241,27 +302,29 @@ int main(int argc, char **argv) retval = -1; goto out; } - switch(a->type) { - case SWITCH_TYPE_INT: - printf("%d\n", val.value.i); - break; - case SWITCH_TYPE_STRING: - printf("%s\n", val.value.s); - break; - case SWITCH_TYPE_PORTS: - for(i = 0; i < val.len; i++) { - printf("%d%s ", - val.value.ports[i].id, - (val.value.ports[i].flags & - SWLIB_PORT_FLAG_TAGGED) ? "t" : ""); - } - printf("\n"); - break; - } + print_attr_val(a, &val); + putchar('\n'); break; - case LOAD: + case CMD_LOAD: swconfig_load_uci(dev, ckey); break; + case CMD_HELP: + list_attributes(dev); + break; + case CMD_SHOW: + if (cport >= 0 || cvlan >= 0) { + if (cport >= 0) + show_port(dev, cport); + else + show_vlan(dev, cvlan); + } else { + show_global(dev); + for (i=0; i < dev->ports; i++) + show_port(dev, i); + for (i=0; i < dev->vlans; i++) + show_vlan(dev, i); + } + break; } out: diff --git a/scripts/metadata.pl b/scripts/metadata.pl index 9260a1b24..c963964ba 100755 --- a/scripts/metadata.pl +++ b/scripts/metadata.pl @@ -152,6 +152,7 @@ sub target_config_features(@) { while ($_ = shift @_) { /broken/ and $ret .= "\tdepends BROKEN\n"; + /audio/ and $ret .= "\tselect AUDIO_SUPPORT\n"; /display/ and $ret .= "\tselect DISPLAY_SUPPORT\n"; /gpio/ and $ret .= "\tselect GPIO_SUPPORT\n"; /pci/ and $ret .= "\tselect PCI_SUPPORT\n"; diff --git a/target/Config.in b/target/Config.in index 1b2c303db..d522b79dd 100644 --- a/target/Config.in +++ b/target/Config.in @@ -11,6 +11,9 @@ config LINUX_2_6 config HAS_FPU bool +config AUDIO_SUPPORT + bool + config DISPLAY_SUPPORT bool @@ -18,6 +21,7 @@ config GPIO_SUPPORT bool config PCI_SUPPORT + select AUDIO_SUPPORT bool config PCIE_SUPPORT @@ -27,6 +31,7 @@ config PCMCIA_SUPPORT bool config USB_SUPPORT + select AUDIO_SUPPORT bool config BIG_ENDIAN diff --git a/target/linux/generic-2.6/config-2.6.32 b/target/linux/generic-2.6/config-2.6.32 index 19f706115..edd1394e4 100644 --- a/target/linux/generic-2.6/config-2.6.32 +++ b/target/linux/generic-2.6/config-2.6.32 @@ -495,6 +495,7 @@ CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" # CONFIG_DMA_ENGINE is not set # CONFIG_DMASCC is not set # CONFIG_DMATEST is not set +# CONFIG_DM_LOG_USERSPACE is not set # CONFIG_DNET is not set # CONFIG_DNOTIFY is not set # CONFIG_DRAGONRISE_FF is not set diff --git a/target/linux/uml/Makefile b/target/linux/uml/Makefile index 5f3181fce..f2d9ce452 100644 --- a/target/linux/uml/Makefile +++ b/target/linux/uml/Makefile @@ -20,7 +20,7 @@ ARCH:=$(shell uname -m | sed \ ) BOARD:=uml BOARDNAME:=User Mode Linux -FEATURES:=ext2 +FEATURES:=ext2 audio LINUX_CONFIG:=$(CURDIR)/config/$(ARCH) LINUX_VERSION:=2.6.30.10 diff --git a/target/linux/x86/config-default b/target/linux/x86/config-default index e05e9f798..884483995 100644 --- a/target/linux/x86/config-default +++ b/target/linux/x86/config-default @@ -177,6 +177,8 @@ # CONFIG_POWER_SUPPLY_DEBUG is not set # CONFIG_PROCESSOR_SELECT is not set # CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set +# CONFIG_RCU_FANOUT_EXACT is not set +# CONFIG_RCU_TRACE is not set # CONFIG_RELOCATABLE is not set # CONFIG_RWSEM_GENERIC_SPINLOCK is not set # CONFIG_SBC7240_WDT is not set @@ -230,6 +232,7 @@ # CONFIG_X86_CMPXCHG64 is not set # CONFIG_X86_CPUFREQ_NFORCE2 is not set # CONFIG_X86_CPUID is not set +# CONFIG_X86_CPU_DEBUG is not set # CONFIG_X86_DEBUGCTLMSR is not set # CONFIG_X86_DS is not set # CONFIG_X86_ELAN is not set @@ -242,6 +245,7 @@ # CONFIG_X86_MCE_INJECT is not set # CONFIG_X86_MRST is not set # CONFIG_X86_MSR is not set +# CONFIG_X86_OLD_MCE is not set # CONFIG_X86_P4_CLOCKMOD is not set # CONFIG_X86_PAE is not set # CONFIG_X86_POWERNOW_K6 is not set @@ -450,6 +454,7 @@ CONFIG_PNPACPI=y CONFIG_PNP_DEBUG_MESSAGES=y CONFIG_POWER_SUPPLY=y CONFIG_PROC_PAGE_MONITOR=y +CONFIG_RCU_FANOUT=32 CONFIG_RD_BZIP2=y CONFIG_RD_GZIP=y CONFIG_RTC=y diff --git a/target/linux/xburst/Makefile b/target/linux/xburst/Makefile index 7707c7604..7fdb93ce1 100644 --- a/target/linux/xburst/Makefile +++ b/target/linux/xburst/Makefile @@ -9,9 +9,9 @@ include $(TOPDIR)/rules.mk ARCH:=mipsel BOARD:=xburst BOARDNAME:=XBurst JZ47x0 -FEATURES:=jffs2 tgz ubifs +FEATURES:=jffs2 tgz ubifs audio -LINUX_VERSION:=2.6.32.8 +LINUX_VERSION:=2.6.32.7 DEVICE_TYPE=other diff --git a/toolchain/binutils/Config.in b/toolchain/binutils/Config.in index 65bc9c980..c9a1eb638 100644 --- a/toolchain/binutils/Config.in +++ b/toolchain/binutils/Config.in @@ -8,6 +8,7 @@ choice Select the version of binutils you wish to use. config BINUTILS_VERSION_2_18 + depends !ubicom32 bool "binutils 2.18" config BINUTILS_VERSION_2_19_1 diff --git a/toolchain/binutils/patches/2.19.1/600-ubicom32_binutils_20090818.patch b/toolchain/binutils/patches/2.19.1/600-ubicom32_binutils_20090818.patch index f95c05dca..f2a70ca86 100644 --- a/toolchain/binutils/patches/2.19.1/600-ubicom32_binutils_20090818.patch +++ b/toolchain/binutils/patches/2.19.1/600-ubicom32_binutils_20090818.patch @@ -5580,22 +5580,22 @@ case EM_XTENSA: return "Tensilica Xtensa Processor"; --- a/config.sub +++ b/config.sub -@@ -283,6 +283,7 @@ case $basic_machine in +@@ -285,6 +285,7 @@ case $basic_machine in | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu | strongarm \ | tahoe | thumb | tic4x | tic80 | tron \ + | ubicom32 \ | v850 | v850e \ - | ubicom32 \ | we32k \ -@@ -367,6 +368,7 @@ case $basic_machine in + | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ +@@ -370,6 +371,7 @@ case $basic_machine in | tahoe-* | thumb-* \ - | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \ | tron-* \ + | ubicom32-* \ | v850-* | v850e-* | vax-* \ - | ubicom32-* \ | we32k-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ --- a/configure +++ b/configure @@ -2666,6 +2666,12 @@ case "${target}" in