From: 黄涛 Date: Thu, 16 Jun 2011 03:56:59 +0000 (+0800) Subject: Merge remote-tracking branch 'linux-2.6.32.y/master' into develop X-Git-Tag: firefly_0821_release~10186 X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=7cd3739f32f642e2bdd722b253abbc4318202002;p=firefly-linux-kernel-4.4.55.git Merge remote-tracking branch 'linux-2.6.32.y/master' into develop 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 --- 7cd3739f32f642e2bdd722b253abbc4318202002 diff --cc drivers/i2c/i2c-core.c index 4b728449fa6c,71a5f89993c1..e5b771782471 mode 100755,100644..100755 --- a/drivers/i2c/i2c-core.c +++ b/drivers/i2c/i2c-core.c diff --cc drivers/mmc/core/core.c index fb25fd001f4a,f3320f20f19f..5148f8e5ea71 --- a/drivers/mmc/core/core.c +++ b/drivers/mmc/core/core.c @@@ -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; diff --cc drivers/usb/core/hub.c index 7a631055ce64,283f019b9b3a..8ff77b613369 mode 100755,100644..100755 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c diff --cc drivers/usb/serial/option.c index 27bccb282897,e605c8919a95..6eb7b83f3645 --- a/drivers/usb/serial/option.c +++ b/drivers/usb/serial/option.c @@@ -370,11 -369,16 +370,20 @@@ static int option_resume(struct usb_se #define HAIER_VENDOR_ID 0x201e #define HAIER_PRODUCT_CE100 0x2009 +/* Thinkwill products */ +#define THINKWILL_VENDOR_ID 0x19f5 +#define THINKWILL_PRODUCT_ID 0x9909 + - #define CINTERION_VENDOR_ID 0x0681 + /* 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 @@@ -383,16 -387,19 +392,26 @@@ /* 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) }, @@@ -913,21 -914,21 +932,35 @@@ { 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 sound/soc/codecs/wm_hubs.c index 8d05a852686c,a80f1ad4c893..b409e60cbe48 mode 100755,100644..100755 --- a/sound/soc/codecs/wm_hubs.c +++ b/sound/soc/codecs/wm_hubs.c