Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
241bc82e
cloud-kernel
项目概览
openanolis
/
cloud-kernel
1 年多 前同步成功
通知
161
Star
36
Fork
7
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
10
列表
看板
标记
里程碑
合并请求
2
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
cloud-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
10
Issue
10
列表
看板
标记
里程碑
合并请求
2
合并请求
2
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
241bc82e
编写于
8月 22, 2017
作者:
T
Takashi Iwai
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'for-linus' into for-next
Conflicts: sound/core/control.c
上级
3a93d082
88c54cdf
变更
13
隐藏空白更改
内联
并排
Showing
13 changed file
with
55 addition
and
26 deletion
+55
-26
sound/core/control.c
sound/core/control.c
+1
-1
sound/core/seq/Kconfig
sound/core/seq/Kconfig
+2
-2
sound/core/seq/seq_clientmgr.c
sound/core/seq/seq_clientmgr.c
+4
-9
sound/core/seq/seq_queue.c
sound/core/seq/seq_queue.c
+9
-5
sound/core/seq/seq_queue.h
sound/core/seq/seq_queue.h
+1
-1
sound/firewire/iso-resources.c
sound/firewire/iso-resources.c
+6
-1
sound/firewire/motu/motu.c
sound/firewire/motu/motu.c
+1
-0
sound/pci/emu10k1/emufx.c
sound/pci/emu10k1/emufx.c
+11
-3
sound/pci/hda/patch_realtek.c
sound/pci/hda/patch_realtek.c
+0
-1
sound/usb/mixer.c
sound/usb/mixer.c
+2
-0
sound/usb/mixer.h
sound/usb/mixer.h
+1
-0
sound/usb/mixer_quirks.c
sound/usb/mixer_quirks.c
+6
-0
sound/usb/quirks.c
sound/usb/quirks.c
+11
-3
未找到文件。
sound/core/control.c
浏览文件 @
241bc82e
...
...
@@ -1128,7 +1128,7 @@ static int replace_user_tlv(struct snd_kcontrol *kctl, unsigned int __user *buf,
change
=
ue
->
tlv_data_size
!=
size
;
if
(
!
change
)
change
=
memcmp
(
ue
->
tlv_data
,
container
,
size
);
change
=
memcmp
(
ue
->
tlv_data
,
container
,
size
)
!=
0
;
if
(
!
change
)
{
kfree
(
container
);
return
0
;
...
...
sound/core/seq/Kconfig
浏览文件 @
241bc82e
...
...
@@ -47,10 +47,10 @@ config SND_SEQ_HRTIMER_DEFAULT
timer.
config SND_SEQ_MIDI_EVENT
def_tristate SND_RAWMIDI
tristate
config SND_SEQ_MIDI
tristate
def_tristate SND_RAWMIDI
select SND_SEQ_MIDI_EVENT
config SND_SEQ_MIDI_EMUL
...
...
sound/core/seq/seq_clientmgr.c
浏览文件 @
241bc82e
...
...
@@ -1502,16 +1502,11 @@ static int snd_seq_ioctl_unsubscribe_port(struct snd_seq_client *client,
static
int
snd_seq_ioctl_create_queue
(
struct
snd_seq_client
*
client
,
void
*
arg
)
{
struct
snd_seq_queue_info
*
info
=
arg
;
int
result
;
struct
snd_seq_queue
*
q
;
result
=
snd_seq_queue_alloc
(
client
->
number
,
info
->
locked
,
info
->
flags
);
if
(
result
<
0
)
return
result
;
q
=
queueptr
(
result
);
if
(
q
==
NULL
)
return
-
EINVAL
;
q
=
snd_seq_queue_alloc
(
client
->
number
,
info
->
locked
,
info
->
flags
);
if
(
IS_ERR
(
q
))
return
PTR_ERR
(
q
);
info
->
queue
=
q
->
queue
;
info
->
locked
=
q
->
locked
;
...
...
@@ -1521,7 +1516,7 @@ static int snd_seq_ioctl_create_queue(struct snd_seq_client *client, void *arg)
if
(
!
info
->
name
[
0
])
snprintf
(
info
->
name
,
sizeof
(
info
->
name
),
"Queue-%d"
,
q
->
queue
);
strlcpy
(
q
->
name
,
info
->
name
,
sizeof
(
q
->
name
));
queuefree
(
q
);
snd_use_lock_free
(
&
q
->
use_lock
);
return
0
;
}
...
...
sound/core/seq/seq_queue.c
浏览文件 @
241bc82e
...
...
@@ -184,22 +184,26 @@ void __exit snd_seq_queues_delete(void)
static
void
queue_use
(
struct
snd_seq_queue
*
queue
,
int
client
,
int
use
);
/* allocate a new queue -
* return queue index value or negative value for error
* return pointer to new queue or ERR_PTR(-errno) for error
* The new queue's use_lock is set to 1. It is the caller's responsibility to
* call snd_use_lock_free(&q->use_lock).
*/
int
snd_seq_queue_alloc
(
int
client
,
int
locked
,
unsigned
int
info_flags
)
struct
snd_seq_queue
*
snd_seq_queue_alloc
(
int
client
,
int
locked
,
unsigned
int
info_flags
)
{
struct
snd_seq_queue
*
q
;
q
=
queue_new
(
client
,
locked
);
if
(
q
==
NULL
)
return
-
ENOMEM
;
return
ERR_PTR
(
-
ENOMEM
)
;
q
->
info_flags
=
info_flags
;
queue_use
(
q
,
client
,
1
);
snd_use_lock_use
(
&
q
->
use_lock
);
if
(
queue_list_add
(
q
)
<
0
)
{
snd_use_lock_free
(
&
q
->
use_lock
);
queue_delete
(
q
);
return
-
ENOMEM
;
return
ERR_PTR
(
-
ENOMEM
)
;
}
return
q
->
queue
;
return
q
;
}
/* delete a queue - queue must be owned by the client */
...
...
sound/core/seq/seq_queue.h
浏览文件 @
241bc82e
...
...
@@ -71,7 +71,7 @@ void snd_seq_queues_delete(void);
/* create new queue (constructor) */
int
snd_seq_queue_alloc
(
int
client
,
int
locked
,
unsigned
int
flags
);
struct
snd_seq_queue
*
snd_seq_queue_alloc
(
int
client
,
int
locked
,
unsigned
int
flags
);
/* delete queue (destructor) */
int
snd_seq_queue_delete
(
int
client
,
int
queueid
);
...
...
sound/firewire/iso-resources.c
浏览文件 @
241bc82e
...
...
@@ -210,9 +210,14 @@ EXPORT_SYMBOL(fw_iso_resources_update);
*/
void
fw_iso_resources_free
(
struct
fw_iso_resources
*
r
)
{
struct
fw_card
*
card
=
fw_parent_device
(
r
->
unit
)
->
card
;
struct
fw_card
*
card
;
int
bandwidth
,
channel
;
/* Not initialized. */
if
(
r
->
unit
==
NULL
)
return
;
card
=
fw_parent_device
(
r
->
unit
)
->
card
;
mutex_lock
(
&
r
->
mutex
);
if
(
r
->
allocated
)
{
...
...
sound/firewire/motu/motu.c
浏览文件 @
241bc82e
...
...
@@ -131,6 +131,7 @@ static void do_registration(struct work_struct *work)
return
;
error:
snd_motu_transaction_unregister
(
motu
);
snd_motu_stream_destroy_duplex
(
motu
);
snd_card_free
(
motu
->
card
);
dev_info
(
&
motu
->
unit
->
device
,
"Sound card registration failed: %d
\n
"
,
err
);
...
...
sound/pci/emu10k1/emufx.c
浏览文件 @
241bc82e
...
...
@@ -698,10 +698,18 @@ static int copy_gctl(struct snd_emu10k1 *emu,
{
struct
snd_emu10k1_fx8010_control_old_gpr
__user
*
octl
;
if
(
emu
->
support_tlv
)
return
copy_from_user
(
gctl
,
&
_gctl
[
idx
],
sizeof
(
*
gctl
));
if
(
emu
->
support_tlv
)
{
if
(
in_kernel
)
memcpy
(
gctl
,
(
void
*
)
&
_gctl
[
idx
],
sizeof
(
*
gctl
));
else
if
(
copy_from_user
(
gctl
,
&
_gctl
[
idx
],
sizeof
(
*
gctl
)))
return
-
EFAULT
;
return
0
;
}
octl
=
(
struct
snd_emu10k1_fx8010_control_old_gpr
__user
*
)
_gctl
;
if
(
copy_from_user
(
gctl
,
&
octl
[
idx
],
sizeof
(
*
octl
)))
if
(
in_kernel
)
memcpy
(
gctl
,
(
void
*
)
&
octl
[
idx
],
sizeof
(
*
octl
));
else
if
(
copy_from_user
(
gctl
,
&
octl
[
idx
],
sizeof
(
*
octl
)))
return
-
EFAULT
;
gctl
->
tlv
=
NULL
;
return
0
;
...
...
sound/pci/hda/patch_realtek.c
浏览文件 @
241bc82e
...
...
@@ -6647,7 +6647,6 @@ static const struct snd_hda_pin_quirk alc269_pin_fixup_tbl[] = {
SND_HDA_PIN_QUIRK
(
0x10ec0299
,
0x1028
,
"Dell"
,
ALC269_FIXUP_DELL4_MIC_NO_PRESENCE
,
ALC225_STANDARD_PINS
,
{
0x12
,
0xb7a60130
},
{
0x13
,
0xb8a61140
},
{
0x17
,
0x90170110
}),
{}
};
...
...
sound/usb/mixer.c
浏览文件 @
241bc82e
...
...
@@ -548,6 +548,8 @@ int snd_usb_mixer_vol_tlv(struct snd_kcontrol *kcontrol, int op_flag,
if
(
size
<
sizeof
(
scale
))
return
-
ENOMEM
;
if
(
cval
->
min_mute
)
scale
[
0
]
=
SNDRV_CTL_TLVT_DB_MINMAX_MUTE
;
scale
[
2
]
=
cval
->
dBmin
;
scale
[
3
]
=
cval
->
dBmax
;
if
(
copy_to_user
(
_tlv
,
scale
,
sizeof
(
scale
)))
...
...
sound/usb/mixer.h
浏览文件 @
241bc82e
...
...
@@ -64,6 +64,7 @@ struct usb_mixer_elem_info {
int
cached
;
int
cache_val
[
MAX_CHANNELS
];
u8
initialized
;
u8
min_mute
;
void
*
private_data
;
};
...
...
sound/usb/mixer_quirks.c
浏览文件 @
241bc82e
...
...
@@ -1878,6 +1878,12 @@ void snd_usb_mixer_fu_apply_quirk(struct usb_mixer_interface *mixer,
if
(
unitid
==
7
&&
cval
->
control
==
UAC_FU_VOLUME
)
snd_dragonfly_quirk_db_scale
(
mixer
,
cval
,
kctl
);
break
;
/* lowest playback value is muted on C-Media devices */
case
USB_ID
(
0x0d8c
,
0x000c
):
case
USB_ID
(
0x0d8c
,
0x0014
):
if
(
strstr
(
kctl
->
id
.
name
,
"Playback"
))
cval
->
min_mute
=
1
;
break
;
}
}
sound/usb/quirks.c
浏览文件 @
241bc82e
...
...
@@ -1141,6 +1141,7 @@ bool snd_usb_get_sample_rate_quirk(struct snd_usb_audio *chip)
case
USB_ID
(
0x0556
,
0x0014
):
/* Phoenix Audio TMX320VC */
case
USB_ID
(
0x05A3
,
0x9420
):
/* ELP HD USB Camera */
case
USB_ID
(
0x074D
,
0x3553
):
/* Outlaw RR2150 (Micronas UAC3553B) */
case
USB_ID
(
0x1395
,
0x740a
):
/* Sennheiser DECT */
case
USB_ID
(
0x1901
,
0x0191
):
/* GE B850V3 CP2114 audio interface */
case
USB_ID
(
0x1de7
,
0x0013
):
/* Phoenix Audio MT202exe */
case
USB_ID
(
0x1de7
,
0x0014
):
/* Phoenix Audio TMX320 */
...
...
@@ -1307,10 +1308,13 @@ void snd_usb_ctl_msg_quirk(struct usb_device *dev, unsigned int pipe,
&&
(
requesttype
&
USB_TYPE_MASK
)
==
USB_TYPE_CLASS
)
mdelay
(
20
);
/* Zoom R16/24 needs a tiny delay here, otherwise requests like
* get/set frequency return as failed despite actually succeeding.
/* Zoom R16/24, Logitech H650e, Jabra 550a needs a tiny delay here,
* otherwise requests like get/set frequency return as failed despite
* actually succeeding.
*/
if
(
chip
->
usb_id
==
USB_ID
(
0x1686
,
0x00dd
)
&&
if
((
chip
->
usb_id
==
USB_ID
(
0x1686
,
0x00dd
)
||
chip
->
usb_id
==
USB_ID
(
0x046d
,
0x0a46
)
||
chip
->
usb_id
==
USB_ID
(
0x0b0e
,
0x0349
))
&&
(
requesttype
&
USB_TYPE_MASK
)
==
USB_TYPE_CLASS
)
mdelay
(
1
);
}
...
...
@@ -1373,6 +1377,10 @@ u64 snd_usb_interface_dsd_format_quirks(struct snd_usb_audio *chip,
}
}
break
;
case
USB_ID
(
0x16d0
,
0x0a23
):
if
(
fp
->
altsetting
==
2
)
return
SNDRV_PCM_FMTBIT_DSD_U32_BE
;
break
;
default:
break
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录