Merge remote-tracking branch 'linux-2.6.32.y/master' into develop
author黄涛 <huangtao@rock-chips.com>
Thu, 16 Jun 2011 03:56:59 +0000 (11:56 +0800)
committer黄涛 <huangtao@rock-chips.com>
Thu, 16 Jun 2011 03:56:59 +0000 (11:56 +0800)
Merge Linux 2.6.32.41
Conflicts:
Makefile
drivers/mmc/core/core.c
drivers/net/wireless/ath/ath9k/ath9k.h
drivers/net/wireless/ath/ath9k/hw.c
drivers/net/wireless/ath/ath9k/main.c
drivers/net/wireless/ath/regd_common.h
drivers/net/wireless/b43/dma.c
drivers/net/wireless/b43/dma.h
drivers/net/wireless/b43/sdio.c
drivers/net/wireless/hostap/hostap_cs.c
drivers/net/wireless/iwlwifi/iwl-5000.c
drivers/net/wireless/iwlwifi/iwl-agn.c
drivers/net/wireless/iwlwifi/iwl-helpers.h
drivers/net/wireless/iwlwifi/iwl-tx.c
drivers/net/wireless/libertas/cmd.c
drivers/net/wireless/p54/p54pci.c
drivers/net/wireless/p54/p54usb.c
drivers/net/wireless/p54/txrx.c
drivers/net/wireless/rt2x00/rt2400pci.c
drivers/net/wireless/rt2x00/rt2500pci.c
drivers/net/wireless/rt2x00/rt2500usb.c
drivers/net/wireless/rt2x00/rt2800usb.c
drivers/net/wireless/rt2x00/rt2x00.h
drivers/net/wireless/rt2x00/rt2x00dev.c
drivers/net/wireless/rt2x00/rt2x00queue.c
drivers/net/wireless/rt2x00/rt61pci.c
drivers/net/wireless/rt2x00/rt73usb.c
drivers/usb/serial/option.c
mm/shmem.c

21 files changed:
1  2 
arch/arm/kernel/signal.c
drivers/i2c/i2c-core.c
drivers/mmc/core/core.c
drivers/mmc/core/sdio.c
drivers/net/Makefile
drivers/usb/core/hub.c
drivers/usb/serial/option.c
fs/proc/base.c
fs/proc/task_mmu.c
include/linux/mmc/host.h
include/linux/sched.h
include/sound/soc-dapm.h
init/Kconfig
kernel/cpuset.c
kernel/sched.c
kernel/sys.c
kernel/time/clocksource.c
mm/shmem.c
net/bluetooth/sco.c
net/ipv4/devinet.c
sound/soc/codecs/wm_hubs.c

Simple merge
index 4b728449fa6c6dae147eec21e5865aeec5386343,71a5f89993c14100f7c3057cc60519d36f81186c..e5b771782471a6f904a5ecdd62f59a3c1717a0b7
mode 100755,100644..100755
index fb25fd001f4a33672885789d0dbc7cd068af7391,f3320f20f19fe0631a1c11001f4b268aac2a0093..5148f8e5ea71b086b6bad57195b01d7d3d0a15ce
@@@ -1066,7 -1041,17 +1066,18 @@@ void mmc_rescan(struct work_struct *wor
                container_of(work, struct mmc_host, detect.work);
        u32 ocr;
        int err;
 +      int extend_wakelock = 0;
+       unsigned long flags;
+       spin_lock_irqsave(&host->lock, flags);
+       if (host->rescan_disable) {
+               spin_unlock_irqrestore(&host->lock, flags);
+               return;
+       }
+       spin_unlock_irqrestore(&host->lock, flags);
  
        mmc_bus_get(host);
  
@@@ -1348,35 -1292,57 +1341,73 @@@ int mmc_resume_host(struct mmc_host *ho
        }
        mmc_bus_put(host);
  
-       /*
-        * We add a slight delay here so that resume can progress
-        * in parallel.
-        */
-       mmc_detect_change(host, 1);
        return err;
  }
  EXPORT_SYMBOL(mmc_resume_host);
  
