/[openvortex]/alsa/alsa-kernel/ppc/awacs.c
ViewVC logotype

Diff of /alsa/alsa-kernel/ppc/awacs.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.3 by vizard, Sun Jun 15 21:01:32 2003 UTC revision 1.4 by vizard, Mon Aug 11 00:06:40 2003 UTC
# Line 92  snd_pmac_awacs_write_noreg(pmac_t *chip, Line 92  snd_pmac_awacs_write_noreg(pmac_t *chip,
92          snd_pmac_awacs_write(chip, val | (reg << 12));          snd_pmac_awacs_write(chip, val | (reg << 12));
93  }  }
94    
 static void do_mdelay(int msec, int can_schedule)  
 {  
         if (can_schedule) {  
                 set_current_state(TASK_UNINTERRUPTIBLE);  
                 schedule_timeout((msec * HZ + 999) / 1000);  
         } else  
                 mdelay(msec);  
 }  
   
95  #ifdef CONFIG_PMAC_PBOOK  #ifdef CONFIG_PMAC_PBOOK
96  /* Recalibrate chip */  /* Recalibrate chip */
97  static void screamer_recalibrate(pmac_t *chip, int can_schedule)  static void screamer_recalibrate(pmac_t *chip)
98  {  {
99          if (chip->model != PMAC_SCREAMER)          if (chip->model != PMAC_SCREAMER)
100                  return;                  return;
# Line 114  static void screamer_recalibrate(pmac_t Line 105  static void screamer_recalibrate(pmac_t
105          snd_pmac_awacs_write_noreg(chip, 1, chip->awacs_reg[1]);          snd_pmac_awacs_write_noreg(chip, 1, chip->awacs_reg[1]);
106          if (chip->manufacturer == 0x1)          if (chip->manufacturer == 0x1)
107                  /* delay for broken crystal part */                  /* delay for broken crystal part */
108                  do_mdelay(750, can_schedule);                  big_mdelay(750);
109          snd_pmac_awacs_write_noreg(chip, 1,          snd_pmac_awacs_write_noreg(chip, 1,
110                                     chip->awacs_reg[1] | MASK_RECALIBRATE | MASK_CMUTE | MASK_AMUTE);                                     chip->awacs_reg[1] | MASK_RECALIBRATE | MASK_CMUTE | MASK_AMUTE);
111          snd_pmac_awacs_write_noreg(chip, 1, chip->awacs_reg[1]);          snd_pmac_awacs_write_noreg(chip, 1, chip->awacs_reg[1]);
# Line 122  static void screamer_recalibrate(pmac_t Line 113  static void screamer_recalibrate(pmac_t
113  }  }
114    
115  #else  #else
116  #define screamer_recalibrate(chip, can_schedule) /* NOP */  #define screamer_recalibrate(chip) /* NOP */
117  #endif  #endif
118    
119    
# Line 631  static int build_mixers(pmac_t *chip, in Line 622  static int build_mixers(pmac_t *chip, in
622  /*  /*
623   * restore all registers   * restore all registers
624   */   */
625  static void awacs_restore_all_regs(pmac_t *chip, int can_schedule)  static void awacs_restore_all_regs(pmac_t *chip)
626  {  {
627          snd_pmac_awacs_write_noreg(chip, 0, chip->awacs_reg[0]);          snd_pmac_awacs_write_noreg(chip, 0, chip->awacs_reg[0]);
628          snd_pmac_awacs_write_noreg(chip, 1, chip->awacs_reg[1]);          snd_pmac_awacs_write_noreg(chip, 1, chip->awacs_reg[1]);
# Line 655  static void snd_pmac_awacs_resume(pmac_t Line 646  static void snd_pmac_awacs_resume(pmac_t
646  {  {
647          if (machine_is_compatible("PowerBook3,1")          if (machine_is_compatible("PowerBook3,1")
648              || machine_is_compatible("PowerBook3,2")) {              || machine_is_compatible("PowerBook3,2")) {
649                  do_mdelay(100, 0);                  big_mdelay(100);
650                  snd_pmac_awacs_write_reg(chip, 1,                  snd_pmac_awacs_write_reg(chip, 1,
651                          chip->awacs_reg[1] & ~MASK_PAROUT);                          chip->awacs_reg[1] & ~MASK_PAROUT);
652                  do_mdelay(300, 0);                  big_mdelay(300);
653          }          }
654    
655          awacs_restore_all_regs(chip, 0);          awacs_restore_all_regs(chip);
656          if (chip->model == PMAC_SCREAMER) {          if (chip->model == PMAC_SCREAMER) {
657                  /* reset power bits in reg 6 */                  /* reset power bits in reg 6 */
658                  mdelay(5);                  mdelay(5);
659                  snd_pmac_awacs_write_noreg(chip, 6, chip->awacs_reg[6]);                  snd_pmac_awacs_write_noreg(chip, 6, chip->awacs_reg[6]);
660          }          }
661          screamer_recalibrate(chip, 0);          screamer_recalibrate(chip);
662  #ifdef PMAC_AMP_AVAIL  #ifdef PMAC_AMP_AVAIL
663          if (chip->mixer_data) {          if (chip->mixer_data) {
664                  awacs_amp_t *amp = chip->mixer_data;                  awacs_amp_t *amp = chip->mixer_data;
# Line 775  snd_pmac_awacs_init(pmac_t *chip) Line 766  snd_pmac_awacs_init(pmac_t *chip)
766                  chip->awacs_reg[7] = 0;                  chip->awacs_reg[7] = 0;
767          }          }
768    
769          awacs_restore_all_regs(chip, 1);          awacs_restore_all_regs(chip);
770          chip->manufacturer = (in_le32(&chip->awacs->codec_stat) >> 8) & 0xf;          chip->manufacturer = (in_le32(&chip->awacs->codec_stat) >> 8) & 0xf;
771          screamer_recalibrate(chip, 1);          screamer_recalibrate(chip);
772    
773          chip->revision = (in_le32(&chip->awacs->codec_stat) >> 12) & 0xf;          chip->revision = (in_le32(&chip->awacs->codec_stat) >> 12) & 0xf;
774  #ifdef PMAC_AMP_AVAIL  #ifdef PMAC_AMP_AVAIL

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.4

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26