+kernel-power (2.6.28-maemo35) fremantle; urgency=low
+
+ * activate new wlan-monitor patch
+ * added system update flag to prevent deinstallation in Application manager
+ * upgrade to Nokia 20101501+0m5 (without disabling smartreflex):
+ fixes WLAN memory leaks and improves stability
+
+ -- Thomas Tanner <maemo@tannerlab.com> Tue, 25 May 2010 09:40:35 +0200
+
kernel-power (2.6.28-maemo34) fremantle; urgency=low
* install blacklist properly
-- Thomas Tanner <tanner@maemory.com> Thu, 04 Feb 2010 00:00:00 +0100
+kernel (2.6.28-20101501+0m5) unstable; urgency=low
+
+ * This entry has been added by BIFH queue processor
+ version has been changed to 2.6.28-20101501+0m5
+
+ -- Lyubimkin Eugene <ext-lyubimkin.eugene@nokia.com> Thu, 15 Apr 2010 09:13:02 +0300
+
+kernel (2.6.28-20101501) unstable; urgency=low
+
+ * Fixes: NB#162856 - Camera: Support alternative SSL3250A flash controller
+
+ -- Eugene Lyubimkin <ext-lyubimkin.eugene@nokia.com> Wed, 14 Apr 2010 09:06:17 +0300
+
+kernel (2.6.28-20101103) unstable; urgency=low
+
+ * Fixes: NB#159905 - Samsung eMMC chip 43470T9/KLMBG8EEGM support is
+ missing
+
+ -- Eugene Lyubimkin <ext-lyubimkin.eugene@nokia.com> Wed, 17 Mar 2010 17:13:46 +0200
+
+kernel (2.6.28-20101102) unstable; urgency=low
+
+ * Fixes: NB#160765 - remove sysfs interface that allows user to enable
+ Smartleflex
+
+ -- Eugene Lyubimkin <ext-lyubimkin.eugene@nokia.com> Tue, 16 Mar 2010 16:52:21 +0200
+
+kernel (2.6.28-20101001) unstable; urgency=low
+
+ * Fixes: NB#158654 - Memleak when raising wlan0 interface up
+ * Fixes: NB#158655 - Memleak after association request with iwconfig
+ * Fixes: NB#144089 - WLAN ad-hoc network leaks in kernel memory
+
+ -- Eugene Lyubimkin <ext-lyubimkin.eugene@nokia.com> Wed, 10 Mar 2010 13:52:15 +0200
+
+kernel (2.6.28-20100904) unstable; urgency=low
+
+ * Fixes: NB#145487 - Some devices are rebooting when the device is idle
+ * Fixes: NB#158605 - omapdss DISPC error: VID1_FIFO_UNDERFLOW
+
+ -- Eugene Lyubimkin <ext-lyubimkin.eugene@nokia.com> Fri, 05 Mar 2010 12:11:31 +0200
+
kernel (2.6.28-20100903+0m5) unstable; urgency=low
* This entry has been added by BIFH queue processor
kernel-feature-overclock, kernel-feature-joikuspot, kernel-feature-slip, kernel-feature-battery, kernel-feature-pptp,
kernel-feature-wlan-monitor
XB-Maemo-Display-Name: Enhanced Linux kernel for power users
+XB-Maemo-Flags: system-update
Description: Linux kernel updater for an enhanced Maemo 5 kernel 2.6.28.10
This package will flash the kernel image upon installation.
After the installation, you need to unplug the USB cable,
--- /dev/null
+--- kernel-power-2.6.28.orig/drivers/i2c/i2c-core.c
++++ kernel-power-2.6.28/drivers/i2c/i2c-core.c
+@@ -1042,7 +1042,26 @@
+ (msgs[ret].flags & I2C_M_RECV_LEN) ? "+" : "");
+ }
+ #endif
+-
++ // inserted
++ int i;
++ if (msgs[0].addr == 0x6b) {
++ printk("%s ", dev_name(&adap->dev));
++ for (ret = 0; ret < num; ret++) { // nr of messages in this call
++ if (!(msgs[ret].flags & I2C_M_RD)) {
++ printk("(W):");
++ for (i = 0; i < msgs[ret].len; i++) {
++ printk(" 0x%02x", msgs[ret].buf[i]);
++ }
++ }
++ else {
++ printk("(R) %d bytes", msgs[ret].len);
++ }
++ printk(", ");
++ }
++ printk("\n");
++ }
++ // end inserted
++
+ if (in_atomic() || irqs_disabled()) {
+ ret = mutex_trylock(&adap->bus_lock);
+ if (!ret)
+@@ -1054,7 +1073,20 @@
+
+ ret = adap->algo->master_xfer(adap,msgs,num);
+ mutex_unlock(&adap->bus_lock);
+-
++
++ // inserted
++ int j;
++ for (i = 0; i < num; i++) {
++ if (msgs[i].addr == 0x6b && (msgs[i].flags & I2C_M_RD)) {
++ printk("i2c_read: ");
++ for (j = 0; j < msgs[i].len; j++) {
++ printk(" 0x%02x", msgs[i].buf[j]);
++ }
++ printk("\n");
++ }
++ }
++ // end inserted
++
+ return ret;
+ } else {
+ dev_dbg(&adap->dev, "I2C level transfers not supported\n");
--- /dev/null
+diff -ruNd kernel-2.6.28.old/arch/arm/mach-omap2/smartreflex.c kernel-2.6.28/arch/arm/mach-omap2/smartreflex.c
+--- kernel-2.6.28.old/arch/arm/mach-omap2/smartreflex.c 2010-05-25 09:13:49.000000000 +0200
++++ kernel-2.6.28/arch/arm/mach-omap2/smartreflex.c 2010-05-25 09:08:37.000000000 +0200
+@@ -1004,6 +1004,11 @@
+ return -EINVAL;
+ }
+
++ if (value != 0) {
++ pr_warning("VDD2 smartreflex is broken\n");
++ return -EINVAL;
++ }
++
+ mutex_lock(&dvfs_mutex);
+
+ current_vdd2opp_no = resource_get_level("vdd2_opp");
--- /dev/null
+--- kernel-power-2.6.28.orig/arch/arm/mach-omap2/board-rx51-camera.c
++++ kernel-power-2.6.28/arch/arm/mach-omap2/board-rx51-camera.c
+@@ -561,7 +561,7 @@
+ gpio_set_value(ADP1653_GPIO_ENABLE, 1);
+
+ /* Some delay is apparently required. */
+- udelay(20);
++ udelay(400);
+
+ return 0;
+ }
+--- kernel-power-2.6.28.orig/arch/arm/mach-omap2/pm34xx.c
++++ kernel-power-2.6.28/arch/arm/mach-omap2/pm34xx.c
+@@ -45,6 +45,7 @@
+ #include <mach/dma.h>
+ #include <mach/vrfb.h>
+ #include <mach/ssi.h>
++#include <mach/omap-pm.h>
+
+ #include <asm/tlbflush.h>
+
+@@ -102,6 +103,8 @@
+ #define CONTROL_PADCONF_MCBSP4_DX 0x158
+ #define CONTROL_PADCONF_UART1_TX 0x14c
+
++#define VSEL_1200 0x30
++
+ static u16 ssi_rx_rdy;
+ static u16 ssi_tx_dat;
+ static u16 ssi_tx_flag;
+@@ -520,6 +523,7 @@
+ u32 sdrc_pwr = 0;
+ int per_state_modified = 0;
+ int core_saved_state = PWRDM_POWER_ON;
++ static int prev_dpll3_div = 0;
+
+ if (!_omap_sram_idle)
+ return;
+@@ -551,7 +555,7 @@
+ if (pwrdm_read_pwrst(neon_pwrdm) == PWRDM_POWER_ON) {
+ pwrdm_set_next_pwrst(neon_pwrdm, mpu_next_state);
+ neon_next_state = mpu_next_state;
+- if (neon_next_state == PWRDM_POWER_OFF)
++ if (neon_next_state == PWRDM_POWER_OFF)
+ omap3_save_neon_context();
+ }
+
+@@ -562,6 +566,12 @@
+ usb_state = pwrdm_read_pwrst(usb_pwrdm);
+ per_next_state = pwrdm_read_next_pwrst(per_pwrdm);
+
++ if (dss_state == PWRDM_POWER_ON &&
++ core_next_state < PWRDM_POWER_INACTIVE) {
++ core_next_state = PWRDM_POWER_INACTIVE;
++ pwrdm_set_next_pwrst(core_pwrdm, PWRDM_POWER_ON);
++ }
++
+ /* Check if PER domain can enter OFF or not */
+ if (per_next_state == PWRDM_POWER_OFF) {
+ if ((cm_read_mod_reg(OMAP3430_PER_MOD, CM_IDLEST) &
+@@ -679,6 +689,33 @@
+ OMAP3_PRM_CLKSETUP_OFFSET);
+ }
+
++ if (core_next_state < PWRDM_POWER_INACTIVE) {
++ u32 clksel1_pll, v;
++
++ clksel1_pll = cm_read_mod_reg(PLL_MOD, OMAP3430_CM_CLKSEL1_PLL);
++ prev_dpll3_div = clksel1_pll >> 28;
++ if (prev_dpll3_div == 1) {
++ /* L3 @ 166Mhz */
++ struct omap_sdrc_params *sdrc_cs0;
++ struct omap_sdrc_params *sdrc_cs1;
++
++ omap2_sdrc_get_params(83*1000*1000, &sdrc_cs0, &sdrc_cs1);
++ /* scale down to 83Mhz, use worst case delay for clock stabilization */
++ omap3_configure_core_dpll(4, 0, 28, 0, sdrc_cs0->rfr_ctrl, sdrc_cs0->mr, 0, 0);
++
++ /* increase voltage to 1.2V */
++ sr_voltagescale_vcbypass(PRCM_VDD2_OPP3, PRCM_VDD2_OPP2, VSEL_1200, l3_opps[3].vsel);
++ } else {
++ /* L3 @ 83Mhz, increase voltage to 1.2V */
++ sr_voltagescale_vcbypass(PRCM_VDD2_OPP3, PRCM_VDD2_OPP2, VSEL_1200, l3_opps[2].vsel);
++ }
++
++ /* enable DPLL3 autoidle */
++ v = cm_read_mod_reg(PLL_MOD, CM_AUTOIDLE);
++ v |= 1;
++ cm_write_mod_reg(v, PLL_MOD, CM_AUTOIDLE);
++ }
++
+ memcpy(save_sdrc_counters, _sdrc_counters, sizeof(save_sdrc_counters));
+
+ /*
+@@ -701,6 +738,51 @@
+ if (neon_next_state == PWRDM_POWER_OFF)
+ omap3_restore_neon_context();
+
++ if (core_next_state < PWRDM_POWER_INACTIVE) {
++ if (pwrdm_read_prev_pwrst(core_pwrdm) == PWRDM_POWER_OFF) {
++ u32 clksel1_pll;
++
++ /* ROM code restored the scratchpad settings. So DPLL3 autoidle is
++ * disabled and L3 clock is back to the value before entering this function.
++ * This means we only have to lower the voltage if L3 runs at 83Mhz
++ */
++ clksel1_pll = cm_read_mod_reg(PLL_MOD, OMAP3430_CM_CLKSEL1_PLL);
++ if ((clksel1_pll >> 28) == 2) {
++ /* restore VDD2 OPP2 voltage */
++ sr_voltagescale_vcbypass(PRCM_VDD2_OPP2, PRCM_VDD2_OPP3, l3_opps[2].vsel, VSEL_1200);
++ }
++ else {
++ /* restore VDD2 OPP3 voltage */
++ sr_voltagescale_vcbypass(PRCM_VDD2_OPP2, PRCM_VDD2_OPP3, l3_opps[3].vsel, VSEL_1200);
++ }
++ }
++ else {
++ u32 v;
++
++ /* disable DPLL3 autoidle */
++ v = cm_read_mod_reg(PLL_MOD, CM_AUTOIDLE);
++ v &= ~0x7;
++ cm_write_mod_reg(v, PLL_MOD, CM_AUTOIDLE);
++
++ if (prev_dpll3_div == 1) {
++ /* restore L3 to 166Mhz */
++ struct omap_sdrc_params *sdrc_cs0;
++ struct omap_sdrc_params *sdrc_cs1;
++
++ omap2_sdrc_get_params(166*1000*1000, &sdrc_cs0, &sdrc_cs1);
++ /* scale up to 166Mhz, use worst case delay for clock stabilization */
++ omap3_configure_core_dpll(2, 0, 28, 1, sdrc_cs0->rfr_ctrl, sdrc_cs0->mr, 0, 0);
++
++ /* restore VDD2 OPP3 voltage */
++ sr_voltagescale_vcbypass(PRCM_VDD2_OPP2, PRCM_VDD2_OPP3, l3_opps[3].vsel, VSEL_1200);
++ }
++ else {
++ /* restore VDD2 OPP2 voltage */
++ sr_voltagescale_vcbypass(PRCM_VDD2_OPP2, PRCM_VDD2_OPP3, l3_opps[2].vsel, VSEL_1200);
++ }
++ }
++ }
++
+ /* CORE */
+ if (core_next_state < PWRDM_POWER_ON) {
+ core_prev_state = pwrdm_read_prev_pwrst(core_pwrdm);
+@@ -1136,7 +1218,7 @@
+ MPU_MOD,
+ CM_AUTOIDLE2);
+ cm_write_mod_reg((1 << OMAP3430_AUTO_PERIPH_DPLL_SHIFT) |
+- (1 << OMAP3430_AUTO_CORE_DPLL_SHIFT),
++ (0 << OMAP3430_AUTO_CORE_DPLL_SHIFT),
+ PLL_MOD,
+ CM_AUTOIDLE);
+ cm_write_mod_reg(1 << OMAP3430ES2_AUTO_PERIPH2_DPLL_SHIFT,
+--- kernel-power-2.6.28.orig/arch/arm/mach-omap2/ssi.c
++++ kernel-power-2.6.28/arch/arm/mach-omap2/ssi.c
+@@ -378,7 +378,7 @@
+ u32 v;
+
+ v = cm_read_mod_reg(PLL_MOD, CM_AUTOIDLE);
+- v |= 1;
++ v |= 0;
+ cm_write_mod_reg(v, PLL_MOD, CM_AUTOIDLE);
+ }
+
+--- kernel-power-2.6.28.orig/drivers/mmc/host/omap_hsmmc.c
++++ kernel-power-2.6.28/drivers/mmc/host/omap_hsmmc.c
+@@ -28,6 +28,7 @@
+ #include <linux/clk.h>
+ #include <linux/mmc/host.h>
+ #include <linux/mmc/core.h>
++#include <linux/mmc/card.h>
+ #include <linux/io.h>
+ #include <linux/semaphore.h>
+ #include <asm/dma.h>
+@@ -97,6 +98,8 @@
+ #define SOFTRESET (1 << 1)
+ #define RESETDONE (1 << 0)
+
++#define SAMSUNG_MANUF_ID 0x15
++
+ /*
+ * FIXME: Most likely all the data using these _DEVID defines should come
+ * from the platform_data, or implemented in controller and slot specific
+@@ -1283,10 +1286,24 @@
+ return msecs_to_jiffies(OMAP_MMC_SLEEP_TIMEOUT);
+ }
+
++/* JEDEC specification says the nand core voltage can be shut off while the
++ card is sleeping. Some cards are known not to be JEDEC compatible with
++ this respect */
++static int omap_hsmmc_full_sleep(struct mmc_card *card)
++{
++ if (card->cid.manfid == SAMSUNG_MANUF_ID) {
++ unsigned int gbytes = card->ext_csd.sectors >> (30 - 9);
++ if (gbytes > 24 && gbytes < 48)
++ return 0;
++ }
++
++ return 1;
++}
++
+ /* Handler for [DISABLED -> REGSLEEP / CARDSLEEP] transition */
+ static int omap_hsmmc_disabled_to_sleep(struct omap_hsmmc_host *host)
+ {
+- int err, new_state;
++ int err, new_state, sleep;
+
+ if (!mmc_try_claim_host(host->mmc))
+ return 0;
+@@ -1304,9 +1321,12 @@
+ } else {
+ new_state = REGSLEEP;
+ }
++
++ sleep = omap_hsmmc_full_sleep(host->mmc->card) &&
++ (new_state == CARDSLEEP);
+ if (mmc_slot(host).set_sleep)
+ mmc_slot(host).set_sleep(host->dev, host->slot_id, 1, 0,
+- new_state == CARDSLEEP);
++ sleep);
+ /* FIXME: turn off bus power and perhaps interrupts too */
+ clk_disable(host->fclk);
+ host->dpm_state = new_state;
+@@ -1376,14 +1396,18 @@
+
+ static int omap_hsmmc_sleep_to_enabled(struct omap_hsmmc_host *host)
+ {
++ int asleep;
++
+ if (!mmc_try_claim_host(host->mmc))
+ return 0;
+
+ clk_enable(host->fclk);
+ omap_hsmmc_context_restore(host);
++ asleep = omap_hsmmc_full_sleep(host->mmc->card) &&
++ (host->dpm_state == CARDSLEEP);
+ if (mmc_slot(host).set_sleep)
+ mmc_slot(host).set_sleep(host->dev, host->slot_id, 0,
+- host->vdd, host->dpm_state == CARDSLEEP);
++ host->vdd, asleep);
+ if (mmc_card_can_sleep(host->mmc))
+ mmc_card_awake(host->mmc);
+
+--- kernel-power-2.6.28.orig/drivers/net/wireless/wl12xx/wl1251_main.c
++++ kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_main.c
+@@ -1611,6 +1611,7 @@
+ }
+
+ out:
++ kfree(trigger);
+ kfree(params);
+ return ret;
+
+--- kernel-power-2.6.28.orig/drivers/net/wireless/wl12xx/wl1251_spi.c
++++ kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_spi.c
+@@ -92,6 +92,8 @@
+ spi_sync(wl->spi, &m);
+
+ wl1251_dump(DEBUG_SPI, "spi reset -> ", cmd, WSPI_INIT_CMD_LEN);
++
++ kfree(cmd);
+ }
+
+ void wl1251_spi_init(struct wl1251 *wl)
+@@ -146,6 +148,8 @@
+ spi_sync(wl->spi, &m);
+
+ wl1251_dump(DEBUG_SPI, "spi init -> ", cmd, WSPI_INIT_CMD_LEN);
++
++ kfree(cmd);
+ }
+
+ /* Set the SPI partitions to access the chip addresses
+--- kernel-power-2.6.28.orig/net/mac80211/mlme.c
++++ kernel-power-2.6.28/net/mac80211/mlme.c
+@@ -1624,6 +1624,7 @@
+ memcpy(pos, &bss->supp_rates[8], rates);
+ }
+
++ kfree_skb(ifsta->probe_resp);
+ ifsta->probe_resp = skb;
+
+ ieee80211_if_config(sdata, IEEE80211_IFCC_BEACON);
nokia-20094803.3+0m5.diff
nokia-20100903+0m5.diff
+nokia-20101501+0m5.diff
maemo-build.diff
unionfs-2.5.3.diff
dm-loop.diff
gethercharge.diff
ondemand-avoid.diff
overclock.diff
-#usbhost_egoshin.diff
+#usbwhitelist.diff
#nootg.diff
#usbhost2.diff
+#usbignpower.diff
+#bq24150-sniff.diff
+#usbhost4.diff
--- /dev/null
+--- kernel-power-2.6.28.orig/drivers/usb/gadget/nokia.c
++++ kernel-power-2.6.28/drivers/usb/gadget/nokia.c
+@@ -142,8 +142,7 @@
+ .bind = nokia_bind_config,
+ .bConfigurationValue = 1,
+ /* .iConfiguration = DYNAMIC */
+- .bmAttributes = USB_CONFIG_ATT_ONE,
+- .bMaxPower = 250, /* 500mA */
++ .bmAttributes = USB_CONFIG_ATT_SELFPOWER
+ };
+
+ static struct usb_configuration nokia_config_100ma_driver = {
+@@ -151,8 +150,7 @@
+ .bind = nokia_bind_config,
+ .bConfigurationValue = 2,
+ /* .iConfiguration = DYNAMIC */
+- .bmAttributes = USB_CONFIG_ATT_ONE | USB_CONFIG_ATT_SELFPOWER,
+- .bMaxPower = 50, /* 100 mA */
++ .bmAttributes = USB_CONFIG_ATT_SELFPOWER
+ };
+
+ static int __init nokia_bind(struct usb_composite_dev *cdev)
+--- kernel-power-2.6.28.orig/arch/arm/mach-omap2/Makefile
++++ kernel-power-2.6.28/arch/arm/mach-omap2/Makefile
+@@ -100,7 +100,8 @@
+ board-rx51-peripherals.o \
+ mmc-twl4030.o \
+ ssi.o \
+- usb-musb.o
++ usb-ehci.o \
++ usb-musb.o
+ obj-$(CONFIG_MACH_NOKIA_RX71) += board-rx71.o \
+ board-rx71-peripherals.o
+
--- /dev/null
+--- kernel-power-2.6.28.orig/drivers/usb/musb/musb_procfs.c
++++ kernel-power-2.6.28/drivers/usb/musb/musb_procfs.c
+@@ -657,9 +657,12 @@
+ if (mbase) {
+ reg = musb_readb(mbase, MUSB_DEVCTL);
+ reg |= MUSB_DEVCTL_HR;
++ reg |= MUSB_DEVCTL_HM;
++ ctx.devctl |= MUSB_DEVCTL_HR;
++ ctx.devctl |= MUSB_DEVCTL_HM;
+ musb_writeb(mbase, MUSB_DEVCTL, reg);
+- /* MUSB_HST_MODE( ((struct musb*)data) ); */
+- /* WARNING("Host Mode\n"); */
++ MUSB_HST_MODE( ((struct musb*)data) );
++ WARNING("Host Mode\n");
+ }
+ break;
+
+--- kernel-power-2.6.28.orig/drivers/usb/musb/musb_core.c
++++ kernel-power-2.6.28/drivers/usb/musb/musb_core.c
+@@ -113,7 +113,7 @@
+ #endif
+
+ static struct musb *the_musb;
+-static struct musb_ctx ctx;
++struct musb_ctx ctx;
+
+ #ifndef CONFIG_MUSB_PIO_ONLY
+ static int __initdata use_dma = 1;
+--- kernel-power-2.6.28.orig/drivers/usb/musb/musb_core.h
++++ kernel-power-2.6.28/drivers/usb/musb/musb_core.h
+@@ -350,6 +350,8 @@
+ u8 naklimit0;
+ };
+
++extern struct musb_ctx ctx;
++
+ /*
+ * struct musb - Driver instance data.
+ */
---- kernel-power-2.6.28.orig/drivers/usb/core/otg_whitelist.h
-+++ kernel-power-2.6.28/drivers/usb/core/otg_whitelist.h
-@@ -14,7 +14,7 @@
- #else
- static inline int is_targeted(struct usb_device *d)
- {
-- return 0;
-+ return 1;
- }
- #endif
-
--- kernel-power-2.6.28.orig/drivers/usb/otg/twl4030-usb.c
+++ kernel-power-2.6.28/drivers/usb/otg/twl4030-usb.c
@@ -621,6 +621,7 @@
--- /dev/null
+--- kernel-power-2.6.28.orig/drivers/usb/core/generic.c
++++ kernel-power-2.6.28/drivers/usb/core/generic.c
+@@ -97,10 +97,10 @@
+ */
+
+ /* Rule out configs that draw too much bus current */
+- if (c->desc.bMaxPower * 2 > udev->bus_mA) {
++ /*if (c->desc.bMaxPower * 2 > udev->bus_mA) {
+ insufficient_power++;
+ continue;
+- }
++ }*/
+
+ /* When the first config's first interface is one of Microsoft's
+ * pet nonstandard Ethernet-over-USB protocols, ignore it unless
+@@ -132,10 +132,10 @@
+ best = c;
+ }
+
+- if (insufficient_power > 0)
++ /*if (insufficient_power > 0)
+ dev_info(&udev->dev, "rejected %d configuration%s "
+ "due to insufficient available bus power\n",
+- insufficient_power, plural(insufficient_power));
++ insufficient_power, plural(insufficient_power));*/
+
+ if (best) {
+ i = best->desc.bConfigurationValue;
--- /dev/null
+--- kernel-power-2.6.28.orig/drivers/usb/core/otg_whitelist.h
++++ kernel-power-2.6.28/drivers/usb/core/otg_whitelist.h
+@@ -14,7 +14,7 @@
+ #else
+ static inline int is_targeted(struct usb_device *d)
+ {
+- return 0;
++ return 1;
+ }
+ #endif
+
---- kernel-power-2.6.28.orig/drivers/net/wireless/wl12xx/wl1251_cmd.c
-+++ kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_cmd.c
+Index: kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_cmd.c
+===================================================================
+--- kernel-power-2.6.28.orig/drivers/net/wireless/wl12xx/wl1251_cmd.c 2010-05-14 23:59:06.832141497 +0200
++++ kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_cmd.c 2010-05-14 23:59:07.524273985 +0200
@@ -204,11 +204,11 @@
return 0;
}
ret = wl1251_cmd_send(wl, cmd_tx, cmd, sizeof(*cmd));
if (ret < 0) {
wl1251_error("tx %s cmd for channel %d failed",
---- kernel-power-2.6.28.orig/drivers/net/wireless/wl12xx/wl1251_cmd.h
-+++ kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_cmd.h
+Index: kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_cmd.h
+===================================================================
+--- kernel-power-2.6.28.orig/drivers/net/wireless/wl12xx/wl1251_cmd.h 2010-05-14 23:59:06.832141497 +0200
++++ kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_cmd.h 2010-05-14 23:59:07.524273985 +0200
@@ -35,7 +35,8 @@
int wl1251_cmd_configure(struct wl1251 *wl, u16 id, void *buf, size_t len);
int wl1251_cmd_vbm(struct wl1251 *wl, u8 identity,
int wl1251_cmd_join(struct wl1251 *wl, u8 bss_type, u8 channel,
u16 beacon_interval, u8 dtim_interval);
int wl1251_cmd_ps_mode(struct wl1251 *wl, u8 ps_mode);
---- kernel-power-2.6.28.orig/drivers/net/wireless/wl12xx/wl1251_init.c
-+++ kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_init.c
+Index: kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_init.c
+===================================================================
+--- kernel-power-2.6.28.orig/drivers/net/wireless/wl12xx/wl1251_init.c 2010-05-14 23:59:07.063992150 +0200
++++ kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_init.c 2010-05-15 00:46:16.884045939 +0200
+@@ -35,7 +35,7 @@
+ {
+ int ret;
+
+- ret = wl1251_acx_feature_cfg(wl);
++ ret = wl1251_acx_feature_cfg(wl, DF_SNIFF_MODE_ENABLE);
+ if (ret < 0) {
+ wl1251_warning("couldn't set feature config");
+ return ret;
@@ -399,8 +399,13 @@
if (ret < 0)
goto out_free_data_path;
if (ret < 0)
goto out_free_data_path;
---- kernel-power-2.6.28.orig/drivers/net/wireless/wl12xx/wl1251_main.c
-+++ kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_main.c
+Index: kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_main.c
+===================================================================
+--- kernel-power-2.6.28.orig/drivers/net/wireless/wl12xx/wl1251_main.c 2010-05-14 23:59:07.063992150 +0200
++++ kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_main.c 2010-05-15 03:33:55.871890108 +0200
@@ -667,7 +667,11 @@
if (ret < 0)
return ret;
if (ret < 0)
return ret;
-@@ -1180,6 +1184,13 @@
+@@ -967,6 +971,12 @@
+ goto out;
+ }
+
++ ret = wl1251_acx_feature_cfg(wl, 0);
++ if (ret < 0) {
++ wl1251_warning("couldn't set feature config");
++ goto out;
++ }
++
+ wl->vif = conf->vif;
+
+ switch (conf->type) {
+@@ -998,10 +1008,19 @@
+ struct ieee80211_if_init_conf *conf)
+ {
+ struct wl1251 *wl = hw->priv;
++ int ret = 0;
+
+ mutex_lock(&wl->mutex);
++
+ wl1251_debug(DEBUG_MAC80211, "mac80211 remove interface");
++
+ wl->vif = NULL;
++
++ ret = wl1251_acx_feature_cfg(wl, DF_SNIFF_MODE_ENABLE);
++ if (ret < 0) {
++ wl1251_warning("couldn't set feature config");
++ }
++
+ mutex_unlock(&wl->mutex);
+ }
+
+@@ -1180,6 +1199,13 @@
if (ret < 0)
goto out;
wl->channel = channel;
if (conf->flags & IEEE80211_CONF_PS && !wl->psm_requested) {
+Index: kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_acx.c
+===================================================================
+--- kernel-power-2.6.28.orig/drivers/net/wireless/wl12xx/wl1251_acx.c 2010-05-15 00:00:22.995807778 +0200
++++ kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_acx.c 2010-05-15 00:14:02.111891358 +0200
+@@ -212,7 +212,7 @@
+ return ret;
+ }
+
+-int wl1251_acx_feature_cfg(struct wl1251 *wl)
++int wl1251_acx_feature_cfg(struct wl1251 *wl, u32 data_flow_options)
+ {
+ struct acx_feature_config *feature;
+ int ret;
+@@ -226,7 +226,7 @@
+ }
+
+ /* DF_ENCRYPTION_DISABLE and DF_SNIFF_MODE_ENABLE are disabled */
+- feature->data_flow_options = 0;
++ feature->data_flow_options = data_flow_options;
+ feature->options = 0;
+
+ ret = wl1251_cmd_configure(wl, ACX_FEATURE_CFG,
+Index: kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_acx.h
+===================================================================
+--- kernel-power-2.6.28.orig/drivers/net/wireless/wl12xx/wl1251_acx.h 2010-05-15 00:01:16.660049057 +0200
++++ kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_acx.h 2010-05-15 00:14:27.776191658 +0200
+@@ -1454,7 +1454,7 @@
+ int wl1251_acx_sleep_auth(struct wl1251 *wl, u8 sleep_auth);
+ int wl1251_acx_fw_version(struct wl1251 *wl, char *buf, size_t len);
+ int wl1251_acx_tx_power(struct wl1251 *wl, int power);
+-int wl1251_acx_feature_cfg(struct wl1251 *wl);
++int wl1251_acx_feature_cfg(struct wl1251 *wl, u32 data_flow_options);
+ int wl1251_acx_mem_map(struct wl1251 *wl,
+ struct acx_header *mem_map, size_t len);
+ int wl1251_acx_data_path_params(struct wl1251 *wl,
+Index: kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_rx.c
+===================================================================
+--- kernel-power-2.6.28.orig/drivers/net/wireless/wl12xx/wl1251_rx.c 2010-05-16 15:04:08.279402004 +0200
++++ kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_rx.c 2010-05-16 18:56:57.075800531 +0200
+@@ -100,7 +100,54 @@
+ status->flag |= RX_FLAG_FAILED_FCS_CRC;
+
+
+- /* FIXME: set status->rate_idx */
++ switch (desc->rate) {
++ /* skip 1 and 12 Mbps because they have same value 0x0a */
++ case RATE_2MBPS:
++ status->rate_idx = 1;
++ break;
++ case RATE_5_5MBPS:
++ status->rate_idx = 2;
++ break;
++ case RATE_11MBPS:
++ status->rate_idx = 3;
++ break;
++ case RATE_6MBPS:
++ status->rate_idx = 4;
++ break;
++ case RATE_9MBPS:
++ status->rate_idx = 5;
++ break;
++ case RATE_18MBPS:
++ status->rate_idx = 7;
++ break;
++ case RATE_24MBPS:
++ status->rate_idx = 8;
++ break;
++ case RATE_36MBPS:
++ status->rate_idx = 9;
++ break;
++ case RATE_48MBPS:
++ status->rate_idx = 10;
++ break;
++ case RATE_54MBPS:
++ status->rate_idx = 11;
++ break;
++ }
++
++ /* for 1 and 12 Mbps we have to check the modulation */
++ if (desc->rate == RATE_1MBPS) {
++ if ((desc->mod_pre & OFDM_RATE_BIT) == 0) {
++ /* CCK -> RATE_1MBPS*/
++ status->rate_idx = 0;
++ } else {
++ /* OFDM -> RATE_12MBPS */
++ status->rate_idx = 6;
++ }
++ }
++
++ if ((desc->mod_pre & SHORT_PREAMBLE_BIT) != 0) {
++ status->flag |= RX_FLAG_SHORTPRE;
++ }
+ }
+
+ static void wl1251_rx_body(struct wl1251 *wl,
+++ /dev/null
-Index: kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_cmd.c
-===================================================================
---- kernel-power-2.6.28.orig/drivers/net/wireless/wl12xx/wl1251_cmd.c 2010-05-14 23:59:06.832141497 +0200
-+++ kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_cmd.c 2010-05-14 23:59:07.524273985 +0200
-@@ -204,11 +204,11 @@
- return 0;
- }
-
--int wl1251_cmd_data_path(struct wl1251 *wl, u8 channel, bool enable)
-+int wl1251_cmd_data_path_rx(struct wl1251 *wl, u8 channel, bool enable)
- {
- struct cmd_enabledisable_path *cmd;
- int ret;
-- u16 cmd_rx, cmd_tx;
-+ u16 cmd_rx;
-
- wl1251_debug(DEBUG_CMD, "cmd data path");
-
-@@ -222,10 +222,8 @@
-
- if (enable) {
- cmd_rx = CMD_ENABLE_RX;
-- cmd_tx = CMD_ENABLE_TX;
- } else {
- cmd_rx = CMD_DISABLE_RX;
-- cmd_tx = CMD_DISABLE_TX;
- }
-
- ret = wl1251_cmd_send(wl, cmd_rx, cmd, sizeof(*cmd));
-@@ -238,6 +236,33 @@
- wl1251_debug(DEBUG_BOOT, "rx %s cmd channel %d",
- enable ? "start" : "stop", channel);
-
-+out:
-+ kfree(cmd);
-+ return ret;
-+}
-+
-+int wl1251_cmd_data_path_tx(struct wl1251 *wl, u8 channel, bool enable)
-+{
-+ struct cmd_enabledisable_path *cmd;
-+ int ret;
-+ u16 cmd_tx;
-+
-+ wl1251_debug(DEBUG_CMD, "cmd data path");
-+
-+ cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);
-+ if (!cmd) {
-+ ret = -ENOMEM;
-+ goto out;
-+ }
-+
-+ cmd->channel = channel;
-+
-+ if (enable) {
-+ cmd_tx = CMD_ENABLE_TX;
-+ } else {
-+ cmd_tx = CMD_DISABLE_TX;
-+ }
-+
- ret = wl1251_cmd_send(wl, cmd_tx, cmd, sizeof(*cmd));
- if (ret < 0) {
- wl1251_error("tx %s cmd for channel %d failed",
-Index: kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_cmd.h
-===================================================================
---- kernel-power-2.6.28.orig/drivers/net/wireless/wl12xx/wl1251_cmd.h 2010-05-14 23:59:06.832141497 +0200
-+++ kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_cmd.h 2010-05-14 23:59:07.524273985 +0200
-@@ -35,7 +35,8 @@
- int wl1251_cmd_configure(struct wl1251 *wl, u16 id, void *buf, size_t len);
- int wl1251_cmd_vbm(struct wl1251 *wl, u8 identity,
- void *bitmap, u16 bitmap_len, u8 bitmap_control);
--int wl1251_cmd_data_path(struct wl1251 *wl, u8 channel, bool enable);
-+int wl1251_cmd_data_path_rx(struct wl1251 *wl, u8 channel, bool enable);
-+int wl1251_cmd_data_path_tx(struct wl1251 *wl, u8 channel, bool enable);
- int wl1251_cmd_join(struct wl1251 *wl, u8 bss_type, u8 channel,
- u16 beacon_interval, u8 dtim_interval);
- int wl1251_cmd_ps_mode(struct wl1251 *wl, u8 ps_mode);
-Index: kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_init.c
-===================================================================
---- kernel-power-2.6.28.orig/drivers/net/wireless/wl12xx/wl1251_init.c 2010-05-14 23:59:07.063992150 +0200
-+++ kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_init.c 2010-05-15 00:46:16.884045939 +0200
-@@ -35,7 +35,7 @@
- {
- int ret;
-
-- ret = wl1251_acx_feature_cfg(wl);
-+ ret = wl1251_acx_feature_cfg(wl, DF_SNIFF_MODE_ENABLE);
- if (ret < 0) {
- wl1251_warning("couldn't set feature config");
- return ret;
-@@ -399,8 +399,13 @@
- if (ret < 0)
- goto out_free_data_path;
-
-- /* Enable data path */
-- ret = wl1251_cmd_data_path(wl, wl->channel, 1);
-+ /* Enable rx data path */
-+ ret = wl1251_cmd_data_path_rx(wl, wl->channel, 1);
-+ if (ret < 0)
-+ goto out_free_data_path;
-+
-+ /* Enable tx data path */
-+ ret = wl1251_cmd_data_path_tx(wl, wl->channel, 1);
- if (ret < 0)
- goto out_free_data_path;
-
-Index: kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_main.c
-===================================================================
---- kernel-power-2.6.28.orig/drivers/net/wireless/wl12xx/wl1251_main.c 2010-05-14 23:59:07.063992150 +0200
-+++ kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_main.c 2010-05-15 03:33:55.871890108 +0200
-@@ -667,7 +667,11 @@
- if (ret < 0)
- return ret;
-
-- ret = wl1251_cmd_data_path(wl, wl->channel, 1);
-+ ret = wl1251_cmd_data_path_rx(wl, wl->channel, 1);
-+ if (ret < 0)
-+ return ret;
-+
-+ ret = wl1251_cmd_data_path_tx(wl, wl->channel, 1);
- if (ret < 0)
- return ret;
-
-@@ -967,6 +971,12 @@
- goto out;
- }
-
-+ ret = wl1251_acx_feature_cfg(wl, 0);
-+ if (ret < 0) {
-+ wl1251_warning("couldn't set feature config");
-+ goto out;
-+ }
-+
- wl->vif = conf->vif;
-
- switch (conf->type) {
-@@ -998,10 +1008,19 @@
- struct ieee80211_if_init_conf *conf)
- {
- struct wl1251 *wl = hw->priv;
-+ int ret = 0;
-
- mutex_lock(&wl->mutex);
-+
- wl1251_debug(DEBUG_MAC80211, "mac80211 remove interface");
-+
- wl->vif = NULL;
-+
-+ ret = wl1251_acx_feature_cfg(wl, DF_SNIFF_MODE_ENABLE);
-+ if (ret < 0) {
-+ wl1251_warning("couldn't set feature config");
-+ }
-+
- mutex_unlock(&wl->mutex);
- }
-
-@@ -1180,6 +1199,13 @@
- if (ret < 0)
- goto out;
-
-+ /* Monitor mode */
-+ if (wl->vif == NULL && wl->channel != channel) {
-+ ret = wl1251_cmd_data_path_rx(wl, channel, 1);
-+ if (ret < 0)
-+ goto out_sleep;
-+ }
-+
- wl->channel = channel;
-
- if (conf->flags & IEEE80211_CONF_PS && !wl->psm_requested) {
-Index: kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_acx.c
-===================================================================
---- kernel-power-2.6.28.orig/drivers/net/wireless/wl12xx/wl1251_acx.c 2010-05-15 00:00:22.995807778 +0200
-+++ kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_acx.c 2010-05-15 00:14:02.111891358 +0200
-@@ -212,7 +212,7 @@
- return ret;
- }
-
--int wl1251_acx_feature_cfg(struct wl1251 *wl)
-+int wl1251_acx_feature_cfg(struct wl1251 *wl, u32 data_flow_options)
- {
- struct acx_feature_config *feature;
- int ret;
-@@ -226,7 +226,7 @@
- }
-
- /* DF_ENCRYPTION_DISABLE and DF_SNIFF_MODE_ENABLE are disabled */
-- feature->data_flow_options = 0;
-+ feature->data_flow_options = data_flow_options;
- feature->options = 0;
-
- ret = wl1251_cmd_configure(wl, ACX_FEATURE_CFG,
-Index: kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_acx.h
-===================================================================
---- kernel-power-2.6.28.orig/drivers/net/wireless/wl12xx/wl1251_acx.h 2010-05-15 00:01:16.660049057 +0200
-+++ kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_acx.h 2010-05-15 00:14:27.776191658 +0200
-@@ -1454,7 +1454,7 @@
- int wl1251_acx_sleep_auth(struct wl1251 *wl, u8 sleep_auth);
- int wl1251_acx_fw_version(struct wl1251 *wl, char *buf, size_t len);
- int wl1251_acx_tx_power(struct wl1251 *wl, int power);
--int wl1251_acx_feature_cfg(struct wl1251 *wl);
-+int wl1251_acx_feature_cfg(struct wl1251 *wl, u32 data_flow_options);
- int wl1251_acx_mem_map(struct wl1251 *wl,
- struct acx_header *mem_map, size_t len);
- int wl1251_acx_data_path_params(struct wl1251 *wl,
-Index: kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_rx.c
-===================================================================
---- kernel-power-2.6.28.orig/drivers/net/wireless/wl12xx/wl1251_rx.c 2010-05-16 15:04:08.279402004 +0200
-+++ kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_rx.c 2010-05-16 18:56:57.075800531 +0200
-@@ -100,7 +100,54 @@
- status->flag |= RX_FLAG_FAILED_FCS_CRC;
-
-
-- /* FIXME: set status->rate_idx */
-+ switch (desc->rate) {
-+ /* skip 1 and 12 Mbps because they have same value 0x0a */
-+ case RATE_2MBPS:
-+ status->rate_idx = 1;
-+ break;
-+ case RATE_5_5MBPS:
-+ status->rate_idx = 2;
-+ break;
-+ case RATE_11MBPS:
-+ status->rate_idx = 3;
-+ break;
-+ case RATE_6MBPS:
-+ status->rate_idx = 4;
-+ break;
-+ case RATE_9MBPS:
-+ status->rate_idx = 5;
-+ break;
-+ case RATE_18MBPS:
-+ status->rate_idx = 7;
-+ break;
-+ case RATE_24MBPS:
-+ status->rate_idx = 8;
-+ break;
-+ case RATE_36MBPS:
-+ status->rate_idx = 9;
-+ break;
-+ case RATE_48MBPS:
-+ status->rate_idx = 10;
-+ break;
-+ case RATE_54MBPS:
-+ status->rate_idx = 11;
-+ break;
-+ }
-+
-+ /* for 1 and 12 Mbps we have to check the modulation */
-+ if (desc->rate == RATE_1MBPS) {
-+ if ((desc->mod_pre & OFDM_RATE_BIT) == 0) {
-+ /* CCK -> RATE_1MBPS*/
-+ status->rate_idx = 0;
-+ } else {
-+ /* OFDM -> RATE_12MBPS */
-+ status->rate_idx = 6;
-+ }
-+ }
-+
-+ if ((desc->mod_pre & SHORT_PREAMBLE_BIT) != 0) {
-+ status->flag |= RX_FLAG_SHORTPRE;
-+ }
- }
-
- static void wl1251_rx_body(struct wl1251 *wl,
+++ /dev/null
---- rx51power_defconfig 2010-05-16 18:31:19.000000000 +0200
-+++ rx51power_defconfig.host 2010-05-16 14:57:57.000000000 +0200
-@@ -955,7 +955,24 @@
- # CONFIG_USB_KAWETH is not set
- # CONFIG_USB_PEGASUS is not set
- # CONFIG_USB_RTL8150 is not set
--# CONFIG_USB_USBNET is not set
-+CONFIG_USB_USBNET=m
-+CONFIG_USB_NET_AX8817X=m
-+CONFIG_USB_NET_CDCETHER=m
-+# CONFIG_USB_NET_DM9601 is not set
-+# CONFIG_USB_NET_SMSC95XX is not set
-+# CONFIG_USB_NET_GL620A is not set
-+CONFIG_USB_NET_NET1080=m
-+# CONFIG_USB_NET_PLUSB is not set
-+# CONFIG_USB_NET_MCS7830 is not set
-+# CONFIG_USB_NET_RNDIS_HOST is not set
-+CONFIG_USB_NET_CDC_SUBSET=m
-+# CONFIG_USB_ALI_M5632 is not set
-+# CONFIG_USB_AN2720 is not set
-+CONFIG_USB_BELKIN=y
-+CONFIG_USB_ARMLINUX=y
-+# CONFIG_USB_EPSON2888 is not set
-+# CONFIG_USB_KC2190 is not set
-+CONFIG_USB_NET_ZAURUS=m
- # CONFIG_WAN is not set
- CONFIG_PPP=m
- # CONFIG_PPP_MULTILINK is not set
-@@ -1610,8 +1627,8 @@
- CONFIG_USB_ARCH_HAS_OHCI=y
- CONFIG_USB_ARCH_HAS_EHCI=y
- CONFIG_USB=y
--# CONFIG_USB_DEBUG is not set
--# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
-+CONFIG_USB_DEBUG=y
-+CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
-
- #
- # Miscellaneous USB options
-@@ -1620,8 +1637,8 @@
- # CONFIG_USB_DEVICE_CLASS is not set
- CONFIG_USB_DYNAMIC_MINORS=y
- CONFIG_USB_SUSPEND=y
--CONFIG_USB_OTG=y
--CONFIG_USB_OTG_WHITELIST=y
-+# CONFIG_USB_OTG is not set
-+# CONFIG_USB_OTG_WHITELIST is not set
- # CONFIG_USB_OTG_BLACKLIST_HUB is not set
- CONFIG_USB_MON=y
- # CONFIG_USB_WUSB is not set
-@@ -1650,10 +1667,10 @@
- #
- # OMAP 343x high speed USB support
- #
--# CONFIG_USB_MUSB_HOST is not set
-+CONFIG_USB_MUSB_HOST=y
- # CONFIG_USB_MUSB_PERIPHERAL is not set
--CONFIG_USB_MUSB_OTG=y
--CONFIG_USB_GADGET_MUSB_HDRC=y
-+# CONFIG_USB_MUSB_OTG is not set
-+# CONFIG_USB_GADGET_MUSB_HDRC is not set
- CONFIG_USB_MUSB_HDRC_HCD=y
- # CONFIG_MUSB_PIO_ONLY is not set
- CONFIG_USB_INVENTRA_DMA=y
-@@ -1780,7 +1797,8 @@
- # CONFIG_USB_GADGET_ATMEL_USBA is not set
- # CONFIG_USB_GADGET_FSL_USB2 is not set
- # CONFIG_USB_GADGET_LH7A40X is not set
--# CONFIG_USB_GADGET_OMAP is not set
-+CONFIG_USB_GADGET_OMAP=y
-+CONFIG_USB_OMAP=m
- # CONFIG_USB_GADGET_PXA25X is not set
- # CONFIG_USB_GADGET_PXA27X is not set
- # CONFIG_USB_GADGET_S3C2410 is not set
-@@ -1790,9 +1808,8 @@
- # CONFIG_USB_GADGET_NET2280 is not set
- # CONFIG_USB_GADGET_GOKU is not set
- # CONFIG_USB_GADGET_DUMMY_HCD is not set
--CONFIG_USB_GADGET_DUALSPEED=y
-+# CONFIG_USB_GADGET_DUALSPEED is not set
- CONFIG_USB_ZERO=m
--# CONFIG_USB_ZERO_HNPTEST is not set
- CONFIG_USB_ETH=m
- CONFIG_USB_ETH_RNDIS=y
- # CONFIG_USB_GADGETFS is not set
--- /dev/null
+--- rx51power_defconfig.orig 2010-05-20 00:18:55.000000000 +0200
++++ rx51power_defconfig 2010-05-20 00:44:07.000000000 +0200
+@@ -1646,6 +1646,9 @@
+ # USB Host Controller Drivers
+ #
+ # CONFIG_USB_C67X00_HCD is not set
++CONFIG_USB_EHCI_HCD=y
++# CONFIG_OMAP_EHCI_PHY_MODE is not set
++CONFIG_OMAP_EHCI_TLL_MODE=y
+ # CONFIG_USB_EHCI_HCD is not set
+ # CONFIG_USB_ISP116X_HCD is not set
+ # CONFIG_USB_OHCI_HCD is not set
--- /dev/null
+--- rx51power_defconfig 2010-05-16 18:31:19.000000000 +0200
++++ rx51power_defconfig.host 2010-05-16 14:57:57.000000000 +0200
+@@ -955,7 +955,24 @@
+ # CONFIG_USB_KAWETH is not set
+ # CONFIG_USB_PEGASUS is not set
+ # CONFIG_USB_RTL8150 is not set
+-# CONFIG_USB_USBNET is not set
++CONFIG_USB_USBNET=m
++CONFIG_USB_NET_AX8817X=m
++CONFIG_USB_NET_CDCETHER=m
++# CONFIG_USB_NET_DM9601 is not set
++# CONFIG_USB_NET_SMSC95XX is not set
++# CONFIG_USB_NET_GL620A is not set
++CONFIG_USB_NET_NET1080=m
++# CONFIG_USB_NET_PLUSB is not set
++# CONFIG_USB_NET_MCS7830 is not set
++# CONFIG_USB_NET_RNDIS_HOST is not set
++CONFIG_USB_NET_CDC_SUBSET=m
++# CONFIG_USB_ALI_M5632 is not set
++# CONFIG_USB_AN2720 is not set
++CONFIG_USB_BELKIN=y
++CONFIG_USB_ARMLINUX=y
++# CONFIG_USB_EPSON2888 is not set
++# CONFIG_USB_KC2190 is not set
++CONFIG_USB_NET_ZAURUS=m
+ # CONFIG_WAN is not set
+ CONFIG_PPP=m
+ # CONFIG_PPP_MULTILINK is not set
+@@ -1610,8 +1627,8 @@
+ CONFIG_USB_ARCH_HAS_OHCI=y
+ CONFIG_USB_ARCH_HAS_EHCI=y
+ CONFIG_USB=y
+-# CONFIG_USB_DEBUG is not set
+-# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
++CONFIG_USB_DEBUG=y
++CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
+
+ #
+ # Miscellaneous USB options
+@@ -1620,8 +1637,8 @@
+ # CONFIG_USB_DEVICE_CLASS is not set
+ CONFIG_USB_DYNAMIC_MINORS=y
+ CONFIG_USB_SUSPEND=y
+-CONFIG_USB_OTG=y
+-CONFIG_USB_OTG_WHITELIST=y
++# CONFIG_USB_OTG is not set
++# CONFIG_USB_OTG_WHITELIST is not set
+ # CONFIG_USB_OTG_BLACKLIST_HUB is not set
+ CONFIG_USB_MON=y
+ # CONFIG_USB_WUSB is not set
+@@ -1650,10 +1667,10 @@
+ #
+ # OMAP 343x high speed USB support
+ #
+-# CONFIG_USB_MUSB_HOST is not set
++CONFIG_USB_MUSB_HOST=y
+ # CONFIG_USB_MUSB_PERIPHERAL is not set
+-CONFIG_USB_MUSB_OTG=y
+-CONFIG_USB_GADGET_MUSB_HDRC=y
++# CONFIG_USB_MUSB_OTG is not set
++# CONFIG_USB_GADGET_MUSB_HDRC is not set
+ CONFIG_USB_MUSB_HDRC_HCD=y
+ # CONFIG_MUSB_PIO_ONLY is not set
+ CONFIG_USB_INVENTRA_DMA=y
+@@ -1780,7 +1797,8 @@
+ # CONFIG_USB_GADGET_ATMEL_USBA is not set
+ # CONFIG_USB_GADGET_FSL_USB2 is not set
+ # CONFIG_USB_GADGET_LH7A40X is not set
+-# CONFIG_USB_GADGET_OMAP is not set
++CONFIG_USB_GADGET_OMAP=y
++CONFIG_USB_OMAP=m
+ # CONFIG_USB_GADGET_PXA25X is not set
+ # CONFIG_USB_GADGET_PXA27X is not set
+ # CONFIG_USB_GADGET_S3C2410 is not set
+@@ -1790,9 +1808,8 @@
+ # CONFIG_USB_GADGET_NET2280 is not set
+ # CONFIG_USB_GADGET_GOKU is not set
+ # CONFIG_USB_GADGET_DUMMY_HCD is not set
+-CONFIG_USB_GADGET_DUALSPEED=y
++# CONFIG_USB_GADGET_DUALSPEED is not set
+ CONFIG_USB_ZERO=m
+-# CONFIG_USB_ZERO_HNPTEST is not set
+ CONFIG_USB_ETH=m
+ CONFIG_USB_ETH_RNDIS=y
+ # CONFIG_USB_GADGETFS is not set