From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Jp8Zb-0002KF-Sz for qemu-devel@nongnu.org; Thu, 24 Apr 2008 17:01:43 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Jp8Zb-0002K3-De for qemu-devel@nongnu.org; Thu, 24 Apr 2008 17:01:43 -0400 Received: from [199.232.76.173] (port=52673 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Jp8Zb-0002K0-8J for qemu-devel@nongnu.org; Thu, 24 Apr 2008 17:01:43 -0400 Received: from savannah.gnu.org ([199.232.41.3] helo=sv.gnu.org) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1Jp8Za-0007I6-IB for qemu-devel@nongnu.org; Thu, 24 Apr 2008 17:01:42 -0400 Received: from cvs.savannah.gnu.org ([199.232.41.69]) by sv.gnu.org with esmtp (Exim 4.63) (envelope-from ) id 1Jp8ZZ-0002fB-Q6 for qemu-devel@nongnu.org; Thu, 24 Apr 2008 21:01:41 +0000 Received: from balrog by cvs.savannah.gnu.org with local (Exim 4.63) (envelope-from ) id 1Jp8ZZ-0002f6-Ha for qemu-devel@nongnu.org; Thu, 24 Apr 2008 21:01:41 +0000 MIME-Version: 1.0 Errors-To: balrog Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From: Andrzej Zaborowski Message-Id: Date: Thu, 24 Apr 2008 21:01:41 +0000 Subject: [Qemu-devel] [4249] Improve audio api use in WM8750. Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Revision: 4249 http://svn.sv.gnu.org/viewvc/?view=rev&root=qemu&revision=4249 Author: balrog Date: 2008-04-24 21:01:40 +0000 (Thu, 24 Apr 2008) Log Message: ----------- Improve audio api use in WM8750. These are changes from http://svn.openmoko.org/trunk/src/host/qemu-neo1973/hw/wm8753.c that I forgot to push to WM8750. Some were suggested by malc. Modified Paths: -------------- trunk/hw/wm8750.c Modified: trunk/hw/wm8750.c =================================================================== --- trunk/hw/wm8750.c 2008-04-24 19:21:53 UTC (rev 4248) +++ trunk/hw/wm8750.c 2008-04-24 21:01:40 UTC (rev 4249) @@ -55,10 +55,10 @@ static inline void wm8750_out_flush(struct wm8750_s *s) { - int sent; - if (!s->idx_out) - return; - sent = AUD_write(*s->out[0], s->data_out, s->idx_out); + int sent = 0; + while (sent < s->idx_out) + sent += AUD_write(*s->out[0], s->data_out + sent, s->idx_out - sent) + ?: s->idx_out; s->idx_out = 0; } @@ -67,19 +67,20 @@ struct wm8750_s *s = (struct wm8750_s *) opaque; s->req_in = avail_b; s->data_req(s->opaque, s->req_out >> 2, avail_b >> 2); - -#if 0 - wm8750_in_load(s); -#endif } static void wm8750_audio_out_cb(void *opaque, int free_b) { struct wm8750_s *s = (struct wm8750_s *) opaque; - s->req_out = free_b; - s->data_req(s->opaque, free_b >> 2, s->req_in >> 2); - wm8750_out_flush(s); + if (s->idx_out >= free_b) { + s->idx_out = free_b; + s->req_out = 0; + wm8750_out_flush(s); + } else + s->req_out = free_b - s->idx_out; + + s->data_req(s->opaque, s->req_out >> 2, s->req_in >> 2); } struct wm_rate_s { @@ -121,7 +122,7 @@ { 512, 24000, 512, 24000 }, /* SR: 11100 */ { 768, 24000, 768, 24000 }, /* SR: 11101 */ { 128, 88200, 128, 88200 }, /* SR: 11110 */ - { 192, 88200, 128, 88200 }, /* SR: 11111 */ + { 192, 88200, 192, 88200 }, /* SR: 11111 */ }; static void wm8750_set_format(struct wm8750_s *s) @@ -597,6 +598,7 @@ return &s->i2c; } +#if 0 static void wm8750_fini(i2c_slave *i2c) { struct wm8750_s *s = (struct wm8750_s *) i2c; @@ -604,6 +606,7 @@ AUD_remove_card(&s->card); qemu_free(s); } +#endif void wm8750_data_req_set(i2c_slave *i2c, void (*data_req)(void *, int, int), void *opaque)