Re: [PATCH 3/4] dmaengine: dw: Simplify prepare CTL_LO methods
From: Andy Shevchenko
Date: Thu Apr 18 2024 - 17:00:53 EST
On Thu, Apr 18, 2024 at 10:00:02PM +0300, Serge Semin wrote:
> On Thu, Apr 18, 2024 at 02:47:18PM +0300, Andy Shevchenko wrote:
> > On Wed, Apr 17, 2024 at 11:11:46PM +0300, Serge Semin wrote:
> > > On Tue, Apr 16, 2024 at 10:04:42PM +0300, Andy Shevchenko wrote:
> > > > On Tue, Apr 16, 2024 at 07:28:57PM +0300, Serge Semin wrote:
..
> > > > > + if (dwc->direction == DMA_MEM_TO_DEV) {
> > > > > + sms = dwc->dws.m_master;
> > > > > + smsize = 0;
> > > > > + dms = dwc->dws.p_master;
> > > > > + dmsize = sconfig->dst_maxburst;
> > >
> > > > I would group it differently, i.e.
> > > >
> > > > sms = dwc->dws.m_master;
> > > > dms = dwc->dws.p_master;
> > > > smsize = 0;
> > > > dmsize = sconfig->dst_maxburst;
> > >
> > > Could you please clarify, why? From my point of view it was better to
> > > group the source master ID and the source master burst size inits
> > > together.
>
> > Sure. The point here is that when you look at the DMA channel configuration
> > usually you operate with the semantically tied fields for source and
> > destination. At least this is my experience, I always check both sides
> > of the transfer for the same field, e.g., master setting, hence I want to
> > have them coupled.
>
> Ok. I see. Thanks for clarification. I normally do that in another
> order: group the functionally related fields together - all
> source-related configs first, then all destination-related configs.
> Honestly I don't have strong opinion about this part, it's just my
> personal preference. Am I right to think that from your experience in
> kernel it's normally done in the order you described?
In this driver I believe I have followed that one, yes.
> > > > > + } else if (dwc->direction == DMA_DEV_TO_MEM) {
> > > > > + sms = dwc->dws.p_master;
> > > > > + smsize = sconfig->src_maxburst;
> > > > > + dms = dwc->dws.m_master;
> > > > > + dmsize = 0;
> > > > > + } else /* DMA_MEM_TO_MEM */ {
> > > > > + sms = dwc->dws.m_master;
> > > > > + smsize = 0;
> > > > > + dms = dwc->dws.m_master;
> > > > > + dmsize = 0;
> > > > > + }
> > > >
> > > > Ditto for two above cases.
--
With Best Regards,
Andy Shevchenko