From: 0ranko0P Date: Tue, 18 Feb 2020 05:24:55 +0000 (+0800) Subject: Merge tag 'v4.4.214' into 10 X-Git-Url: http://git.osdn.net/view?p=sagit-ice-cold%2Fkernel_xiaomi_msm8998.git;a=commitdiff_plain;h=8f54298dd8fabb33560a2ec7b8d101d03992ff07 Merge tag 'v4.4.214' into 10 This is the 4.4.214 stable release --- 8f54298dd8fabb33560a2ec7b8d101d03992ff07 diff --cc arch/arm64/boot/Makefile index e2ee3ba909eb,a29f640de983..5dc2c1c3668c --- a/arch/arm64/boot/Makefile +++ b/arch/arm64/boot/Makefile @@@ -14,16 -14,8 +14,16 @@@ # Based on the ia64 boot/Makefile. # - targets := Image Image.gz + targets := Image Image.bz2 Image.gz Image.lz4 Image.lzma Image.lzo +DTB_NAMES := $(subst $\",,$(CONFIG_BUILD_ARM64_APPENDED_DTB_IMAGE_NAMES)) +ifneq ($(DTB_NAMES),) +DTB_LIST := $(addsuffix .dtb,$(DTB_NAMES)) +DTB_OBJS := $(addprefix $(obj)/dts/,$(DTB_LIST)) +else +DTB_OBJS := $(shell find -L $(obj)/dts/ -name \*.dtb) +endif + $(obj)/Image: vmlinux FORCE $(call if_changed,objcopy) diff --cc drivers/md/dm.c index 44904c374b38,c4d4cd38a58f..ce007d22cf35 --- a/drivers/md/dm.c +++ b/drivers/md/dm.c @@@ -2314,7 -2303,8 +2313,8 @@@ static void dm_init_old_md_queue(struc /* * Initialize aspects of queue that aren't relevant for blk-mq */ - md->queue->backing_dev_info.congested_data = md; - md->queue->backing_dev_info.congested_fn = dm_any_congested; ++ md->queue->backing_dev_info->congested_data = md; + md->queue->backing_dev_info->congested_fn = dm_any_congested; blk_queue_bounce_limit(md->queue, BLK_BOUNCE_ANY); } diff --cc drivers/of/Kconfig index 60efdd584d15,4ba54ffb3a4b..e06ac5166b18 --- a/drivers/of/Kconfig +++ b/drivers/of/Kconfig @@@ -118,9 -112,8 +118,13 @@@ config OF_OVERLA While this option is selected automatically when needed, you can enable it manually to improve device tree unit test coverage. +config OF_BATTERYDATA + def_bool y + help + OpenFirmware BatteryData accessors + + config OF_DMA_DEFAULT_COHERENT + # arches should select this if DMA is coherent by default for OF devices + bool + endif # OF diff --cc drivers/scsi/ufs/ufshcd.c index ed288ca72a3f,19f82069c68a..368db1a6fbf2 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@@ -7588,30 -4324,10 +7588,31 @@@ static int ufshcd_probe_hba(struct ufs_ ufshcd_init_icc_levels(hba); /* Add required well known logical units to scsi mid layer */ - if (ufshcd_scsi_add_wlus(hba)) + ret = ufshcd_scsi_add_wlus(hba); + if (ret) goto out; + /* Initialize devfreq after UFS device is detected */ + if (ufshcd_is_clkscaling_supported(hba)) { + memcpy(&hba->clk_scaling.saved_pwr_info.info, + &hba->pwr_info, sizeof(struct ufs_pa_layer_attr)); + hba->clk_scaling.saved_pwr_info.is_valid = true; + hba->clk_scaling.is_scaled_up = true; + if (!hba->devfreq) { + hba->devfreq = devfreq_add_device(hba->dev, + &ufs_devfreq_profile, + "simple_ondemand", + gov_data); + if (IS_ERR(hba->devfreq)) { + ret = PTR_ERR(hba->devfreq); + dev_err(hba->dev, "Unable to register with devfreq %d\n", + ret); + goto out; + } + } + hba->clk_scaling.is_allowed = true; + } + scsi_scan_host(hba->host); pm_runtime_put_sync(hba->dev); } diff --cc drivers/staging/vt6656/rxtx.c index 4cd98bb5d9f9,5d951e043d35..f2885f7b9826 --- a/drivers/staging/vt6656/rxtx.c +++ b/drivers/staging/vt6656/rxtx.c @@@ -812,13 -808,17 +808,17 @@@ int vnt_tx_packet(struct vnt_private *p } if (current_rate > RATE_11M) { - if (info->band == IEEE80211_BAND_5GHZ) { + if (info->band == NL80211_BAND_5GHZ) { pkt_type = PK_TYPE_11A; } else { - if (tx_rate->flags & IEEE80211_TX_RC_USE_CTS_PROTECT) - pkt_type = PK_TYPE_11GB; - else - pkt_type = PK_TYPE_11GA; + if (tx_rate->flags & IEEE80211_TX_RC_USE_CTS_PROTECT) { + if (priv->basic_rates & VNT_B_RATES) + pkt_type = PK_TYPE_11GB; + else + pkt_type = PK_TYPE_11GA; + } else { + pkt_type = PK_TYPE_11A; + } } } else { pkt_type = PK_TYPE_11B; diff --cc drivers/usb/dwc3/core.c index 3191825710af,591bc3f7be76..a6716e185491 --- a/drivers/usb/dwc3/core.c +++ b/drivers/usb/dwc3/core.c @@@ -916,109 -801,13 +916,112 @@@ static void dwc3_core_exit_mode(struct /* do nothing */ break; } + + /* de-assert DRVVBUS for HOST and OTG mode */ + dwc3_set_mode(dwc, DWC3_GCTL_PRTCAP_DEVICE); } +/* XHCI reset, resets other CORE registers as well, re-init those */ +void dwc3_post_host_reset_core_init(struct dwc3 *dwc) +{ + dwc3_core_init(dwc); + dwc3_gadget_restart(dwc); +} + +static void (*notify_event)(struct dwc3 *, unsigned, unsigned); +void dwc3_set_notifier(void (*notify)(struct dwc3 *, unsigned, unsigned)) +{ + notify_event = notify; +} +EXPORT_SYMBOL(dwc3_set_notifier); + +int dwc3_notify_event(struct dwc3 *dwc, unsigned event, unsigned value) +{ + int ret = 0; + + if (dwc->notify_event) + dwc->notify_event(dwc, event, value); + else + ret = -ENODEV; + + return ret; +} +EXPORT_SYMBOL(dwc3_notify_event); + +int dwc3_core_pre_init(struct dwc3 *dwc) +{ + int ret; + + dwc3_cache_hwparams(dwc); + + ret = dwc3_phy_setup(dwc); + if (ret) + goto err0; + + if (!dwc->ev_buffs) { + ret = dwc3_alloc_event_buffers(dwc, DWC3_EVENT_BUFFERS_SIZE); + if (ret) { + dev_err(dwc->dev, "failed to allocate event buffers\n"); + ret = -ENOMEM; + goto err1; + } + } + + ret = dwc3_core_init(dwc); + if (ret) { + dev_err(dwc->dev, "failed to initialize core\n"); + goto err2; + } + + ret = phy_power_on(dwc->usb2_generic_phy); + if (ret < 0) + goto err3; + + ret = phy_power_on(dwc->usb3_generic_phy); + if (ret < 0) + goto err4; + + ret = dwc3_event_buffers_setup(dwc); + if (ret) { + dev_err(dwc->dev, "failed to setup event buffers\n"); + goto err5; + } + + ret = dwc3_core_init_mode(dwc); + if (ret) { + dev_err(dwc->dev, "failed to set mode with dwc3 core\n"); + goto err6; + } + + return ret; + +err6: + dwc3_event_buffers_cleanup(dwc); +err5: + phy_power_off(dwc->usb3_generic_phy); +err4: + phy_power_off(dwc->usb2_generic_phy); +err3: + dwc3_core_exit(dwc); +err2: + dwc3_free_event_buffers(dwc); +err1: + dwc3_ulpi_exit(dwc); +err0: + return ret; +} + #define DWC3_ALIGN_MASK (16 - 1) +/* check whether the core supports IMOD */ +bool dwc3_has_imod(struct dwc3 *dwc) +{ + return ((dwc3_is_usb3(dwc) && + dwc->revision >= DWC3_REVISION_300A) || + (dwc3_is_usb31(dwc) && + dwc->revision >= DWC3_USB31_REVISION_120A)); +} + static int dwc3_probe(struct platform_device *pdev) { struct device *dev = &pdev->dev; diff --cc drivers/usb/gadget/function/f_ncm.c index 8be8d10a0384,16908737bff1..a32a6a74f83d --- a/drivers/usb/gadget/function/f_ncm.c +++ b/drivers/usb/gadget/function/f_ncm.c @@@ -1660,10 -1563,13 +1664,15 @@@ static void ncm_unbind(struct usb_confi ncm_string_defs[0].id = 0; usb_free_all_descriptors(f); + if (atomic_read(&ncm->notify_count)) { + usb_ep_dequeue(ncm->notify, ncm->notify_req); + atomic_set(&ncm->notify_count, 0); + } + kfree(ncm->notify_req->buf); usb_ep_free_request(ncm->notify, ncm->notify_req); + + gether_cleanup(netdev_priv(opts->net)); } static struct usb_function *ncm_alloc(struct usb_function_instance *fi)