On Fri, Apr 24, 2015 at 06:18:38PM +0100, Mark Brown wrote: > On Fri, Apr 17, 2015 at 06:46:04PM +0530, Vinod Koul wrote: > > > +void ssth_cldma_int_enable(struct ssth_lib *ctx) > > +{ > > + ssth_updatel_bits(ctx, HDA_ADSP_REG_ADSPIC, > > + ADSPIC_CL_DMA, 0x2); > > +} > > +void ssth_cldma_int_disable(struct ssth_lib *ctx) > > +{ > > + ssth_updatel_bits(ctx, HDA_ADSP_REG_ADSPIC, > > + ADSPIC_CL_DMA, 0); > > +} > > Blank lines between functions. Seems to be an Intel coding style thing? > :P sure seems, will fix > > > +/* Code loader helper APIs */ > > +static void ssth_skl_cl_setup_bdle(struct snd_dma_buffer *dmab_data, > > + u32 **bdlp, u32 count) > > +{ > > + u32 *bdl = *bdlp; > > + int i = 0; > > + > > + for (i = 0; i < count; i++) { > > + phys_addr_t addr = virt_to_phys(dmab_data->area + i * PAGE_SIZE); > > So this we index by i and... > > > + > > + bdl[0] = cpu_to_le32(lower_32_bits(addr)); > > + bdl[1] = cpu_to_le32(upper_32_bits(addr)); > > + bdl[2] = cpu_to_le32(PAGE_SIZE); > > + bdl[3] = 0; > > + bdl += 4; > > + } > > ...this we index by stepping through the array with increments in the > body of the loop. Consistency would be nice (and more obviously > correct). ok > > +static void ssth_skl_cl_cleaup(struct ssth_lib *ctx) > > +{ > > Can't we clean it up instead? yes should have fixed earlier > > > + if (ctx->cl_dev.bytes_left <= ctx->cl_dev.bufsize && > > + ctx->cl_dev.bytes_left > ctx->cl_dev.period_size) { > > + > > + dev_dbg(ctx->dev, "%s: size less than buffer size: %u\n", > > + __func__, ctx->cl_dev.bytes_left); > > + ssth_cldma_int_disable(ctx); > > + ctx->cl_dev.curr_spib_pos = ctx->cl_dev.bytes_left; > > + ssth_cl_dma_fill_buffer(ctx, size, false, false, 0, false, true); > > + do { > > + mdelay(5); > > + link_pos = ssth_readl(ctx, CL_SD_LPIB); > > + } while (link_pos < size); > > Should time out in case the DMA got stuck somehow. yes will add > > > + goto cleanup; > > + } > > What if the buffer is just too big? Looks like this would loop for > ever. DMA is started, so link_pos get updated and we keep reading it. Since its DMA a big buffer will get done fairly soon. Thanks -- ~Vinod