If set, DMA tx will use this value rather than snps,pbl.
 - snps,rxpbl           Rx Programmable Burst Length. Only for GMAC and newer.
                        If set, DMA rx will use this value rather than snps,pbl.
+- snps,no-pbl-x8       Don't multiply the pbl/txpbl/rxpbl values by 8.
+                       For core rev < 3.50, don't multiply the values by 4.
 - snps,aal             Address-Aligned Beats
 - snps,fixed-burst     Program the DMA to use the fixed burst mode
 - snps,mixed-burst     Program the DMA to use the mixed burst mode
 
  o dma_cfg: internal DMA parameters
    o pbl: the Programmable Burst Length is maximum number of beats to
        be transferred in one DMA transaction.
-       GMAC also enables the 4xPBL by default.
+       GMAC also enables the 4xPBL by default. (8xPBL for GMAC 3.50 and newer)
    o txpbl/rxpbl: GMAC and newer supports independent DMA pbl for tx/rx.
+   o pblx8: Enable 8xPBL (4xPBL for core rev < 3.50). Enabled by default.
    o fixed_burst/mixed_burst/aal
  o clk_csr: fixed CSR Clock range selection.
  o has_gmac: uses the GMAC core.
        int pbl;
        int txpbl;
        int rxpbl;
+       bool pblx8;
        int fixed_burst;
        int mixed_burst;
        bool aal;
         If set, DMA tx will use this value rather than pbl.
  o rxpbl: Receive Programmable Burst Length. Only for GMAC and newer.
         If set, DMA rx will use this value rather than pbl.
+ o pblx8: Enable 8xPBL (4xPBL for core rev < 3.50). Enabled by default.
  o fixed_burst: program the DMA to use the fixed burst mode
  o mixed_burst: program the DMA to use the mixed burst mode
  o aal: Address-Aligned Beats
 
         * Note: before stmmac core 3.50 this mode bit was 4xPBL, and
         * post 3.5 mode bit acts as 8*PBL.
         */
-       value |= DMA_BUS_MODE_MAXPBL;
+       if (dma_cfg->pblx8)
+               value |= DMA_BUS_MODE_MAXPBL;
        value |= DMA_BUS_MODE_USP;
        value &= ~(DMA_BUS_MODE_PBL_MASK | DMA_BUS_MODE_RPBL_MASK);
        value |= (txpbl << DMA_BUS_MODE_PBL_SHIFT);
 
         * on each channel
         */
        value = readl(ioaddr + DMA_CHAN_CONTROL(channel));
-       value = value | DMA_BUS_MODE_PBL;
+       if (dma_cfg->pblx8)
+               value = value | DMA_BUS_MODE_PBL;
        writel(value, ioaddr + DMA_CHAN_CONTROL(channel));
 
        value = readl(ioaddr + DMA_CHAN_TX_CONTROL(channel));
 
        plat->mdio_bus_data->phy_mask = 0;
 
        plat->dma_cfg->pbl = 32;
+       plat->dma_cfg->pblx8 = true;
        /* TODO: AXI */
 
        /* Set default value for multicast hash bins */
        plat->mdio_bus_data->phy_mask = 0;
 
        plat->dma_cfg->pbl = 16;
+       plat->dma_cfg->pblx8 = true;
        plat->dma_cfg->fixed_burst = 1;
        /* AXI (TODO) */
 
 
                dma_cfg->pbl = DEFAULT_DMA_PBL;
        of_property_read_u32(np, "snps,txpbl", &dma_cfg->txpbl);
        of_property_read_u32(np, "snps,rxpbl", &dma_cfg->rxpbl);
+       dma_cfg->pblx8 = !of_property_read_bool(np, "snps,no-pbl-x8");
 
        dma_cfg->aal = of_property_read_bool(np, "snps,aal");
        dma_cfg->fixed_burst = of_property_read_bool(np, "snps,fixed-burst");
 
        int pbl;
        int txpbl;
        int rxpbl;
+       bool pblx8;
        int fixed_burst;
        int mixed_burst;
        bool aal;