Example #1
0
/* 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;
}