On Wed, Apr 25, 2018 at 01:02:31PM +1000, NeilBrown wrote:
> On Wed, Apr 18 2018, Christian Lütke-Stetzkamp wrote:
> 
> > The msdc_init_gpd_bd function is currently hard to read, because of
> > old, commented out code and a while loop, where a for loop is much
> > easier to read. Refactor it to make the code more readable.
> >
> > Signed-off-by: Christian Lütke-Stetzkamp <christ...@lkamp.de>
> > ---
> >  drivers/staging/mt7621-mmc/sd.c | 27 ++++++++-------------------
> >  1 file changed, 8 insertions(+), 19 deletions(-)
> >
> > diff --git a/drivers/staging/mt7621-mmc/sd.c 
> > b/drivers/staging/mt7621-mmc/sd.c
> > index 580ac87d9a5f..0da998c74713 100644
> > --- a/drivers/staging/mt7621-mmc/sd.c
> > +++ b/drivers/staging/mt7621-mmc/sd.c
> > @@ -2501,32 +2501,21 @@ static void msdc_init_gpd_bd(struct msdc_host 
> > *host, struct msdc_dma *dma)
> >  {
> >     struct gpd *gpd = dma->gpd;
> >     struct bd  *bd  = dma->bd;
> > -   struct bd  *ptr, *prev;
> > +   int i;
> >  
> > -   /* we just support one gpd */
> > -   int bdlen = MAX_BD_PER_GPD;
> > +   /* we just support one gpd, but gpd->next must be set for desc
> > +    * DMA. That's why we alloc 2 gpd structurs.
> > +    */
> >  
> > -   /* init the 2 gpd */
> >     memset(gpd, 0, sizeof(struct gpd) * 2);
> > -   //gpd->next = (void *)virt_to_phys(gpd + 1); /* pointer to a null gpd, 
> > bug! kmalloc <-> virt_to_phys */
> > -   //gpd->next = (dma->gpd_addr + 1);    /* bug */
> > -   gpd->next = (void *)((u32)dma->gpd_addr + sizeof(struct gpd));
> >  
> > -   //gpd->intr = 0;
> >     gpd->bdp  = 1;   /* hwo, cs, bd pointer */
> > -   //gpd->ptr  = (void*)virt_to_phys(bd);
> >     gpd->ptr = (void *)dma->bd_addr; /* physical address */
> > +   gpd->next = (void *)((u32)dma->gpd_addr + sizeof(struct gpd));
> >  
> > -   memset(bd, 0, sizeof(struct bd) * bdlen);
> > -   ptr = bd + bdlen - 1;
> > -   //ptr->eol  = 1;  /* 0 or 1 [Fix me]*/
> > -   //ptr->next = 0;
> > -
> > -   while (ptr != bd) {
> > -           prev = ptr - 1;
> > -           prev->next = (void *)(dma->bd_addr + sizeof(struct bd) * (ptr - 
> > bd));
> > -           ptr = prev;
> > -   }
> > +   memset(bd, 0, sizeof(struct bd) * MAX_BD_NUM);
> > +   for (i = 0; i < (MAX_BD_NUM - 1); i++)
> > +           bd[i].next = (void *)(dma->bd_addr * sizeof(*bd) * (i + 1));
> 
> Sorry, I hadn't actually tested this when I gave my reviewed-by.  I have
> now and it didn't work.
> Look at the last line above.  Look carefully.

Sorry for that mad typo, I will send a fix as soon as possible.
And again my thanks for reviewing all my patches.

Regards,
Christian
_______________________________________________
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

Reply via email to