Loading sound/pci/rme9652/hdsp.c +265 −241 Original line number Diff line number Diff line Loading @@ -653,7 +653,6 @@ static unsigned int hdsp_read(struct hdsp *hdsp, int reg) static int hdsp_check_for_iobox (struct hdsp *hdsp) { if (hdsp->io_type == H9652 || hdsp->io_type == H9632) return 0; if (hdsp_read (hdsp, HDSP_statusRegister) & HDSP_ConfigError) { snd_printk ("Hammerfall-DSP: no Digiface or Multiface connected!\n"); Loading @@ -661,7 +660,29 @@ static int hdsp_check_for_iobox (struct hdsp *hdsp) return -EIO; } return 0; } static int hdsp_wait_for_iobox(struct hdsp *hdsp, unsigned int loops, unsigned int delay) { unsigned int i; if (hdsp->io_type == H9652 || hdsp->io_type == H9632) return 0; for (i = 0; i != loops; ++i) { if (hdsp_read(hdsp, HDSP_statusRegister) & HDSP_ConfigError) msleep(delay); else { snd_printd("Hammerfall-DSP: iobox found after %ums!\n", i * delay); return 0; } } snd_printk("Hammerfall-DSP: no Digiface or Multiface connected!\n"); hdsp->state &= ~HDSP_FirmwareLoaded; return -EIO; } static int snd_hdsp_load_firmware_from_cache(struct hdsp *hdsp) { Loading Loading @@ -3719,6 +3740,9 @@ static irqreturn_t snd_hdsp_interrupt(int irq, void *dev_id) midi0status = hdsp_read (hdsp, HDSP_midiStatusIn0) & 0xff; midi1status = hdsp_read (hdsp, HDSP_midiStatusIn1) & 0xff; if (!(hdsp->state & HDSP_InitializationComplete)) return IRQ_HANDLED; if (audio) { if (hdsp->capture_substream) snd_pcm_period_elapsed(hdsp->pcm->streams[SNDRV_PCM_STREAM_CAPTURE].substream); Loading Loading @@ -5046,10 +5070,10 @@ static int __devinit snd_hdsp_create(struct snd_card *card, return err; if (!is_9652 && !is_9632) { /* we wait 2 seconds to let freshly inserted cardbus cards do their hardware init */ ssleep(2); /* we wait a maximum of 10 seconds to let freshly * inserted cardbus cards do their hardware init */ err = hdsp_wait_for_iobox(hdsp, 1000, 10); err = hdsp_check_for_iobox(hdsp); if (err < 0) return err; Loading Loading
sound/pci/rme9652/hdsp.c +265 −241 Original line number Diff line number Diff line Loading @@ -653,7 +653,6 @@ static unsigned int hdsp_read(struct hdsp *hdsp, int reg) static int hdsp_check_for_iobox (struct hdsp *hdsp) { if (hdsp->io_type == H9652 || hdsp->io_type == H9632) return 0; if (hdsp_read (hdsp, HDSP_statusRegister) & HDSP_ConfigError) { snd_printk ("Hammerfall-DSP: no Digiface or Multiface connected!\n"); Loading @@ -661,7 +660,29 @@ static int hdsp_check_for_iobox (struct hdsp *hdsp) return -EIO; } return 0; } static int hdsp_wait_for_iobox(struct hdsp *hdsp, unsigned int loops, unsigned int delay) { unsigned int i; if (hdsp->io_type == H9652 || hdsp->io_type == H9632) return 0; for (i = 0; i != loops; ++i) { if (hdsp_read(hdsp, HDSP_statusRegister) & HDSP_ConfigError) msleep(delay); else { snd_printd("Hammerfall-DSP: iobox found after %ums!\n", i * delay); return 0; } } snd_printk("Hammerfall-DSP: no Digiface or Multiface connected!\n"); hdsp->state &= ~HDSP_FirmwareLoaded; return -EIO; } static int snd_hdsp_load_firmware_from_cache(struct hdsp *hdsp) { Loading Loading @@ -3719,6 +3740,9 @@ static irqreturn_t snd_hdsp_interrupt(int irq, void *dev_id) midi0status = hdsp_read (hdsp, HDSP_midiStatusIn0) & 0xff; midi1status = hdsp_read (hdsp, HDSP_midiStatusIn1) & 0xff; if (!(hdsp->state & HDSP_InitializationComplete)) return IRQ_HANDLED; if (audio) { if (hdsp->capture_substream) snd_pcm_period_elapsed(hdsp->pcm->streams[SNDRV_PCM_STREAM_CAPTURE].substream); Loading Loading @@ -5046,10 +5070,10 @@ static int __devinit snd_hdsp_create(struct snd_card *card, return err; if (!is_9652 && !is_9632) { /* we wait 2 seconds to let freshly inserted cardbus cards do their hardware init */ ssleep(2); /* we wait a maximum of 10 seconds to let freshly * inserted cardbus cards do their hardware init */ err = hdsp_wait_for_iobox(hdsp, 1000, 10); err = hdsp_check_for_iobox(hdsp); if (err < 0) return err; Loading