Arvind Yadav [Fri, 18 Aug 2017 07:45:12 +0000 (13:15 +0530)]
ALSA: drivers: constify snd_pcm_ops structures
snd_pcm_ops are not supposed to change at runtime. All functions
working with snd_pcm_ops provided by <sound/pcm.h> work with
const snd_pcm_ops. So mark the non-const structs as const.
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Arvind Yadav [Fri, 18 Aug 2017 07:45:11 +0000 (13:15 +0530)]
ALSA: atmel: constify snd_pcm_ops structures
snd_pcm_ops are not supposed to change at runtime. All functions
working with snd_pcm_ops provided by <sound/pcm.h> work with
const snd_pcm_ops. So mark the non-const structs as const.
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Arvind Yadav [Fri, 18 Aug 2017 07:45:10 +0000 (13:15 +0530)]
ALSA: arm: constify snd_pcm_ops structures
snd_pcm_ops are not supposed to change at runtime. All functions
working with snd_pcm_ops provided by <sound/pcm.h> work with
const snd_pcm_ops. So mark the non-const structs as const.
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Arvind Yadav [Fri, 18 Aug 2017 07:45:09 +0000 (13:15 +0530)]
ALSA: aoa: constify snd_pcm_ops structures
snd_pcm_ops are not supposed to change at runtime. All functions
working with snd_pcm_ops provided by <sound/pcm.h> work with
const snd_pcm_ops. So mark the non-const structs as const.
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Stephen Barber [Thu, 17 Aug 2017 22:17:46 +0000 (15:17 -0700)]
ALSA: usb-audio: don't retry snd_usb_ctl_msg after timeout
A few calls to snd_usb_ctl_msg wrap the function in a retry loop. In
the worst case, the timeout for snd_usb_ctl_msg is 5 seconds, which when
retried 10 times (for example, if a device is removed) could cause a
probe to hang for ~50 seconds.
Example stack trace from 3.14 which triggered a hung task timeout:
Call Trace:
[<
ffffffffa2c1f720>] ? inet6_set_link_af.part.35+0x12/0x12
[<
ffffffffa2c20309>] schedule+0x6e/0x70
[<
ffffffffa2c1f81c>] schedule_timeout+0xfc/0x13c
[<
ffffffffa2667bbc>] ? rcu_read_unlock_sched_notrace+0x17/0x17
[<
ffffffffa2c20d68>] __wait_for_common+0x153/0x190
[<
ffffffffa2c20d68>] ? __wait_for_common+0x153/0x190
[<
ffffffffa26890e5>] ? wake_up_state+0x12/0x12
[<
ffffffffa2c20e0e>] wait_for_completion_timeout+0x1d/0x1f
[<
ffffffffa2a07c70>] usb_start_wait_urb+0x93/0xf1
[<
ffffffffa2a07daf>] usb_control_msg+0xe1/0x11d
[<
ffffffffc02cd254>] snd_usb_ctl_msg+0x9c/0xf1 [snd_usb_audio]
[<
ffffffffc02ce191>] snd_usb_mixer_set_ctl_value+0x124/0xab1 [snd_usb_audio]
[<
ffffffffc02ce230>] snd_usb_mixer_set_ctl_value+0x1c3/0xab1 [snd_usb_audio]
[<
ffffffffc02ce58e>] snd_usb_mixer_set_ctl_value+0x521/0xab1 [snd_usb_audio]
[<
ffffffffc02cee88>] snd_usb_mixer_add_control+0x36a/0x1264 [snd_usb_audio]
[<
ffffffffc02cf323>] snd_usb_mixer_add_control+0x805/0x1264 [snd_usb_audio]
[<
ffffffffa2a06e11>] ? usb_free_urb+0x1a/0x1c
[<
ffffffffc02cfcf7>] snd_usb_mixer_add_control+0x11d9/0x1264 [snd_usb_audio]
[<
ffffffffc02d000f>] snd_usb_create_mixer+0xbc/0x286 [snd_usb_audio]
[<
ffffffffc02cac18>] 0xffffffffc02cac17
[<
ffffffffa2a0aaf1>] usb_probe_interface+0x17c/0x21c
[<
ffffffffa29a65bc>] driver_probe_device+0xae/0x1fa
[<
ffffffffa29a6767>] __device_attach_driver+0x5f/0x66
[<
ffffffffa29a6708>] ? driver_probe_device+0x1fa/0x1fa
[<
ffffffffa29a4a60>] bus_for_each_drv+0x87/0xaa
[<
ffffffffa29a688a>] __device_attach+0x9d/0x101
[<
ffffffffa29a6913>] device_initial_probe+0x13/0x15
[<
ffffffffa29a5ae6>] bus_probe_device+0x33/0x96
[<
ffffffffa29a3d19>] device_add+0x328/0x547
[<
ffffffffa2a09355>] usb_set_configuration+0x624/0x674
[<
ffffffffa2a11949>] generic_probe+0x45/0x77
[<
ffffffffa2a0a962>] usb_probe_device+0x2d/0x40
[<
ffffffffa29a65bc>] driver_probe_device+0xae/0x1fa
[<
ffffffffa29a6767>] __device_attach_driver+0x5f/0x66
[<
ffffffffa29a6708>] ? driver_probe_device+0x1fa/0x1fa
[<
ffffffffa29a4a60>] bus_for_each_drv+0x87/0xaa
[<
ffffffffa29a688a>] __device_attach+0x9d/0x101
[<
ffffffffa29a6913>] device_initial_probe+0x13/0x15
[<
ffffffffa29a5ae6>] bus_probe_device+0x33/0x96
[<
ffffffffa29a3d19>] device_add+0x328/0x547
[<
ffffffffa29030bc>] ? add_device_randomness+0x111/0x130
[<
ffffffffa2a00967>] usb_new_device+0x2a2/0x3c0
[<
ffffffffa2a02ddc>] hub_thread+0xa3d/0xeed
[<
ffffffffa2c2010d>] ? __schedule+0x41e/0x5ac
[<
ffffffffa26957ce>] ? finish_wait+0x62/0x62
[<
ffffffffa2a0239f>] ? usb_reset_device+0x16a/0x16a
[<
ffffffffa267b255>] kthread+0x108/0x110
[<
ffffffffa267b14d>] ? __kthread_parkme+0x67/0x67
[<
ffffffffa2c23b2c>] ret_from_fork+0x7c/0xb0
[<
ffffffffa267b14d>] ? __kthread_parkme+0x67/0x67
Signed-off-by: Stephen Barber <smbarber@chromium.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Bhumika Goyal [Thu, 17 Aug 2017 09:16:00 +0000 (14:46 +0530)]
ALSA: parisc: make snd_pcm_hardware const
Make these const as they are only used in a copy operation.
Done using Coccinelle
Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Bhumika Goyal [Thu, 17 Aug 2017 09:15:59 +0000 (14:45 +0530)]
ALSA: usb: make snd_pcm_hardware const
Make this const as it is only used in a copy operation.
Done using Coccinelle.
Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Bhumika Goyal [Thu, 17 Aug 2017 09:15:58 +0000 (14:45 +0530)]
ALSA: sparc: make snd_pcm_hardware const
Make these const as they are only used in a copy operation.
Done using Coccinelle.
Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Bhumika Goyal [Thu, 17 Aug 2017 09:15:57 +0000 (14:45 +0530)]
ALSA: sh: make snd_pcm_hardware const
Make these const as they are only used in a copy operation.
Done using Coccinelle.
Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Bhumika Goyal [Thu, 17 Aug 2017 09:15:56 +0000 (14:45 +0530)]
ALSA: ppc: make snd_pcm_hardware const
Make these const as they are only used in a copy operation.
Done using Coccinelle.
Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Bhumika Goyal [Thu, 17 Aug 2017 09:15:55 +0000 (14:45 +0530)]
ALSA: pcmcia: make snd_pcm_hardware const
Make this const as it is only used in a copy operation.
Done using Coccinelle.
Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Bhumika Goyal [Thu, 17 Aug 2017 09:15:54 +0000 (14:45 +0530)]
ALSA: pci: make snd_pcm_hardware const
Make these const as they are only used in a copy operation.
Done using Coccinelle.
Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Bhumika Goyal [Thu, 17 Aug 2017 09:15:53 +0000 (14:45 +0530)]
ALSA: mips: make snd_pcm_hardware const
Make these const as they are only used in a copy operation.
Done using Coccinelle
Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Bhumika Goyal [Thu, 17 Aug 2017 09:15:52 +0000 (14:45 +0530)]
ALSA: isa: make snd_pcm_hardware const
Make these const as they are only used in a copy operation.
Done using Coccinelle.
Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Bhumika Goyal [Thu, 17 Aug 2017 09:15:51 +0000 (14:45 +0530)]
ALSA: drivers: make snd_pcm_hardware const
Make these const as they are only used in a copy operation.
Done using Coccinelle.
Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Bhumika Goyal [Thu, 17 Aug 2017 09:15:50 +0000 (14:45 +0530)]
ALSA: atmel: make snd_pcm_hardware const
Make this const as it is only used in a copy operation.
Done using Coccinelle.
Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Bhumika Goyal [Thu, 17 Aug 2017 09:15:49 +0000 (14:45 +0530)]
ALSA: arm: make snd_pcm_hardware const
Make this const as it is only used in a copy operation.
Done using Coccinelle.
Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Arvind Yadav [Thu, 17 Aug 2017 10:06:30 +0000 (15:36 +0530)]
ALSA: wavefront: constify pnp_card_device_id
pnp_card_device_id are not supposed to change at runtime. All functions
working with pnp_card_device_id provided by <linux/pnp.h> work with
const pnp_card_device_id. So mark the non-const structs as const.
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Arvind Yadav [Thu, 17 Aug 2017 10:06:29 +0000 (15:36 +0530)]
ALSA: sscape: constify pnp_card_device_id
pnp_card_device_id are not supposed to change at runtime. All functions
working with pnp_card_device_id provided by <linux/pnp.h> work with
const pnp_card_device_id. So mark the non-const structs as const.
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Arvind Yadav [Thu, 17 Aug 2017 10:06:28 +0000 (15:36 +0530)]
ALSA: sb16: constify pnp_card_device_id
pnp_card_device_id are not supposed to change at runtime. All functions
working with pnp_card_device_id provided by <linux/pnp.h> work with
const pnp_card_device_id. So mark the non-const structs as const.
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Arvind Yadav [Thu, 17 Aug 2017 10:06:27 +0000 (15:36 +0530)]
ALSA: opti9xx: constify pnp_card_device_id
pnp_card_device_id are not supposed to change at runtime. All functions
working with pnp_card_device_id provided by <linux/pnp.h> work with
const pnp_card_device_id. So mark the non-const structs as const.
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Arvind Yadav [Thu, 17 Aug 2017 10:06:26 +0000 (15:36 +0530)]
ALSA: msnd: constify pnp_card_device_id
pnp_card_device_id are not supposed to change at runtime. All functions
working with pnp_card_device_id provided by <linux/pnp.h> work with
const pnp_card_device_id. So mark the non-const structs as const.
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Arvind Yadav [Thu, 17 Aug 2017 10:06:25 +0000 (15:36 +0530)]
ALSA: gus: constify pnp_card_device_id
pnp_card_device_id are not supposed to change at runtime. All functions
working with pnp_card_device_id provided by <linux/pnp.h> work with
const pnp_card_device_id. So mark the non-const structs as const.
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Arvind Yadav [Thu, 17 Aug 2017 10:06:24 +0000 (15:36 +0530)]
ALSA: es1688: constify pnp_card_device_id
pnp_card_device_id are not supposed to change at runtime. All functions
working with pnp_card_device_id provided by <linux/pnp.h> work with
const pnp_card_device_id. So mark the non-const structs as const.
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Arvind Yadav [Thu, 17 Aug 2017 10:06:23 +0000 (15:36 +0530)]
ALSA: cs4236: constify pnp_card_device_id
pnp_card_device_id are not supposed to change at runtime. All functions
working with pnp_card_device_id provided by <linux/pnp.h> work with
const pnp_card_device_id. So mark the non-const structs as const.
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Arvind Yadav [Thu, 17 Aug 2017 10:06:22 +0000 (15:36 +0530)]
ALSA: cmi8330: constify pnp_card_device_id
pnp_card_device_id are not supposed to change at runtime. All functions
working with pnp_card_device_id provided by <linux/pnp.h> work with
const pnp_card_device_id. So mark the non-const structs as const.
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Arvind Yadav [Thu, 17 Aug 2017 10:06:21 +0000 (15:36 +0530)]
ALSA: azt2320: constify pnp_card_device_id
pnp_card_device_id are not supposed to change at runtime. All functions
working with pnp_card_device_id provided by <linux/pnp.h> work with
const pnp_card_device_id. So mark the non-const structs as const.
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Arvind Yadav [Thu, 17 Aug 2017 10:06:20 +0000 (15:36 +0530)]
ALSA: als100: constify pnp_card_device_id
pnp_card_device_id are not supposed to change at runtime. All functions
working with pnp_card_device_id provided by <linux/pnp.h> work with
const pnp_card_device_id. So mark the non-const structs as const.
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Arvind Yadav [Thu, 17 Aug 2017 10:06:19 +0000 (15:36 +0530)]
ALSA: ad1816a: constify pnp_card_device_id
pnp_card_device_id are not supposed to change at runtime. All functions
working with pnp_card_device_id provided by <linux/pnp.h> work with
const pnp_card_device_id. So mark the non-const structs as const.
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Arvind Yadav [Thu, 17 Aug 2017 10:06:18 +0000 (15:36 +0530)]
ALSA: opl3sa2: constify pnp_device_id and pnp_card_device_id
*_device_id are not supposed to change at runtime. All functions
working with *_device_id provided by <linux/pnp.h> work with
const *_device_id. So mark the non-const structs as const.
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Arvind Yadav [Thu, 17 Aug 2017 10:06:17 +0000 (15:36 +0530)]
ALSA: es18xx: constify pnp_device_id and pnp_card_device_id
*_device_id are not supposed to change at runtime. All functions
working with *_device_id provided by <linux/pnp.h> work with
const *_device_id. So mark the non-const structs as const.
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Arvind Yadav [Thu, 17 Aug 2017 10:06:16 +0000 (15:36 +0530)]
ALSA: drivers: mpu401: constify pnp_device_id
pnp_device_id are not supposed to change at runtime. All functions
working with pnp_device_id provided by <linux/pnp.h> work with
const pnp_device_id. So mark the non-const structs as const.
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Bhumika Goyal [Wed, 16 Aug 2017 08:44:11 +0000 (14:14 +0530)]
ALSA: hda: make snd_kcontrol_new const
Make these const as they are only passed as the 3rd argument to the
function snd_hda_gen_add_kctl, which is of type const.
Done using Coccinelle.
Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Bhumika Goyal [Wed, 16 Aug 2017 08:44:10 +0000 (14:14 +0530)]
ALSA: pcxhr: make snd_kcontrol_new const
Make these const as they are only used during a copy operation.
Done using Coccinelle.
Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Bhumika Goyal [Wed, 16 Aug 2017 08:44:09 +0000 (14:14 +0530)]
ALSA: aoa: make snd_kcontrol_new const
Make these const as they are only used during a copy operation.
Done using Coccinelle.
Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Julia Lawall [Tue, 15 Aug 2017 08:09:54 +0000 (10:09 +0200)]
ALSA: firewire-motu: constify snd_rawmidi_ops structures
These snd_rawmidi_ops structures are only passed as the third
argument of snd_rawmidi_set_ops. This argument is const, so the
snd_rawmidi_ops structures can be const too.
Done with the help of Coccinelle.
Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr>
Reviewed-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Julia Lawall [Mon, 14 Aug 2017 17:13:26 +0000 (19:13 +0200)]
sound: emu8000: constify emu8000_ops
The structure emu8000_ops is only copied into another structure, so
it can be const.
Done with the help of Coccinelle.
Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Markus Elfring [Mon, 14 Aug 2017 20:00:40 +0000 (22:00 +0200)]
ALSA: rme9652: Use common error handling code in two functions
Add a jump target so that a bit of exception handling can be better reused
in these functions.
This issue was detected by using the Coccinelle software.
Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Arvind Yadav [Fri, 11 Aug 2017 11:58:07 +0000 (17:28 +0530)]
ALSA: wss: constify snd_pcm_ops structures
snd_pcm_ops are not supposed to change at runtime. All functions
working with snd_pcm_ops provided by <sound/pcm.h> work with
const snd_pcm_ops. So mark the non-const structs as const.
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Arvind Yadav [Fri, 11 Aug 2017 11:58:06 +0000 (17:28 +0530)]
ALSA: sb8: constify snd_pcm_ops structures
snd_pcm_ops are not supposed to change at runtime. All functions
working with snd_pcm_ops provided by <sound/pcm.h> work with
const snd_pcm_ops. So mark the non-const structs as const.
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Arvind Yadav [Fri, 11 Aug 2017 11:58:05 +0000 (17:28 +0530)]
ALSA: sb16: constify snd_pcm_ops structures
snd_pcm_ops are not supposed to change at runtime. All functions
working with snd_pcm_ops provided by <sound/pcm.h> work with
const snd_pcm_ops. So mark the non-const structs as const.
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Arvind Yadav [Fri, 11 Aug 2017 11:58:04 +0000 (17:28 +0530)]
ALSA: emu8000: constify snd_pcm_ops structures
snd_pcm_ops are not supposed to change at runtime. All functions
working with snd_pcm_ops provided by <sound/pcm.h> work with
const snd_pcm_ops. So mark the non-const structs as const.
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Arvind Yadav [Fri, 11 Aug 2017 11:58:03 +0000 (17:28 +0530)]
ALSA: msnd: constify snd_pcm_ops structures
snd_pcm_ops are not supposed to change at runtime. All functions
working with snd_pcm_ops provided by <sound/pcm.h> work with
const snd_pcm_ops. So mark the non-const structs as const.
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Arvind Yadav [Fri, 11 Aug 2017 11:58:02 +0000 (17:28 +0530)]
ALSA: gus: constify snd_pcm_ops structures
snd_pcm_ops are not supposed to change at runtime. All functions
working with snd_pcm_ops provided by <sound/pcm.h> work with
const snd_pcm_ops. So mark the non-const structs as const.
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Arvind Yadav [Fri, 11 Aug 2017 11:58:01 +0000 (17:28 +0530)]
ALSA: es18xx: constify snd_pcm_ops structures
snd_pcm_ops are not supposed to change at runtime. All functions
working with snd_pcm_ops provided by <sound/pcm.h> work with
const snd_pcm_ops. So mark the non-const structs as const.
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Arvind Yadav [Fri, 11 Aug 2017 11:58:00 +0000 (17:28 +0530)]
ALSA: es1688: constify snd_pcm_ops structures
snd_pcm_ops are not supposed to change at runtime. All functions
working with snd_pcm_ops provided by <sound/pcm.h> work with
const snd_pcm_ops. So mark the non-const structs as const.
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Arvind Yadav [Fri, 11 Aug 2017 11:57:59 +0000 (17:27 +0530)]
ALSA: ad1816a: constify snd_pcm_ops structures
snd_pcm_ops are not supposed to change at runtime. All functions
working with snd_pcm_ops provided by <sound/pcm.h> work with
const snd_pcm_ops. So mark the non-const structs as const.
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Markus Elfring [Sat, 12 Aug 2017 18:50:16 +0000 (20:50 +0200)]
ALSA: mpu401: Adjust four checks for null pointers
The script “checkpatch.pl” pointed information out like the following.
Comparison to NULL could be written !…
Thus fix the affected source code places.
Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Markus Elfring [Sat, 12 Aug 2017 18:40:17 +0000 (20:40 +0200)]
ALSA: mpu401: Use common error handling code in snd_mpu401_uart_new()
Add a jump target so that a bit of exception handling can be better reused
at the end of this function.
Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Markus Elfring [Sat, 12 Aug 2017 18:20:11 +0000 (20:20 +0200)]
ALSA: mpu401: Delete an error message for a failed memory allocation in snd_mpu401_uart_new()
Omit an extra message for a memory allocation failure in this function.
This issue was detected by using the Coccinelle software.
Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Markus Elfring [Sat, 12 Aug 2017 17:54:20 +0000 (19:54 +0200)]
ALSA: opl3: Delete an error message for a failed memory allocation in snd_opl3_new()
Omit an extra message for a memory allocation failure in this function.
This issue was detected by using the Coccinelle software.
Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Markus Elfring [Sat, 12 Aug 2017 17:09:23 +0000 (19:09 +0200)]
ALSA: ca0106: Delete an error message for a failed memory allocation in snd_ca0106_pcm_open_capture_channel()
Omit an extra message for a memory allocation failure in this function.
This issue was detected by using the Coccinelle software.
Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Markus Elfring [Sat, 12 Aug 2017 16:45:42 +0000 (18:45 +0200)]
ALSA: mixart: Delete an error message for a failed memory allocation in snd_mixart_create()
Omit an extra message for a memory allocation failure in this function.
This issue was detected by using the Coccinelle software.
Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Markus Elfring [Sat, 12 Aug 2017 16:14:54 +0000 (18:14 +0200)]
ALSA: pcxhr: Delete an error message for a failed memory allocation in pcxhr_create()
Omit an extra message for a memory allocation failure in this function.
This issue was detected by using the Coccinelle software.
Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Bhumika Goyal [Sat, 12 Aug 2017 15:31:28 +0000 (21:01 +0530)]
ALSA: pci: make snd_pcm_hardware const
Make these const as they are only used during a copy operation.
Done using Coccinelle.
Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Bhumika Goyal [Sat, 12 Aug 2017 15:31:27 +0000 (21:01 +0530)]
ALSA: ymfpci: make snd_pcm_hardware const
Make these const as they are only used during a copy operation.
Done using Coccinelle.
Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Bhumika Goyal [Sat, 12 Aug 2017 15:31:26 +0000 (21:01 +0530)]
ALSA: trident: make snd_pcm_hardware const
Make these const as they are only used during a copy operation.
Done using Coccinelle.
Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Bhumika Goyal [Sat, 12 Aug 2017 15:31:25 +0000 (21:01 +0530)]
ALSA: rme9652: make snd_pcm_hardware const
Make these const as they are only used during a copy operation.
Done using Coccinelle.
Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Bhumika Goyal [Sat, 12 Aug 2017 15:31:24 +0000 (21:01 +0530)]
ALSA: riptide: make snd_pcm_hardware const
Make these const as they are only used during a copy operation.
Done using Coccinelle.
Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Bhumika Goyal [Sat, 12 Aug 2017 15:31:23 +0000 (21:01 +0530)]
ALSA: pcxhr: make snd_pcm_hardware const
Make this const as it is only used during a copy operation.
Done using Coccinelle
Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Bhumika Goyal [Sat, 12 Aug 2017 15:31:22 +0000 (21:01 +0530)]
ALSA: ctxfi: make snd_pcm_hardware const
Make these const as they are only used during a copy operation.
Done using Coccinelle.
Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Bhumika Goyal [Sat, 12 Aug 2017 15:31:21 +0000 (21:01 +0530)]
ALSA: mixart: make snd_pcm_hardware const
Make these const as they are only used during a copy operation.
Done using Coccinelle.
Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Bhumika Goyal [Sat, 12 Aug 2017 15:31:20 +0000 (21:01 +0530)]
ALSA: lx6464es: make snd_pcm_hardware const
Make this const as it is only used during a copy operation.
Done using Coccinelle.
Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Bhumika Goyal [Sat, 12 Aug 2017 15:31:19 +0000 (21:01 +0530)]
ALSA: lola: make snd_pcm_hardware const
Make this const as it is only used during a copy operation.
Done using Coccinelle.
Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Bhumika Goyal [Sat, 12 Aug 2017 15:31:18 +0000 (21:01 +0530)]
ALSA: emu10k1: make snd_pcm_hardware const
Make these const as they are only used during a copy operation.
Done using Coccinelle.
Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Bhumika Goyal [Sat, 12 Aug 2017 15:31:17 +0000 (21:01 +0530)]
ALSA: cs5535audio: make snd_pcm_hardware const
Make these const as they are only used during a copy operation.
Done using Coccinelle.
Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Bhumika Goyal [Sat, 12 Aug 2017 15:31:16 +0000 (21:01 +0530)]
ALSA: korg1212: make snd_pcm_hardware const
Make these const as they are only used during a copy operation.
Done using Coccinelle.
Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Bhumika Goyal [Sat, 12 Aug 2017 15:31:15 +0000 (21:01 +0530)]
ALSA: cs46xx: make snd_pcm_hardware const
Make these const as they are only used during a copy operation.
Done using Coccinelle.
Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Bhumika Goyal [Sat, 12 Aug 2017 15:31:14 +0000 (21:01 +0530)]
ALSA: ca0106: make snd_pcm_hardware const
Make these const as they are only used during a copy operation.
Done using Coccinelle.
Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Bhumika Goyal [Sat, 12 Aug 2017 15:31:13 +0000 (21:01 +0530)]
ALSA: aw2: make snd_pcm_hardware const
Make these const as they are only used during a copy operation.
Done using Coccinelle.
Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Markus Elfring [Sat, 12 Aug 2017 15:07:09 +0000 (17:07 +0200)]
ALSA: rme9652: Adjust seven checks for null pointers
The script “checkpatch.pl” pointed information out like the following.
Comparison to NULL could be written …
Thus fix the affected source code places.
Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Markus Elfring [Sat, 12 Aug 2017 14:50:06 +0000 (16:50 +0200)]
ALSA: rme9652: Improve eight size determinations
Replace the specification of data structures by variable references
as the parameter for the operator "sizeof" to make the corresponding size
determination a bit safer according to the Linux coding style convention.
Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Markus Elfring [Sat, 12 Aug 2017 14:10:32 +0000 (16:10 +0200)]
ALSA: rme9652: Delete an error message for a failed memory allocation in snd_hdspm_create()
Omit an extra message for a memory allocation failure in this function.
This issue was detected by using the Coccinelle software.
Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Markus Elfring [Sat, 12 Aug 2017 13:18:56 +0000 (15:18 +0200)]
ALSA: rme96: Adjust five checks for null pointers
The script “checkpatch.pl” pointed information out like the following.
Comparison to NULL could be written …
Thus fix the affected source code places.
Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Markus Elfring [Sat, 12 Aug 2017 12:50:33 +0000 (14:50 +0200)]
ALSA: rme96: Use common error handling code in snd_rme96_probe()
Add a jump target so that a bit of exception handling can be better reused
at the end of this function.
Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Markus Elfring [Sat, 12 Aug 2017 12:24:41 +0000 (14:24 +0200)]
ALSA: rme96: Delete two error messages for a failed memory allocation in snd_rme96_probe()
Omit extra messages for a memory allocation failure in this function.
This issue was detected by using the Coccinelle software.
Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Markus Elfring [Sat, 12 Aug 2017 11:20:16 +0000 (13:20 +0200)]
ALSA: trident: Delete an error message for a failed memory allocation in snd_trident_tlb_alloc()
Omit an extra message for a memory allocation failure in this function.
This issue was detected by using the Coccinelle software.
Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Markus Elfring [Fri, 11 Aug 2017 17:39:06 +0000 (19:39 +0200)]
ALSA: usb: caiaq: audio: Delete two error messages for a failed memory allocation in alloc_urbs()
Omit extra messages for a memory allocation failure in this function.
This issue was detected by using the Coccinelle software.
[Fixed the unused variable warning by this change as well -- tiwai]
Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
Acked-by: Daniel Mack <daniel@zonque.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Markus Elfring [Fri, 11 Aug 2017 16:38:25 +0000 (18:38 +0200)]
ALSA: usb: Delete an error message for a failed memory allocation in two functions
Omit an extra message for a memory allocation failure in these functions.
This issue was detected by using the Coccinelle software.
Link: http://events.linuxfoundation.org/sites/events/files/slides/LCJ16-Refactor_Strings-WSang_0.pdf
Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Markus Elfring [Fri, 11 Aug 2017 15:40:57 +0000 (17:40 +0200)]
ALSA: usx2y: Delete an error message for a failed memory allocation in two functions
Omit an extra message for a memory allocation failure in these functions.
This issue was detected by using the Coccinelle software.
Link: http://events.linuxfoundation.org/sites/events/files/slides/LCJ16-Refactor_Strings-WSang_0.pdf
Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Arvind Yadav [Thu, 10 Aug 2017 11:47:38 +0000 (17:17 +0530)]
ALSA: trident: constify snd_pcm_ops structures
snd_pcm_ops are not supposed to change at runtime. All functions
working with snd_pcm_ops provided by <sound/pcm.h> work with
const snd_pcm_ops. So mark the non-const structs as const.
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Arvind Yadav [Thu, 10 Aug 2017 11:47:37 +0000 (17:17 +0530)]
ALSA: sis7019: constify snd_pcm_ops structures
snd_pcm_ops are not supposed to change at runtime. All functions
working with snd_pcm_ops provided by <sound/pcm.h> work with
const snd_pcm_ops. So mark the non-const structs as const.
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Arvind Yadav [Thu, 10 Aug 2017 11:47:36 +0000 (17:17 +0530)]
ALSA: intel8x0m: constify snd_pcm_ops structures
snd_pcm_ops are not supposed to change at runtime. All functions
working with snd_pcm_ops provided by <sound/pcm.h> work with
const snd_pcm_ops. So mark the non-const structs as const.
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Arvind Yadav [Thu, 10 Aug 2017 11:47:35 +0000 (17:17 +0530)]
ALSA: intel8x0: constify snd_pcm_ops structures
snd_pcm_ops are not supposed to change at runtime. All functions
working with snd_pcm_ops provided by <sound/pcm.h> work with
const snd_pcm_ops. So mark the non-const structs as const.
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Arvind Yadav [Thu, 10 Aug 2017 11:47:34 +0000 (17:17 +0530)]
ALSA: echoaudio: constify snd_pcm_ops structures
snd_pcm_ops are not supposed to change at runtime. All functions
working with snd_pcm_ops provided by <sound/pcm.h> work with
const snd_pcm_ops. So mark the non-const structs as const.
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Arvind Yadav [Thu, 10 Aug 2017 11:47:33 +0000 (17:17 +0530)]
ALSA: au88x0: constify snd_pcm_ops structures
snd_pcm_ops are not supposed to change at runtime. All functions
working with snd_pcm_ops provided by <sound/pcm.h> work with
const snd_pcm_ops. So mark the non-const structs as const.
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Arvind Yadav [Thu, 10 Aug 2017 11:47:32 +0000 (17:17 +0530)]
ALSA: ali5451: constify snd_pcm_ops structures
snd_pcm_ops are not supposed to change at runtime. All functions
working with snd_pcm_ops provided by <sound/pcm.h> work with
const snd_pcm_ops. So mark the non-const structs as const.
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Markus Elfring [Wed, 9 Aug 2017 07:30:34 +0000 (09:30 +0200)]
ALSA: emux: Delete two error messages for a failed memory allocation in snd_emux_create_port()
Omit extra messages for a memory allocation failure in this function.
This issue was detected by using the Coccinelle software.
Link: http://events.linuxfoundation.org/sites/events/files/slides/LCJ16-Refactor_Strings-WSang_0.pdf
Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Markus Elfring [Wed, 9 Aug 2017 07:22:42 +0000 (09:22 +0200)]
ALSA: emux: Adjust four checks for null pointers
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The script “checkpatch.pl” pointed information out like the following.
Comparison to NULL could be written !…
Thus fix affected source code places.
Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Markus Elfring [Wed, 9 Aug 2017 07:11:26 +0000 (09:11 +0200)]
ALSA: emux: Improve a size determination in two functions
Replace the specification of data types by pointer dereferences
as the parameter for the operator "sizeof" to make the corresponding size
determination a bit safer according to the Linux coding style convention.
Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Markus Elfring [Wed, 9 Aug 2017 06:40:14 +0000 (08:40 +0200)]
ALSA: emux: Adjust one function call together with a variable assignment
The script "checkpatch.pl" pointed information out like the following.
ERROR: do not use assignment in if condition
Thus fix the affected source code place.
Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Arvind Yadav [Sun, 6 Aug 2017 06:48:59 +0000 (12:18 +0530)]
ALSA: usbusx2y: constify usb_device_id.
usb_device_id are not supposed to change at runtime. All functions
working with usb_device_id provided by <linux/usb.h> work with
const usb_device_id. So mark the non-const structs as const.
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Arvind Yadav [Sun, 6 Aug 2017 06:48:58 +0000 (12:18 +0530)]
ALSA: us122l: constify usb_device_id.
usb_device_id are not supposed to change at runtime. All functions
working with usb_device_id provided by <linux/usb.h> work with
const usb_device_id. So mark the non-const structs as const.
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Arvind Yadav [Sun, 6 Aug 2017 06:48:57 +0000 (12:18 +0530)]
ALSA: ua101: constify usb_device_id.
usb_device_id are not supposed to change at runtime. All functions
working with usb_device_id provided by <linux/usb.h> work with
const usb_device_id. So mark the non-const structs as const.
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Arvind Yadav [Sun, 6 Aug 2017 06:48:56 +0000 (12:18 +0530)]
ALSA: usb-audio: constify usb_device_id.
usb_device_id are not supposed to change at runtime. All functions
working with usb_device_id provided by <linux/usb.h> work with
const usb_device_id. So mark the non-const structs as const.
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Arvind Yadav [Sun, 6 Aug 2017 06:48:55 +0000 (12:18 +0530)]
ALSA: snd-usb-caiaq: constify usb_device_id.
usb_device_id are not supposed to change at runtime. All functions
working with usb_device_id provided by <linux/usb.h> work with
const usb_device_id. So mark the non-const structs as const.
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Arvind Yadav [Sun, 6 Aug 2017 06:48:54 +0000 (12:18 +0530)]
ALSA: bcd2000: constify usb_device_id.
usb_device_id are not supposed to change at runtime. All functions
working with usb_device_id provided by <linux/usb.h> work with
const usb_device_id. So mark the non-const structs as const.
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Arvind Yadav [Sun, 6 Aug 2017 06:48:53 +0000 (12:18 +0530)]
ALSA: 6fire: constify usb_device_id.
usb_device_id are not supposed to change at runtime. All functions
working with usb_device_id provided by <linux/usb.h> work with
const usb_device_id. So mark the non-const structs as const.
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Guneshwor Singh [Sat, 5 Aug 2017 08:35:46 +0000 (14:05 +0530)]
ALSA: hda: Add Cannonlake PCI ID
Cannonlake is next generation Intel platform. This commit adds PCI ID for
it.
Signed-off-by: Guneshwor Singh <guneshwor.o.singh@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Bhumika Goyal [Fri, 4 Aug 2017 17:49:30 +0000 (23:19 +0530)]
ALSA: ice1712: add const to snd_akm4xxx structures
Declare snd_akm4xxx structures as const as they are only passed
to the function snd_ice1712_akm4xxx_init. This argument is of type
const, so make the structures const.
Done using Coccinelle:
@match disable optional_qualifier@
identifier s;
position p;
@@
static struct snd_akm4xxx s@p={...};
@good1@
identifier match.s;
position p;
@@
snd_ice1712_akm4xxx_init(...,&s@p,...)
@bad@
identifier match.s;
position p!={match.p,good1.p};
@@
s@p
@depends on !bad disable optional_qualifier@
identifier match.s;
@@
static
+const
struct snd_akm4xxx s={...};
Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>