Message ID | 1371933764-24875-2-git-send-email-tomasz.figa@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Sat, Jun 22, 2013 at 10:42:33PM +0200, Tomasz Figa wrote: > Further patch will introduce support for PL080S, which requires some > things to be done conditionally, thus increasing indentation level of > some functions even more. > > This patch reduces indentation level of pl08x_getbytes_chan() function > by inverting several conditions and returning from function wherever > possible. > > Signed-off-by: Tomasz Figa <tomasz.figa@gmail.com> > --- > drivers/dma/amba-pl08x.c | 53 ++++++++++++++++++++++++++---------------------- > 1 file changed, 29 insertions(+), 24 deletions(-) > > diff --git a/drivers/dma/amba-pl08x.c b/drivers/dma/amba-pl08x.c > index 06fe45c..6a12392 100644 > --- a/drivers/dma/amba-pl08x.c > +++ b/drivers/dma/amba-pl08x.c > @@ -469,47 +469,52 @@ static inline u32 get_bytes_in_cctl(u32 cctl) > /* The channel should be paused when calling this */ > static u32 pl08x_getbytes_chan(struct pl08x_dma_chan *plchan) > { > + struct pl08x_lli *llis_va; > struct pl08x_phy_chan *ch; > + dma_addr_t llis_bus; > struct pl08x_txd *txd; > - size_t bytes = 0; > + size_t bytes; > + int index; > + u32 clli; > > ch = plchan->phychan; > txd = plchan->at; > > + if (!ch || !txd) > + return 0; shouldnt this be err return > + > /* > * Follow the LLIs to get the number of remaining > * bytes in the currently active transaction. > */ > - if (ch && txd) { > - u32 clli = readl(ch->base + PL080_CH_LLI) & ~PL080_LLI_LM_AHB2; > + clli = readl(ch->base + PL080_CH_LLI) & ~PL080_LLI_LM_AHB2; > > - /* First get the remaining bytes in the active transfer */ > - bytes = get_bytes_in_cctl(readl(ch->base + PL080_CH_CONTROL)); > + /* First get the remaining bytes in the active transfer */ > + bytes = get_bytes_in_cctl(readl(ch->base + PL080_CH_CONTROL)); > > - if (clli) { > - struct pl08x_lli *llis_va = txd->llis_va; > - dma_addr_t llis_bus = txd->llis_bus; > - int index; > + if (!clli) > + return bytes; > > - BUG_ON(clli < llis_bus || clli >= llis_bus + > + llis_va = txd->llis_va; > + llis_bus = txd->llis_bus; > + > + BUG_ON(clli < llis_bus || clli >= llis_bus + > sizeof(struct pl08x_lli) * MAX_NUM_TSFR_LLIS); IMO BUG_ON is too much for this. Perhaps returning error and logging error would be okay -- ~Vinod -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Tue, Jun 25, 2013 at 08:46:12PM +0530, Vinod Koul wrote: > On Sat, Jun 22, 2013 at 10:42:33PM +0200, Tomasz Figa wrote: > > - BUG_ON(clli < llis_bus || clli >= llis_bus + > > + llis_va = txd->llis_va; > > + llis_bus = txd->llis_bus; > > + > > + BUG_ON(clli < llis_bus || clli >= llis_bus + > > sizeof(struct pl08x_lli) * MAX_NUM_TSFR_LLIS); > IMO BUG_ON is too much for this. Perhaps returning error and logging error would > be okay That should be a separate patch, because that's an unrelated change to this patch. As this part is just reformatting this part of the code, it should contain no actual changes. There's lots that this driver "should" do differently... -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/dma/amba-pl08x.c b/drivers/dma/amba-pl08x.c index 06fe45c..6a12392 100644 --- a/drivers/dma/amba-pl08x.c +++ b/drivers/dma/amba-pl08x.c @@ -469,47 +469,52 @@ static inline u32 get_bytes_in_cctl(u32 cctl) /* The channel should be paused when calling this */ static u32 pl08x_getbytes_chan(struct pl08x_dma_chan *plchan) { + struct pl08x_lli *llis_va; struct pl08x_phy_chan *ch; + dma_addr_t llis_bus; struct pl08x_txd *txd; - size_t bytes = 0; + size_t bytes; + int index; + u32 clli; ch = plchan->phychan; txd = plchan->at; + if (!ch || !txd) + return 0; + /* * Follow the LLIs to get the number of remaining * bytes in the currently active transaction. */ - if (ch && txd) { - u32 clli = readl(ch->base + PL080_CH_LLI) & ~PL080_LLI_LM_AHB2; + clli = readl(ch->base + PL080_CH_LLI) & ~PL080_LLI_LM_AHB2; - /* First get the remaining bytes in the active transfer */ - bytes = get_bytes_in_cctl(readl(ch->base + PL080_CH_CONTROL)); + /* First get the remaining bytes in the active transfer */ + bytes = get_bytes_in_cctl(readl(ch->base + PL080_CH_CONTROL)); - if (clli) { - struct pl08x_lli *llis_va = txd->llis_va; - dma_addr_t llis_bus = txd->llis_bus; - int index; + if (!clli) + return bytes; - BUG_ON(clli < llis_bus || clli >= llis_bus + + llis_va = txd->llis_va; + llis_bus = txd->llis_bus; + + BUG_ON(clli < llis_bus || clli >= llis_bus + sizeof(struct pl08x_lli) * MAX_NUM_TSFR_LLIS); - /* - * Locate the next LLI - as this is an array, - * it's simple maths to find. - */ - index = (clli - llis_bus) / sizeof(struct pl08x_lli); + /* + * Locate the next LLI - as this is an array, + * it's simple maths to find. + */ + index = (clli - llis_bus) / sizeof(struct pl08x_lli); - for (; index < MAX_NUM_TSFR_LLIS; index++) { - bytes += get_bytes_in_cctl(llis_va[index].cctl); + for (; index < MAX_NUM_TSFR_LLIS; index++) { + bytes += get_bytes_in_cctl(llis_va[index].cctl); - /* - * A LLI pointer of 0 terminates the LLI list - */ - if (!llis_va[index].lli) - break; - } - } + /* + * A LLI pointer of 0 terminates the LLI list + */ + if (!llis_va[index].lli) + break; } return bytes;
Further patch will introduce support for PL080S, which requires some things to be done conditionally, thus increasing indentation level of some functions even more. This patch reduces indentation level of pl08x_getbytes_chan() function by inverting several conditions and returning from function wherever possible. Signed-off-by: Tomasz Figa <tomasz.figa@gmail.com> --- drivers/dma/amba-pl08x.c | 53 ++++++++++++++++++++++++++---------------------- 1 file changed, 29 insertions(+), 24 deletions(-)