Merge remote-tracking branch 'common/android-3.0' into develop-3.0-jb
author黄涛 <huangtao@rock-chips.com>
Thu, 12 Jul 2012 10:08:01 +0000 (18:08 +0800)
committer黄涛 <huangtao@rock-chips.com>
Thu, 12 Jul 2012 10:08:01 +0000 (18:08 +0800)
Conflicts:
drivers/cpufreq/cpufreq_interactive.c
drivers/misc/pmem.c
drivers/net/usb/asix.c
drivers/net/wireless/ath/ath9k/ani.c
drivers/net/wireless/ath/ath9k/ar5008_phy.c
drivers/net/wireless/ath/ath9k/ar9002_hw.c
drivers/net/wireless/ath/ath9k/ar9003_calib.c
drivers/net/wireless/ath/ath9k/ar9003_mac.c
drivers/net/wireless/ath/ath9k/ar9003_phy.h
drivers/net/wireless/ath/ath9k/calib.c
drivers/net/wireless/ath/ath9k/hif_usb.c
drivers/net/wireless/ath/ath9k/hw.c
drivers/net/wireless/ath/ath9k/hw.h
drivers/net/wireless/ath/ath9k/main.c
drivers/net/wireless/ath/ath9k/rc.c
drivers/net/wireless/ath/ath9k/recv.c
drivers/net/wireless/b43/main.c
drivers/net/wireless/bcm4319/aiutils.c
drivers/net/wireless/bcm4319/bcmsdh.c
drivers/net/wireless/bcm4319/bcmsdh_linux.c
drivers/net/wireless/bcm4319/bcmsdh_sdmmc.c
drivers/net/wireless/bcm4319/bcmsdh_sdmmc_linux.c
drivers/net/wireless/bcm4319/bcmutils.c
drivers/net/wireless/bcm4319/dhd_common.c
drivers/net/wireless/bcm4319/dhd_proto.h
drivers/net/wireless/bcm4319/dhd_sdio.c
drivers/net/wireless/bcm4319/hndpmu.c
drivers/net/wireless/bcm4319/include/aidmp.h
drivers/net/wireless/bcm4319/include/bcmcdc.h
drivers/net/wireless/bcm4319/include/bcmdefs.h
drivers/net/wireless/bcm4319/include/bcmdevs.h
drivers/net/wireless/bcm4319/include/bcmendian.h
drivers/net/wireless/bcm4319/include/bcmpcispi.h
drivers/net/wireless/bcm4319/include/bcmperf.h
drivers/net/wireless/bcm4319/include/bcmsdbus.h
drivers/net/wireless/bcm4319/include/bcmsdh.h
drivers/net/wireless/bcm4319/include/bcmsdh_sdmmc.h
drivers/net/wireless/bcm4319/include/bcmsdpcm.h
drivers/net/wireless/bcm4319/include/bcmsdspi.h
drivers/net/wireless/bcm4319/include/bcmsdstd.h
drivers/net/wireless/bcm4319/include/bcmspi.h
drivers/net/wireless/bcm4319/include/bcmutils.h
drivers/net/wireless/bcm4319/include/bcmwifi.h
drivers/net/wireless/bcm4319/include/dhdioctl.h
drivers/net/wireless/bcm4319/include/epivers.h
drivers/net/wireless/bcm4319/include/hndpmu.h
drivers/net/wireless/bcm4319/include/hndrte_armtrap.h
drivers/net/wireless/bcm4319/include/hndrte_cons.h
drivers/net/wireless/bcm4319/include/hndsoc.h
drivers/net/wireless/bcm4319/include/linux_osl.h
drivers/net/wireless/bcm4319/include/linuxver.h
drivers/net/wireless/bcm4319/include/miniopt.h
drivers/net/wireless/bcm4319/include/msgtrace.h
drivers/net/wireless/bcm4319/include/osl.h
drivers/net/wireless/bcm4319/include/packed_section_end.h
drivers/net/wireless/bcm4319/include/packed_section_start.h
drivers/net/wireless/bcm4319/include/pcicfg.h
drivers/net/wireless/bcm4319/include/proto/802.11e.h
drivers/net/wireless/bcm4319/include/proto/802.1d.h
drivers/net/wireless/bcm4319/include/proto/bcmeth.h
drivers/net/wireless/bcm4319/include/proto/bcmevent.h
drivers/net/wireless/bcm4319/include/proto/bcmip.h
drivers/net/wireless/bcm4319/include/proto/eapol.h
drivers/net/wireless/bcm4319/include/proto/ethernet.h
drivers/net/wireless/bcm4319/include/proto/sdspi.h
drivers/net/wireless/bcm4319/include/proto/vlan.h
drivers/net/wireless/bcm4319/include/proto/wpa.h
drivers/net/wireless/bcm4319/include/sbchipc.h
drivers/net/wireless/bcm4319/include/sbconfig.h
drivers/net/wireless/bcm4319/include/sbhnddma.h
drivers/net/wireless/bcm4319/include/sbpcmcia.h
drivers/net/wireless/bcm4319/include/sbsdio.h
drivers/net/wireless/bcm4319/include/sbsdpcmdev.h
drivers/net/wireless/bcm4319/include/sbsocram.h
drivers/net/wireless/bcm4319/include/sdio.h
drivers/net/wireless/bcm4319/include/sdioh.h
drivers/net/wireless/bcm4319/include/sdiovar.h
drivers/net/wireless/bcm4319/include/siutils.h
drivers/net/wireless/bcm4319/include/trxhdr.h
drivers/net/wireless/bcm4319/include/typedefs.h
drivers/net/wireless/bcm4319/siutils.c
drivers/net/wireless/bcm4319/wl_iw.c
drivers/net/wireless/bcm4319/wl_iw.h
drivers/net/wireless/bcmdhd/Kconfig
drivers/net/wireless/bcmdhd/Makefile
drivers/net/wireless/bcmdhd/bcmevent.c
drivers/net/wireless/bcmdhd/dhd.h
drivers/net/wireless/bcmdhd/dhd_cdc.c
drivers/net/wireless/bcmdhd/dhd_linux.c
drivers/net/wireless/bcmdhd/dhd_wlfc.h
drivers/net/wireless/bcmdhd/include/Makefile
drivers/net/wireless/bcmdhd/include/htsf.h
drivers/net/wireless/bcmdhd/include/proto/802.11.h
drivers/net/wireless/bcmdhd/include/proto/802.11_bta.h
drivers/net/wireless/bcmdhd/include/proto/bt_amp_hci.h
drivers/net/wireless/bcmdhd/include/proto/p2p.h
drivers/net/wireless/bcmdhd/include/wlfc_proto.h
drivers/net/wireless/bcmdhd/include/wlioctl.h
drivers/net/wireless/bcmdhd/linux_osl.c
drivers/net/wireless/bcmdhd/wl_android.c
drivers/net/wireless/bcmdhd/wl_android.h
drivers/net/wireless/bcmdhd/wl_cfg80211.c
drivers/net/wireless/bcmdhd/wl_cfg80211.h
drivers/net/wireless/bcmdhd/wl_cfgp2p.c
drivers/net/wireless/bcmdhd/wl_cfgp2p.h
drivers/net/wireless/bcmdhd/wl_linux_mon.c
drivers/net/wireless/bcmdhd/wldev_common.c
drivers/net/wireless/bcmdhd/wldev_common.h
drivers/net/wireless/ipw2x00/ipw2200.c
drivers/net/wireless/iwlwifi/iwl-agn-lib.c
drivers/net/wireless/iwlwifi/iwl-agn-tx.c
drivers/net/wireless/iwlwifi/iwl-agn-ucode.c
drivers/net/wireless/iwlwifi/iwl-agn.c
drivers/net/wireless/iwlwifi/iwl-agn.h
drivers/net/wireless/iwlwifi/iwl-core.c
drivers/net/wireless/iwlwifi/iwl-hcmd.c
drivers/net/wireless/iwlwifi/iwl-rx.c
drivers/net/wireless/iwlwifi/iwl-tx.c
drivers/net/wireless/libertas/if_spi.c
drivers/net/wireless/p54/p54spi.c
drivers/net/wireless/rt2x00/rt2800lib.c
drivers/net/wireless/rt2x00/rt2800pci.c
drivers/net/wireless/rt2x00/rt2800usb.c
drivers/net/wireless/rt2x00/rt2x00.h
drivers/net/wireless/rt2x00/rt2x00dev.c
drivers/net/wireless/rt2x00/rt2x00mac.c
drivers/net/wireless/rt2x00/rt2x00queue.c
drivers/usb/serial/option.c

