/* sub_42A32 Arguments xoffset = ebp+0x8 yoffset = ebp+0xc c = ebp+0x10 lines = ebp+0x14 pat1 = ebp+0x18 pat2 = ebp+0x1c */ void em8300_dicom_fill_dispbuffers(struct em8300_s *em, int xpos, int ypos, int xsize, int ysize, unsigned int pat1, unsigned int pat2) { int i; pr_debug("em8300-%d: ysize: %d, xsize: %d\n", em->card_nr, ysize, xsize); pr_debug("em8300-%d: buffer1: %d, buffer2: %d\n", em->card_nr, em->dbuf_info.buffer1, em->dbuf_info.buffer2); for (i = 0; i < ysize; i++) { em8300_setregblock(em, em->dbuf_info.buffer1 + xpos + (ypos + i) * em->dbuf_info.xsize, pat1, xsize); em8300_setregblock(em, em->dbuf_info.buffer2 + xpos + (ypos + i) / 2 * em->dbuf_info.xsize, pat2, xsize); } }
static int snd_em8300_playback_open(struct snd_pcm_substream *substream) { em8300_alsa_t *em8300_alsa = snd_pcm_substream_chip(substream); struct em8300_s *em = em8300_alsa->em; struct snd_pcm_runtime *runtime = substream->runtime; if (substream->pcm->device == EM8300_ALSA_ANALOG_DEVICENUM) snd_em8300_playback_hw.formats = SNDRV_PCM_FMTBIT_S16_BE; else snd_em8300_playback_hw.formats = SNDRV_PCM_FMTBIT_IEC958_SUBFRAME_BE; runtime->hw = snd_em8300_playback_hw; // printk("em8300-%d: snd_em8300_playback_open called.\n", em->instance); em->clockgen &= ~CLOCKGEN_OUTMASK; if (substream->pcm->device == EM8300_ALSA_ANALOG_DEVICENUM) em->clockgen |= CLOCKGEN_ANALOGOUT; else em->clockgen |= CLOCKGEN_DIGITALOUT; em8300_clockgen_write(em, em->clockgen); if (substream->pcm->device == EM8300_ALSA_ANALOG_DEVICENUM) { write_register(AUDIO_RATE, 0x62); em8300_setregblock(em, 2 * ucregister(Mute_Pattern), 0, 0x600); } else { write_register(AUDIO_RATE, 0x3a0); } write_ucregister(MA_Threshold, 6); /* store current used substream - needed for interrupt handler */ em8300_alsa->substream = substream; return 0; }