diff options
Diffstat (limited to 'sound/pci')
-rw-r--r-- | sound/pci/ac97/ac97_codec.c | 7 | ||||
-rw-r--r-- | sound/pci/hda/hda_codec.c | 10 | ||||
-rw-r--r-- | sound/pci/hda/hda_local.h | 1 |
3 files changed, 11 insertions, 7 deletions
diff --git a/sound/pci/ac97/ac97_codec.c b/sound/pci/ac97/ac97_codec.c index 6577b2325357..7abcb10b2754 100644 --- a/sound/pci/ac97/ac97_codec.c +++ b/sound/pci/ac97/ac97_codec.c | |||
@@ -1927,9 +1927,10 @@ static int snd_ac97_dev_disconnect(struct snd_device *device) | |||
1927 | static struct snd_ac97_build_ops null_build_ops; | 1927 | static struct snd_ac97_build_ops null_build_ops; |
1928 | 1928 | ||
1929 | #ifdef CONFIG_SND_AC97_POWER_SAVE | 1929 | #ifdef CONFIG_SND_AC97_POWER_SAVE |
1930 | static void do_update_power(void *data) | 1930 | static void do_update_power(struct work_struct *work) |
1931 | { | 1931 | { |
1932 | update_power_regs(data); | 1932 | update_power_regs( |
1933 | container_of(work, struct snd_ac97, power_work.work)); | ||
1933 | } | 1934 | } |
1934 | #endif | 1935 | #endif |
1935 | 1936 | ||
@@ -1989,7 +1990,7 @@ int snd_ac97_mixer(struct snd_ac97_bus *bus, struct snd_ac97_template *template, | |||
1989 | mutex_init(&ac97->page_mutex); | 1990 | mutex_init(&ac97->page_mutex); |
1990 | #ifdef CONFIG_SND_AC97_POWER_SAVE | 1991 | #ifdef CONFIG_SND_AC97_POWER_SAVE |
1991 | ac97->power_workq = create_workqueue("ac97"); | 1992 | ac97->power_workq = create_workqueue("ac97"); |
1992 | INIT_WORK(&ac97->power_work, do_update_power, ac97); | 1993 | INIT_DELAYED_WORK(&ac97->power_work, do_update_power); |
1993 | #endif | 1994 | #endif |
1994 | 1995 | ||
1995 | #ifdef CONFIG_PCI | 1996 | #ifdef CONFIG_PCI |
diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c index 9c3d7ac08068..71482c15a852 100644 --- a/sound/pci/hda/hda_codec.c +++ b/sound/pci/hda/hda_codec.c | |||
@@ -272,10 +272,11 @@ EXPORT_SYMBOL(snd_hda_queue_unsol_event); | |||
272 | /* | 272 | /* |
273 | * process queueud unsolicited events | 273 | * process queueud unsolicited events |
274 | */ | 274 | */ |
275 | static void process_unsol_events(void *data) | 275 | static void process_unsol_events(struct work_struct *work) |
276 | { | 276 | { |
277 | struct hda_bus *bus = data; | 277 | struct hda_bus_unsolicited *unsol = |
278 | struct hda_bus_unsolicited *unsol = bus->unsol; | 278 | container_of(work, struct hda_bus_unsolicited, work); |
279 | struct hda_bus *bus = unsol->bus; | ||
279 | struct hda_codec *codec; | 280 | struct hda_codec *codec; |
280 | unsigned int rp, caddr, res; | 281 | unsigned int rp, caddr, res; |
281 | 282 | ||
@@ -314,7 +315,8 @@ static int init_unsol_queue(struct hda_bus *bus) | |||
314 | kfree(unsol); | 315 | kfree(unsol); |
315 | return -ENOMEM; | 316 | return -ENOMEM; |
316 | } | 317 | } |
317 | INIT_WORK(&unsol->work, process_unsol_events, bus); | 318 | INIT_WORK(&unsol->work, process_unsol_events); |
319 | unsol->bus = bus; | ||
318 | bus->unsol = unsol; | 320 | bus->unsol = unsol; |
319 | return 0; | 321 | return 0; |
320 | } | 322 | } |
diff --git a/sound/pci/hda/hda_local.h b/sound/pci/hda/hda_local.h index f9416c36396e..9ca1baf860bd 100644 --- a/sound/pci/hda/hda_local.h +++ b/sound/pci/hda/hda_local.h | |||
@@ -206,6 +206,7 @@ struct hda_bus_unsolicited { | |||
206 | /* workqueue */ | 206 | /* workqueue */ |
207 | struct workqueue_struct *workq; | 207 | struct workqueue_struct *workq; |
208 | struct work_struct work; | 208 | struct work_struct work; |
209 | struct hda_bus *bus; | ||
209 | }; | 210 | }; |
210 | 211 | ||
211 | /* | 212 | /* |