+ /* Do the card removal on suspend if card is assumed removeable
+  * Do that in pm notifier while userspace isn't yet frozen, so we will be able
+    to sync the card.
+ */
+ int mmc_pm_notify(struct notifier_block *notify_block,
+                                       unsigned long mode, void *unused)
+ {
+       struct mmc_host *host = container_of(
+               notify_block, struct mmc_host, pm_notify);
+       unsigned long flags;
+       switch (mode) {
+       case PM_HIBERNATION_PREPARE:
+       case PM_SUSPEND_PREPARE:
+               spin_lock_irqsave(&host->lock, flags);
+               host->rescan_disable = 1;
+               spin_unlock_irqrestore(&host->lock, flags);
+               cancel_delayed_work_sync(&host->detect);
+               if (!host->bus_ops || host->bus_ops->suspend)
+                       break;
+               mmc_claim_host(host);
+               if (host->bus_ops->remove)
+                       host->bus_ops->remove(host);
+               mmc_detach_bus(host);
+               mmc_release_host(host);
+               break;
+       case PM_POST_SUSPEND:
+       case PM_POST_HIBERNATION:
+               spin_lock_irqsave(&host->lock, flags);
+               host->rescan_disable = 0;
+               spin_unlock_irqrestore(&host->lock, flags);
+               mmc_detect_change(host, 0);
+       }
+       return 0;
+ }
  #endif
  
 +#ifdef CONFIG_MMC_EMBEDDED_SDIO
 +void mmc_set_embedded_sdio_data(struct mmc_host *host,
 +                              struct sdio_cis *cis,
 +                              struct sdio_cccr *cccr,
 +                              struct sdio_embedded_func *funcs,
 +                              int num_funcs)
 +{
 +      host->embedded_sdio_data.cis = cis;
 +      host->embedded_sdio_data.cccr = cccr;
 +      host->embedded_sdio_data.funcs = funcs;
 +      host->embedded_sdio_data.num_funcs = num_funcs;
 +}
 +
 +EXPORT_SYMBOL(mmc_set_embedded_sdio_data);
 +#endif
 +
  static int __init mmc_init(void)
  {
        int ret;
Simple merge
Simple merge
index 7a631055ce64250aff1f007f2c27f7e770004b62,283f019b9b3a12327d5a22ab3f684ce1d4c32de7..8ff77b613369a86c4e6fac256c47fad28e9fa19a
mode 100755,100644..100755
index 27bccb282897c3fb415ed3bed00bec4380a29e23,e605c8919a950344855de83687a112192ded4711..6eb7b83f3645e3041a14324a9a3f03b9108ee6fe
@@@ -370,11 -369,16 +370,20 @@@ static int  option_resume(struct usb_se
  #define HAIER_VENDOR_ID                               0x201e
  #define HAIER_PRODUCT_CE100                   0x2009
  
- #define CINTERION_VENDOR_ID                   0x0681
 +/* Thinkwill products */
 +#define THINKWILL_VENDOR_ID   0x19f5
 +#define THINKWILL_PRODUCT_ID  0x9909
 +
+ /* Cinterion (formerly Siemens) products */
+ #define SIEMENS_VENDOR_ID                             0x0681
+ #define CINTERION_VENDOR_ID                           0x1e2d
+ #define CINTERION_PRODUCT_HC25_MDM            0x0047
+ #define CINTERION_PRODUCT_HC25_MDMNET 0x0040
+ #define CINTERION_PRODUCT_HC28_MDM            0x004C
+ #define CINTERION_PRODUCT_HC28_MDMNET 0x004A /* same for HC28J */
+ #define CINTERION_PRODUCT_EU3_E                       0x0051
+ #define CINTERION_PRODUCT_EU3_P                       0x0052
+ #define CINTERION_PRODUCT_PH8                 0x0053
  
  /* Olivetti products */
  #define OLIVETTI_VENDOR_ID                    0x0b3c
  /* Celot products */
  #define CELOT_VENDOR_ID                               0x211f
  #define CELOT_PRODUCT_CT680M                  0x6801
 +/* leadcore LC1808*/
 +#define LEADCORE_VENDOR_ID    0x1ab7
 +#define LEADCORE_PRODUCT_LC1808       0x2200
 +/*չѶģ×é*/   
 +#define SC8800G_VENDOR_ID     0x067b
 +#define SC8800G_PRODUCT_ID    0x2303
  
+ /* ONDA Communication vendor id */
+ #define ONDA_VENDOR_ID       0x1ee8
+ /* ONDA MT825UP HSDPA 14.2 modem */
+ #define ONDA_MT825UP         0x000b
+ /* Samsung products */
+ #define SAMSUNG_VENDOR_ID                       0x04e8
+ #define SAMSUNG_PRODUCT_GT_B3730                0x6889
  static struct usb_device_id option_ids[] = {
        { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) },
 +      { USB_DEVICE(THINKWILL_VENDOR_ID,THINKWILL_PRODUCT_ID)},
        { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) },
        { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA_LIGHT) },
        { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA_QUAD) },
        { USB_DEVICE(PIRELLI_VENDOR_ID, PIRELLI_PRODUCT_100F) },
        { USB_DEVICE(PIRELLI_VENDOR_ID, PIRELLI_PRODUCT_1011)},
        { USB_DEVICE(PIRELLI_VENDOR_ID, PIRELLI_PRODUCT_1012)},
