Browse Source

ALSA: ad1816a: enable hardware timer

Enable hardware timer with 10 usec resolution.

Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Krzysztof Helt 16 years ago
parent
commit
a17ac45a5d
3 changed files with 9 additions and 5 deletions
  1. 2 0
      include/sound/ad1816a.h
  2. 7 0
      sound/isa/ad1816a/ad1816a.c
  3. 0 5
      sound/isa/ad1816a/ad1816a_lib.c

+ 2 - 0
include/sound/ad1816a.h

@@ -169,5 +169,7 @@ extern int snd_ad1816a_create(struct snd_card *card, unsigned long port,
 
 
 extern int snd_ad1816a_pcm(struct snd_ad1816a *chip, int device, struct snd_pcm **rpcm);
 extern int snd_ad1816a_pcm(struct snd_ad1816a *chip, int device, struct snd_pcm **rpcm);
 extern int snd_ad1816a_mixer(struct snd_ad1816a *chip);
 extern int snd_ad1816a_mixer(struct snd_ad1816a *chip);
+extern int snd_ad1816a_timer(struct snd_ad1816a *chip, int device,
+			     struct snd_timer **rtimer);
 
 
 #endif	/* __SOUND_AD1816A_H */
 #endif	/* __SOUND_AD1816A_H */

+ 7 - 0
sound/isa/ad1816a/ad1816a.c

@@ -156,6 +156,7 @@ static int __devinit snd_card_ad1816a_probe(int dev, struct pnp_card_link *pcard
 	struct snd_card_ad1816a *acard;
 	struct snd_card_ad1816a *acard;
 	struct snd_ad1816a *chip;
 	struct snd_ad1816a *chip;
 	struct snd_opl3 *opl3;
 	struct snd_opl3 *opl3;
+	struct snd_timer *timer;
 
 
 	if ((card = snd_card_new(index[dev], id[dev], THIS_MODULE,
 	if ((card = snd_card_new(index[dev], id[dev], THIS_MODULE,
 				 sizeof(struct snd_card_ad1816a))) == NULL)
 				 sizeof(struct snd_card_ad1816a))) == NULL)
@@ -194,6 +195,12 @@ static int __devinit snd_card_ad1816a_probe(int dev, struct pnp_card_link *pcard
 		return error;
 		return error;
 	}
 	}
 
 
+	error = snd_ad1816a_timer(chip, 0, &timer);
+	if (error < 0) {
+		snd_card_free(card);
+		return error;
+	}
+
 	if (mpu_port[dev] > 0) {
 	if (mpu_port[dev] > 0) {
 		if (snd_mpu401_uart_new(card, 0, MPU401_HW_MPU401,
 		if (snd_mpu401_uart_new(card, 0, MPU401_HW_MPU401,
 					mpu_port[dev], 0, mpu_irq[dev], IRQF_DISABLED,
 					mpu_port[dev], 0, mpu_irq[dev], IRQF_DISABLED,

+ 0 - 5
sound/isa/ad1816a/ad1816a_lib.c

@@ -377,7 +377,6 @@ static struct snd_pcm_hardware snd_ad1816a_capture = {
 	.fifo_size =		0,
 	.fifo_size =		0,
 };
 };
 
 
-#if 0 /* not used now */
 static int snd_ad1816a_timer_close(struct snd_timer *timer)
 static int snd_ad1816a_timer_close(struct snd_timer *timer)
 {
 {
 	struct snd_ad1816a *chip = snd_timer_chip(timer);
 	struct snd_ad1816a *chip = snd_timer_chip(timer);
@@ -442,8 +441,6 @@ static struct snd_timer_hardware snd_ad1816a_timer_table = {
 	.start =	snd_ad1816a_timer_start,
 	.start =	snd_ad1816a_timer_start,
 	.stop =		snd_ad1816a_timer_stop,
 	.stop =		snd_ad1816a_timer_stop,
 };
 };
-#endif /* not used now */
-
 
 
 static int snd_ad1816a_playback_open(struct snd_pcm_substream *substream)
 static int snd_ad1816a_playback_open(struct snd_pcm_substream *substream)
 {
 {
@@ -687,7 +684,6 @@ int __devinit snd_ad1816a_pcm(struct snd_ad1816a *chip, int device, struct snd_p
 	return 0;
 	return 0;
 }
 }
 
 
-#if 0 /* not used now */
 int __devinit snd_ad1816a_timer(struct snd_ad1816a *chip, int device, struct snd_timer **rtimer)
 int __devinit snd_ad1816a_timer(struct snd_ad1816a *chip, int device, struct snd_timer **rtimer)
 {
 {
 	struct snd_timer *timer;
 	struct snd_timer *timer;
@@ -709,7 +705,6 @@ int __devinit snd_ad1816a_timer(struct snd_ad1816a *chip, int device, struct snd
 		*rtimer = timer;
 		*rtimer = timer;
 	return 0;
 	return 0;
 }
 }
-#endif /* not used now */
 
 
 /*
 /*
  *
  *