Re: audio round_buffersize

2018-08-29 Thread Alexandre Ratchov
On Tue, Aug 14, 2018 at 02:57:05PM +0800, Michael W. Bombardieri wrote:
> Hello,
> 
> Low level audio drivers using the upper layer audio driver's value
> for buffer size don't need to declare a round_buffersize method.
> The 3rd parameter of the method is the value provided by the
> upper layer driver which is used if round_buffersize isn't defined:
> https://github.com/openbsd/src/blob/master/sys/dev/audio.c#L203
> 

Your diff is OK.

FWIW, round_buffersize() is only used to give the maximum buffer size
the driver supports.



audio round_buffersize

2018-08-14 Thread Michael W. Bombardieri
Hello,

Low level audio drivers using the upper layer audio driver's value
for buffer size don't need to declare a round_buffersize method.
The 3rd parameter of the method is the value provided by the
upper layer driver which is used if round_buffersize isn't defined:
https://github.com/openbsd/src/blob/master/sys/dev/audio.c#L203

- Michael


Index: auixp.c
===
RCS file: /cvs/src/sys/dev/pci/auixp.c,v
retrieving revision 1.39
diff -u -p -u -r1.39 auixp.c
--- auixp.c 8 Sep 2017 05:36:52 -   1.39
+++ auixp.c 14 Aug 2018 06:13:43 -
@@ -124,7 +124,6 @@ int auixp_get_port(void *, mixer_ctrl_t 
 intauixp_query_devinfo(void *, mixer_devinfo_t *);
 void * auixp_malloc(void *, int, size_t, int, int);
 void   auixp_free(void *, void *, int);
-size_t auixp_round_buffersize(void *, int, size_t);
 intauixp_get_props(void *);
 intauixp_intr(void *);
 intauixp_allocmem(struct auixp_softc *, size_t, size_t,
@@ -181,7 +180,7 @@ struct audio_hw_if auixp_hw_if = {
auixp_query_devinfo,
auixp_malloc,
auixp_free,
-   auixp_round_buffersize,
+   NULL,   /* round_buffersize */
auixp_get_props,
auixp_trigger_output,
auixp_trigger_input
@@ -452,16 +451,6 @@ auixp_query_devinfo(void *hdl, mixer_dev
co = (struct auixp_codec *) hdl;
return co->codec_if->vtbl->query_devinfo(co->codec_if, di);
 }
-
-
-size_t
-auixp_round_buffersize(void *hdl, int direction, size_t bufsize)
-{
-
-   /* XXX force maximum? i.e. 256 kb? */
-   return bufsize;
-}
-
 
 int
 auixp_get_props(void *hdl)
Index: cs4280.c
===
RCS file: /cvs/src/sys/dev/pci/cs4280.c,v
retrieving revision 1.51
diff -u -p -u -r1.51 cs4280.c
--- cs4280.c26 Dec 2016 17:38:14 -  1.51
+++ cs4280.c14 Aug 2018 06:13:43 -
@@ -206,7 +206,6 @@ int cs4280_mixer_get_port(void *, mixer_
 intcs4280_query_devinfo(void *addr, mixer_devinfo_t *dip);
 void   *cs4280_malloc(void *, int, size_t, int, int);
 void   cs4280_free(void *, void *, int);
-size_t cs4280_round_buffersize(void *, int, size_t);
 intcs4280_get_props(void *);
 intcs4280_trigger_output(void *, void *, void *, int, void (*)(void *),
void *, struct audio_params *);
@@ -253,7 +252,7 @@ struct audio_hw_if cs4280_hw_if = {
cs4280_query_devinfo,
cs4280_malloc,
cs4280_free,
-   cs4280_round_buffersize,
+   NULL,
cs4280_get_props,
cs4280_trigger_output,
cs4280_trigger_input
@@ -1058,16 +1057,6 @@ int
 cs4280_round_blocksize(void *hdl, int blk)
 {
return (blk < CS4280_ICHUNK ? CS4280_ICHUNK : blk & -CS4280_ICHUNK);
-}
-
-size_t
-cs4280_round_buffersize(void *addr, int direction, size_t size)
-{
-   /* although real dma buffer size is 4KB, 
-* let the audio.c driver use a larger buffer.
-* ( suggested by Lennart Augustsson. )
-*/
-   return (size);
 }
 
 int
Index: envy.c
===
RCS file: /cvs/src/sys/dev/pci/envy.c,v
retrieving revision 1.72
diff -u -p -u -r1.72 envy.c
--- envy.c  17 Mar 2018 13:35:12 -  1.72
+++ envy.c  14 Aug 2018 06:13:43 -
@@ -102,7 +102,6 @@ void envy_freem(void *, void *, int);
 int envy_set_params(void *, int, int, struct audio_params *,
 struct audio_params *);
 int envy_round_blocksize(void *, int);
-size_t envy_round_buffersize(void *, int, size_t);
 int envy_trigger_output(void *, void *, void *, int,
 void (*)(void *), void *, struct audio_params *);
 int envy_trigger_input(void *, void *, void *, int,
@@ -196,7 +195,7 @@ struct audio_hw_if envy_hw_if = {
envy_query_devinfo, /* query_devinfo */
envy_allocm,/* malloc */
envy_freem, /* free */
-   envy_round_buffersize,  /* round_buffersize */
+   NULL,   /* round_buffersize */
envy_get_props, /* get_props */
envy_trigger_output,/* trigger_output */
envy_trigger_input  /* trigger_input */
@@ -1885,12 +1884,6 @@ int
 envy_round_blocksize(void *self, int blksz)
 {
return (blksz + 0x1f) & ~0x1f;
-}
-
-size_t
-envy_round_buffersize(void *self, int dir, size_t bufsz)
-{
-   return bufsz;
 }
 
 #ifdef ENVY_DEBUG