-       { USB_DEVICE(CINTERION_VENDOR_ID, 0x0047) },
 +      { USB_DEVICE(LEADCORE_VENDOR_ID, LEADCORE_PRODUCT_LC1808) },  //zzc
 +      { USB_DEVICE(SC8800G_VENDOR_ID,SC8800G_PRODUCT_ID)},
 +      { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD100) },
 +      { USB_DEVICE(CELOT_VENDOR_ID, CELOT_PRODUCT_CT680M) }, /* CT-650 CDMA 450 1xEVDO modem */
 +
 +// cmy:
 +      { USB_DEVICE(0x0685, 0x6000) },
 +      { USB_DEVICE(0x1E89, 0x1E16) },
 +      { USB_DEVICE(0x7693, 0x0001) },
 +      { USB_DEVICE(0x1D09, 0x4308) },
 +      { USB_DEVICE(0x1234, 0x0033) },
 +      { USB_DEVICE(0xFEED, 0x0001) },
 +      { USB_DEVICE(ALCATEL_VENDOR_ID, 0x0017) },
 +
+       /* Cinterion */
+       { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_EU3_E) },
+       { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_EU3_P) },
+       { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_PH8) },
+       { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_HC28_MDM) },
+       { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_HC28_MDMNET) },
+       { USB_DEVICE(SIEMENS_VENDOR_ID, CINTERION_PRODUCT_HC25_MDM) },
+       { USB_DEVICE(SIEMENS_VENDOR_ID, CINTERION_PRODUCT_HC25_MDMNET) },
+       { USB_DEVICE(SIEMENS_VENDOR_ID, CINTERION_PRODUCT_HC28_MDM) }, /* HC28 enumerates with Siemens or Cinterion VID depending on FW revision */
+       { USB_DEVICE(SIEMENS_VENDOR_ID, CINTERION_PRODUCT_HC28_MDMNET) },
+       { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD100) },
+       { USB_DEVICE(CELOT_VENDOR_ID, CELOT_PRODUCT_CT680M) }, /* CT-650 CDMA 450 1xEVDO modem */
+       { USB_DEVICE(ONDA_VENDOR_ID, ONDA_MT825UP) }, /* ONDA MT825UP modem */
+       { USB_DEVICE_AND_INTERFACE_INFO(SAMSUNG_VENDOR_ID, SAMSUNG_PRODUCT_GT_B3730, USB_CLASS_CDC_DATA, 0x00, 0x00) }, /* Samsung GT-B3730/GT-B3710 LTE USB modem.*/
        { } /* Terminating entry */
  };
  MODULE_DEVICE_TABLE(usb, option_ids);
diff --cc fs/proc/base.c
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc init/Kconfig
Simple merge
diff --cc kernel/cpuset.c
Simple merge
diff --cc kernel/sched.c
Simple merge
diff --cc kernel/sys.c
Simple merge
Simple merge
diff --cc mm/shmem.c
Simple merge
Simple merge
Simple merge
index 8d05a852686cc385429bdc1e112042e7518c7a29,a80f1ad4c893631dca09fa9b90ed7f105fc4e808..b409e60cbe4803ea5a1fd558f9c8a1251ae15e62
mode 100755,100644..100755