v35
authorThomas Tanner <maemo@tannerlab.com>
Tue, 25 May 2010 08:02:22 +0000 (10:02 +0200)
committerThomas Tanner <maemo@tannerlab.com>
Tue, 25 May 2010 08:02:22 +0000 (10:02 +0200)
16 files changed:
kernel-power-2.6.28/debian/changelog
kernel-power-2.6.28/debian/control
kernel-power-2.6.28/debian/patches/bq24150-sniff.diff [new file with mode: 0644]
kernel-power-2.6.28/debian/patches/nokia-20101501+0m5-nosmart.diff [new file with mode: 0644]
kernel-power-2.6.28/debian/patches/nokia-20101501+0m5.diff [new file with mode: 0644]
kernel-power-2.6.28/debian/patches/series
kernel-power-2.6.28/debian/patches/usbhost3.diff [new file with mode: 0644]
kernel-power-2.6.28/debian/patches/usbhost4.diff [new file with mode: 0644]
kernel-power-2.6.28/debian/patches/usbhost_egoshin.diff
kernel-power-2.6.28/debian/patches/usbignpower.diff [new file with mode: 0644]
kernel-power-2.6.28/debian/patches/usbwhitelist.diff [new file with mode: 0644]
kernel-power-2.6.28/debian/patches/wl1251-monitor-mode.diff
kernel-power-2.6.28/debian/patches/wl1251-monitor-mode2.diff [deleted file]
kernel-power-2.6.28/debian/uhost.diff [deleted file]
kernel-power-2.6.28/debian/usbehci.diff [new file with mode: 0644]
kernel-power-2.6.28/debian/usbhost.diff [new file with mode: 0644]

index 396802e..cf329f7 100644 (file)
@@ -1,3 +1,12 @@
+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
@@ -279,6 +288,48 @@ kernel (2.6.28-2010maemo1) fremantle; urgency=low
 
  -- 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
index 710260c..1564d16 100644 (file)
@@ -20,6 +20,7 @@ Provides: kernel-feature-netfilter, kernel-feature-ipv6, kernel-feature-ext4, ke
   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,
diff --git a/kernel-power-2.6.28/debian/patches/bq24150-sniff.diff b/kernel-power-2.6.28/debian/patches/bq24150-sniff.diff
new file mode 100644 (file)
index 0000000..78d6c80
--- /dev/null
@@ -0,0 +1,52 @@
+--- 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");
diff --git a/kernel-power-2.6.28/debian/patches/nokia-20101501+0m5-nosmart.diff b/kernel-power-2.6.28/debian/patches/nokia-20101501+0m5-nosmart.diff
new file mode 100644 (file)
index 0000000..4b7d4ea
--- /dev/null
@@ -0,0 +1,15 @@
+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");
diff --git a/kernel-power-2.6.28/debian/patches/nokia-20101501+0m5.diff b/kernel-power-2.6.28/debian/patches/nokia-20101501+0m5.diff
new file mode 100644 (file)
index 0000000..0eeefb2
--- /dev/null
@@ -0,0 +1,285 @@
+--- 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);
index 0add089..f3eae46 100644 (file)
@@ -1,5 +1,6 @@
 nokia-20094803.3+0m5.diff
 nokia-20100903+0m5.diff
+nokia-20101501+0m5.diff
 maemo-build.diff
 unionfs-2.5.3.diff
 dm-loop.diff
@@ -23,6 +24,9 @@ mmcnames-fanoush.diff
 gethercharge.diff
 ondemand-avoid.diff
 overclock.diff
-#usbhost_egoshin.diff
+#usbwhitelist.diff
 #nootg.diff
 #usbhost2.diff
+#usbignpower.diff
+#bq24150-sniff.diff
+#usbhost4.diff
diff --git a/kernel-power-2.6.28/debian/patches/usbhost3.diff b/kernel-power-2.6.28/debian/patches/usbhost3.diff
new file mode 100644 (file)
index 0000000..1239e5b
--- /dev/null
@@ -0,0 +1,34 @@
+--- 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
diff --git a/kernel-power-2.6.28/debian/patches/usbhost4.diff b/kernel-power-2.6.28/debian/patches/usbhost4.diff
new file mode 100644 (file)
index 0000000..e74b475
--- /dev/null
@@ -0,0 +1,39 @@
+--- 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.
+  */
index 2c85263..d11ca50 100644 (file)
@@ -1,14 +1,3 @@
---- 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 @@
diff --git a/kernel-power-2.6.28/debian/patches/usbignpower.diff b/kernel-power-2.6.28/debian/patches/usbignpower.diff
new file mode 100644 (file)
index 0000000..78a845f
--- /dev/null
@@ -0,0 +1,28 @@
+--- 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;
diff --git a/kernel-power-2.6.28/debian/patches/usbwhitelist.diff b/kernel-power-2.6.28/debian/patches/usbwhitelist.diff
new file mode 100644 (file)
index 0000000..1022261
--- /dev/null
@@ -0,0 +1,11 @@
+--- 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
index 2673445..183e2f8 100644 (file)
@@ -1,5 +1,7 @@
---- 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,
diff --git a/kernel-power-2.6.28/debian/patches/wl1251-monitor-mode2.diff b/kernel-power-2.6.28/debian/patches/wl1251-monitor-mode2.diff
deleted file mode 100644 (file)
index 183e2f8..0000000
+++ /dev/null
@@ -1,265 +0,0 @@
-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,
diff --git a/kernel-power-2.6.28/debian/uhost.diff b/kernel-power-2.6.28/debian/uhost.diff
deleted file mode 100644 (file)
index 210f95f..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
---- 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
diff --git a/kernel-power-2.6.28/debian/usbehci.diff b/kernel-power-2.6.28/debian/usbehci.diff
new file mode 100644 (file)
index 0000000..d5d51c6
--- /dev/null
@@ -0,0 +1,12 @@
+--- 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
diff --git a/kernel-power-2.6.28/debian/usbhost.diff b/kernel-power-2.6.28/debian/usbhost.diff
new file mode 100644 (file)
index 0000000..210f95f
--- /dev/null
@@ -0,0 +1,85 @@
+--- 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