From c106e21bdeacb0a42375165bb65924ac23c1b539 Mon Sep 17 00:00:00 2001 From: Thomas Tanner Date: Tue, 25 May 2010 10:02:22 +0200 Subject: [PATCH] v35 --- kernel-power-2.6.28/debian/changelog | 51 ++++ kernel-power-2.6.28/debian/control | 1 + .../debian/patches/bq24150-sniff.diff | 52 ++++ .../debian/patches/nokia-20101501+0m5-nosmart.diff | 15 ++ .../debian/patches/nokia-20101501+0m5.diff | 285 ++++++++++++++++++++ kernel-power-2.6.28/debian/patches/series | 6 +- kernel-power-2.6.28/debian/patches/usbhost3.diff | 34 +++ kernel-power-2.6.28/debian/patches/usbhost4.diff | 39 +++ .../debian/patches/usbhost_egoshin.diff | 11 - .../debian/patches/usbignpower.diff | 28 ++ .../debian/patches/usbwhitelist.diff | 11 + .../debian/patches/wl1251-monitor-mode.diff | 163 ++++++++++- .../debian/patches/wl1251-monitor-mode2.diff | 265 ------------------ kernel-power-2.6.28/debian/uhost.diff | 85 ------ kernel-power-2.6.28/debian/usbehci.diff | 12 + kernel-power-2.6.28/debian/usbhost.diff | 85 ++++++ 16 files changed, 772 insertions(+), 371 deletions(-) create mode 100644 kernel-power-2.6.28/debian/patches/bq24150-sniff.diff create mode 100644 kernel-power-2.6.28/debian/patches/nokia-20101501+0m5-nosmart.diff create mode 100644 kernel-power-2.6.28/debian/patches/nokia-20101501+0m5.diff create mode 100644 kernel-power-2.6.28/debian/patches/usbhost3.diff create mode 100644 kernel-power-2.6.28/debian/patches/usbhost4.diff create mode 100644 kernel-power-2.6.28/debian/patches/usbignpower.diff create mode 100644 kernel-power-2.6.28/debian/patches/usbwhitelist.diff delete mode 100644 kernel-power-2.6.28/debian/patches/wl1251-monitor-mode2.diff delete mode 100644 kernel-power-2.6.28/debian/uhost.diff create mode 100644 kernel-power-2.6.28/debian/usbehci.diff create mode 100644 kernel-power-2.6.28/debian/usbhost.diff diff --git a/kernel-power-2.6.28/debian/changelog b/kernel-power-2.6.28/debian/changelog index 396802e..cf329f7 100644 --- a/kernel-power-2.6.28/debian/changelog +++ b/kernel-power-2.6.28/debian/changelog @@ -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 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 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 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 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 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 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 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 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 diff --git a/kernel-power-2.6.28/debian/control b/kernel-power-2.6.28/debian/control index 710260c..1564d16 100644 --- a/kernel-power-2.6.28/debian/control +++ b/kernel-power-2.6.28/debian/control @@ -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 index 0000000..78d6c80 --- /dev/null +++ b/kernel-power-2.6.28/debian/patches/bq24150-sniff.diff @@ -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 index 0000000..4b7d4ea --- /dev/null +++ b/kernel-power-2.6.28/debian/patches/nokia-20101501+0m5-nosmart.diff @@ -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 index 0000000..0eeefb2 --- /dev/null +++ b/kernel-power-2.6.28/debian/patches/nokia-20101501+0m5.diff @@ -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 + #include + #include ++#include + + #include + +@@ -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 + #include + #include ++#include + #include + #include + #include +@@ -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); diff --git a/kernel-power-2.6.28/debian/patches/series b/kernel-power-2.6.28/debian/patches/series index 0add089..f3eae46 100644 --- a/kernel-power-2.6.28/debian/patches/series +++ b/kernel-power-2.6.28/debian/patches/series @@ -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 index 0000000..1239e5b --- /dev/null +++ b/kernel-power-2.6.28/debian/patches/usbhost3.diff @@ -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 index 0000000..e74b475 --- /dev/null +++ b/kernel-power-2.6.28/debian/patches/usbhost4.diff @@ -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. + */ diff --git a/kernel-power-2.6.28/debian/patches/usbhost_egoshin.diff b/kernel-power-2.6.28/debian/patches/usbhost_egoshin.diff index 2c85263..d11ca50 100644 --- a/kernel-power-2.6.28/debian/patches/usbhost_egoshin.diff +++ b/kernel-power-2.6.28/debian/patches/usbhost_egoshin.diff @@ -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 index 0000000..78a845f --- /dev/null +++ b/kernel-power-2.6.28/debian/patches/usbignpower.diff @@ -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 index 0000000..1022261 --- /dev/null +++ b/kernel-power-2.6.28/debian/patches/usbwhitelist.diff @@ -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 + diff --git a/kernel-power-2.6.28/debian/patches/wl1251-monitor-mode.diff b/kernel-power-2.6.28/debian/patches/wl1251-monitor-mode.diff index 2673445..183e2f8 100644 --- a/kernel-power-2.6.28/debian/patches/wl1251-monitor-mode.diff +++ b/kernel-power-2.6.28/debian/patches/wl1251-monitor-mode.diff @@ -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; } @@ -59,8 +61,10 @@ 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, @@ -71,8 +75,19 @@ 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; @@ -89,8 +104,10 @@ 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; @@ -104,7 +121,40 @@ 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; @@ -118,3 +168,98 @@ 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 index 183e2f8..0000000 --- a/kernel-power-2.6.28/debian/patches/wl1251-monitor-mode2.diff +++ /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 index 210f95f..0000000 --- a/kernel-power-2.6.28/debian/uhost.diff +++ /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 index 0000000..d5d51c6 --- /dev/null +++ b/kernel-power-2.6.28/debian/usbehci.diff @@ -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 index 0000000..210f95f --- /dev/null +++ b/kernel-power-2.6.28/debian/usbhost.diff @@ -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 -- 1.7.9.5