47 files changed:
1  2 
Documentation/cpu-freq/governors.txt
Makefile
arch/arm/Kconfig
arch/arm/mm/proc-v7.S
block/blk-core.c
drivers/bluetooth/hci_ldisc.c
drivers/cpufreq/cpufreq_interactive.c
drivers/i2c/algos/i2c-algo-bit.c
drivers/media/video/uvc/uvc_v4l2.c
drivers/media/video/uvc/uvc_video.c
drivers/media/video/uvc/uvcvideo.h
drivers/media/video/v4l2-ioctl.c
drivers/misc/Kconfig
drivers/misc/Makefile
drivers/mmc/card/block.c
drivers/mmc/core/core.c
drivers/mmc/core/mmc.c
drivers/mmc/core/sd.c
drivers/mmc/core/sdio.c
drivers/mtd/mtd_blkdevs.c
drivers/mtd/nand/nand_base.c
drivers/net/usb/usbnet.c
drivers/spi/spi.c
drivers/tty/serial/Kconfig
drivers/usb/core/hcd.c
drivers/usb/core/hub.c
drivers/usb/gadget/Kconfig
drivers/usb/gadget/android.c
drivers/usb/gadget/composite.c
drivers/usb/gadget/f_accessory.c
drivers/usb/gadget/f_adb.c
drivers/usb/gadget/f_mass_storage.c
drivers/usb/serial/option.c
drivers/usb/serial/usb-serial.c
drivers/video/fbmem.c
fs/block_dev.c
fs/partitions/check.c
include/linux/fb.h
include/linux/videodev2.h
kernel/module.c
kernel/power/suspend.c
kernel/printk.c
kernel/sched.c
security/commoncap.c
sound/soc/codecs/wm8994.c
sound/soc/codecs/wm_hubs.c
sound/soc/soc-core.c

