aboutsummaryrefslogtreecommitdiffstats
diff options
authorGreg Kroah-Hartman <gregkh@suse.de>2010-01-27 18:48:51 -0800
committerGreg Kroah-Hartman <gregkh@suse.de>2010-01-27 18:48:51 -0800
commit81178581cf2a7491a998572b2bae72a0bf4ff5b6 (patch)
treefbb9ef5637c02011dc4919e812c1f860dca71919
parentf2ec6d71bba130efa1a586362ec0871b831fb952 (diff)
downloadpatches-81178581cf2a7491a998572b2bae72a0bf4ff5b6.tar.gz
more patches
-rw-r--r--series17
-rw-r--r--staging/staging-otus-fix-memory-leak.patch37
-rw-r--r--staging/staging-r8187se-fix-a-faulty-if-and-do-additional-cleanups.patch591
-rw-r--r--staging/staging-usbip-cleanup-removing-dead-code.patch79
-rw-r--r--staging/staging-usbip-minor-code-cleanup.patch32
-rw-r--r--staging/staging-usbip-seperate-usbip-config-debug-from-config_usb_debug.patch83
-rw-r--r--staging/staging-usbip-use-print_hex_dump-instead-of-open-coding-it.patch54
-rw-r--r--usb.current/usb-g_multi-fix-config_usb_g_multi_rndis-usage.patch34
-rw-r--r--usb.current/usb-otg-kconfig-let-usb_otg_utils-select-usb_ulpi-option.patch41
-rw-r--r--usb/usb-musb-add-context-save-and-restore-support.patch397
-rw-r--r--usb/usb-musb-deprecate-what-we-don-t-use.patch58
-rw-r--r--usb/usb-musb-get-rid-of-omap_readl-writel.patch227
-rw-r--r--usb/usb-musb-only-print-info-message-if-probe-is-successful.patch61
-rw-r--r--usb/usb-musb-tusb6010-use-resource_size.patch28
-rw-r--r--usb/usb-musb-unmap-base-if-we-can-t-probe.patch41
-rw-r--r--usb/usb-musb-we-already-tested-for-dyn_fifo.patch46
-rw-r--r--usb/usb-s3c-hsotg-replace-deprecated-dma_sync_single.patch56
17 files changed, 1882 insertions, 0 deletions
diff --git a/series b/series
index 68cb91c3efe144..280d7152356047 100644
--- a/series
+++ b/series
@@ -28,6 +28,8 @@ usb.current/usb-serial-add-usbid-for-dell-wwan-card-to-sierra.c.patch
usb.current/kfifo-make-kfifo_initialized-work-after-kfifo_free.patch
usb.current/usb-fhci-fix-build-after-kfifo-rework.patch
usb.current/kfifo-don-t-use-integer-as-null-pointer.patch
+usb.current/usb-g_multi-fix-config_usb_g_multi_rndis-usage.patch
+usb.current/usb-otg-kconfig-let-usb_otg_utils-select-usb_ulpi-option.patch
@@ -265,6 +267,14 @@ usb/usb-trivial-missing-newline-in-usb-core-warning-message.patch
usb/usb-s3c-hsotg-staticise-non-exported-functions.patch
usb/usb-usbfs_snoop-add-data-logging-back-in.patch
usb/usb-remove-obsolete-config-in-kernel-source-usb_hcd_dma.patch
+usb/usb-musb-add-context-save-and-restore-support.patch
+usb/usb-musb-get-rid-of-omap_readl-writel.patch
+usb/usb-musb-we-already-tested-for-dyn_fifo.patch
+usb/usb-musb-deprecate-what-we-don-t-use.patch
+usb/usb-musb-tusb6010-use-resource_size.patch
+usb/usb-musb-unmap-base-if-we-can-t-probe.patch
+usb/usb-musb-only-print-info-message-if-probe-is-successful.patch
+usb/usb-s3c-hsotg-replace-deprecated-dma_sync_single.patch
@@ -495,5 +505,12 @@ staging/staging-et131x-kill-the-rxmac-error_reg_t.patch
staging/staging-et131x-kill-off-the-rxmac-ctrl-type.patch
staging/staging-et131x_kill-mac_stat_t.patch
staging/staging-hv-remove-xen-legacy-code-and-check-for-hyper-v.patch
+staging/staging-usbip-minor-code-cleanup.patch
+staging/staging-usbip-use-print_hex_dump-instead-of-open-coding-it.patch
+staging/staging-usbip-cleanup-removing-dead-code.patch
+staging/staging-usbip-seperate-usbip-config-debug-from-config_usb_debug.patch
+staging/staging-otus-fix-memory-leak.patch
+staging/staging-r8187se-fix-a-faulty-if-and-do-additional-cleanups.patch
+
diff --git a/staging/staging-otus-fix-memory-leak.patch b/staging/staging-otus-fix-memory-leak.patch
new file mode 100644
index 00000000000000..f4eade7f26adc3
--- /dev/null
+++ b/staging/staging-otus-fix-memory-leak.patch
@@ -0,0 +1,37 @@
+From dcb314@hotmail.com Wed Jan 27 18:30:27 2010
+From: d binderman <dcb314@hotmail.com>
+Date: Tue, 26 Jan 2010 10:00:25 +0000
+Subject: Staging: otus: fix memory leak
+To: <gregkh@suse.de>
+Message-ID: <BLU108-W17B331BF278377532631D79C5E0@phx.gbl>
+
+
+Fix memory leak in drivers/staging/otus
+
+Signed-off-by: David Binderman <dcb314@hotmail.com>
+
+---
+ drivers/staging/otus/ioctl.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+--- a/drivers/staging/otus/ioctl.c
++++ b/drivers/staging/otus/ioctl.c
+@@ -866,15 +866,15 @@ int usbdrvwext_giwscan(struct net_device
+ char *current_ev = extra;
+ char *end_buf;
+ int i;
+- /* struct zsBssList BssList; */
+- struct zsBssListV1 *pBssList = kmalloc(sizeof(struct zsBssListV1),
+- GFP_KERNEL);
+ /* BssList = wd->sta.pBssList; */
+ /* zmw_get_wlan_dev(dev); */
+
+ if (macp->DeviceOpened != 1)
+ return 0;
+
++ /* struct zsBssList BssList; */
++ struct zsBssListV1 *pBssList = kmalloc(sizeof(struct zsBssListV1),
++ GFP_KERNEL);
+ if (data->length == 0)
+ end_buf = extra + IW_SCAN_MAX_DATA;
+ else
diff --git a/staging/staging-r8187se-fix-a-faulty-if-and-do-additional-cleanups.patch b/staging/staging-r8187se-fix-a-faulty-if-and-do-additional-cleanups.patch
new file mode 100644
index 00000000000000..d155890e62bcc9
--- /dev/null
+++ b/staging/staging-r8187se-fix-a-faulty-if-and-do-additional-cleanups.patch
@@ -0,0 +1,591 @@
+From Larry.Finger@lwfinger.net Wed Jan 27 18:31:24 2010
+From: Larry Finger <Larry.Finger@lwfinger.net>
+Date: Mon, 25 Jan 2010 13:11:49 -0600
+Subject: Staging: r8187se: Fix a faulty if and do additional cleanups
+To: Greg Kroah-Hartman <gregkh@suse.de>
+Cc: devel@driverdev.osuosl.org
+Message-ID: <4b5decf5.ZLFf/PQzag1JNlAo%Larry.Finger@lwfinger.net>
+
+
+Cleanup the driver and fix a faulty if statement.
+
+Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
+Tested by: Bernhard Schiffner <bernhard@schiffner-limbach.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/staging/rtl8187se/r8180_core.c | 303 +++++++++++++--------------------
+ 1 file changed, 121 insertions(+), 182 deletions(-)
+
+--- a/drivers/staging/rtl8187se/r8180_core.c
++++ b/drivers/staging/rtl8187se/r8180_core.c
+@@ -41,13 +41,6 @@
+
+ #include "ieee80211/dot11d.h"
+
+-#ifndef PCI_VENDOR_ID_BELKIN
+- #define PCI_VENDOR_ID_BELKIN 0x1799
+-#endif
+-#ifndef PCI_VENDOR_ID_DLINK
+- #define PCI_VENDOR_ID_DLINK 0x1186
+-#endif
+-
+ static struct pci_device_id rtl8180_pci_id_tbl[] __devinitdata = {
+ {
+ .vendor = PCI_VENDOR_ID_REALTEK,
+@@ -1421,11 +1414,9 @@ u16 N_DBPSOfRate(u16 DataRate)
+ return N_DBPS;
+ }
+
+-//{by amy 080312
+ //
+ // Description:
+ // For Netgear case, they want good-looking singal strength.
+-// 2004.12.05, by rcnjko.
+ //
+ long NetgearSignalStrengthTranslate(long LastSS, long CurrSS)
+ {
+@@ -1481,7 +1472,6 @@ long TranslateToDbm8185(u8 SignalStrengt
+ // This is different with PerformSignalSmoothing8185 in smoothing fomula.
+ // No dramatic adjustion is apply because dynamic mechanism need some degree
+ // of correctness. Ported from 8187B.
+-// 2007-02-26, by Bruce.
+ //
+ void PerformUndecoratedSignalSmoothing8185(struct r8180_priv *priv,
+ bool bCckRate)
+@@ -1502,7 +1492,6 @@ void PerformUndecoratedSignalSmoothing81
+ priv->CurCCKRSSI = 0;
+ }
+
+-//by amy 080312}
+
+ /* This is rough RX isr handling routine*/
+ void rtl8180_rx(struct net_device *dev)
+@@ -1638,7 +1627,7 @@ void rtl8180_rx(struct net_device *dev)
+ }
+
+ signal=(unsigned char)(((*(priv->rxringtail+3))& (0x00ff0000))>>16);
+- signal=(signal&0xfe)>>1; // Modify by hikaru 6.6
++ signal = (signal & 0xfe) >> 1;
+
+ quality=(unsigned char)((*(priv->rxringtail+3)) & (0xff));
+
+@@ -1652,7 +1641,6 @@ void rtl8180_rx(struct net_device *dev)
+
+ stats.rate = rtl8180_rate2rate(rate);
+ Antenna = (((*(priv->rxringtail +3))& (0x00008000)) == 0 )? 0:1 ;
+-//by amy for antenna
+ if(!rtl8180_IsWirelessBMode(stats.rate))
+ { // OFDM rate.
+
+@@ -1691,11 +1679,10 @@ void rtl8180_rx(struct net_device *dev)
+ RXAGC=(95-RXAGC)*100/65;
+ }
+ priv->SignalStrength = (u8)RXAGC;
+- priv->RecvSignalPower = RxAGC_dBm ; // It can use directly by SD3 CMLin
++ priv->RecvSignalPower = RxAGC_dBm;
+ priv->RxPower = rxpower;
+ priv->RSSI = RSSI;
+-//{by amy 080312
+- // SQ translation formular is provided by SD3 DZ. 2006.06.27, by rcnjko.
++ /* SQ translation formula is provided by SD3 DZ. 2006.06.27 */
+ if(quality >= 127)
+ quality = 1;//0; //0 will cause epc to show signal zero , walk aroud now;
+ else if(quality < 27)
+@@ -1712,7 +1699,6 @@ void rtl8180_rx(struct net_device *dev)
+ // printk("==========================>rx : RXAGC is %d,signalstrength is %d\n",RXAGC,stats.signalstrength);
+ stats.rssi = priv->wstats.qual.qual = priv->SignalQuality;
+ stats.noise = priv->wstats.qual.noise = 100 - priv ->wstats.qual.qual;
+-//by amy 080312}
+ bHwError = (((*(priv->rxringtail))& (0x00000fff)) == 4080)| (((*(priv->rxringtail))& (0x04000000)) != 0 )
+ | (((*(priv->rxringtail))& (0x08000000)) != 0 )| (((~(*(priv->rxringtail)))& (0x10000000)) != 0 )| (((~(*(priv->rxringtail)))& (0x20000000)) != 0 );
+ bCRC = ((*(priv->rxringtail)) & (0x00002000)) >> 13;
+@@ -1725,11 +1711,12 @@ void rtl8180_rx(struct net_device *dev)
+ (eqMacAddr(priv->ieee80211->current_network.bssid, (fc & IEEE80211_FCTL_TODS)? hdr->addr1 : (fc & IEEE80211_FCTL_FROMDS )? hdr->addr2 : hdr->addr3))
+ && (!bHwError) && (!bCRC)&& (!bICV))
+ {
+-//by amy 080312
+- // Perform signal smoothing for dynamic mechanism on demand.
+- // This is different with PerformSignalSmoothing8185 in smoothing fomula.
+- // No dramatic adjustion is apply because dynamic mechanism need some degree
+- // of correctness. 2007.01.23, by shien chang.
++ /* Perform signal smoothing for dynamic
++ * mechanism on demand. This is different
++ * with PerformSignalSmoothing8185 in smoothing
++ * fomula. No dramatic adjustion is apply
++ * because dynamic mechanism need some degree
++ * of correctness. */
+ PerformUndecoratedSignalSmoothing8185(priv,bCckRate);
+ //
+ // For good-looking singal strength.
+@@ -1749,12 +1736,9 @@ void rtl8180_rx(struct net_device *dev)
+
+ // Figure out which antenna that received the lasted packet.
+ priv->LastRxPktAntenna = Antenna ? 1 : 0; // 0: aux, 1: main.
+-//by amy 080312
+ SwAntennaDiversityRxOk8185(dev, priv->SignalStrength);
+ }
+
+-//by amy for antenna
+-#ifndef DUMMY_RX
+ if(first){
+ if(!priv->rx_skb_complete){
+ /* seems that HW sometimes fails to reiceve and
+@@ -1810,19 +1794,12 @@ void rtl8180_rx(struct net_device *dev)
+ if(last && !priv->rx_skb_complete){
+ if(priv->rx_skb->len > 4)
+ skb_trim(priv->rx_skb,priv->rx_skb->len-4);
+-#ifndef RX_DONT_PASS_UL
+ if(!ieee80211_rtl_rx(priv->ieee80211,
+- priv->rx_skb, &stats)){
+-#endif // RX_DONT_PASS_UL
+-
++ priv->rx_skb, &stats))
+ dev_kfree_skb_any(priv->rx_skb);
+-#ifndef RX_DONT_PASS_UL
+- }
+-#endif
+ priv->rx_skb_complete=1;
+ }
+
+-#endif //DUMMY_RX
+ pci_dma_sync_single_for_device(priv->pdev,
+ priv->rxbuffer->dma,
+ priv->rxbuffersize * \
+@@ -2056,7 +2033,7 @@ short rtl8180_tx(struct net_device *dev,
+ u16 RtsDur = 0;
+ u16 ThisFrameTime = 0;
+ u16 TxDescDuration = 0;
+- u8 ownbit_flag = false; //added by david woo for sync Tx, 2007.12.14
++ u8 ownbit_flag = false;
+
+ switch(priority) {
+ case MANAGE_PRIORITY:
+@@ -2123,7 +2100,8 @@ short rtl8180_tx(struct net_device *dev,
+ //YJ,add,080828,for Keep alive
+ priv->NumTxUnicast++;
+
+- // Figure out ACK rate according to BSS basic rate and Tx rate, 2006.03.08 by rcnjko.
++ /* Figure out ACK rate according to BSS basic rate
++ * and Tx rate. */
+ AckTime = ComputeTxTime(14, 10,0, 0); // AckCTSLng = 14 use 1M bps send
+
+ if ( ((len + sCrcLng) > priv->rts) && priv->rts )
+@@ -2206,7 +2184,7 @@ short rtl8180_tx(struct net_device *dev,
+ *tail |= (1<<15); /* no encrypt */
+
+ if(remain==len && !descfrag) {
+- ownbit_flag = false; //added by david woo,2007.12.14
++ ownbit_flag = false;
+ *tail = *tail| (1<<29) ; //fist segment of the packet
+ *tail = *tail |(len);
+ } else {
+@@ -2556,27 +2534,16 @@ void watch_dog_adaptive(unsigned long da
+ }
+
+ // Tx High Power Mechanism.
+-#ifdef HIGH_POWER
+ if(CheckHighPower((struct net_device *)data))
+- {
+ queue_work(priv->ieee80211->wq, (void *)&priv->ieee80211->tx_pw_wq);
+- }
+-#endif
+
+ // Tx Power Tracking on 87SE.
+-#ifdef TX_TRACK
+- //if( priv->bTxPowerTrack ) //lzm mod 080826
+ if (CheckTxPwrTracking((struct net_device *)data))
+ TxPwrTracking87SE((struct net_device *)data);
+-#endif
+
+ // Perform DIG immediately.
+-#ifdef SW_DIG
+ if(CheckDig((struct net_device *)data) == true)
+- {
+ queue_work(priv->ieee80211->wq, (void *)&priv->ieee80211->hw_dig_wq);
+- }
+-#endif
+ rtl8180_watch_dog((struct net_device *)data);
+
+ queue_work(priv->ieee80211->wq, (void *)&priv->ieee80211->GPIOChangeRFWorkItem);
+@@ -2747,10 +2714,8 @@ short rtl8180_init(struct net_device *de
+ priv->TxPollingTimes = 0;//lzm add 080826
+ priv->bLeisurePs = true;
+ priv->dot11PowerSaveMode = eActive;
+-//by amy for antenna
+ priv->AdMinCheckPeriod = 5;
+ priv->AdMaxCheckPeriod = 10;
+-// Lower signal strength threshold to fit the HW participation in antenna diversity. +by amy 080312
+ priv->AdMaxRxSsThreshold = 30;//60->30
+ priv->AdRxSsThreshold = 20;//50->20
+ priv->AdCheckPeriod = priv->AdMinCheckPeriod;
+@@ -2765,8 +2730,6 @@ short rtl8180_init(struct net_device *de
+ init_timer(&priv->SwAntennaDiversityTimer);
+ priv->SwAntennaDiversityTimer.data = (unsigned long)dev;
+ priv->SwAntennaDiversityTimer.function = (void *)SwAntennaDiversityTimerCallback;
+-//by amy for antenna
+-//{by amy 080312
+ priv->bDigMechanism = 1;
+ priv->InitialGain = 6;
+ priv->bXtalCalibration = false;
+@@ -2803,58 +2766,63 @@ short rtl8180_init(struct net_device *de
+ priv->NumTxUnicast = 0;
+ priv->keepAliveLevel = DEFAULT_KEEP_ALIVE_LEVEL;
+ priv->PowerProfile = POWER_PROFILE_AC;
+- priv->CurrRetryCnt=0;
+- priv->LastRetryCnt=0;
+- priv->LastTxokCnt=0;
+- priv->LastRxokCnt=0;
+- priv->LastRetryRate=0;
+- priv->bTryuping=0;
+- priv->CurrTxRate=0;
+- priv->CurrRetryRate=0;
+- priv->TryupingCount=0;
+- priv->TryupingCountNoData=0;
+- priv->TryDownCountLowData=0;
+- priv->LastTxOKBytes=0;
+- priv->LastFailTxRate=0;
+- priv->LastFailTxRateSS=0;
+- priv->FailTxRateCount=0;
+- priv->LastTxThroughput=0;
+- priv->NumTxOkBytesTotal=0;
++ priv->CurrRetryCnt = 0;
++ priv->LastRetryCnt = 0;
++ priv->LastTxokCnt = 0;
++ priv->LastRxokCnt = 0;
++ priv->LastRetryRate = 0;
++ priv->bTryuping = 0;
++ priv->CurrTxRate = 0;
++ priv->CurrRetryRate = 0;
++ priv->TryupingCount = 0;
++ priv->TryupingCountNoData = 0;
++ priv->TryDownCountLowData = 0;
++ priv->LastTxOKBytes = 0;
++ priv->LastFailTxRate = 0;
++ priv->LastFailTxRateSS = 0;
++ priv->FailTxRateCount = 0;
++ priv->LastTxThroughput = 0;
++ priv->NumTxOkBytesTotal = 0;
+ priv->ForcedDataRate = 0;
+ priv->RegBModeGainStage = 1;
+
+- priv->promisc = (dev->flags & IFF_PROMISC) ? 1:0;
++ priv->promisc = (dev->flags & IFF_PROMISC) ? 1 : 0;
+ spin_lock_init(&priv->irq_lock);
+ spin_lock_init(&priv->irq_th_lock);
+ spin_lock_init(&priv->tx_lock);
+ spin_lock_init(&priv->ps_lock);
+ spin_lock_init(&priv->rf_ps_lock);
+- sema_init(&priv->wx_sem,1);
+- sema_init(&priv->rf_state,1);
+- INIT_WORK(&priv->reset_wq,(void*) rtl8180_restart_wq);
+- INIT_WORK(&priv->tx_irq_wq,(void*) rtl8180_tx_irq_wq);
+- INIT_DELAYED_WORK(&priv->ieee80211->hw_wakeup_wq,(void*) rtl8180_hw_wakeup_wq);
+- INIT_DELAYED_WORK(&priv->ieee80211->hw_sleep_wq,(void*) rtl8180_hw_sleep_wq);
+- INIT_WORK(&priv->ieee80211->wmm_param_update_wq,(void*) rtl8180_wmm_param_update);
+- INIT_DELAYED_WORK(&priv->ieee80211->rate_adapter_wq,(void*)rtl8180_rate_adapter);//+by amy 080312
+- INIT_DELAYED_WORK(&priv->ieee80211->hw_dig_wq,(void*)rtl8180_hw_dig_wq);//+by amy 080312
+- INIT_DELAYED_WORK(&priv->ieee80211->tx_pw_wq,(void*)rtl8180_tx_pw_wq);//+by amy 080312
+-
+- INIT_DELAYED_WORK(&priv->ieee80211->GPIOChangeRFWorkItem,(void*) GPIOChangeRFWorkItemCallBack);
+-
++ sema_init(&priv->wx_sem, 1);
++ sema_init(&priv->rf_state, 1);
++ INIT_WORK(&priv->reset_wq, (void *)rtl8180_restart_wq);
++ INIT_WORK(&priv->tx_irq_wq, (void *)rtl8180_tx_irq_wq);
++ INIT_DELAYED_WORK(&priv->ieee80211->hw_wakeup_wq,
++ (void *)rtl8180_hw_wakeup_wq);
++ INIT_DELAYED_WORK(&priv->ieee80211->hw_sleep_wq,
++ (void *)rtl8180_hw_sleep_wq);
++ INIT_WORK(&priv->ieee80211->wmm_param_update_wq,
++ (void *)rtl8180_wmm_param_update);
++ INIT_DELAYED_WORK(&priv->ieee80211->rate_adapter_wq,
++ (void *)rtl8180_rate_adapter);
++ INIT_DELAYED_WORK(&priv->ieee80211->hw_dig_wq,
++ (void *)rtl8180_hw_dig_wq);
++ INIT_DELAYED_WORK(&priv->ieee80211->tx_pw_wq,
++ (void *)rtl8180_tx_pw_wq);
++ INIT_DELAYED_WORK(&priv->ieee80211->GPIOChangeRFWorkItem,
++ (void *) GPIOChangeRFWorkItemCallBack);
+ tasklet_init(&priv->irq_rx_tasklet,
+ (void(*)(unsigned long)) rtl8180_irq_rx_tasklet,
+ (unsigned long)priv);
+
+- init_timer(&priv->watch_dog_timer);
++ init_timer(&priv->watch_dog_timer);
+ priv->watch_dog_timer.data = (unsigned long)dev;
+ priv->watch_dog_timer.function = watch_dog_adaptive;
+
+- init_timer(&priv->rateadapter_timer);
+- priv->rateadapter_timer.data = (unsigned long)dev;
+- priv->rateadapter_timer.function = timer_rate_adaptive;
+- priv->RateAdaptivePeriod= RATE_ADAPTIVE_TIMER_PERIOD;
+- priv->bEnhanceTxPwr=false;
++ init_timer(&priv->rateadapter_timer);
++ priv->rateadapter_timer.data = (unsigned long)dev;
++ priv->rateadapter_timer.function = timer_rate_adaptive;
++ priv->RateAdaptivePeriod = RATE_ADAPTIVE_TIMER_PERIOD;
++ priv->bEnhanceTxPwr = false;
+
+ priv->ieee80211->softmac_hard_start_xmit = rtl8180_hard_start_xmit;
+ priv->ieee80211->set_chan = rtl8180_set_chan;
+@@ -2877,30 +2845,28 @@ short rtl8180_init(struct net_device *de
+
+ priv->CSMethod = (0x01 << 29);
+
+- priv->TransmitConfig =
+- 1<<TCR_DurProcMode_OFFSET | //for RTL8185B, duration setting by HW
+- (7<<TCR_MXDMA_OFFSET) | // Max DMA Burst Size per Tx DMA Burst, 7: reservied.
+- (priv->ShortRetryLimit<<TCR_SRL_OFFSET) | // Short retry limit
+- (priv->LongRetryLimit<<TCR_LRL_OFFSET) | // Long retry limit
+- (0 ? TCR_SAT : 0); // FALSE: HW provies PLCP length and LENGEXT, TURE: SW proiveds them
+-
+- priv->ReceiveConfig =
+- RCR_AMF | RCR_ADF | //accept management/data
+- RCR_ACF | //accept control frame for SW AP needs PS-poll, 2005.07.07, by rcnjko.
+- RCR_AB | RCR_AM | RCR_APM | //accept BC/MC/UC
+- (7<<RCR_MXDMA_OFFSET) | // Max DMA Burst Size per Rx DMA Burst, 7: unlimited.
+- (priv->EarlyRxThreshold<<RCR_FIFO_OFFSET) | // Rx FIFO Threshold, 7: No Rx threshold.
+- (priv->EarlyRxThreshold == 7 ? RCR_ONLYERLPKT:0);
++ priv->TransmitConfig = TCR_DurProcMode_OFFSET |
++ (7<<TCR_MXDMA_OFFSET) |
++ (priv->ShortRetryLimit<<TCR_SRL_OFFSET) |
++ (priv->LongRetryLimit<<TCR_LRL_OFFSET) |
++ (0 ? TCR_SAT : 0);
++
++ priv->ReceiveConfig = RCR_AMF | RCR_ADF | RCR_ACF |
++ RCR_AB | RCR_AM | RCR_APM |
++ (7<<RCR_MXDMA_OFFSET) |
++ (priv->EarlyRxThreshold<<RCR_FIFO_OFFSET) |
++ (priv->EarlyRxThreshold == 7 ?
++ RCR_ONLYERLPKT : 0);
+
+ priv->IntrMask = IMR_TMGDOK | IMR_TBDER | IMR_THPDER |
+- IMR_THPDER | IMR_THPDOK |
+- IMR_TVODER | IMR_TVODOK |
+- IMR_TVIDER | IMR_TVIDOK |
+- IMR_TBEDER | IMR_TBEDOK |
+- IMR_TBKDER | IMR_TBKDOK |
+- IMR_RDU | // To handle the defragmentation not enough Rx descriptors case. Annie, 2006-03-27.
+- IMR_RER | IMR_ROK |
+- IMR_RQoSOK; // <NOTE> ROK and RQoSOK are mutually exclusive, so, we must handle RQoSOK interrupt to receive QoS frames, 2005.12.09, by rcnjko.
++ IMR_THPDER | IMR_THPDOK |
++ IMR_TVODER | IMR_TVODOK |
++ IMR_TVIDER | IMR_TVIDOK |
++ IMR_TBEDER | IMR_TBEDOK |
++ IMR_TBKDER | IMR_TBKDOK |
++ IMR_RDU |
++ IMR_RER | IMR_ROK |
++ IMR_RQoSOK;
+
+ priv->InitialGain = 6;
+
+@@ -2968,25 +2934,22 @@ short rtl8180_init(struct net_device *de
+ for (i = 1, j = 0; i < 14; i += 2, j++) {
+ word = eprom_read(dev, EPROM_TXPW_OFDM_CH1_2 + j);
+ priv->chtxpwr_ofdm[i] = word & 0xff;
+- priv->chtxpwr_ofdm[i+1] = (word & 0xff00)>>8;
++ priv->chtxpwr_ofdm[i+1] = (word & 0xff00) >> 8;
+ }
+
+- //3Read crystal calibtration and thermal meter indication on 87SE.
+-
+- // By SD3 SY's request. Added by Roger, 2007.12.11.
++ /* 3Read crystal calibtration and thermal meter indication on 87SE. */
+
+- tmpu16 = eprom_read(dev, EEPROM_RSV>>1);
+-
+- // Crystal calibration for Xin and Xout resp.
+- priv->XtalCal_Xout = tmpu16 & EEPROM_XTAL_CAL_XOUT_MASK; // 0~7.5pF
+- priv->XtalCal_Xin = (tmpu16 & EEPROM_XTAL_CAL_XIN_MASK)>>4; // 0~7.5pF
+- if((tmpu16 & EEPROM_XTAL_CAL_ENABLE)>>12)
+- priv->bXtalCalibration = true;
+-
+- // Thermal meter reference indication.
+- priv->ThermalMeter = (u8)((tmpu16 & EEPROM_THERMAL_METER_MASK)>>8);
+- if((tmpu16 & EEPROM_THERMAL_METER_ENABLE)>>13)
+- priv->bTxPowerTrack = true;
++ tmpu16 = eprom_read(dev, EEPROM_RSV >> 1);
++ /* Crystal calibration for Xin and Xout resp. */
++ priv->XtalCal_Xout = tmpu16 & EEPROM_XTAL_CAL_XOUT_MASK;
++ priv->XtalCal_Xin = (tmpu16 & EEPROM_XTAL_CAL_XIN_MASK) >> 4;
++ if ((tmpu16 & EEPROM_XTAL_CAL_ENABLE) >> 12)
++ priv->bXtalCalibration = true;
++
++ /* Thermal meter reference indication. */
++ priv->ThermalMeter = (u8)((tmpu16 & EEPROM_THERMAL_METER_MASK) >> 8);
++ if ((tmpu16 & EEPROM_THERMAL_METER_ENABLE) >> 13)
++ priv->bTxPowerTrack = true;
+
+ word = eprom_read(dev,EPROM_TXPW_BASE);
+ priv->cck_txpwr_base = word & 0xf;
+@@ -3010,7 +2973,6 @@ short rtl8180_init(struct net_device *de
+ priv->rf_set_chan = rtl8225z2_rf_set_chan;
+ priv->rf_set_sens = NULL;
+
+-
+ if (0!=alloc_rx_desc_ring(dev, priv->rxbuffersize, priv->rxringcount))
+ return -ENOMEM;
+
+@@ -3042,11 +3004,7 @@ short rtl8180_init(struct net_device *de
+ TX_BEACON_RING_ADDR))
+ return -ENOMEM;
+
+-#if !defined(SA_SHIRQ)
+ if(request_irq(dev->irq, (void *)rtl8180_interrupt, IRQF_SHARED, dev->name, dev)){
+-#else
+- if(request_irq(dev->irq, (void *)rtl8180_interrupt, SA_SHIRQ, dev->name, dev)){
+-#endif
+ DMESGE("Error allocating IRQ %d",dev->irq);
+ return -1;
+ }else{
+@@ -3335,7 +3293,6 @@ static struct net_device_stats *rtl8180_
+ }
+ //
+ // Change current and default preamble mode.
+-// 2005.01.06, by rcnjko.
+ //
+ bool
+ MgntActSet_802_11_PowerSaveMode(
+@@ -3454,7 +3411,6 @@ void rtl8180_watch_dog(struct net_device
+ MgntLinkKeepAlive(priv);
+
+ //YJ,add,080828,for LPS
+-#ifdef ENABLE_LPS
+ if (priv->PowerProfile == POWER_PROFILE_BATTERY)
+ priv->bLeisurePs = true;
+ else if (priv->PowerProfile == POWER_PROFILE_AC) {
+@@ -3464,7 +3420,6 @@ void rtl8180_watch_dog(struct net_device
+
+ if(priv->ieee80211->state == IEEE80211_LINKED){
+ priv->link_detect.NumRxOkInPeriod = priv->ieee80211->NumRxDataInPeriod;
+- //printk("TxOk=%d RxOk=%d\n", priv->link_detect.NumTxOkInPeriod, priv->link_detect.NumRxOkInPeriod);
+ if( priv->link_detect.NumRxOkInPeriod> 666 ||
+ priv->link_detect.NumTxOkInPeriod> 666 ) {
+ bBusyTraffic = true;
+@@ -3481,7 +3436,6 @@ void rtl8180_watch_dog(struct net_device
+ LeisurePSLeave(priv);
+ } else
+ LeisurePSLeave(priv);
+-#endif
+ priv->link_detect.bBusyTraffic = bBusyTraffic;
+ priv->link_detect.NumRxOkInPeriod = 0;
+ priv->link_detect.NumTxOkInPeriod = 0;
+@@ -3503,16 +3457,11 @@ int _rtl8180_up(struct net_device *dev)
+ if(priv->ieee80211->iw_mode == IW_MODE_ADHOC)
+ IPSLeave(dev);
+ }
+-#ifdef RATE_ADAPT
+ timer_rate_adaptive((unsigned long)dev);
+-#endif
+ watch_dog_adaptive((unsigned long)dev);
+-#ifdef SW_ANTE
+ if(priv->bSwAntennaDiverity)
+ SwAntennaDiversityTimerCallback(dev);
+-#endif
+ ieee80211_softmac_start_protocol(priv->ieee80211);
+-
+ return 0;
+ }
+
+@@ -3748,7 +3697,7 @@ static int __devinit rtl8180_pci_probe(s
+ dev->wireless_handlers = &r8180_wx_handlers_def;
+
+ dev->type=ARPHRD_ETHER;
+- dev->watchdog_timeo = HZ*3; //added by david woo, 2007.12.13
++ dev->watchdog_timeo = HZ*3;
+
+ if (dev_alloc_name(dev, ifname) < 0){
+ DMESG("Oops: devname already taken! Trying wlan%%d...\n");
+@@ -4236,60 +4185,50 @@ void GPIOChangeRFWorkItemCallBack(struct
+ static char *envp[] = {"HOME=/", "TERM=linux", "PATH=/usr/bin:/bin", NULL};
+ static int readf_count = 0;
+
+-#ifdef ENABLE_LPS
+ if(readf_count % 10 == 0)
+ priv->PowerProfile = read_acadapter_file("/proc/acpi/ac_adapter/AC0/state");
+
+ readf_count = (readf_count+1)%0xffff;
+-#endif
+- {
+- // We should turn off LED before polling FF51[4].
++ /* We should turn off LED before polling FF51[4]. */
+
+- //Turn off LED.
+- btPSR = read_nic_byte(dev, PSR);
+- write_nic_byte(dev, PSR, (btPSR & ~BIT3));
++ /* Turn off LED. */
++ btPSR = read_nic_byte(dev, PSR);
++ write_nic_byte(dev, PSR, (btPSR & ~BIT3));
+
+- //It need to delay 4us suggested by Jong, 2008-01-16
+- udelay(4);
++ /* It need to delay 4us suggested by Jong, 2008-01-16 */
++ udelay(4);
+
+- //HW radio On/Off according to the value of FF51[4](config0)
+- btConfig0 = btPSR = read_nic_byte(dev, CONFIG0);
++ /* HW radio On/Off according to the value of FF51[4](config0) */
++ btConfig0 = btPSR = read_nic_byte(dev, CONFIG0);
+
+- //Turn on LED.
+- write_nic_byte(dev, PSR, btPSR| BIT3);
++ /* Turn on LED. */
++ write_nic_byte(dev, PSR, btPSR | BIT3);
+
+- eRfPowerStateToSet = (btConfig0 & BIT4) ? eRfOn : eRfOff;
++ eRfPowerStateToSet = (btConfig0 & BIT4) ? eRfOn : eRfOff;
+
+- if((priv->ieee80211->bHwRadioOff == true) && (eRfPowerStateToSet == eRfOn))
+- {
+- priv->ieee80211->bHwRadioOff = false;
+- bActuallySet = true;
+- }
+- else if((priv->ieee80211->bHwRadioOff == false) && (eRfPowerStateToSet == eRfOff))
+- {
+- priv->ieee80211->bHwRadioOff = true;
+- bActuallySet = true;
+- }
++ if ((priv->ieee80211->bHwRadioOff == true) &&
++ (eRfPowerStateToSet == eRfOn)) {
++ priv->ieee80211->bHwRadioOff = false;
++ bActuallySet = true;
++ } else if ((priv->ieee80211->bHwRadioOff == false) &&
++ (eRfPowerStateToSet == eRfOff)) {
++ priv->ieee80211->bHwRadioOff = true;
++ bActuallySet = true;
++ }
+
+- if(bActuallySet)
+- {
+- MgntActSet_RF_State(dev, eRfPowerStateToSet, RF_CHANGE_BY_HW);
++ if (bActuallySet) {
++ MgntActSet_RF_State(dev, eRfPowerStateToSet, RF_CHANGE_BY_HW);
+
+- /* To update the UI status for Power status changed */
+- if(priv->ieee80211->bHwRadioOff == true)
+- argv[1] = "RFOFF";
+- else{
+- //if(!priv->RfOffReason)
+- argv[1] = "RFON";
+- //else
+- // argv[1] = "RFOFF";
+- }
+- argv[0] = RadioPowerPath;
+- argv[2] = NULL;
++ /* To update the UI status for Power status changed */
++ if (priv->ieee80211->bHwRadioOff == true)
++ argv[1] = "RFOFF";
++ else
++ argv[1] = "RFON";
++ argv[0] = RadioPowerPath;
++ argv[2] = NULL;
+
+- call_usermodehelper(RadioPowerPath,argv,envp,1);
+- }
+- }
++ call_usermodehelper(RadioPowerPath, argv, envp, 1);
++ }
+ }
+
+ static u8 read_acadapter_file(char *filename)
diff --git a/staging/staging-usbip-cleanup-removing-dead-code.patch b/staging/staging-usbip-cleanup-removing-dead-code.patch
new file mode 100644
index 00000000000000..aebf3e058301ad
--- /dev/null
+++ b/staging/staging-usbip-cleanup-removing-dead-code.patch
@@ -0,0 +1,79 @@
+From himanshu@symmetricore.com Wed Jan 27 18:27:42 2010
+From: Himanshu Chauhan <himanshu@symmetricore.com>
+Date: Sat, 23 Jan 2010 10:36:56 +0530
+Subject: Staging: usbip: Remove dead code
+Cc: greg@kroah.com
+Message-ID: <1264223216-27529-1-git-send-email-himanshu@symmetricore.com>
+
+This patch removes the dead uncompiled code in usbip_common.c
+
+Signed-off-by: Himanshu Chauhan <himanshu@symmetricore.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/staging/usbip/usbip_common.c | 54 -----------------------------------
+ 1 file changed, 54 deletions(-)
+
+--- a/drivers/staging/usbip/usbip_common.c
++++ b/drivers/staging/usbip/usbip_common.c
+@@ -530,60 +530,6 @@ err:
+ }
+ EXPORT_SYMBOL_GPL(usbip_xmit);
+
+-
+-/* now a usrland utility should set options. */
+-#if 0
+-int setquickack(struct socket *socket)
+-{
+- mm_segment_t oldfs;
+- int val = 1;
+- int ret;
+-
+- oldfs = get_fs();
+- set_fs(get_ds());
+- ret = socket->ops->setsockopt(socket, SOL_TCP, TCP_QUICKACK,
+- (char __user *) &val, sizeof(ret));
+- set_fs(oldfs);
+-
+- return ret;
+-}
+-
+-int setnodelay(struct socket *socket)
+-{
+- mm_segment_t oldfs;
+- int val = 1;
+- int ret;
+-
+- oldfs = get_fs();
+- set_fs(get_ds());
+- ret = socket->ops->setsockopt(socket, SOL_TCP, TCP_NODELAY,
+- (char __user *) &val, sizeof(ret));
+- set_fs(oldfs);
+-
+- return ret;
+-}
+-
+-int setkeepalive(struct socket *socket)
+-{
+- mm_segment_t oldfs;
+- int val = 1;
+- int ret;
+-
+- oldfs = get_fs();
+- set_fs(get_ds());
+- ret = socket->ops->setsockopt(socket, SOL_SOCKET, SO_KEEPALIVE,
+- (char __user *) &val, sizeof(ret));
+- set_fs(oldfs);
+-
+- return ret;
+-}
+-
+-void setreuse(struct socket *socket)
+-{
+- socket->sk->sk_reuse = 1;
+-}
+-#endif
+-
+ struct socket *sockfd_to_socket(unsigned int sockfd)
+ {
+ struct socket *socket;
diff --git a/staging/staging-usbip-minor-code-cleanup.patch b/staging/staging-usbip-minor-code-cleanup.patch
new file mode 100644
index 00000000000000..f75f08823751ee
--- /dev/null
+++ b/staging/staging-usbip-minor-code-cleanup.patch
@@ -0,0 +1,32 @@
+From himanshu@symmetricore.com Wed Jan 27 18:25:46 2010
+From: Himanshu Chauhan <himanshu@symmetricore.com>
+Date: Sat, 23 Jan 2010 01:51:57 +0530
+Subject: Staging: usbip: minor code cleanup
+To: greg@kroah.com
+Cc: Himanshu Chauhan <Himanshu@symmetricore.com>, Himanshu Chauhan <himanshu@symmetricore.com>
+Message-ID: <1264191718-12481-2-git-send-email-himanshu@symmetricore.com>
+
+
+From: Himanshu Chauhan <Himanshu@symmetricore.com>
+
+Signed-off-by: Himanshu Chauhan <himanshu@symmetricore.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/staging/usbip/usbip_common.c | 5 +----
+ 1 file changed, 1 insertion(+), 4 deletions(-)
+
+--- a/drivers/staging/usbip/usbip_common.c
++++ b/drivers/staging/usbip/usbip_common.c
+@@ -55,10 +55,7 @@ static ssize_t show_flag(struct device *
+ static ssize_t store_flag(struct device *dev, struct device_attribute *attr,
+ const char *buf, size_t count)
+ {
+- unsigned long flag;
+-
+- sscanf(buf, "%lx", &flag);
+- usbip_debug_flag = flag;
++ sscanf(buf, "%lx", &usbip_debug_flag);
+
+ return count;
+ }
diff --git a/staging/staging-usbip-seperate-usbip-config-debug-from-config_usb_debug.patch b/staging/staging-usbip-seperate-usbip-config-debug-from-config_usb_debug.patch
new file mode 100644
index 00000000000000..58231be8feb4d4
--- /dev/null
+++ b/staging/staging-usbip-seperate-usbip-config-debug-from-config_usb_debug.patch
@@ -0,0 +1,83 @@
+From himanshu@symmetricore.com Wed Jan 27 18:28:09 2010
+From: Himanshu <himanshu@symmetricore.com>
+Date: Sat, 23 Jan 2010 17:52:02 +0530
+Subject: Staging: usbip: Seperate usbip config debug from CONFIG_USB_DEBUG
+To: greg@kroah.com
+Message-ID: <1264249322-4268-1-git-send-email-himanshu@symmetricore.com>
+
+
+Signed-off-by: Himanshu <himanshu@symmetricore.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/staging/usbip/Kconfig | 7 +++++++
+ drivers/staging/usbip/Makefile | 2 +-
+ drivers/staging/usbip/usbip_common.c | 2 +-
+ drivers/staging/usbip/usbip_common.h | 8 ++++----
+ 4 files changed, 13 insertions(+), 6 deletions(-)
+
+--- a/drivers/staging/usbip/Kconfig
++++ b/drivers/staging/usbip/Kconfig
+@@ -34,3 +34,10 @@ config USB_IP_HOST
+
+ To compile this driver as a module, choose M here: the
+ module will be called usbip.
++
++config USB_IP_DEBUG_ENABLE
++ bool "USB-IP Debug Enable"
++ depends on USB_IP_COMMON
++ default N
++ ---help---
++ This enables the debug messages from the USB-IP drivers.
+--- a/drivers/staging/usbip/Makefile
++++ b/drivers/staging/usbip/Makefile
+@@ -7,6 +7,6 @@ vhci-hcd-objs := vhci_sysfs.o vhci_tx.o
+ obj-$(CONFIG_USB_IP_HOST) += usbip.o
+ usbip-objs := stub_dev.o stub_main.o stub_rx.o stub_tx.o
+
+-ifeq ($(CONFIG_USB_DEBUG),y)
++ifeq ($(CONFIG_USB_IP_DEBUG_ENABLE),y)
+ EXTRA_CFLAGS += -DDEBUG
+ endif
+--- a/drivers/staging/usbip/usbip_common.c
++++ b/drivers/staging/usbip/usbip_common.c
+@@ -33,7 +33,7 @@
+ /*-------------------------------------------------------------------------*/
+ /* debug routines */
+
+-#ifdef CONFIG_USB_DEBUG
++#ifdef CONFIG_USB_IP_DEBUG_ENABLE
+ unsigned long usbip_debug_flag = 0xffffffff;
+ #else
+ unsigned long usbip_debug_flag;
+--- a/drivers/staging/usbip/usbip_common.h
++++ b/drivers/staging/usbip/usbip_common.h
+@@ -33,12 +33,12 @@
+ */
+
+ /**
+- * usbip_udbg - print debug messages if CONFIG_USB_DEBUG is defined
++ * usbip_udbg - print debug messages if CONFIG_USB_IP_DEBUG_ENABLE is defined
+ * @fmt:
+ * @args:
+ */
+
+-#ifdef CONFIG_USB_DEBUG
++#ifdef CONFIG_USB_IP_DEBUG_ENABLE
+
+ #define usbip_udbg(fmt, args...) \
+ do { \
+@@ -47,11 +47,11 @@
+ __FILE__, __LINE__, __func__, ##args); \
+ } while (0)
+
+-#else /* CONFIG_USB_DEBUG */
++#else /* CONFIG_USB_IP_DEBUG_ENABLE */
+
+ #define usbip_udbg(fmt, args...) do { } while (0)
+
+-#endif /* CONFIG_USB_DEBUG */
++#endif /* CONFIG_USB_IP_DEBUG_ENABLE */
+
+
+ enum {
diff --git a/staging/staging-usbip-use-print_hex_dump-instead-of-open-coding-it.patch b/staging/staging-usbip-use-print_hex_dump-instead-of-open-coding-it.patch
new file mode 100644
index 00000000000000..97552262167123
--- /dev/null
+++ b/staging/staging-usbip-use-print_hex_dump-instead-of-open-coding-it.patch
@@ -0,0 +1,54 @@
+From himanshu@symmetricore.com Wed Jan 27 18:26:28 2010
+From: Himanshu Chauhan <himanshu@symmetricore.com>
+Date: Sat, 23 Jan 2010 02:52:41 +0530
+Subject: Staging: usbip: use print_hex_dump() instead of open coding it.
+To: greg@kroah.com
+Cc: Himanshu Chauhan <himanshu@symmetricore.com>
+Message-ID: <1264195361-16445-1-git-send-email-himanshu@symmetricore.com>
+
+
+Signed-off-by: Himanshu Chauhan <himanshu@symmetricore.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/staging/usbip/usbip_common.c | 29 ++---------------------------
+ 1 file changed, 2 insertions(+), 27 deletions(-)
+
+--- a/drivers/staging/usbip/usbip_common.c
++++ b/drivers/staging/usbip/usbip_common.c
+@@ -63,33 +63,8 @@ DEVICE_ATTR(usbip_debug, (S_IRUGO | S_IW
+
+ static void usbip_dump_buffer(char *buff, int bufflen)
+ {
+- int i;
+-
+- if (bufflen > 128) {
+- for (i = 0; i < 128; i++) {
+- if (i%24 == 0)
+- printk(KERN_DEBUG " ");
+- printk(KERN_DEBUG "%02x ", (unsigned char) buff[i]);
+- if (i%4 == 3)
+- printk(KERN_DEBUG "| ");
+- if (i%24 == 23)
+- printk(KERN_DEBUG "\n");
+- }
+- printk(KERN_DEBUG "... (%d byte)\n", bufflen);
+- return;
+- }
+-
+- for (i = 0; i < bufflen; i++) {
+- if (i%24 == 0)
+- printk(KERN_DEBUG " ");
+- printk(KERN_DEBUG "%02x ", (unsigned char) buff[i]);
+- if (i%4 == 3)
+- printk(KERN_DEBUG "| ");
+- if (i%24 == 23)
+- printk(KERN_DEBUG "\n");
+- }
+- printk(KERN_DEBUG "\n");
+-
++ print_hex_dump(KERN_DEBUG, "usb-ip", DUMP_PREFIX_OFFSET, 16, 4,
++ buff, bufflen, false);
+ }
+
+ static void usbip_dump_pipe(unsigned int p)
diff --git a/usb.current/usb-g_multi-fix-config_usb_g_multi_rndis-usage.patch b/usb.current/usb-g_multi-fix-config_usb_g_multi_rndis-usage.patch
new file mode 100644
index 00000000000000..0776793fd138dc
--- /dev/null
+++ b/usb.current/usb-g_multi-fix-config_usb_g_multi_rndis-usage.patch
@@ -0,0 +1,34 @@
+From m.nazarewicz@samsung.com Wed Jan 27 18:18:07 2010
+From: Michal Nazarewicz <m.nazarewicz@samsung.com>
+Date: Fri, 22 Jan 2010 15:18:21 +0100
+Subject: USB: g_multi: fix CONFIG_USB_G_MULTI_RNDIS usage
+To: Randy Dunlap <randy.dunlap@oracle.com>, Stephen Rothwell <sfr@canb.auug.org.au>, Greg KH <greg@kroah.com>, Randy Dunlap <randy.dunlap@oracle.com>, Stephen Rothwell <sfr@canb.auug.org.au>, Greg KH <greg@kroah.com>
+Cc: Michal Nazarewicz <m.nazarewicz@samsung.com>, linux-next@vger.kernel.org, linux-kernel@vger.kernel.org, Marek Szyprowski <m.szyprowski@samsung.com>, Kyungmin Park <kyungmin.park@samsung.com>
+Message-ID: <1264169901-12475-1-git-send-email-m.nazarewicz@samsung.com>
+
+
+g_multi used CONFIG_USB_ETH_RNDIS to check if RNDIS option was requested
+where it should check for CONFIG_USB_G_MULTI_RNDIS. As a result, RNDIS
+was never present in g_multi regardless of configuration.
+
+This fixes changes made in commit 396cda90d228d0851f3d64c7c85a1ecf6b8ae1e8.
+
+Signed-off-by: Michal Nazarewicz <m.nazarewicz@samsung.com>
+Cc: Marek Szyprowski <m.szyprowski@samsung.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/gadget/multi.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/usb/gadget/multi.c
++++ b/drivers/usb/gadget/multi.c
+@@ -29,7 +29,7 @@
+ #if defined USB_ETH_RNDIS
+ # undef USB_ETH_RNDIS
+ #endif
+-#ifdef CONFIG_USB_ETH_RNDIS
++#ifdef CONFIG_USB_G_MULTI_RNDIS
+ # define USB_ETH_RNDIS y
+ #endif
+
diff --git a/usb.current/usb-otg-kconfig-let-usb_otg_utils-select-usb_ulpi-option.patch b/usb.current/usb-otg-kconfig-let-usb_otg_utils-select-usb_ulpi-option.patch
new file mode 100644
index 00000000000000..d7c3b81b2528a2
--- /dev/null
+++ b/usb.current/usb-otg-kconfig-let-usb_otg_utils-select-usb_ulpi-option.patch
@@ -0,0 +1,41 @@
+From valentin.longchamp@epfl.ch Wed Jan 27 18:24:25 2010
+From: Valentin Longchamp <valentin.longchamp@epfl.ch>
+Date: Wed, 20 Jan 2010 20:06:31 +0100
+Subject: USB: otg Kconfig: let USB_OTG_UTILS select USB_ULPI option
+To: s.hauer@pengutronix.de, u.kleine-koenig@pengutronix.de, daniel@caiaq.de
+Cc: linux-arm-kernel@lists.infradead.org, linux-usb@vger.kernel.org, Valentin Longchamp <valentin.longchamp@epfl.ch>
+Message-ID: <1264014391-11521-1-git-send-email-valentin.longchamp@epfl.ch>
+
+
+With CONFIG_USB_ULPI=y, CONFIG_USB<=m, CONFIG_PCI=n and
+CONFIG_USB_OTG_UTILS=n, which is the default used for mx31moboard,
+the build for all mx3 platforms fails because drivers/usb/otg/ulpi.c
+where otg_ulpi_create is defined is not compiled.
+
+Build error:
+arch/arm/mach-mx3/built-in.o: In function `mxc_board_init':
+kzmarm11.c:(.init.text+0x73c): undefined reference to `otg_ulpi_create'
+kzmarm11.c:(.init.text+0x1020): undefined reference to `otg_ulpi_create'
+
+This isn't a strong dependency as drivers/usb/otg/ulpi.c doesn't
+use functions defined in drivers/usb/otg/otg.o and is only needed
+to get ulpi.o linked into the kernel image.
+
+Signed-off-by: Valentin Longchamp <valentin.longchamp@epfl.ch>
+Acked-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/otg/Kconfig | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/usb/otg/Kconfig
++++ b/drivers/usb/otg/Kconfig
+@@ -44,6 +44,7 @@ config ISP1301_OMAP
+ config USB_ULPI
+ bool "Generic ULPI Transceiver Driver"
+ depends on ARM
++ select USB_OTG_UTILS
+ help
+ Enable this to support ULPI connected USB OTG transceivers which
+ are likely found on embedded boards.
diff --git a/usb/usb-musb-add-context-save-and-restore-support.patch b/usb/usb-musb-add-context-save-and-restore-support.patch
new file mode 100644
index 00000000000000..aa002981403966
--- /dev/null
+++ b/usb/usb-musb-add-context-save-and-restore-support.patch
@@ -0,0 +1,397 @@
+From felipe.balbi@nokia.com Wed Jan 27 18:19:15 2010
+From: Ajay Kumar Gupta <ajay.gupta@ti.com>
+Date: Thu, 21 Jan 2010 15:33:52 +0200
+Subject: usb: musb: Add context save and restore support
+To: Greg KH <greg@kroah.com>
+Cc: Ajay Kumar Gupta <ajay.gupta@ti.com>, Anand Gadiyar <gadiyar@ti.com>, Felipe Balbi <felipe.balbi@nokia.com>
+Message-ID: <1264080838-9452-2-git-send-email-felipe.balbi@nokia.com>
+
+
+From: Ajay Kumar Gupta <ajay.gupta@ti.com>
+
+Adding support for MUSB register save and restore during system
+suspend and resume.
+
+Changes:
+ - Added musb_save/restore_context() functions
+ - Added platform specific musb_platform_save/restore_context()
+ to handle platform specific jobs.
+ - Maintaining BlackFin compatibility by adding read/write
+ functions for registers which are not available in BlackFin
+
+Tested system suspend and resume on OMAP3EVM board.
+
+Signed-off-by: Anand Gadiyar <gadiyar@ti.com>
+Signed-off-by: Ajay Kumar Gupta <ajay.gupta@ti.com>
+Signed-off-by: Felipe Balbi <felipe.balbi@nokia.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/musb/musb_core.c | 146 +++++++++++++++++++++++++++++++++++++++++++
+ drivers/usb/musb/musb_core.h | 39 +++++++++++
+ drivers/usb/musb/musb_regs.h | 90 ++++++++++++++++++++++++++
+ drivers/usb/musb/omap2430.c | 16 ++++
+ 4 files changed, 291 insertions(+)
+
+--- a/drivers/usb/musb/musb_core.c
++++ b/drivers/usb/musb/musb_core.c
+@@ -2167,6 +2167,148 @@ static int __exit musb_remove(struct pla
+
+ #ifdef CONFIG_PM
+
++static struct musb_context_registers musb_context;
++
++void musb_save_context(struct musb *musb)
++{
++ int i;
++ void __iomem *musb_base = musb->mregs;
++
++ if (is_host_enabled(musb)) {
++ musb_context.frame = musb_readw(musb_base, MUSB_FRAME);
++ musb_context.testmode = musb_readb(musb_base, MUSB_TESTMODE);
++ }
++ musb_context.power = musb_readb(musb_base, MUSB_POWER);
++ musb_context.intrtxe = musb_readw(musb_base, MUSB_INTRTXE);
++ musb_context.intrrxe = musb_readw(musb_base, MUSB_INTRRXE);
++ musb_context.intrusbe = musb_readb(musb_base, MUSB_INTRUSBE);
++ musb_context.index = musb_readb(musb_base, MUSB_INDEX);
++ musb_context.devctl = musb_readb(musb_base, MUSB_DEVCTL);
++
++ for (i = 0; i < MUSB_C_NUM_EPS; ++i) {
++ musb_writeb(musb_base, MUSB_INDEX, i);
++ musb_context.index_regs[i].txmaxp =
++ musb_readw(musb_base, 0x10 + MUSB_TXMAXP);
++ musb_context.index_regs[i].txcsr =
++ musb_readw(musb_base, 0x10 + MUSB_TXCSR);
++ musb_context.index_regs[i].rxmaxp =
++ musb_readw(musb_base, 0x10 + MUSB_RXMAXP);
++ musb_context.index_regs[i].rxcsr =
++ musb_readw(musb_base, 0x10 + MUSB_RXCSR);
++
++ if (musb->dyn_fifo) {
++ musb_context.index_regs[i].txfifoadd =
++ musb_read_txfifoadd(musb_base);
++ musb_context.index_regs[i].rxfifoadd =
++ musb_read_rxfifoadd(musb_base);
++ musb_context.index_regs[i].txfifosz =
++ musb_read_txfifosz(musb_base);
++ musb_context.index_regs[i].rxfifosz =
++ musb_read_rxfifosz(musb_base);
++ }
++ if (is_host_enabled(musb)) {
++ musb_context.index_regs[i].txtype =
++ musb_readb(musb_base, 0x10 + MUSB_TXTYPE);
++ musb_context.index_regs[i].txinterval =
++ musb_readb(musb_base, 0x10 + MUSB_TXINTERVAL);
++ musb_context.index_regs[i].rxtype =
++ musb_readb(musb_base, 0x10 + MUSB_RXTYPE);
++ musb_context.index_regs[i].rxinterval =
++ musb_readb(musb_base, 0x10 + MUSB_RXINTERVAL);
++
++ musb_context.index_regs[i].txfunaddr =
++ musb_read_txfunaddr(musb_base, i);
++ musb_context.index_regs[i].txhubaddr =
++ musb_read_txhubaddr(musb_base, i);
++ musb_context.index_regs[i].txhubport =
++ musb_read_txhubport(musb_base, i);
++
++ musb_context.index_regs[i].rxfunaddr =
++ musb_read_rxfunaddr(musb_base, i);
++ musb_context.index_regs[i].rxhubaddr =
++ musb_read_rxhubaddr(musb_base, i);
++ musb_context.index_regs[i].rxhubport =
++ musb_read_rxhubport(musb_base, i);
++ }
++ }
++
++ musb_writeb(musb_base, MUSB_INDEX, musb_context.index);
++
++ musb_platform_save_context(&musb_context);
++}
++
++void musb_restore_context(struct musb *musb)
++{
++ int i;
++ void __iomem *musb_base = musb->mregs;
++ void __iomem *ep_target_regs;
++
++ musb_platform_restore_context(&musb_context);
++
++ if (is_host_enabled(musb)) {
++ musb_writew(musb_base, MUSB_FRAME, musb_context.frame);
++ musb_writeb(musb_base, MUSB_TESTMODE, musb_context.testmode);
++ }
++ musb_writeb(musb_base, MUSB_POWER, musb_context.power);
++ musb_writew(musb_base, MUSB_INTRTXE, musb_context.intrtxe);
++ musb_writew(musb_base, MUSB_INTRRXE, musb_context.intrrxe);
++ musb_writeb(musb_base, MUSB_INTRUSBE, musb_context.intrusbe);
++ musb_writeb(musb_base, MUSB_DEVCTL, musb_context.devctl);
++
++ for (i = 0; i < MUSB_C_NUM_EPS; ++i) {
++ musb_writeb(musb_base, MUSB_INDEX, i);
++ musb_writew(musb_base, 0x10 + MUSB_TXMAXP,
++ musb_context.index_regs[i].txmaxp);
++ musb_writew(musb_base, 0x10 + MUSB_TXCSR,
++ musb_context.index_regs[i].txcsr);
++ musb_writew(musb_base, 0x10 + MUSB_RXMAXP,
++ musb_context.index_regs[i].rxmaxp);
++ musb_writew(musb_base, 0x10 + MUSB_RXCSR,
++ musb_context.index_regs[i].rxcsr);
++
++ if (musb->dyn_fifo) {
++ musb_write_txfifosz(musb_base,
++ musb_context.index_regs[i].txfifosz);
++ musb_write_rxfifosz(musb_base,
++ musb_context.index_regs[i].rxfifosz);
++ musb_write_txfifoadd(musb_base,
++ musb_context.index_regs[i].txfifoadd);
++ musb_write_rxfifoadd(musb_base,
++ musb_context.index_regs[i].rxfifoadd);
++ }
++
++ if (is_host_enabled(musb)) {
++ musb_writeb(musb_base, 0x10 + MUSB_TXTYPE,
++ musb_context.index_regs[i].txtype);
++ musb_writeb(musb_base, 0x10 + MUSB_TXINTERVAL,
++ musb_context.index_regs[i].txinterval);
++ musb_writeb(musb_base, 0x10 + MUSB_RXTYPE,
++ musb_context.index_regs[i].rxtype);
++ musb_writeb(musb_base, 0x10 + MUSB_RXINTERVAL,
++
++ musb_context.index_regs[i].rxinterval);
++ musb_write_txfunaddr(musb_base, i,
++ musb_context.index_regs[i].txfunaddr);
++ musb_write_txhubaddr(musb_base, i,
++ musb_context.index_regs[i].txhubaddr);
++ musb_write_txhubport(musb_base, i,
++ musb_context.index_regs[i].txhubport);
++
++ ep_target_regs =
++ musb_read_target_reg_base(i, musb_base);
++
++ musb_write_rxfunaddr(ep_target_regs,
++ musb_context.index_regs[i].rxfunaddr);
++ musb_write_rxhubaddr(ep_target_regs,
++ musb_context.index_regs[i].rxhubaddr);
++ musb_write_rxhubport(ep_target_regs,
++ musb_context.index_regs[i].rxhubport);
++ }
++ }
++
++ musb_writeb(musb_base, MUSB_INDEX, musb_context.index);
++}
++
+ static int musb_suspend(struct device *dev)
+ {
+ struct platform_device *pdev = to_platform_device(dev);
+@@ -2188,6 +2330,8 @@ static int musb_suspend(struct device *d
+ */
+ }
+
++ musb_save_context(musb);
++
+ if (musb->set_clock)
+ musb->set_clock(musb->clock, 0);
+ else
+@@ -2209,6 +2353,8 @@ static int musb_resume_noirq(struct devi
+ else
+ clk_enable(musb->clock);
+
++ musb_restore_context(musb);
++
+ /* for static cmos like DaVinci, register values were preserved
+ * unless for some reason the whole soc powered down or the USB
+ * module got reset through the PSC (vs just being disabled).
+--- a/drivers/usb/musb/musb_core.h
++++ b/drivers/usb/musb/musb_core.h
+@@ -454,6 +454,45 @@ struct musb {
+ #endif
+ };
+
++#ifdef CONFIG_PM
++struct musb_csr_regs {
++ /* FIFO registers */
++ u16 txmaxp, txcsr, rxmaxp, rxcsr;
++ u16 rxfifoadd, txfifoadd;
++ u8 txtype, txinterval, rxtype, rxinterval;
++ u8 rxfifosz, txfifosz;
++ u8 txfunaddr, txhubaddr, txhubport;
++ u8 rxfunaddr, rxhubaddr, rxhubport;
++};
++
++struct musb_context_registers {
++
++#if defined(CONFIG_ARCH_OMAP34XX) || defined(CONFIG_ARCH_OMAP2430)
++ u32 otg_sysconfig, otg_forcestandby;
++#endif
++ u8 power;
++ u16 intrtxe, intrrxe;
++ u8 intrusbe;
++ u16 frame;
++ u8 index, testmode;
++
++ u8 devctl, misc;
++
++ struct musb_csr_regs index_regs[MUSB_C_NUM_EPS];
++};
++
++#if defined(CONFIG_ARCH_OMAP34XX) || defined(CONFIG_ARCH_OMAP2430)
++extern void musb_platform_save_context(struct musb_context_registers
++ *musb_context);
++extern void musb_platform_restore_context(struct musb_context_registers
++ *musb_context);
++#else
++#define musb_platform_save_context(x) do {} while (0)
++#define musb_platform_restore_context(x) do {} while (0)
++#endif
++
++#endif
++
+ static inline void musb_set_vbus(struct musb *musb, int is_on)
+ {
+ musb->board_set_vbus(musb, is_on);
+--- a/drivers/usb/musb/musb_regs.h
++++ b/drivers/usb/musb/musb_regs.h
+@@ -326,6 +326,26 @@ static inline void musb_write_rxfifoadd
+ musb_writew(mbase, MUSB_RXFIFOADD, c_off);
+ }
+
++static inline u8 musb_read_txfifosz(void __iomem *mbase)
++{
++ return musb_readb(mbase, MUSB_TXFIFOSZ);
++}
++
++static inline u16 musb_read_txfifoadd(void __iomem *mbase)
++{
++ return musb_readw(mbase, MUSB_TXFIFOADD);
++}
++
++static inline u8 musb_read_rxfifosz(void __iomem *mbase)
++{
++ return musb_readb(mbase, MUSB_RXFIFOSZ);
++}
++
++static inline u16 musb_read_rxfifoadd(void __iomem *mbase)
++{
++ return musb_readw(mbase, MUSB_RXFIFOADD);
++}
++
+ static inline u8 musb_read_configdata(void __iomem *mbase)
+ {
+ musb_writeb(mbase, MUSB_INDEX, 0);
+@@ -381,6 +401,36 @@ static inline void musb_write_txhubport
+ qh_h_port_reg);
+ }
+
++static inline u8 musb_read_rxfunaddr(void __iomem *mbase, u8 epnum)
++{
++ return musb_readb(mbase, MUSB_BUSCTL_OFFSET(epnum, MUSB_RXFUNCADDR));
++}
++
++static inline u8 musb_read_rxhubaddr(void __iomem *mbase, u8 epnum)
++{
++ return musb_readb(mbase, MUSB_BUSCTL_OFFSET(epnum, MUSB_RXHUBADDR));
++}
++
++static inline u8 musb_read_rxhubport(void __iomem *mbase, u8 epnum)
++{
++ return musb_readb(mbase, MUSB_BUSCTL_OFFSET(epnum, MUSB_RXHUBPORT));
++}
++
++static inline u8 musb_read_txfunaddr(void __iomem *mbase, u8 epnum)
++{
++ return musb_readb(mbase, MUSB_BUSCTL_OFFSET(epnum, MUSB_TXFUNCADDR));
++}
++
++static inline u8 musb_read_txhubaddr(void __iomem *mbase, u8 epnum)
++{
++ return musb_readb(mbase, MUSB_BUSCTL_OFFSET(epnum, MUSB_TXHUBADDR));
++}
++
++static inline u8 musb_read_txhubport(void __iomem *mbase, u8 epnum)
++{
++ return musb_readb(mbase, MUSB_BUSCTL_OFFSET(epnum, MUSB_TXHUBPORT));
++}
++
+ #else /* CONFIG_BLACKFIN */
+
+ #define USB_BASE USB_FADDR
+@@ -460,6 +510,22 @@ static inline void musb_write_rxfifoadd
+ {
+ }
+
++static inline u8 musb_read_txfifosz(void __iomem *mbase)
++{
++}
++
++static inline u16 musb_read_txfifoadd(void __iomem *mbase)
++{
++}
++
++static inline u8 musb_read_rxfifosz(void __iomem *mbase)
++{
++}
++
++static inline u16 musb_read_rxfifoadd(void __iomem *mbase)
++{
++}
++
+ static inline u8 musb_read_configdata(void __iomem *mbase)
+ {
+ return 0;
+@@ -505,6 +571,30 @@ static inline void musb_write_txhubport
+ {
+ }
+
++static inline u8 musb_read_rxfunaddr(void __iomem *mbase, u8 epnum)
++{
++}
++
++static inline u8 musb_read_rxhubaddr(void __iomem *mbase, u8 epnum)
++{
++}
++
++static inline u8 musb_read_rxhubport(void __iomem *mbase, u8 epnum)
++{
++}
++
++static inline u8 musb_read_txfunaddr(void __iomem *mbase, u8 epnum)
++{
++}
++
++static inline u8 musb_read_txhubaddr(void __iomem *mbase, u8 epnum)
++{
++}
++
++static inline void musb_read_txhubport(void __iomem *mbase, u8 epnum)
++{
++}
++
+ #endif /* CONFIG_BLACKFIN */
+
+ #endif /* __MUSB_REGS_H__ */
+--- a/drivers/usb/musb/omap2430.c
++++ b/drivers/usb/musb/omap2430.c
+@@ -255,6 +255,22 @@ int __init musb_platform_init(struct mus
+ return 0;
+ }
+
++#ifdef CONFIG_PM
++void musb_platform_save_context(struct musb_context_registers
++ *musb_context)
++{
++ musb_context->otg_sysconfig = omap_readl(OTG_SYSCONFIG);
++ musb_context->otg_forcestandby = omap_readl(OTG_FORCESTDBY);
++}
++
++void musb_platform_restore_context(struct musb_context_registers
++ *musb_context)
++{
++ omap_writel(musb_context->otg_sysconfig, OTG_SYSCONFIG);
++ omap_writel(musb_context->otg_forcestandby, OTG_FORCESTDBY);
++}
++#endif
++
+ int musb_platform_suspend(struct musb *musb)
+ {
+ u32 l;
diff --git a/usb/usb-musb-deprecate-what-we-don-t-use.patch b/usb/usb-musb-deprecate-what-we-don-t-use.patch
new file mode 100644
index 00000000000000..b60968c75b7c5b
--- /dev/null
+++ b/usb/usb-musb-deprecate-what-we-don-t-use.patch
@@ -0,0 +1,58 @@
+From felipe.balbi@nokia.com Wed Jan 27 18:21:16 2010
+From: Felipe Balbi <felipe.balbi@nokia.com>
+Date: Thu, 21 Jan 2010 15:33:55 +0200
+Subject: USB: musb: deprecate what we don't use
+To: Greg KH <greg@kroah.com>
+Message-ID: <1264080838-9452-5-git-send-email-felipe.balbi@nokia.com>
+
+
+after 2.6.34, those fields will be removed from
+struct musb_hdrc_platform_data, it's expected
+that other architectures are fixed by then.
+
+Signed-off-by: Felipe Balbi <felipe.balbi@nokia.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ include/linux/usb/musb.h | 20 ++++++++++----------
+ 1 file changed, 10 insertions(+), 10 deletions(-)
+
+--- a/include/linux/usb/musb.h
++++ b/include/linux/usb/musb.h
+@@ -30,26 +30,26 @@ struct musb_hdrc_eps_bits {
+ struct musb_hdrc_config {
+ /* MUSB configuration-specific details */
+ unsigned multipoint:1; /* multipoint device */
+- unsigned dyn_fifo:1; /* supports dynamic fifo sizing */
+- unsigned soft_con:1; /* soft connect required */
+- unsigned utm_16:1; /* utm data witdh is 16 bits */
++ unsigned dyn_fifo:1 __deprecated; /* supports dynamic fifo sizing */
++ unsigned soft_con:1 __deprecated; /* soft connect required */
++ unsigned utm_16:1 __deprecated; /* utm data witdh is 16 bits */
+ unsigned big_endian:1; /* true if CPU uses big-endian */
+ unsigned mult_bulk_tx:1; /* Tx ep required for multbulk pkts */
+ unsigned mult_bulk_rx:1; /* Rx ep required for multbulk pkts */
+ unsigned high_iso_tx:1; /* Tx ep required for HB iso */
+ unsigned high_iso_rx:1; /* Rx ep required for HD iso */
+- unsigned dma:1; /* supports DMA */
+- unsigned vendor_req:1; /* vendor registers required */
++ unsigned dma:1 __deprecated; /* supports DMA */
++ unsigned vendor_req:1 __deprecated; /* vendor registers required */
+
+ u8 num_eps; /* number of endpoints _with_ ep0 */
+- u8 dma_channels; /* number of dma channels */
++ u8 dma_channels __deprecated; /* number of dma channels */
+ u8 dyn_fifo_size; /* dynamic size in bytes */
+- u8 vendor_ctrl; /* vendor control reg width */
+- u8 vendor_stat; /* vendor status reg witdh */
+- u8 dma_req_chan; /* bitmask for required dma channels */
++ u8 vendor_ctrl __deprecated; /* vendor control reg width */
++ u8 vendor_stat __deprecated; /* vendor status reg witdh */
++ u8 dma_req_chan __deprecated; /* bitmask for required dma channels */
+ u8 ram_bits; /* ram address size */
+
+- struct musb_hdrc_eps_bits *eps_bits;
++ struct musb_hdrc_eps_bits *eps_bits __deprecated;
+ #ifdef CONFIG_BLACKFIN
+ /* A GPIO controlling VRSEL in Blackfin */
+ unsigned int gpio_vrsel;
diff --git a/usb/usb-musb-get-rid-of-omap_readl-writel.patch b/usb/usb-musb-get-rid-of-omap_readl-writel.patch
new file mode 100644
index 00000000000000..dca6ce46ba4256
--- /dev/null
+++ b/usb/usb-musb-get-rid-of-omap_readl-writel.patch
@@ -0,0 +1,227 @@
+From felipe.balbi@nokia.com Wed Jan 27 18:19:46 2010
+From: Felipe Balbi <felipe.balbi@nokia.com>
+Date: Thu, 21 Jan 2010 15:33:53 +0200
+Subject: USB: musb: get rid of omap_readl/writel
+To: Greg KH <greg@kroah.com>
+Message-ID: <1264080838-9452-3-git-send-email-felipe.balbi@nokia.com>
+
+
+we have those addresses already ioremaped, so let's
+use our __raw_readl/writel wrappers.
+
+Signed-off-by: Felipe Balbi <felipe.balbi@nokia.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/musb/musb_core.c | 4 +--
+ drivers/usb/musb/musb_core.h | 12 +++++-----
+ drivers/usb/musb/omap2430.c | 48 ++++++++++++++++++++++---------------------
+ drivers/usb/musb/omap2430.h | 32 ++++++++++++----------------
+ 4 files changed, 47 insertions(+), 49 deletions(-)
+
+--- a/drivers/usb/musb/musb_core.c
++++ b/drivers/usb/musb/musb_core.c
+@@ -2234,7 +2234,7 @@ void musb_save_context(struct musb *musb
+
+ musb_writeb(musb_base, MUSB_INDEX, musb_context.index);
+
+- musb_platform_save_context(&musb_context);
++ musb_platform_save_context(musb, &musb_context);
+ }
+
+ void musb_restore_context(struct musb *musb)
+@@ -2243,7 +2243,7 @@ void musb_restore_context(struct musb *m
+ void __iomem *musb_base = musb->mregs;
+ void __iomem *ep_target_regs;
+
+- musb_platform_restore_context(&musb_context);
++ musb_platform_restore_context(musb, &musb_context);
+
+ if (is_host_enabled(musb)) {
+ musb_writew(musb_base, MUSB_FRAME, musb_context.frame);
+--- a/drivers/usb/musb/musb_core.h
++++ b/drivers/usb/musb/musb_core.h
+@@ -482,13 +482,13 @@ struct musb_context_registers {
+ };
+
+ #if defined(CONFIG_ARCH_OMAP34XX) || defined(CONFIG_ARCH_OMAP2430)
+-extern void musb_platform_save_context(struct musb_context_registers
+- *musb_context);
+-extern void musb_platform_restore_context(struct musb_context_registers
+- *musb_context);
++extern void musb_platform_save_context(struct musb *musb,
++ struct musb_context_registers *musb_context);
++extern void musb_platform_restore_context(struct musb *musb,
++ struct musb_context_registers *musb_context);
+ #else
+-#define musb_platform_save_context(x) do {} while (0)
+-#define musb_platform_restore_context(x) do {} while (0)
++#define musb_platform_save_context(m, x) do {} while (0)
++#define musb_platform_restore_context(m, x) do {} while (0)
+ #endif
+
+ #endif
+--- a/drivers/usb/musb/omap2430.c
++++ b/drivers/usb/musb/omap2430.c
+@@ -220,7 +220,7 @@ int __init musb_platform_init(struct mus
+
+ musb_platform_resume(musb);
+
+- l = omap_readl(OTG_SYSCONFIG);
++ l = musb_readl(musb->mregs, OTG_SYSCONFIG);
+ l &= ~ENABLEWAKEUP; /* disable wakeup */
+ l &= ~NOSTDBY; /* remove possible nostdby */
+ l |= SMARTSTDBY; /* enable smart standby */
+@@ -233,17 +233,19 @@ int __init musb_platform_init(struct mus
+ */
+ if (!cpu_is_omap3430())
+ l |= AUTOIDLE; /* enable auto idle */
+- omap_writel(l, OTG_SYSCONFIG);
++ musb_writel(musb->mregs, OTG_SYSCONFIG, l);
+
+- l = omap_readl(OTG_INTERFSEL);
++ l = musb_readl(musb->mregs, OTG_INTERFSEL);
+ l |= ULPI_12PIN;
+- omap_writel(l, OTG_INTERFSEL);
++ musb_writel(musb->mregs, OTG_INTERFSEL, l);
+
+ pr_debug("HS USB OTG: revision 0x%x, sysconfig 0x%02x, "
+ "sysstatus 0x%x, intrfsel 0x%x, simenable 0x%x\n",
+- omap_readl(OTG_REVISION), omap_readl(OTG_SYSCONFIG),
+- omap_readl(OTG_SYSSTATUS), omap_readl(OTG_INTERFSEL),
+- omap_readl(OTG_SIMENABLE));
++ musb_readl(musb->mregs, OTG_REVISION),
++ musb_readl(musb->mregs, OTG_SYSCONFIG),
++ musb_readl(musb->mregs, OTG_SYSSTATUS),
++ musb_readl(musb->mregs, OTG_INTERFSEL),
++ musb_readl(musb->mregs, OTG_SIMENABLE));
+
+ omap_vbus_power(musb, musb->board_mode == MUSB_HOST, 1);
+
+@@ -256,18 +258,18 @@ int __init musb_platform_init(struct mus
+ }
+
+ #ifdef CONFIG_PM
+-void musb_platform_save_context(struct musb_context_registers
+- *musb_context)
++void musb_platform_save_context(struct musb *musb,
++ struct musb_context_registers *musb_context)
+ {
+- musb_context->otg_sysconfig = omap_readl(OTG_SYSCONFIG);
+- musb_context->otg_forcestandby = omap_readl(OTG_FORCESTDBY);
++ musb_context->otg_sysconfig = musb_readl(musb->mregs, OTG_SYSCONFIG);
++ musb_context->otg_forcestandby = musb_readl(musb->mregs, OTG_FORCESTDBY);
+ }
+
+-void musb_platform_restore_context(struct musb_context_registers
+- *musb_context)
++void musb_platform_restore_context(struct musb *musb,
++ struct musb_context_registers *musb_context)
+ {
+- omap_writel(musb_context->otg_sysconfig, OTG_SYSCONFIG);
+- omap_writel(musb_context->otg_forcestandby, OTG_FORCESTDBY);
++ musb_writel(musb->mregs, OTG_SYSCONFIG, musb_context->otg_sysconfig);
++ musb_writel(musb->mregs, OTG_FORCESTDBY, musb_context->otg_forcestandby);
+ }
+ #endif
+
+@@ -279,13 +281,13 @@ int musb_platform_suspend(struct musb *m
+ return 0;
+
+ /* in any role */
+- l = omap_readl(OTG_FORCESTDBY);
++ l = musb_readl(musb->mregs, OTG_FORCESTDBY);
+ l |= ENABLEFORCE; /* enable MSTANDBY */
+- omap_writel(l, OTG_FORCESTDBY);
++ musb_writel(musb->mregs, OTG_FORCESTDBY, l);
+
+- l = omap_readl(OTG_SYSCONFIG);
++ l = musb_readl(musb->mregs, OTG_SYSCONFIG);
+ l |= ENABLEWAKEUP; /* enable wakeup */
+- omap_writel(l, OTG_SYSCONFIG);
++ musb_writel(musb->mregs, OTG_SYSCONFIG, l);
+
+ otg_set_suspend(musb->xceiv, 1);
+
+@@ -311,13 +313,13 @@ static int musb_platform_resume(struct m
+ else
+ clk_enable(musb->clock);
+
+- l = omap_readl(OTG_SYSCONFIG);
++ l = musb_readl(musb->mregs, OTG_SYSCONFIG);
+ l &= ~ENABLEWAKEUP; /* disable wakeup */
+- omap_writel(l, OTG_SYSCONFIG);
++ musb_writel(musb->mregs, OTG_SYSCONFIG, l);
+
+- l = omap_readl(OTG_FORCESTDBY);
++ l = musb_readl(musb->mregs, OTG_FORCESTDBY);
+ l &= ~ENABLEFORCE; /* disable MSTANDBY */
+- omap_writel(l, OTG_FORCESTDBY);
++ musb_writel(musb->mregs, OTG_FORCESTDBY, l);
+
+ return 0;
+ }
+--- a/drivers/usb/musb/omap2430.h
++++ b/drivers/usb/musb/omap2430.h
+@@ -10,47 +10,43 @@
+ #ifndef __MUSB_OMAP243X_H__
+ #define __MUSB_OMAP243X_H__
+
+-#if defined(CONFIG_ARCH_OMAP2430) || defined(CONFIG_ARCH_OMAP3430)
+-#include <mach/hardware.h>
+ #include <plat/usb.h>
+
+ /*
+ * OMAP2430-specific definitions
+ */
+
+-#define MENTOR_BASE_OFFSET 0
+-#if defined(CONFIG_ARCH_OMAP2430)
+-#define OMAP_HSOTG_BASE (OMAP243X_HS_BASE)
+-#elif defined(CONFIG_ARCH_OMAP3430)
+-#define OMAP_HSOTG_BASE (OMAP34XX_HSUSB_OTG_BASE)
+-#endif
+-#define OMAP_HSOTG(offset) (OMAP_HSOTG_BASE + 0x400 + (offset))
+-#define OTG_REVISION OMAP_HSOTG(0x0)
+-#define OTG_SYSCONFIG OMAP_HSOTG(0x4)
++#define OTG_REVISION 0x400
++
++#define OTG_SYSCONFIG 0x404
+ # define MIDLEMODE 12 /* bit position */
+ # define FORCESTDBY (0 << MIDLEMODE)
+ # define NOSTDBY (1 << MIDLEMODE)
+ # define SMARTSTDBY (2 << MIDLEMODE)
++
+ # define SIDLEMODE 3 /* bit position */
+ # define FORCEIDLE (0 << SIDLEMODE)
+ # define NOIDLE (1 << SIDLEMODE)
+ # define SMARTIDLE (2 << SIDLEMODE)
++
+ # define ENABLEWAKEUP (1 << 2)
+ # define SOFTRST (1 << 1)
+ # define AUTOIDLE (1 << 0)
+-#define OTG_SYSSTATUS OMAP_HSOTG(0x8)
++
++#define OTG_SYSSTATUS 0x408
+ # define RESETDONE (1 << 0)
+-#define OTG_INTERFSEL OMAP_HSOTG(0xc)
++
++#define OTG_INTERFSEL 0x40c
+ # define EXTCP (1 << 2)
+-# define PHYSEL 0 /* bit position */
++# define PHYSEL 0 /* bit position */
+ # define UTMI_8BIT (0 << PHYSEL)
+ # define ULPI_12PIN (1 << PHYSEL)
+ # define ULPI_8PIN (2 << PHYSEL)
+-#define OTG_SIMENABLE OMAP_HSOTG(0x10)
++
++#define OTG_SIMENABLE 0x410
+ # define TM1 (1 << 0)
+-#define OTG_FORCESTDBY OMAP_HSOTG(0x14)
+-# define ENABLEFORCE (1 << 0)
+
+-#endif /* CONFIG_ARCH_OMAP2430 */
++#define OTG_FORCESTDBY 0x414
++# define ENABLEFORCE (1 << 0)
+
+ #endif /* __MUSB_OMAP243X_H__ */
diff --git a/usb/usb-musb-only-print-info-message-if-probe-is-successful.patch b/usb/usb-musb-only-print-info-message-if-probe-is-successful.patch
new file mode 100644
index 00000000000000..d532e27d1e5416
--- /dev/null
+++ b/usb/usb-musb-only-print-info-message-if-probe-is-successful.patch
@@ -0,0 +1,61 @@
+From felipe.balbi@nokia.com Wed Jan 27 18:22:54 2010
+From: Felipe Balbi <felipe.balbi@nokia.com>
+Date: Thu, 21 Jan 2010 15:33:58 +0200
+Subject: USB: musb: only print info message if probe() is successful
+To: Greg KH <greg@kroah.com>
+Message-ID: <1264080838-9452-8-git-send-email-felipe.balbi@nokia.com>
+
+
+we were printing the info about musb probe too early where
+it was still possible for things to go wrong. Move the
+down right before the return 0 statement. While at that
+also convert pr_info to dev_info.
+
+Signed-off-by: Felipe Balbi <felipe.balbi@nokia.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/musb/musb_core.c | 25 ++++++++++++-------------
+ 1 file changed, 12 insertions(+), 13 deletions(-)
+
+--- a/drivers/usb/musb/musb_core.c
++++ b/drivers/usb/musb/musb_core.c
+@@ -2004,19 +2004,6 @@ bad_config:
+ musb->irq_wake = 0;
+ }
+
+- pr_info("%s: USB %s mode controller at %p using %s, IRQ %d\n",
+- musb_driver_name,
+- ({char *s;
+- switch (musb->board_mode) {
+- case MUSB_HOST: s = "Host"; break;
+- case MUSB_PERIPHERAL: s = "Peripheral"; break;
+- default: s = "OTG"; break;
+- }; s; }),
+- ctrl,
+- (is_dma_capable() && musb->dma_controller)
+- ? "DMA" : "PIO",
+- musb->nIrq);
+-
+ /* host side needs more setup */
+ if (is_host_enabled(musb)) {
+ struct usb_hcd *hcd = musb_to_hcd(musb);
+@@ -2079,6 +2066,18 @@ bad_config:
+ if (status)
+ goto fail2;
+
++ dev_info(dev, "USB %s mode controller at %p using %s, IRQ %d\n",
++ ({char *s;
++ switch (musb->board_mode) {
++ case MUSB_HOST: s = "Host"; break;
++ case MUSB_PERIPHERAL: s = "Peripheral"; break;
++ default: s = "OTG"; break;
++ }; s; }),
++ ctrl,
++ (is_dma_capable() && musb->dma_controller)
++ ? "DMA" : "PIO",
++ musb->nIrq);
++
+ return 0;
+
+ fail2:
diff --git a/usb/usb-musb-tusb6010-use-resource_size.patch b/usb/usb-musb-tusb6010-use-resource_size.patch
new file mode 100644
index 00000000000000..d6812d8cec0b9b
--- /dev/null
+++ b/usb/usb-musb-tusb6010-use-resource_size.patch
@@ -0,0 +1,28 @@
+From felipe.balbi@nokia.com Wed Jan 27 18:22:07 2010
+From: Felipe Balbi <felipe.balbi@nokia.com>
+Date: Thu, 21 Jan 2010 15:33:56 +0200
+Subject: USB: musb: tusb6010: use resource_size
+To: Greg KH <greg@kroah.com>
+Message-ID: <1264080838-9452-6-git-send-email-felipe.balbi@nokia.com>
+
+
+Trivial patch, no functional changes.
+
+Signed-off-by: Felipe Balbi <felipe.balbi@nokia.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/musb/tusb6010.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/usb/musb/tusb6010.c
++++ b/drivers/usb/musb/tusb6010.c
+@@ -1118,7 +1118,7 @@ int __init musb_platform_init(struct mus
+ }
+ musb->sync = mem->start;
+
+- sync = ioremap(mem->start, mem->end - mem->start + 1);
++ sync = ioremap(mem->start, resource_size(mem));
+ if (!sync) {
+ pr_debug("ioremap for sync failed\n");
+ ret = -ENOMEM;
diff --git a/usb/usb-musb-unmap-base-if-we-can-t-probe.patch b/usb/usb-musb-unmap-base-if-we-can-t-probe.patch
new file mode 100644
index 00000000000000..97250dd03094e1
--- /dev/null
+++ b/usb/usb-musb-unmap-base-if-we-can-t-probe.patch
@@ -0,0 +1,41 @@
+From felipe.balbi@nokia.com Wed Jan 27 18:22:39 2010
+From: Felipe Balbi <felipe.balbi@nokia.com>
+Date: Thu, 21 Jan 2010 15:33:57 +0200
+Subject: USB: musb: unmap base if we can't probe
+To: Greg KH <greg@kroah.com>
+Message-ID: <1264080838-9452-7-git-send-email-felipe.balbi@nokia.com>
+
+
+when probe() fails, we should iounmap() the mapped address.
+
+Signed-off-by: Felipe Balbi <felipe.balbi@nokia.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/musb/musb_core.c | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+--- a/drivers/usb/musb/musb_core.c
++++ b/drivers/usb/musb/musb_core.c
+@@ -2110,6 +2110,7 @@ static int __init musb_probe(struct plat
+ {
+ struct device *dev = &pdev->dev;
+ int irq = platform_get_irq(pdev, 0);
++ int status;
+ struct resource *iomem;
+ void __iomem *base;
+
+@@ -2127,7 +2128,12 @@ static int __init musb_probe(struct plat
+ /* clobbered by use_dma=n */
+ orig_dma_mask = dev->dma_mask;
+ #endif
+- return musb_init_controller(dev, irq, base);
++
++ status = musb_init_controller(dev, irq, base);
++ if (status < 0)
++ iounmap(base);
++
++ return status;
+ }
+
+ static int __exit musb_remove(struct platform_device *pdev)
diff --git a/usb/usb-musb-we-already-tested-for-dyn_fifo.patch b/usb/usb-musb-we-already-tested-for-dyn_fifo.patch
new file mode 100644
index 00000000000000..b6338af868b422
--- /dev/null
+++ b/usb/usb-musb-we-already-tested-for-dyn_fifo.patch
@@ -0,0 +1,46 @@
+From felipe.balbi@nokia.com Wed Jan 27 18:20:45 2010
+From: Felipe Balbi <felipe.balbi@nokia.com>
+Date: Thu, 21 Jan 2010 15:33:54 +0200
+Subject: USB: musb: we already tested for dyn_fifo
+To: Greg KH <greg@kroah.com>
+Message-ID: <1264080838-9452-4-git-send-email-felipe.balbi@nokia.com>
+
+
+... and even added a flag to struct musb, so let's
+use that.
+
+Signed-off-by: Felipe Balbi <felipe.balbi@nokia.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/musb/musb_core.c | 19 ++++---------------
+ 1 file changed, 4 insertions(+), 15 deletions(-)
+
+--- a/drivers/usb/musb/musb_core.c
++++ b/drivers/usb/musb/musb_core.c
+@@ -1398,21 +1398,10 @@ static int __init musb_core_init(u16 mus
+ musb->nr_endpoints = 1;
+ musb->epmask = 1;
+
+- if (reg & MUSB_CONFIGDATA_DYNFIFO) {
+- if (musb->config->dyn_fifo)
+- status = ep_config_from_table(musb);
+- else {
+- ERR("reconfigure software for Dynamic FIFOs\n");
+- status = -ENODEV;
+- }
+- } else {
+- if (!musb->config->dyn_fifo)
+- status = ep_config_from_hw(musb);
+- else {
+- ERR("reconfigure software for static FIFOs\n");
+- return -ENODEV;
+- }
+- }
++ if (musb->dyn_fifo)
++ status = ep_config_from_table(musb);
++ else
++ status = ep_config_from_hw(musb);
+
+ if (status < 0)
+ return status;
diff --git a/usb/usb-s3c-hsotg-replace-deprecated-dma_sync_single.patch b/usb/usb-s3c-hsotg-replace-deprecated-dma_sync_single.patch
new file mode 100644
index 00000000000000..4a0cdaa98f1ab5
--- /dev/null
+++ b/usb/usb-s3c-hsotg-replace-deprecated-dma_sync_single.patch
@@ -0,0 +1,56 @@
+From fujita.tomonori@lab.ntt.co.jp Wed Jan 27 18:29:57 2010
+From: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
+Date: Mon, 25 Jan 2010 11:07:19 +0900
+Subject: USB: s3c-hsotg: replace deprecated dma_sync_single()
+To: gregkh@suse.de
+Cc: ben@simtec.co.uk, linux-usb@vger.kernel.org
+Message-ID: <20100125110353F.fujita.tomonori@lab.ntt.co.jp>
+
+
+This replaces deprecated dma_sync_single() with dma_sync_single_for_cpu().
+
+There is no functional change because dma_sync_single() simply calls
+dma_sync_single_for_cpu():
+
+static inline void __deprecated dma_sync_single(struct device *dev,
+ dma_addr_t addr, size_t size,
+ enum dma_data_direction dir)
+{
+ dma_sync_single_for_cpu(dev, addr, size, dir);
+}
+
+This fixes the following compile warnings:
+
+drivers/usb/gadget/s3c-hsotg.c: In function 's3c_hsotg_unmap_dma':
+drivers/usb/gadget/s3c-hsotg.c:376: warning: 'dma_sync_single' is deprecated (declared at /home/fujita/git/linux-2.6/include/linux/dma-mapping.h:109)
+drivers/usb/gadget/s3c-hsotg.c: In function 's3c_hsotg_map_dma':
+drivers/usb/gadget/s3c-hsotg.c:758: warning: 'dma_sync_single' is deprecated (declared at /home/fujita/git/linux-2.6/include/linux/dma-mapping.h:109)
+
+Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
+Acked-by: Ben Dooks <ben@simtec.co.uk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/gadget/s3c-hsotg.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/usb/gadget/s3c-hsotg.c
++++ b/drivers/usb/gadget/s3c-hsotg.c
+@@ -374,7 +374,7 @@ static void s3c_hsotg_unmap_dma(struct s
+ req->dma = DMA_ADDR_INVALID;
+ hs_req->mapped = 0;
+ } else {
+- dma_sync_single(hsotg->dev, req->dma, req->length, dir);
++ dma_sync_single_for_cpu(hsotg->dev, req->dma, req->length, dir);
+ }
+ }
+
+@@ -756,7 +756,7 @@ static int s3c_hsotg_map_dma(struct s3c_
+ hs_req->mapped = 1;
+ req->dma = dma;
+ } else {
+- dma_sync_single(hsotg->dev, req->dma, req->length, dir);
++ dma_sync_single_for_cpu(hsotg->dev, req->dma, req->length, dir);
+ hs_req->mapped = 0;
+ }
+