At Wed, 07 Jun 2006 15:09:14 +0200, Johannes Berg wrote: > > --- /dev/null > +++ b/sound/aoa/soundbus/i2sbus/i2sbus-pcm.c > +static int clock_and_divisors(int mclk, int sclk, int rate, int *out) > +{ > + /* sclk must be derived from mclk! */ > + if (mclk % sclk) > + return -1; > + /* derive sclk register value */ > + if (i2s_sf_sclkdiv(mclk / sclk, out)) > + return -1; > + > + if (I2S_CLOCK_SPEED_18MHz % (rate * mclk) == 0) { > + if (!i2s_sf_mclkdiv(I2S_CLOCK_SPEED_18MHz / rate / mclk, out)) { I'd use "I2S_CLOCK_SPEED_18MHZ / (rate * mclk)" > --- /dev/null > +++ b/sound/aoa/soundbus/i2sbus/i2sbus-core.c > +static void i2sbus_release_dev(struct device *dev) > +{ > + struct i2sbus_dev *i2sdev; > + int i; > + > + i2sdev = container_of(dev, struct i2sbus_dev, sound.ofdev.dev); > + > + if (i2sdev->intfregs) iounmap(i2sdev->intfregs); > + if (i2sdev->out.dbdma) iounmap(i2sdev->out.dbdma); > + if (i2sdev->in.dbdma) iounmap(i2sdev->in.dbdma); > + for (i=0;i<3;i++) > + if (i2sdev->allocated_resource[i]) > + release_resource(i2sdev->allocated_resource[i]); release_resource() doesn't kfree the record returned from request_mem_region(). ALSA has a helper function release_and_free_resource() that also does NULL check and kfree: for (i = 0; i < 3; i++) release_and_free_resource(i2sdev->allocated_resource[i]); > +/* FIXME: look at device node refcounting */ > +static int i2sbus_add_dev(struct macio_dev *macio, > + struct i2sbus_control *control, > + struct device_node *np) > +{ (snip) > + for (i=0;i<3;i++) > + if (dev->allocated_resource[i]) > + release_resource(dev->allocated_resource[i]); Ditto. Takashi _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.sourceforge.net/lists/listinfo/alsa-devel