aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sound/parisc/harmony.c169
-rw-r--r--sound/parisc/harmony.h14
2 files changed, 91 insertions, 92 deletions
diff --git a/sound/parisc/harmony.c b/sound/parisc/harmony.c
index 0513137d4ec4..ce73f3eae78c 100644
--- a/sound/parisc/harmony.c
+++ b/sound/parisc/harmony.c
@@ -99,32 +99,32 @@ static unsigned int rate_bits[14] = {
99 HARMONY_SR_44KHZ, HARMONY_SR_48KHZ 99 HARMONY_SR_44KHZ, HARMONY_SR_48KHZ
100}; 100};
101 101
102static snd_pcm_hw_constraint_list_t hw_constraint_rates = { 102static struct snd_pcm_hw_constraint_list hw_constraint_rates = {
103 .count = ARRAY_SIZE(snd_harmony_rates), 103 .count = ARRAY_SIZE(snd_harmony_rates),
104 .list = snd_harmony_rates, 104 .list = snd_harmony_rates,
105 .mask = 0, 105 .mask = 0,
106}; 106};
107 107
108inline unsigned long 108static inline unsigned long
109harmony_read(harmony_t *h, unsigned r) 109harmony_read(struct snd_harmony *h, unsigned r)
110{ 110{
111 return __raw_readl(h->iobase + r); 111 return __raw_readl(h->iobase + r);
112} 112}
113 113
114inline void 114static inline void
115harmony_write(harmony_t *h, unsigned r, unsigned long v) 115harmony_write(struct snd_harmony *h, unsigned r, unsigned long v)
116{ 116{
117 __raw_writel(v, h->iobase + r); 117 __raw_writel(v, h->iobase + r);
118} 118}
119 119
120static void 120static inline void
121harmony_wait_for_control(harmony_t *h) 121harmony_wait_for_control(struct snd_harmony *h)
122{ 122{
123 while (harmony_read(h, HARMONY_CNTL) & HARMONY_CNTL_C) ; 123 while (harmony_read(h, HARMONY_CNTL) & HARMONY_CNTL_C) ;
124} 124}
125 125
126inline void 126static inline void
127harmony_reset(harmony_t *h) 127harmony_reset(struct snd_harmony *h)
128{ 128{
129 harmony_write(h, HARMONY_RESET, 1); 129 harmony_write(h, HARMONY_RESET, 1);
130 mdelay(50); 130 mdelay(50);
@@ -132,7 +132,7 @@ harmony_reset(harmony_t *h)
132} 132}
133 133
134static void 134static void
135harmony_disable_interrupts(harmony_t *h) 135harmony_disable_interrupts(struct snd_harmony *h)
136{ 136{
137 u32 dstatus; 137 u32 dstatus;
138 harmony_wait_for_control(h); 138 harmony_wait_for_control(h);
@@ -142,7 +142,7 @@ harmony_disable_interrupts(harmony_t *h)
142} 142}
143 143
144static void 144static void
145harmony_enable_interrupts(harmony_t *h) 145harmony_enable_interrupts(struct snd_harmony *h)
146{ 146{
147 u32 dstatus; 147 u32 dstatus;
148 harmony_wait_for_control(h); 148 harmony_wait_for_control(h);
@@ -152,7 +152,7 @@ harmony_enable_interrupts(harmony_t *h)
152} 152}
153 153
154static void 154static void
155harmony_mute(harmony_t *h) 155harmony_mute(struct snd_harmony *h)
156{ 156{
157 unsigned long flags; 157 unsigned long flags;
158 158
@@ -163,7 +163,7 @@ harmony_mute(harmony_t *h)
163} 163}
164 164
165static void 165static void
166harmony_unmute(harmony_t *h) 166harmony_unmute(struct snd_harmony *h)
167{ 167{
168 unsigned long flags; 168 unsigned long flags;
169 169
@@ -174,7 +174,7 @@ harmony_unmute(harmony_t *h)
174} 174}
175 175
176static void 176static void
177harmony_set_control(harmony_t *h) 177harmony_set_control(struct snd_harmony *h)
178{ 178{
179 u32 ctrl; 179 u32 ctrl;
180 unsigned long flags; 180 unsigned long flags;
@@ -196,7 +196,7 @@ static irqreturn_t
196snd_harmony_interrupt(int irq, void *dev, struct pt_regs *regs) 196snd_harmony_interrupt(int irq, void *dev, struct pt_regs *regs)
197{ 197{
198 u32 dstatus; 198 u32 dstatus;
199 harmony_t *h = dev; 199 struct snd_harmony *h = dev;
200 200
201 spin_lock(&h->lock); 201 spin_lock(&h->lock);
202 harmony_disable_interrupts(h); 202 harmony_disable_interrupts(h);
@@ -261,7 +261,7 @@ snd_harmony_rate_bits(int rate)
261 return HARMONY_SR_44KHZ; 261 return HARMONY_SR_44KHZ;
262} 262}
263 263
264static snd_pcm_hardware_t snd_harmony_playback = 264static struct snd_pcm_hardware snd_harmony_playback =
265{ 265{
266 .info = (SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_INTERLEAVED | 266 .info = (SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_INTERLEAVED |
267 SNDRV_PCM_INFO_JOINT_DUPLEX | SNDRV_PCM_INFO_MMAP_VALID | 267 SNDRV_PCM_INFO_JOINT_DUPLEX | SNDRV_PCM_INFO_MMAP_VALID |
@@ -282,7 +282,7 @@ static snd_pcm_hardware_t snd_harmony_playback =
282 .fifo_size = 0, 282 .fifo_size = 0,
283}; 283};
284 284
285static snd_pcm_hardware_t snd_harmony_capture = 285static struct snd_pcm_hardware snd_harmony_capture =
286{ 286{
287 .info = (SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_INTERLEAVED | 287 .info = (SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_INTERLEAVED |
288 SNDRV_PCM_INFO_JOINT_DUPLEX | SNDRV_PCM_INFO_MMAP_VALID | 288 SNDRV_PCM_INFO_JOINT_DUPLEX | SNDRV_PCM_INFO_MMAP_VALID |
@@ -304,9 +304,9 @@ static snd_pcm_hardware_t snd_harmony_capture =
304}; 304};
305 305
306static int 306static int
307snd_harmony_playback_trigger(snd_pcm_substream_t *ss, int cmd) 307snd_harmony_playback_trigger(struct snd_pcm_substream *ss, int cmd)
308{ 308{
309 harmony_t *h = snd_pcm_substream_chip(ss); 309 struct snd_harmony *h = snd_pcm_substream_chip(ss);
310 310
311 if (h->st.capturing) 311 if (h->st.capturing)
312 return -EBUSY; 312 return -EBUSY;
@@ -340,9 +340,9 @@ snd_harmony_playback_trigger(snd_pcm_substream_t *ss, int cmd)
340} 340}
341 341
342static int 342static int
343snd_harmony_capture_trigger(snd_pcm_substream_t *ss, int cmd) 343snd_harmony_capture_trigger(struct snd_pcm_substream *ss, int cmd)
344{ 344{
345 harmony_t *h = snd_pcm_substream_chip(ss); 345 struct snd_harmony *h = snd_pcm_substream_chip(ss);
346 346
347 if (h->st.playing) 347 if (h->st.playing)
348 return -EBUSY; 348 return -EBUSY;
@@ -376,7 +376,7 @@ snd_harmony_capture_trigger(snd_pcm_substream_t *ss, int cmd)
376} 376}
377 377
378static int 378static int
379snd_harmony_set_data_format(harmony_t *h, int fmt, int force) 379snd_harmony_set_data_format(struct snd_harmony *h, int fmt, int force)
380{ 380{
381 int o = h->st.format; 381 int o = h->st.format;
382 int n; 382 int n;
@@ -406,10 +406,10 @@ snd_harmony_set_data_format(harmony_t *h, int fmt, int force)
406} 406}
407 407
408static int 408static int
409snd_harmony_playback_prepare(snd_pcm_substream_t *ss) 409snd_harmony_playback_prepare(struct snd_pcm_substream *ss)
410{ 410{
411 harmony_t *h = snd_pcm_substream_chip(ss); 411 struct snd_harmony *h = snd_pcm_substream_chip(ss);
412 snd_pcm_runtime_t *rt = ss->runtime; 412 struct snd_pcm_runtime *rt = ss->runtime;
413 413
414 if (h->st.capturing) 414 if (h->st.capturing)
415 return -EBUSY; 415 return -EBUSY;
@@ -436,10 +436,10 @@ snd_harmony_playback_prepare(snd_pcm_substream_t *ss)
436} 436}
437 437
438static int 438static int
439snd_harmony_capture_prepare(snd_pcm_substream_t *ss) 439snd_harmony_capture_prepare(struct snd_pcm_substream *ss)
440{ 440{
441 harmony_t *h = snd_pcm_substream_chip(ss); 441 struct snd_harmony *h = snd_pcm_substream_chip(ss);
442 snd_pcm_runtime_t *rt = ss->runtime; 442 struct snd_pcm_runtime *rt = ss->runtime;
443 443
444 if (h->st.playing) 444 if (h->st.playing)
445 return -EBUSY; 445 return -EBUSY;
@@ -466,10 +466,10 @@ snd_harmony_capture_prepare(snd_pcm_substream_t *ss)
466} 466}
467 467
468static snd_pcm_uframes_t 468static snd_pcm_uframes_t
469snd_harmony_playback_pointer(snd_pcm_substream_t *ss) 469snd_harmony_playback_pointer(struct snd_pcm_substream *ss)
470{ 470{
471 snd_pcm_runtime_t *rt = ss->runtime; 471 struct snd_pcm_runtime *rt = ss->runtime;
472 harmony_t *h = snd_pcm_substream_chip(ss); 472 struct snd_harmony *h = snd_pcm_substream_chip(ss);
473 unsigned long pcuradd; 473 unsigned long pcuradd;
474 unsigned long played; 474 unsigned long played;
475 475
@@ -495,10 +495,10 @@ snd_harmony_playback_pointer(snd_pcm_substream_t *ss)
495} 495}
496 496
497static snd_pcm_uframes_t 497static snd_pcm_uframes_t
498snd_harmony_capture_pointer(snd_pcm_substream_t *ss) 498snd_harmony_capture_pointer(struct snd_pcm_substream *ss)
499{ 499{
500 snd_pcm_runtime_t *rt = ss->runtime; 500 struct snd_pcm_runtime *rt = ss->runtime;
501 harmony_t *h = snd_pcm_substream_chip(ss); 501 struct snd_harmony *h = snd_pcm_substream_chip(ss);
502 unsigned long rcuradd; 502 unsigned long rcuradd;
503 unsigned long caught; 503 unsigned long caught;
504 504
@@ -524,10 +524,10 @@ snd_harmony_capture_pointer(snd_pcm_substream_t *ss)
524} 524}
525 525
526static int 526static int
527snd_harmony_playback_open(snd_pcm_substream_t *ss) 527snd_harmony_playback_open(struct snd_pcm_substream *ss)
528{ 528{
529 harmony_t *h = snd_pcm_substream_chip(ss); 529 struct snd_harmony *h = snd_pcm_substream_chip(ss);
530 snd_pcm_runtime_t *rt = ss->runtime; 530 struct snd_pcm_runtime *rt = ss->runtime;
531 int err; 531 int err;
532 532
533 h->psubs = ss; 533 h->psubs = ss;
@@ -543,10 +543,10 @@ snd_harmony_playback_open(snd_pcm_substream_t *ss)
543} 543}
544 544
545static int 545static int
546snd_harmony_capture_open(snd_pcm_substream_t *ss) 546snd_harmony_capture_open(struct snd_pcm_substream *ss)
547{ 547{
548 harmony_t *h = snd_pcm_substream_chip(ss); 548 struct snd_harmony *h = snd_pcm_substream_chip(ss);
549 snd_pcm_runtime_t *rt = ss->runtime; 549 struct snd_pcm_runtime *rt = ss->runtime;
550 int err; 550 int err;
551 551
552 h->csubs = ss; 552 h->csubs = ss;
@@ -562,27 +562,27 @@ snd_harmony_capture_open(snd_pcm_substream_t *ss)
562} 562}
563 563
564static int 564static int
565snd_harmony_playback_close(snd_pcm_substream_t *ss) 565snd_harmony_playback_close(struct snd_pcm_substream *ss)
566{ 566{
567 harmony_t *h = snd_pcm_substream_chip(ss); 567 struct snd_harmony *h = snd_pcm_substream_chip(ss);
568 h->psubs = NULL; 568 h->psubs = NULL;
569 return 0; 569 return 0;
570} 570}
571 571
572static int 572static int
573snd_harmony_capture_close(snd_pcm_substream_t *ss) 573snd_harmony_capture_close(struct snd_pcm_substream *ss)
574{ 574{
575 harmony_t *h = snd_pcm_substream_chip(ss); 575 struct snd_harmony *h = snd_pcm_substream_chip(ss);
576 h->csubs = NULL; 576 h->csubs = NULL;
577 return 0; 577 return 0;
578} 578}
579 579
580static int 580static int
581snd_harmony_hw_params(snd_pcm_substream_t *ss, 581snd_harmony_hw_params(struct snd_pcm_substream *ss,
582 snd_pcm_hw_params_t *hw) 582 struct snd_pcm_hw_params *hw)
583{ 583{
584 int err; 584 int err;
585 harmony_t *h = snd_pcm_substream_chip(ss); 585 struct snd_harmony *h = snd_pcm_substream_chip(ss);
586 586
587 err = snd_pcm_lib_malloc_pages(ss, params_buffer_bytes(hw)); 587 err = snd_pcm_lib_malloc_pages(ss, params_buffer_bytes(hw));
588 if (err > 0 && h->dma.type == SNDRV_DMA_TYPE_CONTINUOUS) 588 if (err > 0 && h->dma.type == SNDRV_DMA_TYPE_CONTINUOUS)
@@ -592,12 +592,12 @@ snd_harmony_hw_params(snd_pcm_substream_t *ss,
592} 592}
593 593
594static int 594static int
595snd_harmony_hw_free(snd_pcm_substream_t *ss) 595snd_harmony_hw_free(struct snd_pcm_substream *ss)
596{ 596{
597 return snd_pcm_lib_free_pages(ss); 597 return snd_pcm_lib_free_pages(ss);
598} 598}
599 599
600static snd_pcm_ops_t snd_harmony_playback_ops = { 600static struct snd_pcm_ops snd_harmony_playback_ops = {
601 .open = snd_harmony_playback_open, 601 .open = snd_harmony_playback_open,
602 .close = snd_harmony_playback_close, 602 .close = snd_harmony_playback_close,
603 .ioctl = snd_pcm_lib_ioctl, 603 .ioctl = snd_pcm_lib_ioctl,
@@ -608,7 +608,7 @@ static snd_pcm_ops_t snd_harmony_playback_ops = {
608 .pointer = snd_harmony_playback_pointer, 608 .pointer = snd_harmony_playback_pointer,
609}; 609};
610 610
611static snd_pcm_ops_t snd_harmony_capture_ops = { 611static struct snd_pcm_ops snd_harmony_capture_ops = {
612 .open = snd_harmony_capture_open, 612 .open = snd_harmony_capture_open,
613 .close = snd_harmony_capture_close, 613 .close = snd_harmony_capture_close,
614 .ioctl = snd_pcm_lib_ioctl, 614 .ioctl = snd_pcm_lib_ioctl,
@@ -620,9 +620,9 @@ static snd_pcm_ops_t snd_harmony_capture_ops = {
620}; 620};
621 621
622static int 622static int
623snd_harmony_pcm_init(harmony_t *h) 623snd_harmony_pcm_init(struct snd_harmony *h)
624{ 624{
625 snd_pcm_t *pcm; 625 struct snd_pcm *pcm;
626 int err; 626 int err;
627 627
628 harmony_disable_interrupts(h); 628 harmony_disable_interrupts(h);
@@ -683,15 +683,15 @@ snd_harmony_pcm_init(harmony_t *h)
683} 683}
684 684
685static void 685static void
686snd_harmony_set_new_gain(harmony_t *h) 686snd_harmony_set_new_gain(struct snd_harmony *h)
687{ 687{
688 harmony_wait_for_control(h); 688 harmony_wait_for_control(h);
689 harmony_write(h, HARMONY_GAINCTL, h->st.gain); 689 harmony_write(h, HARMONY_GAINCTL, h->st.gain);
690} 690}
691 691
692static int 692static int
693snd_harmony_mixercontrol_info(snd_kcontrol_t *kc, 693snd_harmony_mixercontrol_info(struct snd_kcontrol *kc,
694 snd_ctl_elem_info_t *uinfo) 694 struct snd_ctl_elem_info *uinfo)
695{ 695{
696 int mask = (kc->private_value >> 16) & 0xff; 696 int mask = (kc->private_value >> 16) & 0xff;
697 int left_shift = (kc->private_value) & 0xff; 697 int left_shift = (kc->private_value) & 0xff;
@@ -707,10 +707,10 @@ snd_harmony_mixercontrol_info(snd_kcontrol_t *kc,
707} 707}
708 708
709static int 709static int
710snd_harmony_volume_get(snd_kcontrol_t *kc, 710snd_harmony_volume_get(struct snd_kcontrol *kc,
711 snd_ctl_elem_value_t *ucontrol) 711 struct snd_ctl_elem_value *ucontrol)
712{ 712{
713 harmony_t *h = snd_kcontrol_chip(kc); 713 struct snd_harmony *h = snd_kcontrol_chip(kc);
714 int shift_left = (kc->private_value) & 0xff; 714 int shift_left = (kc->private_value) & 0xff;
715 int shift_right = (kc->private_value >> 8) & 0xff; 715 int shift_right = (kc->private_value >> 8) & 0xff;
716 int mask = (kc->private_value >> 16) & 0xff; 716 int mask = (kc->private_value >> 16) & 0xff;
@@ -736,10 +736,10 @@ snd_harmony_volume_get(snd_kcontrol_t *kc,
736} 736}
737 737
738static int 738static int
739snd_harmony_volume_put(snd_kcontrol_t *kc, 739snd_harmony_volume_put(struct snd_kcontrol *kc,
740 snd_ctl_elem_value_t *ucontrol) 740 struct snd_ctl_elem_value *ucontrol)
741{ 741{
742 harmony_t *h = snd_kcontrol_chip(kc); 742 struct snd_harmony *h = snd_kcontrol_chip(kc);
743 int shift_left = (kc->private_value) & 0xff; 743 int shift_left = (kc->private_value) & 0xff;
744 int shift_right = (kc->private_value >> 8) & 0xff; 744 int shift_right = (kc->private_value >> 8) & 0xff;
745 int mask = (kc->private_value >> 16) & 0xff; 745 int mask = (kc->private_value >> 16) & 0xff;
@@ -771,8 +771,8 @@ snd_harmony_volume_put(snd_kcontrol_t *kc,
771} 771}
772 772
773static int 773static int
774snd_harmony_captureroute_info(snd_kcontrol_t *kc, 774snd_harmony_captureroute_info(struct snd_kcontrol *kc,
775 snd_ctl_elem_info_t *uinfo) 775 struct snd_ctl_elem_info *uinfo)
776{ 776{
777 static char *texts[2] = { "Line", "Mic" }; 777 static char *texts[2] = { "Line", "Mic" };
778 uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED; 778 uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
@@ -786,10 +786,10 @@ snd_harmony_captureroute_info(snd_kcontrol_t *kc,
786} 786}
787 787
788static int 788static int
789snd_harmony_captureroute_get(snd_kcontrol_t *kc, 789snd_harmony_captureroute_get(struct snd_kcontrol *kc,
790 snd_ctl_elem_value_t *ucontrol) 790 struct snd_ctl_elem_value *ucontrol)
791{ 791{
792 harmony_t *h = snd_kcontrol_chip(kc); 792 struct snd_harmony *h = snd_kcontrol_chip(kc);
793 int value; 793 int value;
794 794
795 spin_lock_irq(&h->mixer_lock); 795 spin_lock_irq(&h->mixer_lock);
@@ -803,10 +803,10 @@ snd_harmony_captureroute_get(snd_kcontrol_t *kc,
803} 803}
804 804
805static int 805static int
806snd_harmony_captureroute_put(snd_kcontrol_t *kc, 806snd_harmony_captureroute_put(struct snd_kcontrol *kc,
807 snd_ctl_elem_value_t *ucontrol) 807 struct snd_ctl_elem_value *ucontrol)
808{ 808{
809 harmony_t *h = snd_kcontrol_chip(kc); 809 struct snd_harmony *h = snd_kcontrol_chip(kc);
810 int value; 810 int value;
811 int old_gain = h->st.gain; 811 int old_gain = h->st.gain;
812 812
@@ -823,8 +823,7 @@ snd_harmony_captureroute_put(snd_kcontrol_t *kc,
823 return h->st.gain != old_gain; 823 return h->st.gain != old_gain;
824} 824}
825 825
826#define HARMONY_CONTROLS (sizeof(snd_harmony_controls)/ \ 826#define HARMONY_CONTROLS ARRAY_SIZE(snd_harmony_controls)
827 sizeof(snd_kcontrol_new_t))
828 827
829#define HARMONY_VOLUME(xname, left_shift, right_shift, mask, invert) \ 828#define HARMONY_VOLUME(xname, left_shift, right_shift, mask, invert) \
830{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \ 829{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \
@@ -833,7 +832,7 @@ snd_harmony_captureroute_put(snd_kcontrol_t *kc,
833 .private_value = ((left_shift) | ((right_shift) << 8) | \ 832 .private_value = ((left_shift) | ((right_shift) << 8) | \
834 ((mask) << 16) | ((invert) << 24)) } 833 ((mask) << 16) | ((invert) << 24)) }
835 834
836static snd_kcontrol_new_t snd_harmony_controls[] = { 835static struct snd_kcontrol_new snd_harmony_controls[] = {
837 HARMONY_VOLUME("Master Playback Volume", HARMONY_GAIN_LO_SHIFT, 836 HARMONY_VOLUME("Master Playback Volume", HARMONY_GAIN_LO_SHIFT,
838 HARMONY_GAIN_RO_SHIFT, HARMONY_GAIN_OUT, 1), 837 HARMONY_GAIN_RO_SHIFT, HARMONY_GAIN_OUT, 1),
839 HARMONY_VOLUME("Capture Volume", HARMONY_GAIN_LI_SHIFT, 838 HARMONY_VOLUME("Capture Volume", HARMONY_GAIN_LI_SHIFT,
@@ -856,7 +855,7 @@ static snd_kcontrol_new_t snd_harmony_controls[] = {
856}; 855};
857 856
858static void __init 857static void __init
859snd_harmony_mixer_reset(harmony_t *h) 858snd_harmony_mixer_reset(struct snd_harmony *h)
860{ 859{
861 harmony_mute(h); 860 harmony_mute(h);
862 harmony_reset(h); 861 harmony_reset(h);
@@ -865,9 +864,9 @@ snd_harmony_mixer_reset(harmony_t *h)
865} 864}
866 865
867static int __init 866static int __init
868snd_harmony_mixer_init(harmony_t *h) 867snd_harmony_mixer_init(struct snd_harmony *h)
869{ 868{
870 snd_card_t *card = h->card; 869 struct snd_card *card = h->card;
871 int idx, err; 870 int idx, err;
872 871
873 snd_assert(h != NULL, return -EINVAL); 872 snd_assert(h != NULL, return -EINVAL);
@@ -886,7 +885,7 @@ snd_harmony_mixer_init(harmony_t *h)
886} 885}
887 886
888static int 887static int
889snd_harmony_free(harmony_t *h) 888snd_harmony_free(struct snd_harmony *h)
890{ 889{
891 if (h->gdma.addr) 890 if (h->gdma.addr)
892 snd_dma_free_pages(&h->gdma); 891 snd_dma_free_pages(&h->gdma);
@@ -906,20 +905,20 @@ snd_harmony_free(harmony_t *h)
906} 905}
907 906
908static int 907static int
909snd_harmony_dev_free(snd_device_t *dev) 908snd_harmony_dev_free(struct snd_device *dev)
910{ 909{
911 harmony_t *h = dev->device_data; 910 struct snd_harmony *h = dev->device_data;
912 return snd_harmony_free(h); 911 return snd_harmony_free(h);
913} 912}
914 913
915static int __devinit 914static int __devinit
916snd_harmony_create(snd_card_t *card, 915snd_harmony_create(struct snd_card *card,
917 struct parisc_device *padev, 916 struct parisc_device *padev,
918 harmony_t **rchip) 917 struct snd_harmony **rchip)
919{ 918{
920 int err; 919 int err;
921 harmony_t *h; 920 struct snd_harmony *h;
922 static snd_device_ops_t ops = { 921 static struct snd_device_ops ops = {
923 .dev_free = snd_harmony_dev_free, 922 .dev_free = snd_harmony_dev_free,
924 }; 923 };
925 924
@@ -973,8 +972,8 @@ static int __devinit
973snd_harmony_probe(struct parisc_device *padev) 972snd_harmony_probe(struct parisc_device *padev)
974{ 973{
975 int err; 974 int err;
976 snd_card_t *card; 975 struct snd_card *card;
977 harmony_t *h; 976 struct snd_harmony *h;
978 977
979 card = snd_card_new(index, id, THIS_MODULE, 0); 978 card = snd_card_new(index, id, THIS_MODULE, 0);
980 if (card == NULL) 979 if (card == NULL)
@@ -1033,7 +1032,7 @@ alsa_harmony_init(void)
1033static void __exit 1032static void __exit
1034alsa_harmony_fini(void) 1033alsa_harmony_fini(void)
1035{ 1034{
1036 return unregister_parisc_driver(&snd_harmony_driver); 1035 unregister_parisc_driver(&snd_harmony_driver);
1037} 1036}
1038 1037
1039MODULE_LICENSE("GPL"); 1038MODULE_LICENSE("GPL");
diff --git a/sound/parisc/harmony.h b/sound/parisc/harmony.h
index 526c52389de2..2e434523fedf 100644
--- a/sound/parisc/harmony.h
+++ b/sound/parisc/harmony.h
@@ -13,7 +13,7 @@ struct harmony_buffer {
13 int coherent; 13 int coherent;
14}; 14};
15 15
16typedef struct snd_card_harmony { 16struct snd_harmony {
17 int irq; 17 int irq;
18 18
19 unsigned long hpa; /* hard physical address */ 19 unsigned long hpa; /* hard physical address */
@@ -44,15 +44,15 @@ typedef struct snd_card_harmony {
44 unsigned long silence_intr; 44 unsigned long silence_intr;
45 } stats; 45 } stats;
46 46
47 snd_pcm_t *pcm; 47 struct snd_pcm *pcm;
48 snd_card_t *card; 48 struct snd_card *card;
49 snd_pcm_substream_t *psubs; 49 struct snd_pcm_substream *psubs;
50 snd_pcm_substream_t *csubs; 50 struct snd_pcm_substream *csubs;
51 snd_info_entry_t *proc; 51 struct snd_info_entry *proc;
52 52
53 spinlock_t lock; 53 spinlock_t lock;
54 spinlock_t mixer_lock; 54 spinlock_t mixer_lock;
55} harmony_t; 55};
56 56
57#define MAX_PCM_DEVICES 1 57#define MAX_PCM_DEVICES 1
58#define MAX_PCM_SUBSTREAMS 4 58#define MAX_PCM_SUBSTREAMS 4