drivers/net/vsc9953: Fix bug when enabling a port
authorCodrin Ciubotariu <codrin.ciubotariu@freescale.com>
Fri, 24 Jul 2015 13:52:46 +0000 (16:52 +0300)
committerYork Sun <yorksun@freescale.com>
Mon, 21 Sep 2015 15:29:46 +0000 (08:29 -0700)
When a port is enabled at init time, the initializing function
touches more bits than necessary to enable a port (also touches
reserved bits and default bit values). This patch fixes this issue
by changing the value of the define used to enable the port and
assures that no other bits are changes by replacing out_le32()
with setbits_le32().

Signed-off-by: Codrin Ciubotariu <codrin.ciubotariu@freescale.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
Reviewed-by: York Sun <yorksun@freescale.com>
drivers/net/vsc9953.c
include/vsc9953.h

index 524b979d525567b766e30e8cd8e0823606473e00..2e8eec41f8e59ce94a6d9a2d4572b77b9aa708ad 100644 (file)
@@ -259,8 +259,8 @@ void vsc9953_init(bd_t *bis)
                out_le32(&l2dev_gmii_reg->mac_cfg_status.mac_hdx_cfg, hdx_cfg);
                out_le32(&l2sys_reg->sys.front_port_mode[i],
                         VSC9953_FRONT_PORT_MODE);
-               out_le32(&l2qsys_reg->sys.switch_port_mode[i],
-                        VSC9953_PORT_ENA);
+               setbits_le32(&l2qsys_reg->sys.switch_port_mode[i],
+                            VSC9953_PORT_ENA);
                out_le32(&l2dev_gmii_reg->mac_cfg_status.mac_maxlen_cfg,
                         VSC9953_MAC_MAX_LEN);
                out_le32(&l2sys_reg->pause_cfg.pause_cfg[i],
index 6ebe141d68dde444e70bb5fb70158a750c6b7af0..6ae5fec1cba4364645c9697999184a591f342147 100644 (file)
@@ -81,7 +81,7 @@
 #define VSC9953_VCAP_UPDATE_CTRL       0x01000004
 
 /* Macros for vsc9953_qsys_sys.switch_port_mode register */
-#define VSC9953_PORT_ENA               0x00003a00
+#define VSC9953_PORT_ENA               0x00002000
 
 #define VSC9953_MAX_PORTS              10
 #define VSC9953_PORT_CHECK(port)       \