Linux 3.0.3
I'm announcing the release of the 3.0.3 kernel.
All users of the 3.0 kernel series must upgrade.
The updated 3.0.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-3.0.y.git
and can be browsed at the normal kernel.org git web browser:
http://git.kernel.org/?p=linux/kernel/git/stable/linux-3.0.y.git;a=summarythanks,
greg k-h
------------
Documentation/virtual/lguest/lguest.c | 3 +++ Makefile | 2 +- drivers/gpu/drm/radeon/atombios_dp.c | 12 ++++++++++++ drivers/gpu/drm/radeon/radeon_connectors.c | 16 +++++++++------- drivers/gpu/drm/radeon/radeon_encoders.c | 3 +++ drivers/gpu/drm/radeon/radeon_mode.h | 1 + drivers/hwmon/ibmaem.c | 15 ++++++++++----- drivers/net/wireless/ath/ath5k/base.c | 23 ++++++++++++++--------- drivers/staging/rtl8192u/r819xU_firmware.c | 9 +++------ drivers/usb/class/usbtmc.c | 2 +- drivers/usb/core/config.c | 11 ++++++----- drivers/usb/host/pci-quirks.c | 2 +- drivers/usb/host/xhci.c | 19 ++++++++++++++----- drivers/usb/musb/musb_gadget.c | 5 +++++ drivers/usb/serial/ftdi_sio.c | 2 +- drivers/usb/serial/option.c | 12 ++++++++++++ drivers/usb/serial/qcserial.c | 1 + drivers/usb/storage/unusual_devs.h | 10 ++++++++++ mm/vmalloc.c | 7 ++++--- net/atm/br2684.c | 2 -- sound/soc/samsung/jive_wm8750.c | 2 +- sound/soc/tegra/tegra_pcm.c | 9 +++++++-- sound/soc/tegra/tegra_wm8903.c | 15 +++++++++++---- sound/usb/caiaq/audio.c | 6 ++++-- tools/perf/util/config.c | 7 ------- 25 files changed, 134 insertions(+), 62 deletions(-)
Alex Deucher (3):
drm/radeon/kms: don't enable connectors that are off in the hotplug handler drm/radeon/kms: fix regression is handling >2 heads on cedar/caicos drm/radeon/kms: don't try to be smart in the hpd handler
Andrew Bird (4):
USB: option driver: add PID for Vodafone-Huawei K3770
USB: option driver: add PID for Vodafone-Huawei K3771
USB: option driver: add PID for Vodafone-Huawei K4510
USB: option driver: add PID for Vodafone-Huawei K4511
Bob Copeland (1):
ath5k: fix error handling in ath5k_beacon_send
Chas Williams (1):
atm: br2864: sent packets truncated in VC routed mode
Clemens Ladisch (1):
mm: fix wrong vmap address calculations with odd NR_CPUS values
Daniel Mack (1):
ALSA: snd-usb-caiaq: Correct offset fields of outbound iso_frame_desc
Greg Kroah-Hartman (1):
Linux 3.0.3
Ionut Nicu (1):
USB: ftdi_sio: fix minor typo in get_ftdi_divisor
JiSheng Zhang (1):
USB: xhci: fix OS want to own HC
John Stultz (1):
usb: musb: fix oops on musb_gadget_pullup
Jonathan Nieder (1):
perf tools: do not look at ./config for configuration
Julia Lawall (1):
hwmon: (ibmaem) add missing kfree
Mark Brown (1):
ASoC: Fix binding of WM8750 on Jive
Maxim Nikulin (1):
USB: assign instead of equal in usbtmc.c
Nick Bowler (1):
USB: usb-storage: unusual_devs entry for ARM V2M motherboard.
Rusty Russell (1):
lguest: allow booting guest with CONFIG_RELOCATABLE=y
Sarah Sharp (1):
xhci: Don't submit commands or URBs to halted hosts.
Sebastian Andrzej Siewior (1):
usb/config: use proper endian access for wMaxPacketSize
Stefan Lippers-Hollmann (1):
staging: rtl8192u: declare MODULE_FIRMWARE
Stephen Warren (2):
ASoC: Tegra: tegra_pcm_deallocate_dma_buffer: Don't OOPS
ASoC: Tegra: wm8903 machine driver: Allow re-insertion of module
Vijay Chavan (1):
USB: Serial: Added device ID for Qualcomm Modem in Sagemcom's HiLo3G
Documentation/virtual/lguest/lguest.c +3 -0
@@ -2008,6 +2008,9 @@ int main(int argc, char *argv[])/* We use a simple helper to copy the arguments separated by spaces. */ concat ((char *)(boot +1 ), argv+optind+2 ); +/* Set kernel alignment to 16M (CONFIG_PHYSICAL_ALIGN) */ + boot->hdr.kernel_alignment =0x1000000 ; +/* Boot protocol version: 2.07 supports the fields for lguest. */ boot->hdr.version =0x207 ;
Makefile +1 -1
@@ -1,6 +1,6 @@ VERSION = 3 PATCHLEVEL = 0 -SUBLEVEL = 2 +SUBLEVEL = 3 EXTRAVERSION = NAME = Sneaky Weasel
drivers/gpu/drm/radeon/atombios_dp.c +12 -0
@@ -613,6 +613,18 @@ static bool radeon_dp_get_link_status(struct radeon_connector *radeon_connector,return true; } +bool radeon_dp_needs_link_train (struct radeon_connector *radeon_connector) +{ +u8 link_status[DP_LINK_STATUS_SIZE ]; +struct radeon_connector_atom_dig *dig = radeon_connector->con_priv; + +if (!radeon_dp_get_link_status (radeon_connector, link_status)) +return false; +if (dp_channel_eq_ok (link_status, dig->dp_lane_count)) +return false; +return true; +} +struct radeon_dp_link_train_info {struct radeon_device *rdev;struct drm_encoder *encoder;
drivers/gpu/drm/radeon/radeon_connectors.c +9 -7
@@ -60,18 +60,20 @@ void radeon_connector_hotplug(struct drm_connector *connector)radeon_hpd_set_polarity (rdev, radeon_connector->hpd.hpd); -/* powering up/down the eDP panel generates hpd events which -* can interfere with modesetting. -*/ -if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) +/* if the connector is already off, don't turn it back on */ +if (connector->dpms !=DRM_MODE_DPMS_ON )return ; -/* pre-r600 did not always have the hpd pins mapped accurately to connectors */ -if (rdev->family >=CHIP_R600 ) { -if (radeon_hpd_sense (rdev, radeon_connector->hpd.hpd)) +/* just deal with DP (not eDP) here. */ +if (connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort) { +int saved_dpms = connector->dpms; + +if (radeon_hpd_sense (rdev, radeon_connector->hpd.hpd) && +radeon_dp_needs_link_train (radeon_connector))drm_helper_connector_dpms (connector,DRM_MODE_DPMS_ON );else drm_helper_connector_dpms (connector,DRM_MODE_DPMS_OFF ); + connector->dpms = saved_dpms; } }
drivers/gpu/drm/radeon/radeon_encoders.c +3 -0
@@ -2323,6 +2323,9 @@ radeon_add_atom_encoder(struct drm_device *dev,default : encoder->possible_crtcs =0x3 ;break ; +case 4 : + encoder->possible_crtcs =0xf ; +break ;case 6 : encoder->possible_crtcs =0x3f ;break ;
drivers/gpu/drm/radeon/radeon_mode.h +1 -0
@@ -479,6 +479,7 @@ extern void radeon_dp_set_link_config(struct drm_connector *connector, struct drm_display_mode *mode);extern void radeon_dp_link_train (struct drm_encoder *encoder,struct drm_connector *connector); +extern bool radeon_dp_needs_link_train (struct radeon_connector *radeon_connector);extern u8 radeon_dp_getsinktype (struct radeon_connector *radeon_connector);extern bool radeon_dp_getdpcd (struct radeon_connector *radeon_connector);extern void atombios_dig_encoder_setup (struct drm_encoder *encoder,int action,int panel_mode);
drivers/hwmon/ibmaem.c +10 -5
@@ -432,13 +432,15 @@ static int aem_read_sensor(struct aem_data *data, u8 elt, u8 reg,aem_send_message (ipmi); res =wait_for_completion_timeout (&ipmi->read_complete,IPMI_TIMEOUT ); -if (!res) -return -ETIMEDOUT ; +if (!res) { + res = -ETIMEDOUT ; + goto out; + }if (ipmi->rx_result || ipmi->rx_msg_len != rs_size ||memcmp (&rs_resp->id, &system_x_id,sizeof (system_x_id))) { -kfree (rs_resp); -return -ENOENT ; + res = -ENOENT ; + goto out; }switch (size) {
@@ -463,8 +465,11 @@ static int aem_read_sensor(struct aem_data *data, u8 elt, u8 reg,break ; } } + res =0 ; -return 0 ; +out: +kfree (rs_resp); +return res; }/* Update AEM energy registers */
drivers/net/wireless/ath/ath5k/base.c +14 -9
@@ -1748,6 +1748,8 @@ ath5k_beacon_setup(struct ath5k_softc *sc, struct ath5k_buf *bf)if (dma_mapping_error (sc->dev, bf->skbaddr)) {ATH5K_ERR (sc,"beacon DMA mapping failed\n" ); +dev_kfree_skb_any (skb); + bf->skb =NULL ;return -EIO ; }
@@ -1832,8 +1834,6 @@ ath5k_beacon_update(struct ieee80211_hw *hw, struct ieee80211_vif *vif)ath5k_txbuf_free_skb (sc, avf->bbuf); avf->bbuf->skb = skb; ret =ath5k_beacon_setup (sc, avf->bbuf); -if (ret) - avf->bbuf->skb =NULL ; out:return ret; }
@@ -1854,6 +1854,7 @@ ath5k_beacon_send(struct ath5k_softc *sc)struct ath5k_vif *avf;struct ath5k_buf *bf;struct sk_buff *skb; +int err;ATH5K_DBG_UNLIMIT (sc,ATH5K_DEBUG_BEACON ,"in beacon_send\n" );
@@ -1902,11 +1903,6 @@ ath5k_beacon_send(struct ath5k_softc *sc) avf = (void *)vif->drv_priv; bf = avf->bbuf; -if (unlikely (bf->skb ==NULL || sc->opmode ==NL80211_IFTYPE_STATION || - sc->opmode ==NL80211_IFTYPE_MONITOR )) { -ATH5K_WARN (sc,"bf=%p bf_skb=%p\n" , bf, bf ? bf->skb :NULL ); -return ; - }/* * Stop any current dma and put the new frame on the queue.
@@ -1920,8 +1916,17 @@ ath5k_beacon_send(struct ath5k_softc *sc)/* refresh the beacon for AP or MESH mode */ if (sc->opmode ==NL80211_IFTYPE_AP || - sc->opmode ==NL80211_IFTYPE_MESH_POINT ) -ath5k_beacon_update (sc->hw, vif); + sc->opmode ==NL80211_IFTYPE_MESH_POINT ) { + err =ath5k_beacon_update (sc->hw, vif); +if (err) +return ; + } + +if (unlikely (bf->skb ==NULL || sc->opmode ==NL80211_IFTYPE_STATION || + sc->opmode ==NL80211_IFTYPE_MONITOR )) { +ATH5K_WARN (sc,"bf=%p bf_skb=%p\n" , bf, bf->skb); +return ; + }trace_ath5k_tx (sc, bf->skb, &sc->txqs[sc->bhalq]);
drivers/staging/rtl8192u/r819xU_firmware.c +3 -6
@@ -399,10 +399,7 @@ download_firmware_fail: } - - - - - - +MODULE_FIRMWARE ("RTL8192U/boot.img" ); +MODULE_FIRMWARE ("RTL8192U/main.img" ); +MODULE_FIRMWARE ("RTL8192U/data.img" );
drivers/usb/class/usbtmc.c +1 -1
@@ -268,7 +268,7 @@ usbtmc_abort_bulk_in_status:dev_err (dev,"usb_bulk_msg returned %d\n" , rv); goto exit; } - }while ((actual = max_size) && + }while ((actual == max_size) && (n <USBTMC_MAX_READS_TO_CLEAR_BULK_IN ));if (actual == max_size) {
drivers/usb/core/config.c +6 -5
@@ -123,10 +123,11 @@ static void usb_parse_ss_endpoint_companion(struct device *ddev, int cfgno, }if (usb_endpoint_xfer_isoc (&ep->desc)) - max_tx = ep->desc.wMaxPacketSize * (desc->bMaxBurst +1 ) * - (desc->bmAttributes +1 ); + max_tx = (desc->bMaxBurst +1 ) * (desc->bmAttributes +1 ) * +le16_to_cpu (ep->desc.wMaxPacketSize);else if (usb_endpoint_xfer_int (&ep->desc)) - max_tx = ep->desc.wMaxPacketSize * (desc->bMaxBurst +1 ); + max_tx =le16_to_cpu (ep->desc.wMaxPacketSize) * + (desc->bMaxBurst +1 );else max_tx =999999 ;if (le16_to_cpu (desc->wBytesPerInterval) > max_tx) {
@@ -134,10 +135,10 @@ static void usb_parse_ss_endpoint_companion(struct device *ddev, int cfgno,"config %d interface %d altsetting %d ep %d: " "setting to %d\n" ,usb_endpoint_xfer_isoc (&ep->desc) ?"Isoc" :"Int" , - desc->wBytesPerInterval, +le16_to_cpu (desc->wBytesPerInterval), cfgno, inum, asnum, ep->desc.bEndpointAddress, max_tx); - ep->ss_ep_comp.wBytesPerInterval = max_tx; + ep->ss_ep_comp.wBytesPerInterval =cpu_to_le16 (max_tx); } }
drivers/usb/host/pci-quirks.c +1 -1
@@ -803,7 +803,7 @@ static void __devinit quirk_usb_handoff_xhci(struct pci_dev *pdev)/* If the BIOS owns the HC, signal that the OS wants it, and wait */ if (val &XHCI_HC_BIOS_OWNED ) { -writel (val &XHCI_HC_OS_OWNED , base + ext_cap_offset); +writel (val |XHCI_HC_OS_OWNED , base + ext_cap_offset);/* Wait for 5 seconds with 10 microsecond polling interval */ timeout = handshake(base + ext_cap_offset, XHCI_HC_BIOS_OWNED,
drivers/usb/host/xhci.c +14 -5
@@ -345,7 +345,8 @@ static void xhci_event_ring_work(unsigned long arg)spin_lock_irqsave (&xhci->lock, flags); temp =xhci_readl (xhci, &xhci->op_regs->status);xhci_dbg (xhci,"op reg status = 0x%x\n" , temp); -if (temp ==0xffffffff || (xhci->xhc_state &XHCI_STATE_DYING )) { +if (temp ==0xffffffff || (xhci->xhc_state &XHCI_STATE_DYING ) || + (xhci->xhc_state &XHCI_STATE_HALTED )) {xhci_dbg (xhci,"HW died, polling stopped.\n" );spin_unlock_irqrestore (&xhci->lock, flags);return ;
@@ -939,8 +940,11 @@ static int xhci_check_args(struct usb_hcd *hcd, struct usb_device *udev,return 0 ; } + xhci =hcd_to_xhci (hcd); +if (xhci->xhc_state &XHCI_STATE_HALTED ) +return -ENODEV ; +if (check_virt_dev) { - xhci =hcd_to_xhci (hcd);if (!udev->slot_id || !xhci->devs || !xhci->devs[udev->slot_id]) { printk(KERN_DEBUG "xHCI %s called with unaddressed "
@@ -1242,7 +1246,8 @@ int xhci_urb_dequeue(struct usb_hcd *hcd, struct urb *urb, int status)xhci_urb_free_priv (xhci, urb_priv);return ret; } -if (xhci->xhc_state &XHCI_STATE_DYING ) { +if ((xhci->xhc_state &XHCI_STATE_DYING ) || + (xhci->xhc_state &XHCI_STATE_HALTED )) {xhci_dbg (xhci,"Ep 0x%x: URB %p to be canceled on " "non-responsive xHCI host.\n" , urb->ep->desc.bEndpointAddress, urb);
@@ -2667,7 +2672,10 @@ void xhci_free_dev(struct usb_hcd *hcd, struct usb_device *udev)int i, ret; ret =xhci_check_args (hcd, udev,NULL ,0 , true, __func__); -if (ret <=0 ) +/* If the host is halted due to driver unload, we still need to free the +* device. +*/ +if (ret <=0 && ret != -ENODEV )return ; virt_dev = xhci->devs[udev->slot_id];
@@ -2681,7 +2689,8 @@ void xhci_free_dev(struct usb_hcd *hcd, struct usb_device *udev)spin_lock_irqsave (&xhci->lock, flags);/* Don't disable the slot if the host controller is dead. */ state =xhci_readl (xhci, &xhci->op_regs->status); -if (state ==0xffffffff || (xhci->xhc_state &XHCI_STATE_DYING )) { +if (state ==0xffffffff || (xhci->xhc_state &XHCI_STATE_DYING ) || + (xhci->xhc_state &XHCI_STATE_HALTED )) {xhci_free_virt_device (xhci, udev->slot_id);spin_unlock_irqrestore (&xhci->lock, flags);return ;
drivers/usb/musb/musb_gadget.c +5 -0
@@ -1698,6 +1698,8 @@ static int musb_gadget_pullup(struct usb_gadget *gadget, int is_on) is_on = !!is_on; +pm_runtime_get_sync (musb->controller); +/* NOTE: this assumes we are sensing vbus; we'd rather * not pullup unless the B-session is active. */
@@ -1707,6 +1709,9 @@ static int musb_gadget_pullup(struct usb_gadget *gadget, int is_on)musb_pullup (musb, is_on); }spin_unlock_irqrestore (&musb->lock, flags); + +pm_runtime_put (musb->controller); +return 0 ; }
drivers/usb/serial/ftdi_sio.c +1 -1
@@ -1171,7 +1171,7 @@ static __u32 get_ftdi_divisor(struct tty_struct *tty,case FT2232H :/* FT2232H chip */ case FT4232H :/* FT4232H chip */ case FT232H :/* FT232H chip */ -if ((baud <=12000000 ) & (baud >=1200 )) { +if ((baud <=12000000 ) && (baud >=1200 )) { div_value =ftdi_2232h_baud_to_divisor (baud); }else if (baud <1200 ) { div_value =ftdi_232bm_baud_to_divisor (baud);
drivers/usb/serial/option.c +12 -0
@@ -148,6 +148,10 @@ static void option_instat_callback(struct urb *urb);#define HUAWEI_PRODUCT_K4505 0x1464#define HUAWEI_PRODUCT_K3765 0x1465#define HUAWEI_PRODUCT_E14AC 0x14AC +#define HUAWEI_PRODUCT_K3770 0x14C9 +#define HUAWEI_PRODUCT_K3771 0x14CA +#define HUAWEI_PRODUCT_K4510 0x14CB +#define HUAWEI_PRODUCT_K4511 0x14CC#define HUAWEI_PRODUCT_ETS1220 0x1803#define HUAWEI_PRODUCT_E353 0x1506
@@ -547,6 +551,14 @@ static const struct usb_device_id option_ids[] = { { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3765, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_ETS1220, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E14AC, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3770, 0xff, 0x02, 0x31) }, + { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3770, 0xff, 0x02, 0x32) }, + { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3771, 0xff, 0x02, 0x31) }, + { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3771, 0xff, 0x02, 0x32) }, + { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4510, 0xff, 0x01, 0x31) }, + { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4510, 0xff, 0x01, 0x32) }, + { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4511, 0xff, 0x01, 0x31) }, + { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4511, 0xff, 0x01, 0x32) }, { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E353, 0xff, 0x01, 0x01) }, { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V640) }, { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V620) },
drivers/usb/serial/qcserial.c +1 -0
@@ -45,6 +45,7 @@ static const struct usb_device_id id_table[] = { {USB_DEVICE(0x05c6, 0x9203)}, /* Generic Gobi Modem device */ {USB_DEVICE(0x05c6, 0x9222)}, /* Generic Gobi Modem device */ {USB_DEVICE(0x05c6, 0x9008)}, /* Generic Gobi QDL device */ + {USB_DEVICE(0x05c6, 0x9009)}, /* Generic Gobi Modem device */ {USB_DEVICE(0x05c6, 0x9201)}, /* Generic Gobi QDL device */ {USB_DEVICE(0x05c6, 0x9221)}, /* Generic Gobi QDL device */ {USB_DEVICE(0x05c6, 0x9231)}, /* Generic Gobi QDL device */
drivers/usb/storage/unusual_devs.h +10 -0
@@ -1988,6 +1988,16 @@ UNUSUAL_DEV( 0x4146, 0xba01, 0x0100, 0x0100, "Micro Mini 1GB", USB_SC_DEVICE, USB_PR_DEVICE, NULL, US_FL_NOT_LOCKABLE ), +/* +* Nick Bowler <[email protected]> +* SCSI stack spams (otherwise harmless) error messages. +*/ +UNUSUAL_DEV (0xc251 ,0x4003 ,0x0100 ,0x0100 , +"Keil Software, Inc." , +"V2M MotherBoard" , +USB_SC_DEVICE ,USB_PR_DEVICE ,NULL , +US_FL_NOT_LOCKABLE ), +/* Reported by Andrew Simmons <[email protected]> */ UNUSUAL_DEV( 0xed06, 0x4500, 0x0001, 0x0001, "DataStor",
mm/vmalloc.c +4 -3
@@ -732,9 +732,10 @@ static void free_unmap_vmap_area_addr(unsigned long addr)#define VMAP_BBMAP_BITS_MIN (VMAP_MAX_ALLOC*2)#define VMAP_MIN (x, y) ((x) < (y) ? (x) : (y))/* can't use min() */ #define VMAP_MAX (x, y) ((x) > (y) ? (x) : (y))/* can't use max() */ -#define VMAP_BBMAP_BITS VMAP_MIN(VMAP_BBMAP_BITS_MAX, \ - VMAP_MAX(VMAP_BBMAP_BITS_MIN, \ - VMALLOC_PAGES / NR_CPUS / 16)) +#define VMAP_BBMAP_BITS \ + VMAP_MIN(VMAP_BBMAP_BITS_MAX, \ + VMAP_MAX(VMAP_BBMAP_BITS_MIN, \ + VMALLOC_PAGES / roundup_pow_of_two(NR_CPUS) / 16))#define VMAP_BLOCK_SIZE (VMAP_BBMAP_BITS * PAGE_SIZE)
net/atm/br2684.c +0 -2
@@ -242,8 +242,6 @@ static int br2684_xmit_vcc(struct sk_buff *skb, struct net_device *dev,if (brdev->payload == p_bridged) {skb_push (skb,2 );memset (skb->data,0 ,2 ); - }else {/* p_routed */ -skb_pull (skb,ETH_HLEN ); } }skb_debug (skb);
sound/soc/samsung/jive_wm8750.c +1 -1
@@ -131,7 +131,7 @@ static struct snd_soc_dai_link jive_dai = { .cpu_dai_name = "s3c2412-i2s", .codec_dai_name = "wm8750-hifi", .platform_name = "samsung-audio", - .codec_name = "wm8750-codec.0-0x1a", + .codec_name = "wm8750-codec.0-001a", .init = jive_wm8750_init, .ops = &jive_ops, };
sound/soc/tegra/tegra_pcm.c +7 -2
@@ -309,9 +309,14 @@ static int tegra_pcm_preallocate_dma_buffer(struct snd_pcm *pcm, int stream)static void tegra_pcm_deallocate_dma_buffer (struct snd_pcm *pcm,int stream) { -struct snd_pcm_substream *substream = pcm->streams[stream].substream; -struct snd_dma_buffer *buf = &substream->dma_buffer; +struct snd_pcm_substream *substream; +struct snd_dma_buffer *buf; + + substream = pcm->streams[stream].substream; +if (!substream) +return ; + buf = &substream->dma_buffer;if (!buf->area)return ;
sound/soc/tegra/tegra_wm8903.c +11 -4
@@ -56,6 +56,7 @@#define GPIO_HP_MUTE BIT(1)#define GPIO_INT_MIC_EN BIT(2)#define GPIO_EXT_MIC_EN BIT(3) +#define GPIO_HP_DET BIT(4)struct tegra_wm8903 {struct tegra_asoc_utils_data util_data;
@@ -304,6 +305,7 @@ static int tegra_wm8903_init(struct snd_soc_pcm_runtime *rtd)snd_soc_jack_add_gpios (&tegra_wm8903_hp_jack,1 , &tegra_wm8903_hp_jack_gpio); + machine->gpio_requested |=GPIO_HP_DET ; } snd_soc_jack_new(codec, "Mic Jack", SND_JACK_MICROPHONE,
@@ -429,10 +431,10 @@ static int __devexit tegra_wm8903_driver_remove(struct platform_device *pdev)struct tegra_wm8903 *machine =snd_soc_card_get_drvdata (card);struct tegra_wm8903_platform_data *pdata = machine->pdata; -snd_soc_unregister_card (card); - -tegra_asoc_utils_fini (&machine->util_data); - +if (machine->gpio_requested &GPIO_HP_DET ) +snd_soc_jack_free_gpios (&tegra_wm8903_hp_jack, +1 , + &tegra_wm8903_hp_jack_gpio);if (machine->gpio_requested &GPIO_EXT_MIC_EN )gpio_free (pdata->gpio_ext_mic_en);if (machine->gpio_requested &GPIO_INT_MIC_EN )
@@ -441,6 +443,11 @@ static int __devexit tegra_wm8903_driver_remove(struct platform_device *pdev)gpio_free (pdata->gpio_hp_mute);if (machine->gpio_requested &GPIO_SPKR_EN )gpio_free (pdata->gpio_spkr_en); + machine->gpio_requested =0 ; + +snd_soc_unregister_card (card); + +tegra_asoc_utils_fini (&machine->util_data);kfree (machine);
sound/usb/caiaq/audio.c +4 -2
@@ -614,6 +614,7 @@ static void read_completed(struct urb *urb)struct snd_usb_caiaqdev *dev;struct urb *out;int frame, len, send_it =0 , outframe =0 ; +size_t offset =0 ;if (urb->status || !info)return ;
@@ -634,7 +635,8 @@ static void read_completed(struct urb *urb) len = urb->iso_frame_desc[outframe].actual_length; out->iso_frame_desc[outframe].length = len; out->iso_frame_desc[outframe].actual_length =0 ; - out->iso_frame_desc[outframe].offset =BYTES_PER_FRAME * frame; + out->iso_frame_desc[outframe].offset = offset; + offset += len;if (len >0 ) {spin_lock (&dev->spinlock);
@@ -650,7 +652,7 @@ static void read_completed(struct urb *urb) }if (send_it) { - out->number_of_packets =FRAMES_PER_URB ; + out->number_of_packets = outframe; out->transfer_flags =URB_ISO_ASAP ;usb_submit_urb (out,GFP_ATOMIC ); }
tools/perf/util/config.c +0 -7
@@ -399,7 +399,6 @@ static int perf_config_global(void)int perf_config (config_fn_t fn,void *data) {int ret =0 , found =0 ; -char *repo_config =NULL ;const char *home =NULL ;/* Setting $PERF_CONFIG makes perf read _only_ the given config file. */
@@ -421,12 +420,6 @@ int perf_config(config_fn_t fn, void *data)free (user_config); } - repo_config =perf_pathdup ("config" ); -if (!access (repo_config,R_OK )) { - ret +=perf_config_from_file (fn, repo_config, data); - found +=1 ; - } -free (repo_config);if (found ==0 )return -1 ;return ret;