Merge Google's Android tree into msm-3.0 This consists of the following conflicts and 42 commits: Conflicts: drivers/mmc/core/bus.c drivers/rtc/class.c drivers/usb/gadget/android.c Most of the conflicts stem from the changes made to the local msm-3.0 branch. commit1f8c5cecfeAuthor: Heiko Stuebner <heiko@sntech.de> Date: Wed Feb 1 10:33:01 2012 -0800 Input: evdev - fix variable initialisation Commit 509f87c5f564 (evdev - do not block waiting for an event if fd is nonblock) created a code path were it was possible to use retval uninitialized. This could lead to the xorg evdev input driver getting corrupt data and refusing to work with log messages like AUO-Pixcir touchscreen: Read error: Success sg060_keys: Read error: Success AUO-Pixcir touchscreen: Read error: Success sg060_keys: Read error: Success (for drivers auo-pixcir-ts and gpio-keys). Signed-off-by: Heiko Stuebner <heiko@sntech.de> drivers/input/evdev.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit4dc43d7079Author: Arve Hjønnevåg <arve@android.com> Date: Fri Oct 17 15:20:55 2008 -0700 Input: evdev - Add ioctl to block suspend while event queue is not empty. Add an ioctl, EVIOCSSUSPENDBLOCK, to enable a wakelock that will block suspend while the event queue is not empty. This allows userspace code to process input events while the device appears to be asleep. The current code holds the wakelock for up 5 seconds for every input device and client. This can prevent suspend if sensor with a high data rate is active, even when that sensor is not capable of waking the device once it is suspended. Change-Id: I624d66ef30a0b3abb543685c343382b8419b42b9 Signed-off-by: Arve Hjønnevåg <arve@android.com> drivers/input/evdev.c | 53 +++++++++++++++++++++++++++++++++++++++++++----- include/linux/input.h | 3 ++ 2 files changed, 50 insertions(+), 6 deletions(-) commit7cc846069aAuthor: Arve Hjønnevåg <arve@android.com> Date: Mon Jan 23 17:15:45 2012 -0800 Input: evdev - Don't hold wakelock when no data is available to user-space If there is no SYN_REPORT event in the buffer the buffer data is invisible to user-space. The wakelock should not be held in this case. Change-Id: Idae890ff0da8eb46a2cfce61a95b3a97252551ad Signed-off-by: Arve Hjønnevåg <arve@android.com> drivers/input/evdev.c | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-) commit0e80804a2eAuthor: Dmitry Shmidt <dimitrysh@google.com> Date: Tue Jan 31 11:06:23 2012 -0800 net: wireless: bcmdhd: Increase pm_notify callback priority Make pm_notify callback to be called the first on suspend/resume path to ensure it will always be called. Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> drivers/net/wireless/bcmdhd/dhd_linux.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commitdfc896e1c8Author: Dmitry Shmidt <dimitrysh@google.com> Date: Mon Jan 30 15:43:31 2012 -0800 net: wireless: bcmdhd: Fix crash on dhdsdio_probe_attach() failure Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> drivers/net/wireless/bcmdhd/dhd_linux.c | 17 ++++++++++++++--- drivers/net/wireless/bcmdhd/dhd_sdio.c | 8 +++++++- 2 files changed, 21 insertions(+), 4 deletions(-) commit256a6b23beAuthor: Dmitry Shmidt <dimitrysh@google.com> Date: Mon Jan 30 13:03:19 2012 -0800 net: wireless: bcmdhd: Daemonize wl_event_handler Daemonizing makes thread (besides other things) NON-FREEZABLE, and it will not get fake signal on suspend to quicl down_interruptible() Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> drivers/net/wireless/bcmdhd/dhd_linux.c | 13 ------------- drivers/net/wireless/bcmdhd/include/linuxver.h | 12 ++++++++++++ drivers/net/wireless/bcmdhd/wl_cfg80211.c | 3 +++ 3 files changed, 15 insertions(+), 13 deletions(-) commitff93146589Author: Dmitry Shmidt <dimitrysh@google.com> Date: Tue Jan 24 13:59:40 2012 -0800 net: wireless: bcmdhd: Update to Version 5.90.195.23 - WFD fixes Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> drivers/net/wireless/bcmdhd/dhd_cfg80211.c | 269 ------------------------- drivers/net/wireless/bcmdhd/dhd_linux.c | 2 +- drivers/net/wireless/bcmdhd/dhd_sdio.c | 8 +- drivers/net/wireless/bcmdhd/include/epivers.h | 8 +- drivers/net/wireless/bcmdhd/siutils.c | 5 + drivers/net/wireless/bcmdhd/wl_cfg80211.c | 223 +++++++++++++++------ drivers/net/wireless/bcmdhd/wl_cfgp2p.c | 175 ++++++++++++++++- drivers/net/wireless/bcmdhd/wl_cfgp2p.h | 37 ++-- 8 files changed, 368 insertions(+), 359 deletions(-) commit96034c2006Author: Dmitry Shmidt <dimitrysh@google.com> Date: Tue Jan 24 13:55:00 2012 -0800 net: wireless: bcmdhd: Update to Version 5.90.195.22 - Disable Ad-hoc support for cfg80211 - dhd_linux.c: Fix incorrect pid check - Merge Android changes from Android tree Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> drivers/net/wireless/bcmdhd/bcmsdh_linux.c | 24 ++------------------ drivers/net/wireless/bcmdhd/bcmsdh_sdmmc_linux.c | 25 +++++++++++++++------ drivers/net/wireless/bcmdhd/dhd_linux.c | 10 ++++---- drivers/net/wireless/bcmdhd/dhd_sdio.c | 11 +++++++-- drivers/net/wireless/bcmdhd/hndpmu.c | 16 ++++++++++++++ drivers/net/wireless/bcmdhd/include/bcmdevs.h | 2 + drivers/net/wireless/bcmdhd/include/epivers.h | 8 +++--- drivers/net/wireless/bcmdhd/siutils.c | 3 ++ drivers/net/wireless/bcmdhd/wl_cfg80211.c | 11 ++++++++- 9 files changed, 68 insertions(+), 42 deletions(-) commit494661a1acAuthor: Dmitry Shmidt <dimitrysh@google.com> Date: Tue Jan 24 13:47:47 2012 -0800 net: wireless: bcmdhd: Update to Version 5.90.195.19 - Add WFD changes - Add extra locking for internal ioctl operations Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> drivers/net/wireless/bcmdhd/Makefile | 4 +- drivers/net/wireless/bcmdhd/bcmsdh_linux.c | 25 +- drivers/net/wireless/bcmdhd/bcmsdh_sdmmc.c | 4 +- drivers/net/wireless/bcmdhd/dhd.h | 10 +- drivers/net/wireless/bcmdhd/dhd_cdc.c | 7 +- drivers/net/wireless/bcmdhd/dhd_cfg80211.c | 862 ++++++++ drivers/net/wireless/bcmdhd/dhd_cfg80211.h | 42 + drivers/net/wireless/bcmdhd/dhd_common.c | 7 +- drivers/net/wireless/bcmdhd/dhd_linux.c | 103 +- drivers/net/wireless/bcmdhd/dhd_linux_mon.c | 409 ---- drivers/net/wireless/bcmdhd/dhd_sdio.c | 4 +- drivers/net/wireless/bcmdhd/include/dhdioctl.h | 3 +- drivers/net/wireless/bcmdhd/include/epivers.h | 8 +- drivers/net/wireless/bcmdhd/include/proto/802.11.h | 12 +- drivers/net/wireless/bcmdhd/include/wlioctl.h | 19 +- drivers/net/wireless/bcmdhd/wl_android.c | 22 +- drivers/net/wireless/bcmdhd/wl_android.h | 2 +- drivers/net/wireless/bcmdhd/wl_cfg80211.c | 2142 ++++++-------------- drivers/net/wireless/bcmdhd/wl_cfg80211.h | 125 +- drivers/net/wireless/bcmdhd/wl_cfgp2p.c | 245 ++- drivers/net/wireless/bcmdhd/wl_cfgp2p.h | 27 +- drivers/net/wireless/bcmdhd/wl_linux_mon.c | 409 ++++ drivers/net/wireless/bcmdhd/wldev_common.c | 69 +- drivers/net/wireless/bcmdhd/wldev_common.h | 20 +- 24 files changed, 2485 insertions(+), 2095 deletions(-) commit1dddb0cc0dAuthor: Dmitry Shmidt <dimitrysh@google.com> Date: Tue Jan 24 13:37:34 2012 -0800 net: wireless: bcmdhd: Update to Version 5.90.195.15 - Add WFD concurrent mode support Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> drivers/net/wireless/bcmdhd/bcmevent.c | 8 +- drivers/net/wireless/bcmdhd/bcmsdh_sdmmc_linux.c | 12 +- drivers/net/wireless/bcmdhd/bcmutils.c | 4 +- drivers/net/wireless/bcmdhd/dhd.h | 25 +- drivers/net/wireless/bcmdhd/dhd_cdc.c | 9 +- drivers/net/wireless/bcmdhd/dhd_common.c | 4 +- drivers/net/wireless/bcmdhd/dhd_linux.c | 148 +++-- drivers/net/wireless/bcmdhd/dhd_linux_mon.c | 28 +- drivers/net/wireless/bcmdhd/dhd_sdio.c | 27 +- drivers/net/wireless/bcmdhd/dhd_wlfc.h | 12 +- drivers/net/wireless/bcmdhd/hndpmu.c | 44 +- drivers/net/wireless/bcmdhd/include/Makefile | 2 +- drivers/net/wireless/bcmdhd/include/aidmp.h | 2 +- drivers/net/wireless/bcmdhd/include/bcmcdc.h | 2 +- drivers/net/wireless/bcmdhd/include/bcmdefs.h | 37 +- drivers/net/wireless/bcmdhd/include/bcmdevs.h | 573 +++++++++++++- drivers/net/wireless/bcmdhd/include/bcmendian.h | 2 +- drivers/net/wireless/bcmdhd/include/bcmpcispi.h | 2 +- drivers/net/wireless/bcmdhd/include/bcmperf.h | 2 +- drivers/net/wireless/bcmdhd/include/bcmsdbus.h | 10 +- drivers/net/wireless/bcmdhd/include/bcmsdh.h | 10 +- drivers/net/wireless/bcmdhd/include/bcmsdh_sdmmc.h | 2 +- drivers/net/wireless/bcmdhd/include/bcmsdpcm.h | 2 +- drivers/net/wireless/bcmdhd/include/bcmsdspi.h | 2 +- drivers/net/wireless/bcmdhd/include/bcmsdstd.h | 34 +- drivers/net/wireless/bcmdhd/include/bcmspi.h | 2 +- drivers/net/wireless/bcmdhd/include/bcmutils.h | 14 +- drivers/net/wireless/bcmdhd/include/bcmwifi.h | 2 +- drivers/net/wireless/bcmdhd/include/dhdioctl.h | 2 +- drivers/net/wireless/bcmdhd/include/epivers.h | 14 +- drivers/net/wireless/bcmdhd/include/hndpmu.h | 2 +- .../net/wireless/bcmdhd/include/hndrte_armtrap.h | 2 +- drivers/net/wireless/bcmdhd/include/hndrte_cons.h | 2 +- drivers/net/wireless/bcmdhd/include/hndsoc.h | 2 +- drivers/net/wireless/bcmdhd/include/htsf.h | 2 +- drivers/net/wireless/bcmdhd/include/linux_osl.h | 2 +- drivers/net/wireless/bcmdhd/include/linuxver.h | 6 +- drivers/net/wireless/bcmdhd/include/miniopt.h | 2 +- drivers/net/wireless/bcmdhd/include/msgtrace.h | 2 +- drivers/net/wireless/bcmdhd/include/osl.h | 2 +- .../wireless/bcmdhd/include/packed_section_end.h | 2 +- .../wireless/bcmdhd/include/packed_section_start.h | 2 +- drivers/net/wireless/bcmdhd/include/pcicfg.h | 28 +- drivers/net/wireless/bcmdhd/include/proto/802.11.h | 317 +++++++- .../net/wireless/bcmdhd/include/proto/802.11_bta.h | 2 +- .../net/wireless/bcmdhd/include/proto/802.11e.h | 2 +- drivers/net/wireless/bcmdhd/include/proto/802.1d.h | 2 +- drivers/net/wireless/bcmdhd/include/proto/bcmeth.h | 2 +- .../net/wireless/bcmdhd/include/proto/bcmevent.h | 9 +- drivers/net/wireless/bcmdhd/include/proto/bcmip.h | 2 +- .../net/wireless/bcmdhd/include/proto/bt_amp_hci.h | 2 +- drivers/net/wireless/bcmdhd/include/proto/eapol.h | 2 +- .../net/wireless/bcmdhd/include/proto/ethernet.h | 3 +- drivers/net/wireless/bcmdhd/include/proto/p2p.h | 2 +- drivers/net/wireless/bcmdhd/include/proto/sdspi.h | 2 +- drivers/net/wireless/bcmdhd/include/proto/vlan.h | 2 +- drivers/net/wireless/bcmdhd/include/proto/wpa.h | 12 +- drivers/net/wireless/bcmdhd/include/sbchipc.h | 168 ++++- drivers/net/wireless/bcmdhd/include/sbconfig.h | 2 +- drivers/net/wireless/bcmdhd/include/sbhnddma.h | 6 +- drivers/net/wireless/bcmdhd/include/sbpcmcia.h | 2 +- drivers/net/wireless/bcmdhd/include/sbsdio.h | 2 +- drivers/net/wireless/bcmdhd/include/sbsdpcmdev.h | 2 +- drivers/net/wireless/bcmdhd/include/sbsocram.h | 2 +- drivers/net/wireless/bcmdhd/include/sdio.h | 5 +- drivers/net/wireless/bcmdhd/include/sdioh.h | 32 +- drivers/net/wireless/bcmdhd/include/sdiovar.h | 2 +- drivers/net/wireless/bcmdhd/include/siutils.h | 30 +- drivers/net/wireless/bcmdhd/include/trxhdr.h | 3 +- drivers/net/wireless/bcmdhd/include/typedefs.h | 5 +- drivers/net/wireless/bcmdhd/include/wlfc_proto.h | 2 +- drivers/net/wireless/bcmdhd/include/wlioctl.h | 87 ++- drivers/net/wireless/bcmdhd/linux_osl.c | 23 +- drivers/net/wireless/bcmdhd/siutils.c | 195 +++++- drivers/net/wireless/bcmdhd/wl_android.c | 6 +- drivers/net/wireless/bcmdhd/wl_cfg80211.c | 875 ++++++++++++-------- drivers/net/wireless/bcmdhd/wl_cfg80211.h | 282 +++++--- drivers/net/wireless/bcmdhd/wl_cfgp2p.c | 165 ++++- drivers/net/wireless/bcmdhd/wl_cfgp2p.h | 12 +- drivers/net/wireless/bcmdhd/wl_iw.c | 110 +++- drivers/net/wireless/bcmdhd/wl_iw.h | 17 +- 81 files changed, 2737 insertions(+), 752 deletions(-) commit52bdb6f543Author: Dmitry Shmidt <dimitrysh@google.com> Date: Mon Jan 23 12:47:21 2012 -0800 net: wireless: bcmdhd: Add WIPHY_FLAG_SUPPORTS_FW_ROAM flag Adding this flag will allow NL80211_ATTR_ROAM_SUPPORT, and will set WPA_DRIVER_FLAGS_BSS_SELECTION flag in wpa_supplicant Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> drivers/net/wireless/bcmdhd/wl_cfg80211.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) commitb1a94205e9Author: Dmitry Shmidt <dimitrysh@google.com> Date: Fri Jan 20 14:15:05 2012 -0800 net: wireless: bcmdhd: Fake PNO event to wake up the wpa_supplicant Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> drivers/net/wireless/bcmdhd/dhd_linux.c | 4 +++- drivers/net/wireless/bcmdhd/wl_cfg80211.c | 20 ++++++++++++++++---- 2 files changed, 19 insertions(+), 5 deletions(-) commit09701e3edfAuthor: Scott Anderson <saa@google.com> Date: Wed Jan 18 15:56:51 2012 -0800 usb: gadget: android: Honor CONFIG_USB_GADGET_VBUS_DRAW The maximum current draw was hard coded to 500 mA. composite.c has code that uses CONFIG_USB_GADGET_VBUS_DRAW to set the bMaxPower and to set whether or not the device is self-powered if they haven't been set. This change removes the code in android.c to allow composite.c to set them. Change-Id: I9db37922e91ee86e9e5c0e14519e119e5c41ca48 Signed-off-by: Scott Anderson <saa@google.com> drivers/usb/gadget/android.c | 3 --- 1 files changed, 0 insertions(+), 3 deletions(-) commita6ccb73389Author: Benoit Goby <benoit@android.com> Date: Fri Jan 20 14:42:41 2012 -0800 usb: gadget: Fix usb string id allocation Don't reset next_string_id every time the gadget is enabled, this makes the next strings allocated overwrite strings allocated at probe time. Instead, fix rndis not to allocate new string ids on every config bind. Change-Id: Ied28ee416bb6f00c434c34176fe5b7f0dcb2b2d4 Signed-off-by: Benoit Goby <benoit@android.com> drivers/usb/gadget/android.c | 1 - drivers/usb/gadget/f_rndis.c | 12 +++++------- drivers/usb/gadget/rndis.c | 11 +++++++++++ 3 files changed, 16 insertions(+), 8 deletions(-) commit87159de9c3Author: Jouni Malinen <jouni@qca.qualcomm.com> Date: Thu Aug 11 11:46:22 2011 +0300 nl80211/cfg80211: Make addition of new sinfo fields safer Add a comment pointing out the use of enum station_info_flags for all new struct station_info fields. In addition, memset the sinfo buffer to zero before use on all paths in the current tree to avoid leaving uninitialized pointers in the data. Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com> Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> include/net/cfg80211.h | 5 +++++ net/mac80211/sta_info.c | 1 + net/wireless/nl80211.c | 1 + 3 files changed, 7 insertions(+), 0 deletions(-) commitd692df224bAuthor: Jouni Malinen <jouni@qca.qualcomm.com> Date: Mon Aug 8 12:11:52 2011 +0300 cfg80211/nl80211: Send AssocReq IEs to user space in AP mode When user space SME/MLME (e.g., hostapd) is not used in AP mode, the IEs from the (Re)Association Request frame that was processed in firmware need to be made available for user space (e.g., RSN IE for hostapd). Allow this to be done with cfg80211_new_sta(). Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com> Acked-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com> Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> include/net/cfg80211.h | 8 ++++++++ net/wireless/nl80211.c | 4 ++++ 2 files changed, 12 insertions(+), 0 deletions(-) commitd1e94136fcAuthor: Dima Zavin <dima@android.com> Date: Mon Jan 23 10:39:02 2012 -0800 misc: remove android pmem driver, it's obsolete. Change-Id: I48d9778007e1e9eed2bb34e33ceee818c23afaa5 Signed-off-by: Dima Zavin <dima@android.com> drivers/misc/Kconfig | 4 - drivers/misc/Makefile | 1 - drivers/misc/pmem.c | 1345 ------------------------------------------ include/linux/android_pmem.h | 93 --- 4 files changed, 0 insertions(+), 1443 deletions(-) commitdac306d896Author: Dima Zavin <dima@android.com> Date: Thu Jan 19 09:51:07 2012 -0800 Revert "proc: enable writing to /proc/pid/mem" This reverts commit198214a7ee. fs/proc/base.c | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-) commita65e28a014Author: Dima Zavin <dima@android.com> Date: Thu Jan 12 15:55:25 2012 -0800 ram_console: set CON_ANYTIME console flag We want to ensure that we get all the console messages, even ones that occur while the printing CPU is not yet online. Change-Id: I1d2694d05ac9415669a92f38efdd8e71c927705b Signed-off-by: Dima Zavin <dima@android.com> drivers/staging/android/ram_console.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commitf16e6fb3e3Author: Benoit Goby <benoit@android.com> Date: Thu Dec 15 18:40:37 2011 -0800 Revert "usb: gadget: rndis: don't use dev_get_stats" This reverts commitffdab0c0c4. Not needed anymore in 2.6.39 and 3.0, dev_get_stats has been fixed and may be called from atomic context. See:1ac9ad1net: remove dev_txq_stats_fold() drivers/usb/gadget/rndis.c | 23 ++--------------------- 1 files changed, 2 insertions(+), 21 deletions(-) commite1493f1544Author: Dmitry Shmidt <dimitrysh@google.com> Date: Mon Dec 19 10:24:09 2011 -0800 net: wireless: bcmdhd: Enable wlan access on resume for all sdio functions Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> drivers/net/wireless/bcmdhd/bcmsdh_sdmmc_linux.c | 4 +--- 1 files changed, 1 insertions(+), 3 deletions(-) commitbbd08c6e95Author: Dmitry Shmidt <dimitrysh@google.com> Date: Fri Dec 16 12:54:51 2011 -0800 net: wireless: bcmdhd: Fix P2P interface removal Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> drivers/net/wireless/bcmdhd/dhd_linux.c | 3 ++ drivers/net/wireless/bcmdhd/wl_cfg80211.c | 43 ++++++++++++++++++++++------- drivers/net/wireless/bcmdhd/wl_cfg80211.h | 9 ++++-- 3 files changed, 42 insertions(+), 13 deletions(-) commit37ff4411a5Author: Dmitry Shmidt <dimitrysh@google.com> Date: Thu Dec 15 12:12:20 2011 -0800 net: wireless: bcm4329: Fix pno_enable if disassociated Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> drivers/net/wireless/bcm4329/dhd_common.c | 43 ++++++++++++++++++++++++----- 1 files changed, 36 insertions(+), 7 deletions(-) commit599c8566faAuthor: Dmitry Shmidt <dimitrysh@google.com> Date: Tue Dec 13 17:39:48 2011 -0800 net: wireless: bcmdhd: Fix proper scan command even if request is NULL Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> drivers/net/wireless/bcmdhd/wl_cfg80211.c | 16 ++++++++++------ 1 files changed, 10 insertions(+), 6 deletions(-) commitf227b88c89Author: Dmitry Shmidt <dimitrysh@google.com> Date: Tue Dec 13 12:27:49 2011 -0800 net: wireless: bcmdhd: Decrease event wake_lock timeout to 1500 ms Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> drivers/net/wireless/bcmdhd/dhd.h | 4 ++-- drivers/net/wireless/bcmdhd/dhd_linux.c | 8 ++++---- drivers/net/wireless/bcmdhd/wl_iw.c | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) commited3f356087Author: Dmitry Shmidt <dimitrysh@google.com> Date: Mon Dec 12 15:40:33 2011 -0800 net: wireless: bcmdhd: Fix getting arp_hostip table Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> drivers/net/wireless/bcmdhd/dhd_common.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commitc561cedf2bAuthor: Dmitry Shmidt <dimitrysh@google.com> Date: Tue Dec 6 16:27:37 2011 -0800 net: wireless: bcmdhd: Allow to push more packets to FW for Tx Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> drivers/net/wireless/bcmdhd/dhd_sdio.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit4f36cb88d6Author: Dmitry Shmidt <dimitrysh@google.com> Date: Fri Dec 2 13:24:01 2011 -0800 net: wireless: bcmdhd: Fix scan crash in ibss mode Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> drivers/net/wireless/bcmdhd/wl_cfg80211.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commitaf16732d4cAuthor: Dmitry Shmidt <dimitrysh@google.com> Date: Fri Dec 2 13:10:47 2011 -0800 net: wireless: bcmdhd: Add FW reloading in case of FW hang Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> drivers/net/wireless/bcmdhd/dhd_linux.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-) commit7caeacd6edAuthor: Dmitry Shmidt <dimitrysh@google.com> Date: Wed Nov 30 12:49:02 2011 -0800 net: wireless: bcmdhd: Update to Version 5.90.125.94.1 - Return zeroed private command buffer - Fix memory leak in wl_inform_single_bss() Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> drivers/net/wireless/bcmdhd/dhd_common.c | 5 +++-- drivers/net/wireless/bcmdhd/dhd_linux_mon.c | 10 ++++++---- drivers/net/wireless/bcmdhd/include/epivers.h | 2 +- drivers/net/wireless/bcmdhd/wl_android.c | 9 ++++++--- drivers/net/wireless/bcmdhd/wl_cfg80211.c | 9 ++++++--- 5 files changed, 22 insertions(+), 13 deletions(-) commit8d71d882e7Author: Dmitry Shmidt <dimitrysh@google.com> Date: Fri Nov 11 16:04:12 2011 -0800 net: wireless: bcmdhd: Use CONFIG_DHD_USE_STATIC_BUF for preallocated memory Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> drivers/net/wireless/bcmdhd/Kconfig | 7 +++ drivers/net/wireless/bcmdhd/bcmsdh_sdmmc.c | 16 ++++---- drivers/net/wireless/bcmdhd/dhd.h | 4 +- drivers/net/wireless/bcmdhd/dhd_cdc.c | 4 +- drivers/net/wireless/bcmdhd/dhd_linux.c | 4 +- drivers/net/wireless/bcmdhd/dhd_sdio.c | 4 +- drivers/net/wireless/bcmdhd/include/linux_osl.h | 2 +- drivers/net/wireless/bcmdhd/linux_osl.c | 52 +++++++++++++---------- drivers/net/wireless/bcmdhd/wl_android.c | 7 ++- 9 files changed, 57 insertions(+), 43 deletions(-) commit35047200c4Author: Dmitry Shmidt <dimitrysh@google.com> Date: Mon Dec 19 12:32:21 2011 -0800 wireless: Protect regdomain change by mutex Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> net/wireless/reg.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-) commitea693bf7f8Author: Dmitry Shmidt <dimitrysh@google.com> Date: Fri Dec 16 17:52:18 2011 -0800 mmc: Set suspend/resume bus operations if CONFIG_PM_RUNTIME is used Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> drivers/mmc/core/bus.c | 24 +++++++----------------- 1 files changed, 7 insertions(+), 17 deletions(-) commitdc1b634039Author: Benoit Goby <benoit@android.com> Date: Fri Dec 9 18:05:00 2011 -0800 usb: gadget: android: Don't allow changing the functions list if enabled Change-Id: I3ad39b420ce79a8602a7eca1daac1f56b30bad5c Signed-off-by: Benoit Goby <benoit@android.com> drivers/usb/gadget/android.c | 28 ++++++++++++++++++++++++---- 1 files changed, 24 insertions(+), 4 deletions(-) commite0de0a507dAuthor: Benoit Goby <benoit@android.com> Date: Tue Nov 29 13:49:27 2011 -0800 usb: gadget: android: Cancel pending ctrlrequest before disabling Make sure there is no pending ctrlrequest before removing the config. Otherwise the ctrlrequest complete callback could access structures after they have been freed. Unbind cancels pending transfers but not ep0 requests. Bug:55130655440193 Change-Id: I063c22bf5d104a3d2df71cf622409459fac5f27a Signed-off-by: Benoit Goby <benoit@android.com> drivers/usb/gadget/android.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commitb86fd0b622Author: Colin Cross <ccross@android.com> Date: Tue Nov 29 16:37:07 2011 -0800 ARM: idle: call idle notifiers before stopping nohz tick If an idle notifier modifies a timer, calling the notifier after the sched tick has been stopped may leave the sched tick set too early. Move teh idle notifier call before the call to tick_nohz_stop_sched_tick. Change-Id: I0db3284bec6d0193bc5e2a57650ab06bd8342319 Signed-off-by: Colin Cross <ccross@android.com> arch/arm/kernel/process.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit6a4a38525dAuthor: Benoit Goby <benoit@android.com> Date: Mon Nov 28 18:01:03 2011 -0800 usb: gadget: android: Reset next_string_id before enable Reset next_string_id to 0 before enabling the gadget driver. Otherwise, after a large number of enable/disable cycles, bind will fail because we cannot allocate new string ids. String ids cannot be larger than 254 per USB spec. Change-Id: I44f5fece45008b7a0a18c025d4eb5ce842585c28 Signed-off-by: Benoit Goby <benoit@android.com> drivers/usb/gadget/android.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commitdbb18fb2c1Author: hyungseoung.yoo <hyungseoung.yoo@samsung.com> Date: Fri Nov 18 13:57:01 2011 +0900 Bluetooth: Keep master role when SCO or eSCO is active This improves compatbility with a lot of headset / chipset combinations. Ideally this should not be needed. Change-Id: I8b676701e12e416aa7d60801b9d353b15d102709 Signed-off-by: hyungseoung.yoo <hyungseoung.yoo@samsung.com> Signed-off-by: Jaikumar Ganesh <jaikumarg@android.com> net/bluetooth/hci_event.c | 12 +++++++++++- 1 files changed, 11 insertions(+), 1 deletions(-) commit9d187300dfAuthor: Arve Hjønnevåg <arve@android.com> Date: Tue Nov 22 14:56:50 2011 -0800 rtc: Fix some bugs that allowed accumulating time drift in suspend/resume The current code checks if abs(delta_delta.tv_sec) is greater or equal to two before it discards the old delta value, but this can trigger at close to -1 seconds since -1.000000001 seconds is stored as tv_sec -2 and tv_nsec 999999999 in a normalized timespec. rtc_resume had an early return check if the rtc value had not changed since rtc_suspend. This effectivly stops time for the duration of the short sleep. Check if sleep_time is positive after all the adjustments have been applied instead since this allows the old_system adjustment in rtc_suspend to have an effect even for short sleep cycles. Change-Id: I00b45c0349ec91a4bab9b41a126b377515427898 Signed-off-by: Arve Hjønnevåg <arve@android.com> drivers/rtc/class.c | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-) commit452d440ab2Author: Arve Hjønnevåg <arve@android.com> Date: Tue Nov 22 15:28:27 2011 -0800 Fix "time: Catch invalid timespec sleep values in __timekeeping_inject_sleeptime" to compile on 3.0 Change-Id: I1225f279cda04dedbfb7f853f6b58f1032bd6d2b kernel/time/timekeeping.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commitcf70c6a400Author: John Stultz <john.stultz@linaro.org> Date: Wed Jun 1 18:18:09 2011 -0700 time: Catch invalid timespec sleep values in __timekeeping_inject_sleeptime Arve suggested making sure we catch possible negative sleep time intervals that could be passed into timekeeping_inject_sleeptime. CC: Arve Hjønnevåg <arve@android.com> CC: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: John Stultz <john.stultz@linaro.org> kernel/time/timekeeping.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) commit340ede3671Author: John Stultz <john.stultz@linaro.org> Date: Fri May 27 11:33:18 2011 -0700 rtc: Avoid accumulating time drift in suspend/resume Because the RTC interface is only a second granular interface, each time we read from the RTC for suspend/resume, we introduce a half second (on average) of error. In order to avoid this error accumulating as the system is suspended over and over, this patch measures the time delta between the RTC and the system CLOCK_REALTIME. If the delta is less then 2 seconds from the last suspend, we compensate by using the previous time delta (keeping it close). If it is larger then 2 seconds, we assume the clock was set or has been changed, so we do no correction and update the delta. Note: If NTP is running, ths could seem to "fight" with the NTP corrected time, where as if the system time was off by 1 second, and NTP slewed the value in, a suspend/resume cycle could undo this correction, by trying to restore the previous offset from the RTC. However, without this patch, since each read could cause almost a full second worth of error, its possible to get almost 2 seconds of error just from the suspend/resume cycle alone, so this about equal to any offset added by the compensation. Further on systems that suspend/resume frequently, this should keep time closer then NTP could compensate for if the errors were allowed to accumulate. Credits to Arve Hjønnevåg for suggesting this solution. This patch also improves some of the variable names and adds more clear comments. CC: Arve Hjønnevåg <arve@android.com> CC: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: John Stultz <john.stultz@linaro.org> drivers/rtc/class.c | 65 +++++++++++++++++++++++++++++++++++++------------- 1 files changed, 48 insertions(+), 17 deletions(-) Change-Id: I16f522e7ee2b301cbdaea62d52d50d7249f565c2 Signed-off-by: Rohit Vaswani <rvaswani@codeaurora.org>
365 lines
7.4 KiB
C
365 lines
7.4 KiB
C
/*
|
|
* linux/drivers/mmc/core/bus.c
|
|
*
|
|
* Copyright (C) 2003 Russell King, All Rights Reserved.
|
|
* Copyright (C) 2007 Pierre Ossman
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 as
|
|
* published by the Free Software Foundation.
|
|
*
|
|
* MMC card bus driver model
|
|
*/
|
|
|
|
#include <linux/device.h>
|
|
#include <linux/err.h>
|
|
#include <linux/slab.h>
|
|
#include <linux/pm_runtime.h>
|
|
|
|
#include <linux/mmc/card.h>
|
|
#include <linux/mmc/host.h>
|
|
|
|
#include "core.h"
|
|
#include "sdio_cis.h"
|
|
#include "bus.h"
|
|
|
|
#define to_mmc_driver(d) container_of(d, struct mmc_driver, drv)
|
|
|
|
static ssize_t mmc_type_show(struct device *dev,
|
|
struct device_attribute *attr, char *buf)
|
|
{
|
|
struct mmc_card *card = mmc_dev_to_card(dev);
|
|
|
|
switch (card->type) {
|
|
case MMC_TYPE_MMC:
|
|
return sprintf(buf, "MMC\n");
|
|
case MMC_TYPE_SD:
|
|
return sprintf(buf, "SD\n");
|
|
case MMC_TYPE_SDIO:
|
|
return sprintf(buf, "SDIO\n");
|
|
case MMC_TYPE_SD_COMBO:
|
|
return sprintf(buf, "SDcombo\n");
|
|
default:
|
|
return -EFAULT;
|
|
}
|
|
}
|
|
|
|
static struct device_attribute mmc_dev_attrs[] = {
|
|
__ATTR(type, S_IRUGO, mmc_type_show, NULL),
|
|
__ATTR_NULL,
|
|
};
|
|
|
|
/*
|
|
* This currently matches any MMC driver to any MMC card - drivers
|
|
* themselves make the decision whether to drive this card in their
|
|
* probe method.
|
|
*/
|
|
static int mmc_bus_match(struct device *dev, struct device_driver *drv)
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
static int
|
|
mmc_bus_uevent(struct device *dev, struct kobj_uevent_env *env)
|
|
{
|
|
struct mmc_card *card = mmc_dev_to_card(dev);
|
|
const char *type;
|
|
int retval = 0;
|
|
|
|
switch (card->type) {
|
|
case MMC_TYPE_MMC:
|
|
type = "MMC";
|
|
break;
|
|
case MMC_TYPE_SD:
|
|
type = "SD";
|
|
break;
|
|
case MMC_TYPE_SDIO:
|
|
type = "SDIO";
|
|
break;
|
|
case MMC_TYPE_SD_COMBO:
|
|
type = "SDcombo";
|
|
break;
|
|
default:
|
|
type = NULL;
|
|
}
|
|
|
|
if (type) {
|
|
retval = add_uevent_var(env, "MMC_TYPE=%s", type);
|
|
if (retval)
|
|
return retval;
|
|
}
|
|
|
|
retval = add_uevent_var(env, "MMC_NAME=%s", mmc_card_name(card));
|
|
if (retval)
|
|
return retval;
|
|
|
|
/*
|
|
* Request the mmc_block device. Note: that this is a direct request
|
|
* for the module it carries no information as to what is inserted.
|
|
*/
|
|
retval = add_uevent_var(env, "MODALIAS=mmc:block");
|
|
|
|
return retval;
|
|
}
|
|
|
|
static int mmc_bus_probe(struct device *dev)
|
|
{
|
|
struct mmc_driver *drv = to_mmc_driver(dev->driver);
|
|
struct mmc_card *card = mmc_dev_to_card(dev);
|
|
|
|
return drv->probe(card);
|
|
}
|
|
|
|
static int mmc_bus_remove(struct device *dev)
|
|
{
|
|
struct mmc_driver *drv = to_mmc_driver(dev->driver);
|
|
struct mmc_card *card = mmc_dev_to_card(dev);
|
|
|
|
drv->remove(card);
|
|
|
|
return 0;
|
|
}
|
|
|
|
#ifdef CONFIG_PM_SLEEP
|
|
static int mmc_bus_pm_suspend(struct device *dev)
|
|
{
|
|
struct mmc_driver *drv = to_mmc_driver(dev->driver);
|
|
struct mmc_card *card = mmc_dev_to_card(dev);
|
|
int ret = 0;
|
|
|
|
if (dev->driver && drv->suspend)
|
|
ret = drv->suspend(card);
|
|
return ret;
|
|
}
|
|
|
|
static int mmc_bus_pm_resume(struct device *dev)
|
|
{
|
|
struct mmc_driver *drv = to_mmc_driver(dev->driver);
|
|
struct mmc_card *card = mmc_dev_to_card(dev);
|
|
int ret = 0;
|
|
|
|
if (dev->driver && drv->resume)
|
|
ret = drv->resume(card);
|
|
return ret;
|
|
}
|
|
#endif
|
|
|
|
#ifdef CONFIG_PM_RUNTIME
|
|
static int mmc_runtime_suspend(struct device *dev)
|
|
{
|
|
struct mmc_card *card = mmc_dev_to_card(dev);
|
|
|
|
return mmc_power_save_host(card->host);
|
|
}
|
|
|
|
static int mmc_runtime_resume(struct device *dev)
|
|
{
|
|
struct mmc_card *card = mmc_dev_to_card(dev);
|
|
|
|
return mmc_power_restore_host(card->host);
|
|
}
|
|
|
|
static int mmc_runtime_idle(struct device *dev)
|
|
{
|
|
return pm_runtime_suspend(dev);
|
|
}
|
|
#endif /* CONFIG_PM_RUNTIME */
|
|
|
|
static const struct dev_pm_ops mmc_bus_pm_ops = {
|
|
SET_SYSTEM_SLEEP_PM_OPS(mmc_bus_pm_suspend, mmc_bus_pm_resume)
|
|
SET_RUNTIME_PM_OPS(mmc_runtime_suspend, mmc_runtime_resume, mmc_runtime_idle)
|
|
};
|
|
|
|
static struct bus_type mmc_bus_type = {
|
|
.name = "mmc",
|
|
.dev_attrs = mmc_dev_attrs,
|
|
.match = mmc_bus_match,
|
|
.uevent = mmc_bus_uevent,
|
|
.probe = mmc_bus_probe,
|
|
.remove = mmc_bus_remove,
|
|
.pm = &mmc_bus_pm_ops,
|
|
};
|
|
|
|
int mmc_register_bus(void)
|
|
{
|
|
return bus_register(&mmc_bus_type);
|
|
}
|
|
|
|
void mmc_unregister_bus(void)
|
|
{
|
|
bus_unregister(&mmc_bus_type);
|
|
}
|
|
|
|
/**
|
|
* mmc_register_driver - register a media driver
|
|
* @drv: MMC media driver
|
|
*/
|
|
int mmc_register_driver(struct mmc_driver *drv)
|
|
{
|
|
drv->drv.bus = &mmc_bus_type;
|
|
return driver_register(&drv->drv);
|
|
}
|
|
|
|
EXPORT_SYMBOL(mmc_register_driver);
|
|
|
|
/**
|
|
* mmc_unregister_driver - unregister a media driver
|
|
* @drv: MMC media driver
|
|
*/
|
|
void mmc_unregister_driver(struct mmc_driver *drv)
|
|
{
|
|
drv->drv.bus = &mmc_bus_type;
|
|
driver_unregister(&drv->drv);
|
|
}
|
|
|
|
EXPORT_SYMBOL(mmc_unregister_driver);
|
|
|
|
static void mmc_release_card(struct device *dev)
|
|
{
|
|
struct mmc_card *card = mmc_dev_to_card(dev);
|
|
|
|
sdio_free_common_cis(card);
|
|
|
|
if (card->info)
|
|
kfree(card->info);
|
|
|
|
kfree(card);
|
|
}
|
|
|
|
/*
|
|
* Allocate and initialise a new MMC card structure.
|
|
*/
|
|
struct mmc_card *mmc_alloc_card(struct mmc_host *host, struct device_type *type)
|
|
{
|
|
struct mmc_card *card;
|
|
|
|
card = kzalloc(sizeof(struct mmc_card), GFP_KERNEL);
|
|
if (!card)
|
|
return ERR_PTR(-ENOMEM);
|
|
|
|
card->host = host;
|
|
|
|
device_initialize(&card->dev);
|
|
|
|
card->dev.parent = mmc_classdev(host);
|
|
card->dev.bus = &mmc_bus_type;
|
|
card->dev.release = mmc_release_card;
|
|
card->dev.type = type;
|
|
|
|
return card;
|
|
}
|
|
|
|
/*
|
|
* Register a new MMC card with the driver model.
|
|
*/
|
|
int mmc_add_card(struct mmc_card *card)
|
|
{
|
|
int ret;
|
|
const char *type;
|
|
const char *uhs_bus_speed_mode = "";
|
|
|
|
dev_set_name(&card->dev, "%s:%04x", mmc_hostname(card->host), card->rca);
|
|
|
|
switch (card->type) {
|
|
case MMC_TYPE_MMC:
|
|
type = "MMC";
|
|
break;
|
|
case MMC_TYPE_SD:
|
|
type = "SD";
|
|
if (mmc_card_blockaddr(card)) {
|
|
if (mmc_card_ext_capacity(card))
|
|
type = "SDXC";
|
|
else
|
|
type = "SDHC";
|
|
}
|
|
break;
|
|
case MMC_TYPE_SDIO:
|
|
type = "SDIO";
|
|
break;
|
|
case MMC_TYPE_SD_COMBO:
|
|
type = "SD-combo";
|
|
if (mmc_card_blockaddr(card))
|
|
type = "SDHC-combo";
|
|
break;
|
|
default:
|
|
type = "?";
|
|
break;
|
|
}
|
|
|
|
if (mmc_sd_card_uhs(card)) {
|
|
switch (card->sd_bus_speed) {
|
|
case UHS_SDR104_BUS_SPEED:
|
|
uhs_bus_speed_mode = "SDR104 ";
|
|
break;
|
|
case UHS_SDR50_BUS_SPEED:
|
|
uhs_bus_speed_mode = "SDR50 ";
|
|
break;
|
|
case UHS_DDR50_BUS_SPEED:
|
|
uhs_bus_speed_mode = "DDR50 ";
|
|
break;
|
|
case UHS_SDR25_BUS_SPEED:
|
|
uhs_bus_speed_mode = "SDR25 ";
|
|
break;
|
|
case UHS_SDR12_BUS_SPEED:
|
|
uhs_bus_speed_mode = "SDR12 ";
|
|
break;
|
|
default:
|
|
uhs_bus_speed_mode = "";
|
|
break;
|
|
}
|
|
}
|
|
if (mmc_host_is_spi(card->host)) {
|
|
printk(KERN_INFO "%s: new %s%s%s card on SPI\n",
|
|
mmc_hostname(card->host),
|
|
mmc_card_highspeed(card) ? "high speed " : "",
|
|
mmc_card_ddr_mode(card) ? "DDR " : "",
|
|
type);
|
|
} else {
|
|
pr_info("%s: new %s%s%s%s%s card at address %04x\n",
|
|
mmc_hostname(card->host),
|
|
mmc_sd_card_uhs(card) ? "ultra high speed " :
|
|
(mmc_card_highspeed(card) ? "high speed " : ""),
|
|
(mmc_card_hs200(card) ? "HS200 " : ""),
|
|
mmc_card_ddr_mode(card) ? "DDR " : "",
|
|
uhs_bus_speed_mode,
|
|
type, card->rca);
|
|
}
|
|
|
|
#ifdef CONFIG_DEBUG_FS
|
|
mmc_add_card_debugfs(card);
|
|
#endif
|
|
|
|
ret = device_add(&card->dev);
|
|
if (ret)
|
|
return ret;
|
|
|
|
mmc_card_set_present(card);
|
|
|
|
return 0;
|
|
}
|
|
|
|
/*
|
|
* Unregister a new MMC card with the driver model, and
|
|
* (eventually) free it.
|
|
*/
|
|
void mmc_remove_card(struct mmc_card *card)
|
|
{
|
|
#ifdef CONFIG_DEBUG_FS
|
|
mmc_remove_card_debugfs(card);
|
|
#endif
|
|
|
|
if (mmc_card_present(card)) {
|
|
if (mmc_host_is_spi(card->host)) {
|
|
printk(KERN_INFO "%s: SPI card removed\n",
|
|
mmc_hostname(card->host));
|
|
} else {
|
|
printk(KERN_INFO "%s: card %04x removed\n",
|
|
mmc_hostname(card->host), card->rca);
|
|
}
|
|
device_del(&card->dev);
|
|
}
|
|
|
|
put_device(&card->dev);
|
|
}
|
|
|