On Tue, Aug 09, 2016 at 04:33:11PM +0530, Vignesh R wrote: > +static int ti_qspi_map_buf(struct ti_qspi *qspi, void *buf, > + unsigned int len, struct sg_table *sgt) > +{ > + unsigned int max_seg_size = > + dma_get_max_seg_size(qspi->rx_chan->device->dev); > + unsigned int desc_len = min_t(int, max_seg_size, PAGE_SIZE); > + int sgs = DIV_ROUND_UP(len + offset_in_page(buf), desc_len); > + struct page *vm_page; > + size_t min; > + int i, ret; > + > + ret = sg_alloc_table(sgt, sgs, GFP_KERNEL); > + if (ret) > + return ret; > + > + for (i = 0; i < sgs; i++) { > + min = min_t(size_t, len, desc_len - > + offset_in_page(buf)); > + vm_page = kmap_to_page(buf); > + if (!vm_page) { > + sg_free_table(sgt); > + return -ENOMEM; > + } > + sg_set_page(&sgt->sgl[i], vm_page, min, > + offset_in_page(buf)); > + buf += min; > + len -= min; This looks a lot like the core code for mapping the buffers - why is this open coded rather than reused?
Attachment:
signature.asc
Description: PGP signature