tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   dcde237b9b0eb1d19306e6f48c0a4e058907619f
commit: 7e538372694b3e449783eed3981d59d2597c2882 net: ethernet: mediatek: 
Re-add support SGMII
config: arm64-randconfig-m031-20200708 (attached as .config)
compiler: aarch64-linux-gcc (GCC) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <l...@intel.com>
Reported-by: Dan Carpenter <dan.carpen...@oracle.com>

smatch warnings:
drivers/net/ethernet/mediatek/mtk_eth_soc.c:310 mtk_mac_config() error: 
uninitialized symbol 'err'.

# 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7e538372694b3e449783eed3981d59d2597c2882
git remote add linus 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git remote update linus
git checkout 7e538372694b3e449783eed3981d59d2597c2882
vim +/err +310 drivers/net/ethernet/mediatek/mtk_eth_soc.c

b8fc9f30821ec0 René van Dorst 2019-08-25  190  static void 
mtk_mac_config(struct phylink_config *config, unsigned int mode,
b8fc9f30821ec0 René van Dorst 2019-08-25  191                      const struct 
phylink_link_state *state)
656e705243fd0c John Crispin   2016-03-08  192  {
b8fc9f30821ec0 René van Dorst 2019-08-25  193   struct mtk_mac *mac = 
container_of(config, struct mtk_mac,
b8fc9f30821ec0 René van Dorst 2019-08-25  194                                   
   phylink_config);
b8fc9f30821ec0 René van Dorst 2019-08-25  195   struct mtk_eth *eth = mac->hw;
7e538372694b3e René van Dorst 2019-08-25  196   u32 mcr_cur, mcr_new, sid;
7e538372694b3e René van Dorst 2019-08-25  197   int val, ge_mode, err;
b8fc9f30821ec0 René van Dorst 2019-08-25  198  
b8fc9f30821ec0 René van Dorst 2019-08-25  199   /* MT76x8 has no hardware 
settings between for the MAC */
b8fc9f30821ec0 René van Dorst 2019-08-25  200   if 
(!MTK_HAS_CAPS(eth->soc->caps, MTK_SOC_MT7628) &&
b8fc9f30821ec0 René van Dorst 2019-08-25  201       mac->interface != 
state->interface) {
b8fc9f30821ec0 René van Dorst 2019-08-25  202           /* Setup soc pin 
functions */
b8fc9f30821ec0 René van Dorst 2019-08-25  203           switch 
(state->interface) {
b8fc9f30821ec0 René van Dorst 2019-08-25  204           case 
PHY_INTERFACE_MODE_TRGMII:
b8fc9f30821ec0 René van Dorst 2019-08-25  205                   if (mac->id)
b8fc9f30821ec0 René van Dorst 2019-08-25  206                           goto 
err_phy;
b8fc9f30821ec0 René van Dorst 2019-08-25  207                   if 
(!MTK_HAS_CAPS(mac->hw->soc->caps,
b8fc9f30821ec0 René van Dorst 2019-08-25  208                                   
  MTK_GMAC1_TRGMII))
b8fc9f30821ec0 René van Dorst 2019-08-25  209                           goto 
err_phy;
b8fc9f30821ec0 René van Dorst 2019-08-25  210                   /* fall through 
*/
b8fc9f30821ec0 René van Dorst 2019-08-25  211           case 
PHY_INTERFACE_MODE_RGMII_TXID:
b8fc9f30821ec0 René van Dorst 2019-08-25  212           case 
PHY_INTERFACE_MODE_RGMII_RXID:
b8fc9f30821ec0 René van Dorst 2019-08-25  213           case 
PHY_INTERFACE_MODE_RGMII_ID:
b8fc9f30821ec0 René van Dorst 2019-08-25  214           case 
PHY_INTERFACE_MODE_RGMII:
b8fc9f30821ec0 René van Dorst 2019-08-25  215           case 
PHY_INTERFACE_MODE_MII:
b8fc9f30821ec0 René van Dorst 2019-08-25  216           case 
PHY_INTERFACE_MODE_REVMII:
b8fc9f30821ec0 René van Dorst 2019-08-25  217           case 
PHY_INTERFACE_MODE_RMII:
7e538372694b3e René van Dorst 2019-08-25  218                   if 
(MTK_HAS_CAPS(eth->soc->caps, MTK_RGMII)) {
7e538372694b3e René van Dorst 2019-08-25  219                           err = 
mtk_gmac_rgmii_path_setup(eth, mac->id);
7e538372694b3e René van Dorst 2019-08-25  220                           if (err)
7e538372694b3e René van Dorst 2019-08-25  221                                   
goto init_err;
7e538372694b3e René van Dorst 2019-08-25  222                   }

err not set if MTK_HAS_CAPS() is false.

7e538372694b3e René van Dorst 2019-08-25  223                   break;
7e538372694b3e René van Dorst 2019-08-25  224           case 
PHY_INTERFACE_MODE_1000BASEX:
7e538372694b3e René van Dorst 2019-08-25  225           case 
PHY_INTERFACE_MODE_2500BASEX:
7e538372694b3e René van Dorst 2019-08-25  226           case 
PHY_INTERFACE_MODE_SGMII:
7e538372694b3e René van Dorst 2019-08-25  227                   if 
(MTK_HAS_CAPS(eth->soc->caps, MTK_SGMII)) {
7e538372694b3e René van Dorst 2019-08-25  228                           err = 
mtk_gmac_sgmii_path_setup(eth, mac->id);
7e538372694b3e René van Dorst 2019-08-25  229                           if (err)
7e538372694b3e René van Dorst 2019-08-25  230                                   
goto init_err;
7e538372694b3e René van Dorst 2019-08-25  231                   }
7e538372694b3e René van Dorst 2019-08-25  232                   break;
7e538372694b3e René van Dorst 2019-08-25  233           case 
PHY_INTERFACE_MODE_GMII:
7e538372694b3e René van Dorst 2019-08-25  234                   if 
(MTK_HAS_CAPS(eth->soc->caps, MTK_GEPHY)) {
7e538372694b3e René van Dorst 2019-08-25  235                           err = 
mtk_gmac_gephy_path_setup(eth, mac->id);
7e538372694b3e René van Dorst 2019-08-25  236                           if (err)
7e538372694b3e René van Dorst 2019-08-25  237                                   
goto init_err;
7e538372694b3e René van Dorst 2019-08-25  238                   }
b8fc9f30821ec0 René van Dorst 2019-08-25  239                   break;
b8fc9f30821ec0 René van Dorst 2019-08-25  240           default:
b8fc9f30821ec0 René van Dorst 2019-08-25  241                   goto err_phy;
f819cd926ca7c9 YueHaibing     2019-03-01  242           }
656e705243fd0c John Crispin   2016-03-08  243  
b8fc9f30821ec0 René van Dorst 2019-08-25  244           /* Setup clock for 1st 
gmac */
7e538372694b3e René van Dorst 2019-08-25  245           if (!mac->id && 
state->interface != PHY_INTERFACE_MODE_SGMII &&
7e538372694b3e René van Dorst 2019-08-25  246               
!phy_interface_mode_is_8023z(state->interface) &&
b8fc9f30821ec0 René van Dorst 2019-08-25  247               
MTK_HAS_CAPS(mac->hw->soc->caps, MTK_GMAC1_TRGMII)) {
b8fc9f30821ec0 René van Dorst 2019-08-25  248                   if 
(MTK_HAS_CAPS(mac->hw->soc->caps,
b8fc9f30821ec0 René van Dorst 2019-08-25  249                                   
 MTK_TRGMII_MT7621_CLK)) {
8efaa653a8a540 René van Dorst 2019-06-20  250                           if 
(mt7621_gmac0_rgmii_adjust(mac->hw,
b8fc9f30821ec0 René van Dorst 2019-08-25  251                                   
                      state->interface))
b8fc9f30821ec0 René van Dorst 2019-08-25  252                                   
goto err_phy;
8efaa653a8a540 René van Dorst 2019-06-20  253                   } else {
b8fc9f30821ec0 René van Dorst 2019-08-25  254                           if 
(state->interface !=
b8fc9f30821ec0 René van Dorst 2019-08-25  255                               
PHY_INTERFACE_MODE_TRGMII)
8efaa653a8a540 René van Dorst 2019-06-20  256                                   
mtk_gmac0_rgmii_adjust(mac->hw,
b8fc9f30821ec0 René van Dorst 2019-08-25  257                                   
                       state->speed);
8efaa653a8a540 René van Dorst 2019-06-20  258                   }
8efaa653a8a540 René van Dorst 2019-06-20  259           }
f430dea7c150da Sean Wang      2016-09-22  260  
7e538372694b3e René van Dorst 2019-08-25  261           ge_mode = 0;
7e538372694b3e René van Dorst 2019-08-25  262           switch 
(state->interface) {
7e538372694b3e René van Dorst 2019-08-25  263           case 
PHY_INTERFACE_MODE_MII:
7e538372694b3e René van Dorst 2019-08-25  264                   ge_mode = 1;
7e538372694b3e René van Dorst 2019-08-25  265                   break;
7e538372694b3e René van Dorst 2019-08-25  266           case 
PHY_INTERFACE_MODE_REVMII:
7e538372694b3e René van Dorst 2019-08-25  267                   ge_mode = 2;
7e538372694b3e René van Dorst 2019-08-25  268                   break;
7e538372694b3e René van Dorst 2019-08-25  269           case 
PHY_INTERFACE_MODE_RMII:
7e538372694b3e René van Dorst 2019-08-25  270                   if (mac->id)
7e538372694b3e René van Dorst 2019-08-25  271                           goto 
err_phy;
7e538372694b3e René van Dorst 2019-08-25  272                   ge_mode = 3;
7e538372694b3e René van Dorst 2019-08-25  273                   break;
7e538372694b3e René van Dorst 2019-08-25  274           default:
7e538372694b3e René van Dorst 2019-08-25  275                   break;
7e538372694b3e René van Dorst 2019-08-25  276           }
7e538372694b3e René van Dorst 2019-08-25  277  
b8fc9f30821ec0 René van Dorst 2019-08-25  278           /* put the gmac into 
the right mode */
b8fc9f30821ec0 René van Dorst 2019-08-25  279           
regmap_read(eth->ethsys, ETHSYS_SYSCFG0, &val);
b8fc9f30821ec0 René van Dorst 2019-08-25  280           val &= 
~SYSCFG0_GE_MODE(SYSCFG0_GE_MASK, mac->id);
b8fc9f30821ec0 René van Dorst 2019-08-25  281           val |= 
SYSCFG0_GE_MODE(ge_mode, mac->id);
b8fc9f30821ec0 René van Dorst 2019-08-25  282           
regmap_write(eth->ethsys, ETHSYS_SYSCFG0, val);
b8fc9f30821ec0 René van Dorst 2019-08-25  283  
b8fc9f30821ec0 René van Dorst 2019-08-25  284           mac->interface = 
state->interface;
b8fc9f30821ec0 René van Dorst 2019-08-25  285   }
656e705243fd0c John Crispin   2016-03-08  286  
7e538372694b3e René van Dorst 2019-08-25  287   /* SGMII */
7e538372694b3e René van Dorst 2019-08-25  288   if (state->interface == 
PHY_INTERFACE_MODE_SGMII ||
7e538372694b3e René van Dorst 2019-08-25  289       
phy_interface_mode_is_8023z(state->interface)) {
7e538372694b3e René van Dorst 2019-08-25  290           /* The path GMAC to 
SGMII will be enabled once the SGMIISYS is
7e538372694b3e René van Dorst 2019-08-25  291            * being setup done.
7e538372694b3e René van Dorst 2019-08-25  292            */
7e538372694b3e René van Dorst 2019-08-25  293           
regmap_read(eth->ethsys, ETHSYS_SYSCFG0, &val);
7e538372694b3e René van Dorst 2019-08-25  294  
7e538372694b3e René van Dorst 2019-08-25  295           
regmap_update_bits(eth->ethsys, ETHSYS_SYSCFG0,
7e538372694b3e René van Dorst 2019-08-25  296                              
SYSCFG0_SGMII_MASK,
7e538372694b3e René van Dorst 2019-08-25  297                              
~(u32)SYSCFG0_SGMII_MASK);
7e538372694b3e René van Dorst 2019-08-25  298  
7e538372694b3e René van Dorst 2019-08-25  299           /* Decide how GMAC and 
SGMIISYS be mapped */
7e538372694b3e René van Dorst 2019-08-25  300           sid = 
(MTK_HAS_CAPS(eth->soc->caps, MTK_SHARED_SGMII)) ?
7e538372694b3e René van Dorst 2019-08-25  301                  0 : mac->id;
7e538372694b3e René van Dorst 2019-08-25  302  
7e538372694b3e René van Dorst 2019-08-25  303           /* Setup SGMIISYS with 
the determined property */
7e538372694b3e René van Dorst 2019-08-25  304           if (state->interface != 
PHY_INTERFACE_MODE_SGMII)
7e538372694b3e René van Dorst 2019-08-25  305                   err = 
mtk_sgmii_setup_mode_force(eth->sgmii, sid,
7e538372694b3e René van Dorst 2019-08-25  306                                   
                 state);
7e538372694b3e René van Dorst 2019-08-25  307           else if 
(phylink_autoneg_inband(mode))
7e538372694b3e René van Dorst 2019-08-25  308                   err = 
mtk_sgmii_setup_mode_an(eth->sgmii, sid);

"err" not set if both conditions are false.

7e538372694b3e René van Dorst 2019-08-25  309  
7e538372694b3e René van Dorst 2019-08-25 @310           if (err)
7e538372694b3e René van Dorst 2019-08-25  311                   goto init_err;
7e538372694b3e René van Dorst 2019-08-25  312  
7e538372694b3e René van Dorst 2019-08-25  313           
regmap_update_bits(eth->ethsys, ETHSYS_SYSCFG0,
7e538372694b3e René van Dorst 2019-08-25  314                              
SYSCFG0_SGMII_MASK, val);
7e538372694b3e René van Dorst 2019-08-25  315   } else if 
(phylink_autoneg_inband(mode)) {
7e538372694b3e René van Dorst 2019-08-25  316           dev_err(eth->dev,
7e538372694b3e René van Dorst 2019-08-25  317                   "In-band mode 
not supported in non SGMII mode!\n");
7e538372694b3e René van Dorst 2019-08-25  318           return;
7e538372694b3e René van Dorst 2019-08-25  319   }
7e538372694b3e René van Dorst 2019-08-25  320  
b8fc9f30821ec0 René van Dorst 2019-08-25  321   /* Setup gmac */
b8fc9f30821ec0 René van Dorst 2019-08-25  322   mcr_cur = mtk_r32(mac->hw, 
MTK_MAC_MCR(mac->id));
b8fc9f30821ec0 René van Dorst 2019-08-25  323   mcr_new = mcr_cur;
b8fc9f30821ec0 René van Dorst 2019-08-25  324   mcr_new &= ~(MAC_MCR_SPEED_100 
| MAC_MCR_SPEED_1000 |
b8fc9f30821ec0 René van Dorst 2019-08-25  325                MAC_MCR_FORCE_DPX 
| MAC_MCR_FORCE_TX_FC |
b8fc9f30821ec0 René van Dorst 2019-08-25  326                
MAC_MCR_FORCE_RX_FC);
b8fc9f30821ec0 René van Dorst 2019-08-25  327   mcr_new |= MAC_MCR_MAX_RX_1536 
| MAC_MCR_IPG_CFG | MAC_MCR_FORCE_MODE |
b8fc9f30821ec0 René van Dorst 2019-08-25  328              MAC_MCR_BACKOFF_EN | 
MAC_MCR_BACKPR_EN | MAC_MCR_FORCE_LINK;
656e705243fd0c John Crispin   2016-03-08  329  
b8fc9f30821ec0 René van Dorst 2019-08-25  330   switch (state->speed) {
7e538372694b3e René van Dorst 2019-08-25  331   case SPEED_2500:
b8fc9f30821ec0 René van Dorst 2019-08-25  332   case SPEED_1000:
b8fc9f30821ec0 René van Dorst 2019-08-25  333           mcr_new |= 
MAC_MCR_SPEED_1000;
b8fc9f30821ec0 René van Dorst 2019-08-25  334           break;
b8fc9f30821ec0 René van Dorst 2019-08-25  335   case SPEED_100:
b8fc9f30821ec0 René van Dorst 2019-08-25  336           mcr_new |= 
MAC_MCR_SPEED_100;
b8fc9f30821ec0 René van Dorst 2019-08-25  337           break;
b8fc9f30821ec0 René van Dorst 2019-08-25  338   }
b8fc9f30821ec0 René van Dorst 2019-08-25  339   if (state->duplex == 
DUPLEX_FULL) {
b8fc9f30821ec0 René van Dorst 2019-08-25  340           mcr_new |= 
MAC_MCR_FORCE_DPX;
b8fc9f30821ec0 René van Dorst 2019-08-25  341           if (state->pause & 
MLO_PAUSE_TX)
b8fc9f30821ec0 René van Dorst 2019-08-25  342                   mcr_new |= 
MAC_MCR_FORCE_TX_FC;
b8fc9f30821ec0 René van Dorst 2019-08-25  343           if (state->pause & 
MLO_PAUSE_RX)
b8fc9f30821ec0 René van Dorst 2019-08-25  344                   mcr_new |= 
MAC_MCR_FORCE_RX_FC;
b8fc9f30821ec0 René van Dorst 2019-08-25  345   }
08ef55c6f257ac John Crispin   2016-06-03  346  
b8fc9f30821ec0 René van Dorst 2019-08-25  347   /* Only update control register 
when needed! */
b8fc9f30821ec0 René van Dorst 2019-08-25  348   if (mcr_new != mcr_cur)
b8fc9f30821ec0 René van Dorst 2019-08-25  349           mtk_w32(mac->hw, 
mcr_new, MTK_MAC_MCR(mac->id));
08ef55c6f257ac John Crispin   2016-06-03  350  
b8fc9f30821ec0 René van Dorst 2019-08-25  351   return;
08ef55c6f257ac John Crispin   2016-06-03  352  
b8fc9f30821ec0 René van Dorst 2019-08-25  353  err_phy:
b8fc9f30821ec0 René van Dorst 2019-08-25  354   dev_err(eth->dev, "%s: GMAC%d 
mode %s not supported!\n", __func__,
b8fc9f30821ec0 René van Dorst 2019-08-25  355           mac->id, 
phy_modes(state->interface));
7e538372694b3e René van Dorst 2019-08-25  356   return;
7e538372694b3e René van Dorst 2019-08-25  357  
7e538372694b3e René van Dorst 2019-08-25  358  init_err:
7e538372694b3e René van Dorst 2019-08-25  359   dev_err(eth->dev, "%s: GMAC%d 
mode %s err: %d!\n", __func__,
7e538372694b3e René van Dorst 2019-08-25  360           mac->id, 
phy_modes(state->interface), err);
08ef55c6f257ac John Crispin   2016-06-03  361  }

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org

Attachment: .config.gz
Description: application/gzip

Reply via email to