index 46abbcb28b7c3fcf2dc03f997089a3103c724ded,963a543bde4d8a44d4c2923b1a35b5eebbc69c95..da3cfb34825d254ca552a8f2fe24ff780a8a3eee
@@@ -225,39 -225,33 +225,60 @@@ frequency before ramping down. This is 
  seen enough historic cpu load data to determine the appropriate
  workload.  Default is 80000 uS.
  
- go_maxspeed_load: The CPU load at which to ramp to max speed.  Default
- is 85.
+ hispeed_freq: An intermediate "hi speed" at which to initially ramp
+ when CPU load hits the value specified in go_hispeed_load.  If load
+ stays high for the amount of time specified in above_hispeed_delay,
+ then speed may be bumped higher.  Default is maximum speed.
+ go_hispeed_load: The CPU load at which to ramp to the intermediate "hi
+ speed".  Default is 85%.
+ above_hispeed_delay: Once speed is set to hispeed_freq, wait for this
+ long before bumping speed higher in response to continued high load.
+ Default is 20000 uS.
  
  timer_rate: Sample rate for reevaluating cpu load when the system is
- not idle.  Default is 30000 uS.
+ not idle.  Default is 20000 uS.
+ input_boost: If non-zero, boost speed of all CPUs to hispeed_freq on
+ touchscreen activity.  Default is 0.
+ boost: If non-zero, immediately boost speed of all CPUs to at least
+ hispeed_freq until zero is written to this attribute.  If zero, allow
+ CPU speeds to drop below hispeed_freq according to load as usual.
+ boostpulse: Immediately boost speed of all CPUs to hispeed_freq for
+ min_sample_time, after which speeds are allowed to drop below
+ hispeed_freq according to load as usual.
  
 +2.7 Hotplug
 +-----------
 +
 +The CPUfreq governor "hotplug" operates similary to "ondemand" and
 +"conservative".  It's decisions are based primarily on CPU load.  Like
 +"ondemand" the "hotplug" governor will ramp up to the highest frequency
 +once the run-time tunable "up_threshold" parameter is crossed.  Like
 +"conservative", the "hotplug" governor exports a "down_threshold"
 +parameter that is also tunable at run-time.  When the "down_threshold"
 +is crossed the CPU transitions to the next lowest frequency in the
 +CPUfreq frequency table instead of decrementing the frequency based on a
 +percentage of maximum load.
 +
 +The main reason "hotplug" governor exists is for architectures requiring
 +that only the master CPU be online in order to hit low-power states
 +(C-states).  OMAP4 is one such example of this.  The "hotplug" governor
 +is also helpful in reducing thermal output in devices with tight thermal
 +constraints.
 +
 +Auxillary CPUs are onlined/offline based on CPU load, but the decision
 +to do so is made after averaging several sampling windows.  This is to
 +reduce CPU hotplug "thrashing", which can be caused by normal system
 +entropy and leads to lots of spurious plug-in and plug-out transitions.
 +The number of sampling periods averaged together is tunable via the
 +"hotplug_in_sampling_periods" and "hotplug_out_sampling_periods"
 +run-time tunable parameters.
 +
  3. The Governor Interface in the CPUfreq Core
  =============================================
  
