From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stas Sergeev Subject: Re: Hi, does someone use i810 onboard sound ? Date: Sun, 05 Oct 2003 03:06:17 +0400 Sender: linux-msdos-owner@vger.kernel.org Message-ID: <3F7F5269.1090407@yahoo.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------060703070403010004050409" Return-path: List-Id: To: linux-msdos@vger.kernel.org This is a multi-part message in MIME format. --------------060703070403010004050409 Content-Type: text/plain; charset="koi8-r"; format="flowed" Content-Transfer-Encoding: base64 SGVsbG8uCgpKb8xsIEJvdXJxdWFyZCB3cm90ZToKPiBPaywgSSd2ZSBwbGF5ZWQgd2l0aCB0aGUg dmFsdWUgb2YgNjAwMCBhbmQgdHJpZWQgdmFyaW91cyBwb3NzaWJpbGl0aWVzCj4gdXAgdG8gMTIw MDAwLCBidXQgdGhlIHNvdW5kIGRvZXNuJ3QgaW1wcm92ZS4KVGhhdCdzIHRvbyBtdWNoLiAyMjA1 MCBpcyB0aGUgbWF4aW11bQpyZWFzb25hYmxlIHZhbHVlIGZvciB0aGF0LCBidXQgaW4KcHJhY3Rp Y2UgeW91J2xsIGluIG1vc3QgY2FzZXMgbmVlZCB0bwpsb3dlciB0aGUgZnJlcSBmcm9tIDYwMDAs IG5vdCByYWlzZSBpdC4KCj4gVGhlcmUgaXMgc29tZXRoaW5nIGZpc2h5LCBpdCBzZWVtcy4gVGhl IHNvdW5kIGlzIGNvbXBvc2VkIG9mIGEgbG90IG9mCj4gbGl0dGxlICJjbGlja3MiLiBXaGVuIGEg aGlnaCBzYW1wbGluZyB2YWx1ZSAofjYwMDAwKSBpcyB1c2VkLCBpdCBzb3VuZHMKPiBsaWtlIHRo ZSBjbGlja3MgYmVjb21lIHNob3J0ZXIuCldlbGwsIGFmdGVyIGFsbCB0aGVyZSBtaWdodCBiZSBh IGJ1Zwpzb21ld2hlcmUuIFRyeSB0aGUgYXR0YWNoZWQgcGF0Y2ggYW5kCnNlZSBpZiBpdCBoZWxw cywgdGhlbiB0cnkgdHVuaW5nIHRoZQp2YWx1ZSBhZ2Fpbi4K --------------060703070403010004050409 Content-Type: text/plain; name="dirdac.diff" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="dirdac.diff" --- src/arch/linux/dosext/sound/linux_sound.c Sat Jul 5 23:14:10 2003 +++ src/arch/linux/dosext/sound/linux_sound.c Sun Oct 5 02:43:44 2003 @@ -261,6 +261,7 @@ static int sound_frag = 0x0200007; static uint8_t buffer[BUF_LEN]; static size_t buffer_count = 0; + int result; buffer[buffer_count] = value; if (buffer_count < BUF_LEN - 1) @@ -274,20 +275,25 @@ { S_printf ("SB:[Linux] Initialising Direct DAC write (%u bits)\n", bits); if (linux_sb_dma_is_empty() == DMA_HANDLER_OK) { - bits_per_samp = bits; + result = 0; if (ioctl (dsp_fd, SNDCTL_DSP_SAMPLESIZE, &bits)<0) { S_printf ("SB:[Linux] Warning: ioctl() (SAMPLESIZE) failed: %s\n", strerror(errno)); - bits_per_samp = 0; + result = -1; } if (linux_set_OSS_fragsize(sound_frag) == DMA_HANDLER_NOT_OK) { S_printf ("SB:[Linux] Warning: failed to change sound fragment size.\n"); - bits_per_samp = 0; + result = -1; } linux_sb_set_speed(DIRECT_WRITE_FREQ, 0, 0, 0); /* reset DMA settings */ sample_rate = 0; num_channels = 0; oss_block_size = 0; + if (result == -1) { + bits_per_samp = 0; + return; + } + bits_per_samp = bits; } else { S_printf("SB:[Linux] Sorry, can't change OSS settings now...\n"); --------------060703070403010004050409--