staging: dwc2: remove redundant register reads
authorMatthijs Kooijman <matthijs@stdin.nl>
Fri, 30 Aug 2013 16:45:19 +0000 (18:45 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 30 Aug 2013 21:14:53 +0000 (14:14 -0700)
For calculating FIFO offsets, the sizes of preceding fifos need to be
known. For filling the GDFIFOCFG register, these fifo sizes were read
from hardware registers. However, these values were written to these
registers just a few lines before, so we can just use the values written
instead.

Signed-off-by: Matthijs Kooijman <matthijs@stdin.nl>
Acked-by: Paul Zimmerman <paulz@synopsys.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/dwc2/core.c

index 5799f478980ce65c8139af9a649b903e8c955023..f6494df799c9c0dc739909517446cea27c746fa9 100644 (file)
@@ -507,7 +507,7 @@ void dwc2_disable_host_interrupts(struct dwc2_hsotg *hsotg)
 static void dwc2_config_fifos(struct dwc2_hsotg *hsotg)
 {
        struct dwc2_core_params *params = hsotg->core_params;
-       u32 rxfsiz, nptxfsiz, hptxfsiz, dfifocfg;
+       u32 nptxfsiz, hptxfsiz, dfifocfg;
 
        if (!params->enable_dynamic_fifo)
                return;
@@ -555,11 +555,10 @@ static void dwc2_config_fifos(struct dwc2_hsotg *hsotg)
                 * include RxFIFO, NPTXFIFO and HPTXFIFO
                 */
                dfifocfg = readl(hsotg->regs + GDFIFOCFG);
-               rxfsiz = readl(hsotg->regs + GRXFSIZ) & 0x0000ffff;
-               nptxfsiz = readl(hsotg->regs + GNPTXFSIZ) >> 16 & 0xffff;
-               hptxfsiz = readl(hsotg->regs + HPTXFSIZ) >> 16 & 0xffff;
                dfifocfg &= ~GDFIFOCFG_EPINFOBASE_MASK;
-               dfifocfg |= (rxfsiz + nptxfsiz + hptxfsiz) <<
+               dfifocfg |= (params->host_rx_fifo_size +
+                            params->host_nperio_tx_fifo_size +
+                            params->host_perio_tx_fifo_size) <<
                            GDFIFOCFG_EPINFOBASE_SHIFT &
                            GDFIFOCFG_EPINFOBASE_MASK;
                writel(dfifocfg, hsotg->regs + GDFIFOCFG);