diff --cc Makefile
Simple merge
Simple merge
Simple merge
index 249d1a06e3ad7e9c20f6b5613ea6030fb195d457,35ae52df6b6d851ed0fbd1d84c6d76ec226573c8..44f67b52c399c7b60bdea6f043137829c70e7a71
mode 100755,100644..100755
index 452132a5ebdee946474de19e1698769e5b13ded7,8f3d6dbeb1226d2b7cd70961f5cffd9ff89e15cd..2c548724154c54b90aef23def0cea2e3c6eeca39
mode 100755,100644..100755
index fd8b2793f54a909667223375b072deafb72ab291,7dbacf035e7a79ab41d89e2ac8b104f85787da79..c8bc6488afc2cf64a3bcc3d90a66e05054ffd825
mode 100755,100644..100755
@@@ -167,15 -196,33 +196,37 @@@ static void cpufreq_interactive_timer(u
        if (load_since_change > cpu_load)
                cpu_load = load_since_change;
  
-       if (cpu_load >= go_hispeed_load) {
-               if (pcpu->policy->cur == pcpu->policy->min)
++#ifdef CONFIG_PLAT_RK
++      pcpu->target_freq = pcpu->policy->cur;
++#endif
++
+       if (cpu_load >= go_hispeed_load || boost_val) {
+               if (pcpu->target_freq <= pcpu->policy->min) {
                        new_freq = hispeed_freq;
-               else
+               } else {
                        new_freq = pcpu->policy->max * cpu_load / 100;
+                       if (new_freq < hispeed_freq)
+                               new_freq = hispeed_freq;
+                       if (pcpu->target_freq == hispeed_freq &&
+                           new_freq > hispeed_freq &&
+                           cputime64_sub(pcpu->timer_run_time,
+                                         pcpu->hispeed_validate_time)
+                           < above_hispeed_delay_val) {
+                               trace_cpufreq_interactive_notyet(data, cpu_load,
+                                                                pcpu->target_freq,
+                                                                new_freq);
+                               goto rearm;
+                       }
+               }
        } else {
-               new_freq = pcpu->policy->cur * cpu_load / 100;
+               new_freq = pcpu->policy->max * cpu_load / 100;
        }
  
+       if (new_freq <= hispeed_freq)
+               pcpu->hispeed_validate_time = pcpu->timer_run_time;
        if (cpufreq_frequency_table_target(pcpu->policy, pcpu->freq_table,
                                           new_freq, CPUFREQ_RELATION_H,
                                           &index)) {
index a0e039db581c0215fd184fbfdd4b14ee3d7a7629,f2ce8c36816fed436fa2837e89c63fe63e613797..0f25f3541f339514b0e86aa20c4a069a82cb7595
mode 100755,100644..100755
Simple merge
index 97e1c66a5039d2df105c4c82569614a2cf795e9f,6f147defcce78ee0b7018a1b83c5df61d705614e..fb32eb11ee536462ef8279b87750ca29e92edf18
mode 100755,100644..100755
index 06e24361b266a330f3b8073f74f6dc89c8f1adc9,cf2401a041aee73a26c260cf284a92cd709c5d1a..4dc3c2de8eb549ab031c436ac65ad7163d2dc223
mode 100755,100644..100755
Simple merge
Simple merge
Simple merge
index f7f7a3c9f3cd74ea10f4fe7f6f5d57585d20319d,435f1fddfe6b730652a691105a5aac0b34686a09..7f9935ad89a2e7f33416f950896cb15fa32f38ea
mode 100755,100644..100755
index 21332db0e5d41780717fcfb7ec07bc56f36f886a,85360955816d89be32e8d002795a4c201f2c58db..f18ba0aecca70c445661578d98dcfe3350727cc9
mode 100755,100644..100755
index f0216b8743e08ee6aa6d6972e33a9577e9d55953,f6011802745ceeaac1864709f7073b902ae05ed5..4847c7392045e8db32eb25929708eed81db0be09
mode 100755,100644..100755
index dd1bfdd97782024889ab9142e2a3ce66ce19270b,0635da51a970a0589ad3f662d1edee86ec32c595..2ee448439041322e6f5581e6a4fd8cc503e67922
mode 100755,100644..100755
index 6c67160189e45393231a96d100a12ef3a9e049e5,a2c1c4d83718a2b931f2eff2cef98be5ffe481c9..ee715e73b3f7ef12b4365bbfc1cd01b34cf30378
mode 100755,100644..100755
index 783db0e48819dce8a0a1afaf31d7acb3b019fa0e,bff8d4671ad61e3bf250a4b94996938c96c2f77b..444d0bd8f23d0193fb11ad22534a57fcb543c659
mode 100755,100644..100755
Simple merge
Simple merge
index 2b39a90fc15d5d33603cfd922cb9f4591a375ce3,b423fe92a7852324e78923b2df8191ab14ccaef3..a93551bc5b7c6793e8fbf532f76f0ea375c7d878
mode 100755,100644..100755
Simple merge
index 103b92a5805713014a75c8d3231b21a867b0ed50,45e090850c93c78884f8e69be05ee8d0837ccb2b..cc8b9c57150a95f8b464a5cc69047a2ce3f025db
mode 100755,100644..100755
index 44728488411571fde463faac9df013d864e07e7c,34bb059607f5838f97a28d7fe5fe0a769acb502a..a33954b424efbf24cf005a53651aaf68a957357a
mode 100755,100644..100755
index 30ce90921f4b306af30abf4a5c4d7062e3791894,aca160e0d9431495c20872f02860c86d3f310a60..e222aceb3251e7851c692238ac293e3a9b2e75d7
@@@ -544,21 -543,8 +544,21 @@@ config USB_LANGWEL
        default USB_GADGET
        select USB_GADGET_SELECTED
  
 +config USB_GADGET_DWC_OTG
 +      boolean "Synopsys DWC OTG Controller"
 +      select USB_GADGET_DUALSPEED
 +      help
 +        This driver provides USB Device Controller support for the
 +        Synopsys DesignWare USB OTG Core used on the Rockchip RK28.
 +
 +config USB_DWC_OTG
 +      tristate
 +      depends on USB_GADGET_DWC_OTG
 +      default USB_GADGET
 +      select USB_GADGET_SELECTED
 +
  config USB_GADGET_EG20T
-       boolean "Intel EG20T PCH/OKI SEMICONDUCTOR ML7213 IOH UDC"
+       tristate "Intel EG20T PCH/OKI SEMICONDUCTOR IOH(ML7213/ML7831) UDC"
        depends on PCI
        select USB_GADGET_DUALSPEED
        help
Simple merge
index 6182f6d0451925763728a63570b95a61843553df,1d88a80086a36ea7a587ca20d58f4ecde2831f49..2e295e8c5567cefe7ea90db0bd17f66a045f262d
mode 100755,100644..100755
index 51ce8dfb5dcad2ed07bf563047bec8edf3d049f3,1df88a6bf7ec3ac1877f88ddeb559827a13ca2d6..ee78a24d7ad512b947cde9707f2d347a36c92948
mode 100755,100644..100755
index 83e1f59385a2f3f697b5433a00c6b2e1796502ae,1c0166c6df219f8684f2a8297914c7f4ab634295..de61944d780f3937710dc81c050d603360a51510
mode 100755,100644..100755
index ef0cd7fbe1a02728a6f91808e55401447ba15f12,bc2f62476cbc87c9ca04d4a51764f24496d80014..daea926edef345f4a105113620fd363cd6e53e80
mode 100755,100644..100755
index 8e84303422304d4b1a9aacb172f2a9635a09d5db,cbe3451cb351cc17ee3113ca288e68c0069734f2..a01fedbca7e60c1de09908dcb178aa1096fa18d1
@@@ -315,8 -319,10 +319,11 @@@ static void option_instat_callback(stru
  #define ZTE_PRODUCT_CDMA_TECH                 0xfffe
  #define ZTE_PRODUCT_AC8710                    0xfff1
  #define ZTE_PRODUCT_AC2726                    0xfff5
 +#define ZTE_PRODUCT_AC100                     0x0094
  #define ZTE_PRODUCT_AC8710T                   0xffff
+ #define ZTE_PRODUCT_MC2718                    0xffe8
+ #define ZTE_PRODUCT_AD3812                    0xffeb
+ #define ZTE_PRODUCT_MC2716                    0xffed
  
  #define BENQ_VENDOR_ID                                0x04a5
  #define BENQ_PRODUCT_H10                      0x4068
@@@ -1023,12 -1102,13 +1120,18 @@@ static const struct usb_device_id optio
        { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_CDMA_TECH, 0xff, 0xff, 0xff) },
        { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_AC8710, 0xff, 0xff, 0xff) },
        { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_AC2726, 0xff, 0xff, 0xff) },
 +      { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0xFFED, 0xff, 0xff, 0xff) },
 +      { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0xFFFE, 0xff, 0xff, 0xff) },
 +      { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0xFFEB, 0xff, 0xff, 0xff) },
 +      { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0xF006, 0xff, 0xff, 0xff) },
 +      { USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_AC100)},
        { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_AC8710T, 0xff, 0xff, 0xff) },
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MC2718, 0xff, 0xff, 0xff),
+        .driver_info = (kernel_ulong_t)&zte_mc2718_z_blacklist },
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_AD3812, 0xff, 0xff, 0xff),
+        .driver_info = (kernel_ulong_t)&zte_ad3812_z_blacklist },
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MC2716, 0xff, 0xff, 0xff),
+        .driver_info = (kernel_ulong_t)&zte_mc2716_z_blacklist },
        { USB_DEVICE(BENQ_VENDOR_ID, BENQ_PRODUCT_H10) },
        { USB_DEVICE(DLINK_VENDOR_ID, DLINK_PRODUCT_DWM_652) },
        { USB_DEVICE(ALINK_VENDOR_ID, DLINK_PRODUCT_DWM_652_U5) }, /* Yes, ALINK_VENDOR_ID */
