Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
241bc82e
Commit
241bc82e
authored
Aug 22, 2017
by
Takashi Iwai
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'for-linus' into for-next
Conflicts: sound/core/control.c
parents
3a93d082
88c54cdf
Changes
13
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
55 additions
and
26 deletions
+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
No files found.
sound/core/control.c
View file @
241bc82e
...
@@ -1128,7 +1128,7 @@ static int replace_user_tlv(struct snd_kcontrol *kctl, unsigned int __user *buf,
...
@@ -1128,7 +1128,7 @@ static int replace_user_tlv(struct snd_kcontrol *kctl, unsigned int __user *buf,
change
=
ue
->
tlv_data_size
!=
size
;
change
=
ue
->
tlv_data_size
!=
size
;
if
(
!
change
)
if
(
!
change
)
change
=
memcmp
(
ue
->
tlv_data
,
container
,
size
);
change
=
memcmp
(
ue
->
tlv_data
,
container
,
size
)
!=
0
;
if
(
!
change
)
{
if
(
!
change
)
{
kfree
(
container
);
kfree
(
container
);
return
0
;
return
0
;
...
...
sound/core/seq/Kconfig
View file @
241bc82e
...
@@ -47,10 +47,10 @@ config SND_SEQ_HRTIMER_DEFAULT
...
@@ -47,10 +47,10 @@ config SND_SEQ_HRTIMER_DEFAULT
timer.
timer.
config SND_SEQ_MIDI_EVENT
config SND_SEQ_MIDI_EVENT
def_tristate SND_RAWMIDI
tristate
config SND_SEQ_MIDI
config SND_SEQ_MIDI
tristate
def_tristate SND_RAWMIDI
select SND_SEQ_MIDI_EVENT
select SND_SEQ_MIDI_EVENT
config SND_SEQ_MIDI_EMUL
config SND_SEQ_MIDI_EMUL
...
...
sound/core/seq/seq_clientmgr.c
View file @
241bc82e
...
@@ -1502,16 +1502,11 @@ static int snd_seq_ioctl_unsubscribe_port(struct snd_seq_client *client,
...
@@ -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
)
static
int
snd_seq_ioctl_create_queue
(
struct
snd_seq_client
*
client
,
void
*
arg
)
{
{
struct
snd_seq_queue_info
*
info
=
arg
;
struct
snd_seq_queue_info
*
info
=
arg
;
int
result
;
struct
snd_seq_queue
*
q
;
struct
snd_seq_queue
*
q
;
result
=
snd_seq_queue_alloc
(
client
->
number
,
info
->
locked
,
info
->
flags
);
q
=
snd_seq_queue_alloc
(
client
->
number
,
info
->
locked
,
info
->
flags
);
if
(
result
<
0
)
if
(
IS_ERR
(
q
))
return
result
;
return
PTR_ERR
(
q
);
q
=
queueptr
(
result
);
if
(
q
==
NULL
)
return
-
EINVAL
;
info
->
queue
=
q
->
queue
;
info
->
queue
=
q
->
queue
;
info
->
locked
=
q
->
locked
;
info
->
locked
=
q
->
locked
;
...
@@ -1521,7 +1516,7 @@ static int snd_seq_ioctl_create_queue(struct snd_seq_client *client, void *arg)
...
@@ -1521,7 +1516,7 @@ static int snd_seq_ioctl_create_queue(struct snd_seq_client *client, void *arg)
if
(
!
info
->
name
[
0
])
if
(
!
info
->
name
[
0
])
snprintf
(
info
->
name
,
sizeof
(
info
->
name
),
"Queue-%d"
,
q
->
queue
);
snprintf
(
info
->
name
,
sizeof
(
info
->
name
),
"Queue-%d"
,
q
->
queue
);
strlcpy
(
q
->
name
,
info
->
name
,
sizeof
(
q
->
name
));
strlcpy
(
q
->
name
,
info
->
name
,
sizeof
(
q
->
name
));
queuefree
(
q
);
snd_use_lock_free
(
&
q
->
use_lock
);
return
0
;
return
0
;
}
}
...
...
sound/core/seq/seq_queue.c
View file @
241bc82e
...
@@ -184,22 +184,26 @@ void __exit snd_seq_queues_delete(void)
...
@@ -184,22 +184,26 @@ void __exit snd_seq_queues_delete(void)
static
void
queue_use
(
struct
snd_seq_queue
*
queue
,
int
client
,
int
use
);
static
void
queue_use
(
struct
snd_seq_queue
*
queue
,
int
client
,
int
use
);
/* allocate a new queue -
/* 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
;
struct
snd_seq_queue
*
q
;
q
=
queue_new
(
client
,
locked
);
q
=
queue_new
(
client
,
locked
);
if
(
q
==
NULL
)
if
(
q
==
NULL
)
return
-
ENOMEM
;
return
ERR_PTR
(
-
ENOMEM
)
;
q
->
info_flags
=
info_flags
;
q
->
info_flags
=
info_flags
;
queue_use
(
q
,
client
,
1
);
queue_use
(
q
,
client
,
1
);
snd_use_lock_use
(
&
q
->
use_lock
);
if
(
queue_list_add
(
q
)
<
0
)
{
if
(
queue_list_add
(
q
)
<
0
)
{
snd_use_lock_free
(
&
q
->
use_lock
);
queue_delete
(
q
);
queue_delete
(
q
);
return
-
ENOMEM
;
return
ERR_PTR
(
-
ENOMEM
)
;
}
}
return
q
->
queue
;
return
q
;
}
}
/* delete a queue - queue must be owned by the client */
/* delete a queue - queue must be owned by the client */
...
...
sound/core/seq/seq_queue.h
View file @
241bc82e
...
@@ -71,7 +71,7 @@ void snd_seq_queues_delete(void);
...
@@ -71,7 +71,7 @@ void snd_seq_queues_delete(void);
/* create new queue (constructor) */
/* 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) */
/* delete queue (destructor) */
int
snd_seq_queue_delete
(
int
client
,
int
queueid
);
int
snd_seq_queue_delete
(
int
client
,
int
queueid
);
...
...
sound/firewire/iso-resources.c
View file @
241bc82e
...
@@ -210,9 +210,14 @@ EXPORT_SYMBOL(fw_iso_resources_update);
...
@@ -210,9 +210,14 @@ EXPORT_SYMBOL(fw_iso_resources_update);
*/
*/
void
fw_iso_resources_free
(
struct
fw_iso_resources
*
r
)
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
;
int
bandwidth
,
channel
;
/* Not initialized. */
if
(
r
->
unit
==
NULL
)
return
;
card
=
fw_parent_device
(
r
->
unit
)
->
card
;
mutex_lock
(
&
r
->
mutex
);
mutex_lock
(
&
r
->
mutex
);
if
(
r
->
allocated
)
{
if
(
r
->
allocated
)
{
...
...
sound/firewire/motu/motu.c
View file @
241bc82e
...
@@ -131,6 +131,7 @@ static void do_registration(struct work_struct *work)
...
@@ -131,6 +131,7 @@ static void do_registration(struct work_struct *work)
return
;
return
;
error:
error:
snd_motu_transaction_unregister
(
motu
);
snd_motu_transaction_unregister
(
motu
);
snd_motu_stream_destroy_duplex
(
motu
);
snd_card_free
(
motu
->
card
);
snd_card_free
(
motu
->
card
);
dev_info
(
&
motu
->
unit
->
device
,
dev_info
(
&
motu
->
unit
->
device
,
"Sound card registration failed: %d
\n
"
,
err
);
"Sound card registration failed: %d
\n
"
,
err
);
...
...
sound/pci/emu10k1/emufx.c
View file @
241bc82e
...
@@ -698,10 +698,18 @@ static int copy_gctl(struct snd_emu10k1 *emu,
...
@@ -698,10 +698,18 @@ static int copy_gctl(struct snd_emu10k1 *emu,
{
{
struct
snd_emu10k1_fx8010_control_old_gpr
__user
*
octl
;
struct
snd_emu10k1_fx8010_control_old_gpr
__user
*
octl
;
if
(
emu
->
support_tlv
)
if
(
emu
->
support_tlv
)
{
return
copy_from_user
(
gctl
,
&
_gctl
[
idx
],
sizeof
(
*
gctl
));
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
;
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
;
return
-
EFAULT
;
gctl
->
tlv
=
NULL
;
gctl
->
tlv
=
NULL
;
return
0
;
return
0
;
...
...
sound/pci/hda/patch_realtek.c
View file @
241bc82e
...
@@ -6647,7 +6647,6 @@ static const struct snd_hda_pin_quirk alc269_pin_fixup_tbl[] = {
...
@@ -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
,
SND_HDA_PIN_QUIRK
(
0x10ec0299
,
0x1028
,
"Dell"
,
ALC269_FIXUP_DELL4_MIC_NO_PRESENCE
,
ALC225_STANDARD_PINS
,
ALC225_STANDARD_PINS
,
{
0x12
,
0xb7a60130
},
{
0x12
,
0xb7a60130
},
{
0x13
,
0xb8a61140
},
{
0x17
,
0x90170110
}),
{
0x17
,
0x90170110
}),
{}
{}
};
};
...
...
sound/usb/mixer.c
View file @
241bc82e
...
@@ -548,6 +548,8 @@ int snd_usb_mixer_vol_tlv(struct snd_kcontrol *kcontrol, int op_flag,
...
@@ -548,6 +548,8 @@ int snd_usb_mixer_vol_tlv(struct snd_kcontrol *kcontrol, int op_flag,
if
(
size
<
sizeof
(
scale
))
if
(
size
<
sizeof
(
scale
))
return
-
ENOMEM
;
return
-
ENOMEM
;
if
(
cval
->
min_mute
)
scale
[
0
]
=
SNDRV_CTL_TLVT_DB_MINMAX_MUTE
;
scale
[
2
]
=
cval
->
dBmin
;
scale
[
2
]
=
cval
->
dBmin
;
scale
[
3
]
=
cval
->
dBmax
;
scale
[
3
]
=
cval
->
dBmax
;
if
(
copy_to_user
(
_tlv
,
scale
,
sizeof
(
scale
)))
if
(
copy_to_user
(
_tlv
,
scale
,
sizeof
(
scale
)))
...
...
sound/usb/mixer.h
View file @
241bc82e
...
@@ -64,6 +64,7 @@ struct usb_mixer_elem_info {
...
@@ -64,6 +64,7 @@ struct usb_mixer_elem_info {
int
cached
;
int
cached
;
int
cache_val
[
MAX_CHANNELS
];
int
cache_val
[
MAX_CHANNELS
];
u8
initialized
;
u8
initialized
;
u8
min_mute
;
void
*
private_data
;
void
*
private_data
;
};
};
...
...
sound/usb/mixer_quirks.c
View file @
241bc82e
...
@@ -1878,6 +1878,12 @@ void snd_usb_mixer_fu_apply_quirk(struct usb_mixer_interface *mixer,
...
@@ -1878,6 +1878,12 @@ void snd_usb_mixer_fu_apply_quirk(struct usb_mixer_interface *mixer,
if
(
unitid
==
7
&&
cval
->
control
==
UAC_FU_VOLUME
)
if
(
unitid
==
7
&&
cval
->
control
==
UAC_FU_VOLUME
)
snd_dragonfly_quirk_db_scale
(
mixer
,
cval
,
kctl
);
snd_dragonfly_quirk_db_scale
(
mixer
,
cval
,
kctl
);
break
;
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
View file @
241bc82e
...
@@ -1141,6 +1141,7 @@ bool snd_usb_get_sample_rate_quirk(struct snd_usb_audio *chip)
...
@@ -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
(
0x0556
,
0x0014
):
/* Phoenix Audio TMX320VC */
case
USB_ID
(
0x05A3
,
0x9420
):
/* ELP HD USB Camera */
case
USB_ID
(
0x05A3
,
0x9420
):
/* ELP HD USB Camera */
case
USB_ID
(
0x074D
,
0x3553
):
/* Outlaw RR2150 (Micronas UAC3553B) */
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
(
0x1901
,
0x0191
):
/* GE B850V3 CP2114 audio interface */
case
USB_ID
(
0x1de7
,
0x0013
):
/* Phoenix Audio MT202exe */
case
USB_ID
(
0x1de7
,
0x0013
):
/* Phoenix Audio MT202exe */
case
USB_ID
(
0x1de7
,
0x0014
):
/* Phoenix Audio TMX320 */
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,
...
@@ -1307,10 +1308,13 @@ void snd_usb_ctl_msg_quirk(struct usb_device *dev, unsigned int pipe,
&&
(
requesttype
&
USB_TYPE_MASK
)
==
USB_TYPE_CLASS
)
&&
(
requesttype
&
USB_TYPE_MASK
)
==
USB_TYPE_CLASS
)
mdelay
(
20
);
mdelay
(
20
);
/* Zoom R16/24 needs a tiny delay here, otherwise requests like
/* Zoom R16/24, Logitech H650e, Jabra 550a needs a tiny delay here,
* get/set frequency return as failed despite actually succeeding.
* 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
)
(
requesttype
&
USB_TYPE_MASK
)
==
USB_TYPE_CLASS
)
mdelay
(
1
);
mdelay
(
1
);
}
}
...
@@ -1373,6 +1377,10 @@ u64 snd_usb_interface_dsd_format_quirks(struct snd_usb_audio *chip,
...
@@ -1373,6 +1377,10 @@ u64 snd_usb_interface_dsd_format_quirks(struct snd_usb_audio *chip,
}
}
}
}
break
;
break
;
case
USB_ID
(
0x16d0
,
0x0a23
):
if
(
fp
->
altsetting
==
2
)
return
SNDRV_PCM_FMTBIT_DSD_U32_BE
;
break
;
default:
default:
break
;
break
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment