Loading sound/pci/lola/lola.c +11 −1 Original line number Original line Diff line number Diff line Loading @@ -153,8 +153,14 @@ static int rirb_get_response(struct lola *chip, unsigned int *val, { { unsigned long timeout; unsigned long timeout; again: timeout = jiffies + msecs_to_jiffies(1000); timeout = jiffies + msecs_to_jiffies(1000); for (;;) { for (;;) { if (chip->polling_mode) { spin_lock_irq(&chip->reg_lock); lola_update_rirb(chip); spin_unlock_irq(&chip->reg_lock); } if (!chip->rirb.cmds) { if (!chip->rirb.cmds) { *val = chip->res; *val = chip->res; if (extval) if (extval) Loading @@ -175,9 +181,13 @@ static int rirb_get_response(struct lola *chip, unsigned int *val, break; break; udelay(20); udelay(20); cond_resched(); cond_resched(); lola_update_rirb(chip); } } printk(KERN_WARNING SFX "RIRB response error\n"); printk(KERN_WARNING SFX "RIRB response error\n"); if (!chip->polling_mode) { printk(KERN_WARNING SFX "switching to polling mode\n"); chip->polling_mode = 1; goto again; } return -EIO; return -EIO; } } Loading sound/pci/lola/lola.h +3 −2 Original line number Original line Diff line number Diff line Loading @@ -376,6 +376,7 @@ struct lola { /* flags */ /* flags */ unsigned int initialized:1; unsigned int initialized:1; unsigned int cold_reset:1; unsigned int cold_reset:1; unsigned int polling_mode:1; /* for debugging */ /* for debugging */ unsigned int debug_res; unsigned int debug_res; Loading Loading
sound/pci/lola/lola.c +11 −1 Original line number Original line Diff line number Diff line Loading @@ -153,8 +153,14 @@ static int rirb_get_response(struct lola *chip, unsigned int *val, { { unsigned long timeout; unsigned long timeout; again: timeout = jiffies + msecs_to_jiffies(1000); timeout = jiffies + msecs_to_jiffies(1000); for (;;) { for (;;) { if (chip->polling_mode) { spin_lock_irq(&chip->reg_lock); lola_update_rirb(chip); spin_unlock_irq(&chip->reg_lock); } if (!chip->rirb.cmds) { if (!chip->rirb.cmds) { *val = chip->res; *val = chip->res; if (extval) if (extval) Loading @@ -175,9 +181,13 @@ static int rirb_get_response(struct lola *chip, unsigned int *val, break; break; udelay(20); udelay(20); cond_resched(); cond_resched(); lola_update_rirb(chip); } } printk(KERN_WARNING SFX "RIRB response error\n"); printk(KERN_WARNING SFX "RIRB response error\n"); if (!chip->polling_mode) { printk(KERN_WARNING SFX "switching to polling mode\n"); chip->polling_mode = 1; goto again; } return -EIO; return -EIO; } } Loading
sound/pci/lola/lola.h +3 −2 Original line number Original line Diff line number Diff line Loading @@ -376,6 +376,7 @@ struct lola { /* flags */ /* flags */ unsigned int initialized:1; unsigned int initialized:1; unsigned int cold_reset:1; unsigned int cold_reset:1; unsigned int polling_mode:1; /* for debugging */ /* for debugging */ unsigned int debug_res; unsigned int debug_res; Loading