From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yong Subject: Re: [PATCH v6 2/2] media: V3s: Add support for Allwinner CSI. Date: Sun, 28 Jan 2018 10:39:29 +0800 Message-ID: <20180128103929.421eb809821f101ee1c6cb60@magewell.com> References: <1516695531-23349-1-git-send-email-yong.deng@magewell.com> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: Sender: devicetree-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: Linus Walleij Cc: Maxime Ripard , Mauro Carvalho Chehab , Rob Herring , Mark Rutland , Chen-Yu Tsai , "David S. Miller" , Greg Kroah-Hartman , Hans Verkuil , Randy Dunlap , Stanimir Varbanov , Hugues Fruchet , Yannick Fertre , Philipp Zabel , Arnd Bergmann , Benjamin Gaignard , Ramesh Shanmugasundaram , Sakari Ailus , Rick Chang List-Id: devicetree@vger.kernel.org Hi, On Sat, 27 Jan 2018 17:14:26 +0100 Linus Walleij wrote: > On Tue, Jan 23, 2018 at 9:18 AM, Yong Deng wrote: > > > Allwinner V3s SoC features two CSI module. CSI0 is used for MIPI CSI-2 > > interface and CSI1 is used for parallel interface. This is not > > documented in datasheet but by test and guess. > > > > This patch implement a v4l2 framework driver for it. > > > > Currently, the driver only support the parallel interface. MIPI-CSI2, > > ISP's support are not included in this patch. > > > > Tested-by: Maxime Ripard > > Signed-off-by: Yong Deng > > This is cool stuff :) > > > +void sun6i_csi_update_buf_addr(struct sun6i_csi *csi, dma_addr_t addr) > > +{ > > + struct sun6i_csi_dev *sdev = sun6i_csi_to_dev(csi); > > + /* transform physical address to bus address */ > > + dma_addr_t bus_addr = addr - PHYS_OFFSET; > > I am sorry if this is an unjustified drive-by comment. Maybe you > have already investigate other ways to do this. > > Accessing PHYS_OFFSET directly seems unintuitive > and not good practice. > > But normally an dma_addr_t only comes from some > function inside such as: > dma_alloc_coherent() for a contigous buffer which is coherent > in physical memory, or from some buffer <= 64KB that > is switching ownership between device and CPU explicitly > with dma_map* or so. Did you check with > Documentation/DMA-API.txt? The dma_addr_t here comes from v4l2 vb2 and it's already 'mapped'. Maybe the dma-mapping code of sunXi does not do conversion between device and CPU. I'm not familiar with this. Maxime, do you have any idea about this? Can we get bus address directly from dma_alloc_coherent or dma_map* at the system layer but not doing the conversion per driver? Yong -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html