On 02/03/2017 10:08 PM, Jon Mason wrote:
@@ -61,15 +60,20 @@ static bool platform_bgmac_clk_enabled(struct bgmac *bgmac)

 static void platform_bgmac_clk_enable(struct bgmac *bgmac, u32 flags)
 {
-       bgmac_idm_write(bgmac, BCMA_IOCTL,
-                       (BCMA_IOCTL_CLK | BCMA_IOCTL_FGC | flags));
+       u32 val;
+
+       val = bgmac_idm_read(bgmac, BCMA_IOCTL);
+       /* Some bits of BCMA_IOCTL set by HW/ATF and should not change */
+       val |= flags & ~(BGMAC_AWCACHE | BGMAC_ARCACHE | BGMAC_AWUSER |
+                        BGMAC_ARUSER);
+       val |= BGMAC_CLK_EN;
        bgmac_idm_read(bgmac, BCMA_IOCTL);

This read was previously following write op most likely to flush it or
something. I don't think it makes any sense to read after read.

Reply via email to