index bf8a940a353a63c971d434f221e79fb28e351b3f,5d7b71b96148754e2519ce903ece0fab10a60266..c4fd197e2bd3eca5c4d266b02126324210d5241b
mode 100755,100644..100755
@@@ -1083,25 -1058,13 +1083,31 @@@ int usb_serial_probe(struct usb_interfa
        } else {
                serial->attached = 1;
        }
 +#ifdef CONFIG_MU509
 +              if ((le16_to_cpu(dev->descriptor.idVendor) == 0x12D1 ) && (le16_to_cpu(dev->descriptor.idProduct) == 0x1001))
 +                      MU509_USB =1;
 +              else
 +                      MU509_USB = 0;
 +#endif
 +#ifdef CONFIG_MW100           
 +      if ((le16_to_cpu(dev->descriptor.idVendor) == 0x19f5) && (le16_to_cpu(dev->descriptor.idProduct) == 0x9013))                    
 +              MW100_USB =1;           
 +      else                    
 +              MW100_USB = 0;
 +#endif
 +#ifdef CONFIG_MT6229          
 +      if ((le16_to_cpu(dev->descriptor.idVendor) == 0x0E8D) && (le16_to_cpu(dev->descriptor.idProduct) == 0x00A2))                    
 +              MT6229_USB =1;          
 +      else                    
 +              MT6229_USB = 0;
 +#endif
  
