Project import generated by Copybara. GitOrigin-RevId: 4922ac4aca96cf0170e49e95f2aca9fc99444d75
diff --git a/build.config.boreal b/build.config.boreal index 59fb7d1..19384b3 100644 --- a/build.config.boreal +++ b/build.config.boreal
@@ -12,7 +12,7 @@ DEVICETREE_V3_OVERLAY=s4_s805x2_boreal_v3_overlay #It is a must to set GPU driver's version -GPU_DRV_VERSION=r43p0 +GPU_DRV_VERSION=r38p2 MAKE_GOALS=" Image.gz
diff --git a/drivers/amlogic/media/common/resource_mgr/resourcemanage.c b/drivers/amlogic/media/common/resource_mgr/resourcemanage.c index 39f245e..a572274 100644 --- a/drivers/amlogic/media/common/resource_mgr/resourcemanage.c +++ b/drivers/amlogic/media/common/resource_mgr/resourcemanage.c
@@ -1927,26 +1927,6 @@ static ssize_t config_show(struct class *class, return size; } -static ssize_t res_report_show(struct class *class, - struct class_attribute *attr, - char *buf) -{ - struct resman_session *sess = NULL; - struct list_head *pos = NULL; - struct list_head *tmp = NULL; - - mutex_lock(&sessions_lock); - list_for_each_safe(pos, tmp, &sessions_head) { - sess = list_entry(pos, struct resman_session, list); - if (sess) { - resman_send_event(sess, RESMAN_EVENT_RESREPORT); - wake_up_interruptible(&sess->wq_event); - } - } - mutex_unlock(&sessions_lock); - return 0; -} - #undef APPEND_ATTR_BUF static ssize_t config_store(struct class *class, @@ -2144,7 +2124,6 @@ static struct class_attribute resman_class_attrs[] = { __ATTR_RW(config), __ATTR_RO(ver), __ATTR_RW(extconfig), - __ATTR_RO(res_report), __ATTR_NULL };
diff --git a/drivers/amlogic/media/common/resource_mgr/resourcemanage.h b/drivers/amlogic/media/common/resource_mgr/resourcemanage.h index bbf60eb..2d31cb3 100644 --- a/drivers/amlogic/media/common/resource_mgr/resourcemanage.h +++ b/drivers/amlogic/media/common/resource_mgr/resourcemanage.h
@@ -81,8 +81,7 @@ enum RESMAN_APP { enum RESMAN_EVENT { RESMAN_EVENT_REGISTER = 0x1000, RESMAN_EVENT_UNREGISTER, - RESMAN_EVENT_PREEMPT, - RESMAN_EVENT_RESREPORT = 0x1004 + RESMAN_EVENT_PREEMPT }; int resman_init(void);
diff --git a/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hdmi_tx_edid.c b/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hdmi_tx_edid.c index 5d4570a..5af77ae 100644 --- a/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hdmi_tx_edid.c +++ b/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hdmi_tx_edid.c
@@ -1415,13 +1415,7 @@ static int hdmitx_edid_cta_block_parse(struct hdmitx_dev *hdev, &blockbuf[offset]); break; case EXTENSION_COLORMETRY_TAG: - if (hdev->hdr_priority == 2) - prxcap->colorimetry_data = - blockbuf[offset + 2] & 0x1f; - else - prxcap->colorimetry_data = - blockbuf[offset + 2]; - prxcap->colorimetry_data2 = + prxcap->colorimetry_data = blockbuf[offset + 2]; break; case EXTENSION_DRM_STATIC_TAG:
diff --git a/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hdmi_tx_main.c b/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hdmi_tx_main.c index 4e292fa..6e952fe 100644 --- a/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hdmi_tx_main.c +++ b/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hdmi_tx_main.c
@@ -3527,78 +3527,6 @@ static ssize_t contenttype_mode_store(struct device *dev, return count; } -static ssize_t hdr_priority_mode_show(struct device *dev, - struct device_attribute *attr, char *buf) -{ - int pos = 0; - struct hdmitx_dev *hdev = get_hdmitx_device(); - - pos += snprintf(buf + pos, PAGE_SIZE, "%d\r\n", - hdev->hdr_priority); - - return pos; -} - -/* hide or enable HDR capabilities. - * 0 : No HDR capabilities are hidden - * 1 : DV Capabilities are hidden - * 2 : All HDR capabilities are hidden - */ -static ssize_t hdr_priority_mode_store(struct device *dev, - struct device_attribute *attr, - const char *buf, size_t count) -{ - struct hdmitx_dev *hdev = get_hdmitx_device(); - unsigned int val = 0; - struct vinfo_s *info = NULL; - - if ((strncmp("0", buf, 1) == 0) || (strncmp("1", buf, 1) == 0) || - (strncmp("2", buf, 1) == 0)) { - val = buf[0] - '0'; - } - - if (val == hdev->hdr_priority) - return count; - - info = hdmitx_get_current_vinfo(NULL); - - mutex_lock(&hdmimode_mutex); - hdev->hdr_priority = val; - if (hdev->hdr_priority == 1) { - //clear dv support - memset(&hdev->rxcap.dv_info, 0x00, sizeof(struct dv_info)); - hdmitx_vdev.dv_info = &dv_dummy; - //restore hdr support - memcpy(&hdev->rxcap.hdr_info, &hdev->rxcap.hdr_info2, sizeof(struct hdr_info)); - //restore BT2020 support - hdev->rxcap.colorimetry_data = hdev->rxcap.colorimetry_data2; - hdrinfo_to_vinfo(&info->hdr_info, hdev); - } else if (hdev->hdr_priority == 2) { - //clear dv support - memset(&hdev->rxcap.dv_info, 0x00, sizeof(struct dv_info)); - hdmitx_vdev.dv_info = &dv_dummy; - //clear hdr support - memset(&hdev->rxcap.hdr_info, 0x00, sizeof(struct hdr_info)); - //clear BT2020 support - hdev->rxcap.colorimetry_data = hdev->rxcap.colorimetry_data2 & 0x1F; - memset(&info->hdr_info, 0, sizeof(struct hdr_info)); - } else { - //restore dv support - memcpy(&hdev->rxcap.dv_info, &hdev->rxcap.dv_info2, sizeof(struct dv_info)); - //restore hdr support - memcpy(&hdev->rxcap.hdr_info, &hdev->rxcap.hdr_info2, sizeof(struct hdr_info)); - //restore BT2020 support - hdev->rxcap.colorimetry_data = hdev->rxcap.colorimetry_data2; - edidinfo_attach_to_vinfo(hdev); - } - /* force trigger plugin event - * hdmitx_set_uevent_state(HDMITX_HPD_EVENT, 0); - * hdmitx_set_uevent(HDMITX_HPD_EVENT, 1); - */ - mutex_unlock(&hdmimode_mutex); - return count; -} - /**/ static ssize_t _hdr_cap_show(struct device *dev, struct device_attribute *attr, @@ -5557,7 +5485,6 @@ static DEVICE_ATTR_RW(hdcp_ctl_lvl); static DEVICE_ATTR_RO(hdmitx_drm_flag); static DEVICE_ATTR_RW(hdr_mute_frame); static DEVICE_ATTR_RO(dump_debug_reg); -static DEVICE_ATTR_RW(hdr_priority_mode); #ifdef CONFIG_AMLOGIC_VOUT_SERVE static struct vinfo_s *hdmitx_get_current_vinfo(void *data) @@ -7118,7 +7045,6 @@ static int amhdmitx_probe(struct platform_device *pdev) ret = device_create_file(dev, &dev_attr_hdmitx_drm_flag); ret = device_create_file(dev, &dev_attr_hdr_mute_frame); ret = device_create_file(dev, &dev_attr_dump_debug_reg); - ret = device_create_file(dev, &dev_attr_hdr_priority_mode); #ifdef CONFIG_AMLOGIC_VPU hdmitx_device.encp_vpu_dev = vpu_dev_register(VPU_VENCP, DEVICE_NAME); @@ -7313,7 +7239,6 @@ static int amhdmitx_remove(struct platform_device *pdev) device_remove_file(dev, &dev_attr_hdmitx_drm_flag); device_remove_file(dev, &dev_attr_hdr_mute_frame); device_remove_file(dev, &dev_attr_dump_debug_reg); - device_remove_file(dev, &dev_attr_hdr_priority_mode); cdev_del(&hdmitx_device.cdev); @@ -7547,8 +7472,7 @@ static int hdmitx_boot_hdr_priority(char *str) { unsigned int val = 0; - if ((strncmp("0", str, 1) == 0) || (strncmp("1", str, 1) == 0) || - (strncmp("2", str, 1) == 0)) { + if ((strncmp("1", str, 1) == 0) || (strncmp("2", str, 1) == 0)) { val = str[0] - '0'; hdmitx_device.hdr_priority = val; pr_info("hdmitx boot hdr_priority: %d\n", val);
diff --git a/drivers/amlogic/media/vout/hdmitx21/hdmi_tx_edid.c b/drivers/amlogic/media/vout/hdmitx21/hdmi_tx_edid.c index fa59368..c5d976b 100644 --- a/drivers/amlogic/media/vout/hdmitx21/hdmi_tx_edid.c +++ b/drivers/amlogic/media/vout/hdmitx21/hdmi_tx_edid.c
@@ -1884,13 +1884,7 @@ static int hdmitx_edid_block_parse(struct hdmitx_dev *hdev, &blockbuf[offset]); break; case EXTENSION_COLORMETRY_TAG: - if (hdev->hdr_priority == 2) - prxcap->colorimetry_data = - blockbuf[offset + 2] & 0x1f; - else - prxcap->colorimetry_data = - blockbuf[offset + 2]; - prxcap->colorimetry_data2 = + prxcap->colorimetry_data = blockbuf[offset + 2]; break; case EXTENSION_DRM_STATIC_TAG:
diff --git a/drivers/amlogic/media/vout/hdmitx21/hdmi_tx_main.c b/drivers/amlogic/media/vout/hdmitx21/hdmi_tx_main.c index ae539dd..0be6a61 100644 --- a/drivers/amlogic/media/vout/hdmitx21/hdmi_tx_main.c +++ b/drivers/amlogic/media/vout/hdmitx21/hdmi_tx_main.c
@@ -2906,78 +2906,6 @@ static ssize_t hdr_cap2_show(struct device *dev, return _hdr_cap_show(dev, attr, buf, info2); } -static ssize_t hdr_priority_mode_show(struct device *dev, - struct device_attribute *attr, char *buf) -{ - int pos = 0; - struct hdmitx_dev *hdev = get_hdmitx21_device(); - - pos += snprintf(buf + pos, PAGE_SIZE, "%d\r\n", - hdev->hdr_priority); - - return pos; -} - -/* hide or enable HDR capabilities. - * 0 : No HDR capabilities are hidden - * 1 : DV Capabilities are hidden - * 2 : All HDR capabilities are hidden - */ -static ssize_t hdr_priority_mode_store(struct device *dev, - struct device_attribute *attr, - const char *buf, size_t count) -{ - struct hdmitx_dev *hdev = get_hdmitx21_device(); - unsigned int val = 0; - struct vinfo_s *info = NULL; - - if ((strncmp("0", buf, 1) == 0) || (strncmp("1", buf, 1) == 0) || - (strncmp("2", buf, 1) == 0)) { - val = buf[0] - '0'; - } - - if (val == hdev->hdr_priority) - return count; - - /* get current vinfo */ - info = hdmitx_get_current_vinfo(NULL); - - hdev->hdr_priority = val; - if (hdev->hdr_priority == 1) { - //clear dv support - memset(&hdev->rxcap.dv_info, 0x00, sizeof(struct dv_info)); - hdmitx_vdev.dv_info = &dv_dummy; - //restore hdr support - memcpy(&hdev->rxcap.hdr_info, &hdev->rxcap.hdr_info2, sizeof(struct hdr_info)); - //restore BT2020 support - hdev->rxcap.colorimetry_data = hdev->rxcap.colorimetry_data2; - hdrinfo_to_vinfo(&info->hdr_info, hdev); - } else if (hdev->hdr_priority == 2) { - //clear dv support - memset(&hdev->rxcap.dv_info, 0x00, sizeof(struct dv_info)); - hdmitx_vdev.dv_info = &dv_dummy; - //clear hdr support - memset(&hdev->rxcap.hdr_info, 0x00, sizeof(struct hdr_info)); - //clear BT2020 support - hdev->rxcap.colorimetry_data = hdev->rxcap.colorimetry_data2 & 0x1F; - memset(&info->hdr_info, 0, sizeof(struct hdr_info)); - } else { - //restore dv support - memcpy(&hdev->rxcap.dv_info, &hdev->rxcap.dv_info2, sizeof(struct dv_info)); - //restore hdr support - memcpy(&hdev->rxcap.hdr_info, &hdev->rxcap.hdr_info2, sizeof(struct hdr_info)); - //restore BT2020 support - hdev->rxcap.colorimetry_data = hdev->rxcap.colorimetry_data2; - edidinfo_attach_to_vinfo(hdev); - } - /* hdmitx21_event_notify(HDMITX_HDR_PRIORITY, &hdev->hdr_priority); */ - /* force trigger plugin event - * hdmitx21_set_uevent_state(HDMITX_HPD_EVENT, 0); - * hdmitx21_set_uevent(HDMITX_HPD_EVENT, 1); - */ - return count; -} - static ssize_t vrr_cap_show(struct device *dev, struct device_attribute *attr, char *buf) @@ -3705,7 +3633,6 @@ static DEVICE_ATTR_RW(fake_plug); static DEVICE_ATTR_RW(ready); static DEVICE_ATTR_RO(support_3d); static DEVICE_ATTR_RO(hdmitx21); -static DEVICE_ATTR_RW(hdr_priority_mode); #ifdef CONFIG_AMLOGIC_VOUT_SERVE static struct vinfo_s *hdmitx_get_current_vinfo(void *data) @@ -4927,7 +4854,6 @@ static int amhdmitx_probe(struct platform_device *pdev) ret = device_create_file(dev, &dev_attr_contenttype_cap); ret = device_create_file(dev, &dev_attr_contenttype_mode); ret = device_create_file(dev, &dev_attr_hdmitx21); - ret = device_create_file(dev, &dev_attr_hdr_priority_mode); #ifdef CONFIG_AMLOGIC_LEGACY_EARLY_SUSPEND register_early_suspend(&hdmitx_early_suspend_handler); @@ -5080,7 +5006,6 @@ static int amhdmitx_remove(struct platform_device *pdev) device_remove_file(dev, &dev_attr_hdmi_repeater_tx); device_remove_file(dev, &dev_attr_hdmi_hdr_status); device_remove_file(dev, &dev_attr_hdmitx21); - device_remove_file(dev, &dev_attr_hdr_priority_mode); cdev_del(&hdev->cdev); @@ -5299,8 +5224,7 @@ static int hdmitx21_boot_hdr_priority(char *str) struct hdmitx_dev *hdev = get_hdmitx21_device(); unsigned int val = 0; - if ((strncmp("0", str, 1) == 0) || (strncmp("1", str, 1) == 0) || - (strncmp("2", str, 1) == 0)) { + if ((strncmp("1", str, 1) == 0) || (strncmp("2", str, 1) == 0)) { val = str[0] - '0'; hdev->hdr_priority = val; pr_info("hdmitx boot hdr_priority: %d\n", val);
diff --git a/drivers/amlogic/memory_ext/aml_cma.c b/drivers/amlogic/memory_ext/aml_cma.c index 37ea7a0..a245f74 100644 --- a/drivers/amlogic/memory_ext/aml_cma.c +++ b/drivers/amlogic/memory_ext/aml_cma.c
@@ -58,7 +58,6 @@ struct cma_pcp { struct list_head list; struct completion start; struct completion end; - struct task_struct *task; spinlock_t list_lock; /* protect job list */ int cpu; }; @@ -67,7 +66,6 @@ static bool can_boost; static DEFINE_PER_CPU(struct cma_pcp, cma_pcp_thread); static struct proc_dir_entry *dentry; int cma_debug_level; -static int allow_cma_tasks; DEFINE_SPINLOCK(cma_iso_lock); static atomic_t cma_allocate; @@ -433,7 +431,6 @@ static int __init init_cma_boost_task(void) if (!IS_ERR(task)) { kthread_bind(task, cpu); set_user_nice(task, -17); - work->task = task; pr_debug("create cma task%p, for cpu %d\n", task, cpu); wake_up_process(task); } else { @@ -460,10 +457,7 @@ int cma_alloc_contig_boost(unsigned long start_pfn, unsigned long count) cpumask_clear(&has_work); - if (allow_cma_tasks) - cpus = allow_cma_tasks; - else - cpus = num_online_cpus(); + cpus = num_online_cpus(); cnt = count; delta = count / cpus; atomic_set(&ok, 0); @@ -482,10 +476,6 @@ int cma_alloc_contig_boost(unsigned long start_pfn, unsigned long count) spin_unlock(&work->list_lock); complete(&work->start); i++; - if (i == cpus) { - cma_debug(1, NULL, "sched work to %d cpu\n", i); - break; - } } local_irq_restore(flags); @@ -827,57 +817,15 @@ static ssize_t cma_debug_write(struct file *file, const char __user *buffer, size_t count, loff_t *ppos) { int arg = 0; - int ok = 0; - int cpu; - struct cma_pcp *work; - char *buf; - buf = kmalloc(count, GFP_KERNEL); - if (!buf) - return -ENOMEM; - - if (copy_from_user(buf, buffer, count)) - goto exit; - - if (!strncmp(buf, "cma_task=", 9)) { /* option for 'cma_task=' */ - if (sscanf(buf, "cma_task=%d", &arg) < 0) - goto exit; - if (arg <= num_online_cpus() && arg >= 1) { - ok = 1; - allow_cma_tasks = arg; - pr_info("set allow_cma_tasks to %d\n", allow_cma_tasks); - } - goto exit; - } - - if (!strncmp(buf, "cma_prio=", 9)) { /* option for 'cma_prio=' */ - if (sscanf(buf, "cma_prio=%d", &arg) < 0) - goto exit; - if (arg >= MIN_NICE && arg < MAX_NICE) { - for_each_possible_cpu(cpu) { - work = &per_cpu(cma_pcp_thread, cpu); - set_user_nice(work->task, arg); - } - ok = 1; - pr_info("renice cma task to %d\n", arg); - } - goto exit; - } - - if (kstrtoint(buf, 10, &arg)) + if (kstrtoint_from_user(buffer, count, 10, &arg)) return -EINVAL; if (arg > MAX_DEBUG_LEVEL) return -EINVAL; - ok = 1; cma_debug_level = arg; -exit: - kfree(buf); - if (ok) - return count; - else - return -EINVAL; + return count; } static int cma_debug_open(struct inode *inode, struct file *file)
diff --git a/drivers/usb/gadget/configfs.c b/drivers/usb/gadget/configfs.c index b6eeb90..696beb8 100644 --- a/drivers/usb/gadget/configfs.c +++ b/drivers/usb/gadget/configfs.c
@@ -16,7 +16,7 @@ #include <linux/usb/ch9.h> #ifdef CONFIG_USB_CONFIGFS_F_ACC -extern int acc_ctrlrequest_composite(struct usb_composite_dev *cdev, +extern int acc_ctrlrequest(struct usb_composite_dev *cdev, const struct usb_ctrlrequest *ctrl); void acc_disconnect(void); #endif @@ -1599,7 +1599,7 @@ static int android_setup(struct usb_gadget *gadget, #ifdef CONFIG_USB_CONFIGFS_F_ACC if (value < 0) - value = acc_ctrlrequest_composite(cdev, c); + value = acc_ctrlrequest(cdev, c); #endif if (value < 0)
diff --git a/drivers/usb/gadget/function/f_accessory.c b/drivers/usb/gadget/function/f_accessory.c index 78ea5e5..1df7a5e 100644 --- a/drivers/usb/gadget/function/f_accessory.c +++ b/drivers/usb/gadget/function/f_accessory.c
@@ -1006,26 +1006,6 @@ int acc_ctrlrequest(struct usb_composite_dev *cdev, } EXPORT_SYMBOL_GPL(acc_ctrlrequest); -int acc_ctrlrequest_composite(struct usb_composite_dev *cdev, - const struct usb_ctrlrequest *ctrl) -{ - u16 w_length = le16_to_cpu(ctrl->wLength); - - if (w_length > USB_COMP_EP0_BUFSIZ) { - if (ctrl->bRequestType & USB_DIR_IN) { - /* Cast away the const, we are going to overwrite on purpose. */ - __le16 *temp = (__le16 *)&ctrl->wLength; - - *temp = cpu_to_le16(USB_COMP_EP0_BUFSIZ); - w_length = USB_COMP_EP0_BUFSIZ; - } else { - return -EINVAL; - } - } - return acc_ctrlrequest(cdev, ctrl); -} -EXPORT_SYMBOL_GPL(acc_ctrlrequest_composite); - static int __acc_function_bind(struct usb_configuration *c, struct usb_function *f, bool configfs)
diff --git a/include/linux/amlogic/media/vout/hdmi_tx/hdmi_tx_module.h b/include/linux/amlogic/media/vout/hdmi_tx/hdmi_tx_module.h index 9f1f781..6c9878b 100644 --- a/include/linux/amlogic/media/vout/hdmi_tx/hdmi_tx_module.h +++ b/include/linux/amlogic/media/vout/hdmi_tx/hdmi_tx_module.h
@@ -155,7 +155,6 @@ struct rx_cap { unsigned int Max_TMDS_Clock2; /* HDMI2.0 TMDS_CLK */ /* CEA861-F, Table 56, Colorimetry Data Block */ unsigned int colorimetry_data; - unsigned int colorimetry_data2; unsigned int scdc_present:1; unsigned int scdc_rr_capable:1; /* SCDC read request */ unsigned int lte_340mcsc_scramble:1;
diff --git a/include/linux/amlogic/media/vout/hdmi_tx21/hdmi_tx_module.h b/include/linux/amlogic/media/vout/hdmi_tx21/hdmi_tx_module.h index 69654eb..b0055ea 100644 --- a/include/linux/amlogic/media/vout/hdmi_tx21/hdmi_tx_module.h +++ b/include/linux/amlogic/media/vout/hdmi_tx21/hdmi_tx_module.h
@@ -108,7 +108,6 @@ struct rx_cap { u32 Max_TMDS_Clock2; /* HDMI2.0 TMDS_CLK */ /* CEA861-F, Table 56, Colorimetry Data Block */ u32 colorimetry_data; - u32 colorimetry_data2; u32 scdc_present:1; u32 scdc_rr_capable:1; /* SCDC read request */ u32 lte_340mcsc_scramble:1;
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 98a64ca..90eec19 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c
@@ -5638,9 +5638,6 @@ static unsigned long capacity_spare_without(int cpu, struct task_struct *p) return max_t(long, capacity_of(cpu) - cpu_util_without(cpu, p), 0); } -static unsigned long use_spare_thresh = 800; -core_param(use_spare_thresh, use_spare_thresh, ulong, 0644); - /* * find_idlest_group finds and returns the least busy CPU group within the * domain. @@ -5745,16 +5742,12 @@ find_idlest_group(struct sched_domain *sd, struct task_struct *p, if (sd_flag & SD_BALANCE_FORK) goto skip_spare; - if (this_spare >= use_spare_thresh) { - if (this_spare > task_util(p) / 2 && - imbalance_scale*this_spare > 100*most_spare) - return NULL; - } + if (this_spare > task_util(p) / 2 && + imbalance_scale*this_spare > 100*most_spare) + return NULL; - if (most_spare >= use_spare_thresh) { - if (most_spare > task_util(p) / 2) - return most_spare_sg; - } + if (most_spare > task_util(p) / 2) + return most_spare_sg; skip_spare: if (!idlest)
diff --git a/sound/core/control_compat.c b/sound/core/control_compat.c index ccc7f3d..cca3ed9 100644 --- a/sound/core/control_compat.c +++ b/sound/core/control_compat.c
@@ -306,9 +306,7 @@ static int ctl_elem_read_user(struct snd_card *card, err = snd_power_wait(card, SNDRV_CTL_POWER_D0); if (err < 0) goto error; - down_read(&card->controls_rwsem); err = snd_ctl_elem_read(card, data); - up_read(&card->controls_rwsem); if (err < 0) goto error; err = copy_ctl_value_to_user(userdata, valuep, data, type, count); @@ -336,9 +334,7 @@ static int ctl_elem_write_user(struct snd_ctl_file *file, err = snd_power_wait(card, SNDRV_CTL_POWER_D0); if (err < 0) goto error; - down_write(&card->controls_rwsem); err = snd_ctl_elem_write(card, file, data); - up_write(&card->controls_rwsem); if (err < 0) goto error; err = copy_ctl_value_to_user(userdata, valuep, data, type, count);