+       /* Avoid race with tty_open and serial_install by setting the
+        * disconnected flag and not clearing it until all ports have been
+        * registered.
+        */
+       serial->disconnected = 1;
        if (get_free_serial(serial, num_ports, &minor) == NULL) {
                dev_err(&interface->dev, "No more free serial devices\n");
                goto probe_error;
index d9369a700ddae00098e6ebc8460843f0e5e2f551,7a41220aebdd19d4df5b9572b5853fe56f4cdc3d..ae7c4211f7154577f7b35c249cd7ab140452607b
mode 100755,100644..100755
diff --cc fs/block_dev.c
index fd91640369dbccefe18e020d55ed44cd3eee129b,74fc5ed7de0609dbd3d01a5253a423cde31fccf3..5f58e5ac6a40c995c7cd9e0af5d5f56d05e2c1c8
mode 100755,100644..100755
index dc290f032250dfc19b343ad8b45fbb8aaeeafb73,811960a5ef6faa1ed86c70f1dc9c54c6e805e3f1..1648912c1a87c6988db6a4cfcc89726212276656
@@@ -550,29 -550,14 +550,23 @@@ static bool disk_unlock_native_capacity
        }
  }
  
int rescan_partitions(struct gendisk *disk, struct block_device *bdev)
static int drop_partitions(struct gendisk *disk, struct block_device *bdev)
  {
-       struct parsed_partitions *state = NULL;
        struct disk_part_iter piter;
        struct hd_struct *part;
-       int p, highest, res;
- rescan:
-       if (state && !IS_ERR(state)) {
-               kfree(state);
-               state = NULL;
-       }
+       int res;
  
        if (bdev->bd_part_count)
 +      {
 +      #if defined(CONFIG_SDMMC_RK29) && !defined(CONFIG_SDMMC_RK29_OLD) 
 +          if(179 == MAJOR(bdev->bd_dev))
 +          {
 +              printk(KERN_INFO "%s..%d.. The sdcard partition have been using.So device busy! \n",__FUNCTION__, __LINE__);
 +          }
 +      #endif    
 +          
                return -EBUSY;
 +      }
        res = invalidate_partition(disk, 0);
        if (res)
                return res;
index 0dcb6b4dc8d6f3fc7c058c3be3574df9609087de,f9d013d09bc7780a8302ed0c6a273ee213d280b2..bbbe037fe041d17d2843b38722c7e4db57fa781c
mode 100755,100644..100755
Simple merge
diff --cc kernel/module.c
Simple merge
Simple merge
diff --cc kernel/printk.c
Simple merge
diff --cc kernel/sched.c
Simple merge
Simple merge
index 5121b4341c313a353efd23ac7e3fec40ea5cf9dc,21949123787564ccb1a9a5f4e766f7411aabfd69..0c877ffeddccd3dbe4f2e93b8d11bb859405f465
mode 100755,100644..100755
index e57d1d5c1dbc890e1d204ea22f32839cfd854f19,8712a9f6d6ec1c4220bbd45df4cf936539d51d84..7fdb014ec2a575c1b2c6d1aa833548c44f13f74c
mode 100755,100644..100755
Simple merge