aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHuazhong Tan <tanhuazhong@huawei.com>2018-01-17 21:37:34 -0500
committerDavid S. Miller <davem@davemloft.net>2018-01-22 15:36:44 -0500
commit5e89cfac2e1e74df075047ca5162a4df1aa11f63 (patch)
tree4a5ed21f57d0caa836ba5e144c6dd851cbfca2d3
parent3f1dcc6a56b080b76af2277b978fdd3ae71b12ce (diff)
net: hns: Fix for variable may be used uninitialized warnings
When !CONFIG_REGMAP hns throws compiler warnings since dsaf_read_syscon ignores the return result from regmap_read, which allows val to be uninitialized. Fixes: 86897c960b49 ("net: hns: add syscon operation for dsaf") Reported-by: Jason Gunthorpe <jgg@ziepe.ca> Signed-off-by: Huazhong Tan <tanhuazhong@huawei.com> Signed-off-by: Yunsheng Lin <linyunsheng@huawei.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/ethernet/hisilicon/hns/hns_dsaf_misc.c52
-rw-r--r--drivers/net/ethernet/hisilicon/hns/hns_dsaf_reg.h7
2 files changed, 38 insertions, 21 deletions
diff --git a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_misc.c b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_misc.c
index ca247c2cc238..acf29633ec79 100644
--- a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_misc.c
+++ b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_misc.c
@@ -44,12 +44,17 @@ static void dsaf_write_sub(struct dsaf_device *dsaf_dev, u32 reg, u32 val)
44 44
45static u32 dsaf_read_sub(struct dsaf_device *dsaf_dev, u32 reg) 45static u32 dsaf_read_sub(struct dsaf_device *dsaf_dev, u32 reg)
46{ 46{
47 u32 ret; 47 u32 ret = 0;
48 48 int err;
49 if (dsaf_dev->sub_ctrl) 49
50 ret = dsaf_read_syscon(dsaf_dev->sub_ctrl, reg); 50 if (dsaf_dev->sub_ctrl) {
51 else 51 err = dsaf_read_syscon(dsaf_dev->sub_ctrl, reg, &ret);
52 if (err)
53 dev_err(dsaf_dev->dev, "dsaf_read_syscon error %d!\n",
54 err);
55 } else {
52 ret = dsaf_read_reg(dsaf_dev->sc_base, reg); 56 ret = dsaf_read_reg(dsaf_dev->sc_base, reg);
57 }
53 58
54 return ret; 59 return ret;
55} 60}
@@ -188,18 +193,23 @@ static void cpld_led_reset_acpi(struct hns_mac_cb *mac_cb)
188static int cpld_set_led_id(struct hns_mac_cb *mac_cb, 193static int cpld_set_led_id(struct hns_mac_cb *mac_cb,
189 enum hnae_led_state status) 194 enum hnae_led_state status)
190{ 195{
196 u32 val = 0;
197 int ret;
198
191 if (!mac_cb->cpld_ctrl) 199 if (!mac_cb->cpld_ctrl)
192 return 0; 200 return 0;
193 201
194 switch (status) { 202 switch (status) {
195 case HNAE_LED_ACTIVE: 203 case HNAE_LED_ACTIVE:
196 mac_cb->cpld_led_value = 204 ret = dsaf_read_syscon(mac_cb->cpld_ctrl, mac_cb->cpld_ctrl_reg,
197 dsaf_read_syscon(mac_cb->cpld_ctrl, 205 &val);
198 mac_cb->cpld_ctrl_reg); 206 if (ret)
199 dsaf_set_bit(mac_cb->cpld_led_value, DSAF_LED_ANCHOR_B, 207 return ret;
200 CPLD_LED_ON_VALUE); 208
209 dsaf_set_bit(val, DSAF_LED_ANCHOR_B, CPLD_LED_ON_VALUE);
201 dsaf_write_syscon(mac_cb->cpld_ctrl, mac_cb->cpld_ctrl_reg, 210 dsaf_write_syscon(mac_cb->cpld_ctrl, mac_cb->cpld_ctrl_reg,
202 mac_cb->cpld_led_value); 211 val);
212 mac_cb->cpld_led_value = val;
203 break; 213 break;
204 case HNAE_LED_INACTIVE: 214 case HNAE_LED_INACTIVE:
205 dsaf_set_bit(mac_cb->cpld_led_value, DSAF_LED_ANCHOR_B, 215 dsaf_set_bit(mac_cb->cpld_led_value, DSAF_LED_ANCHOR_B,
@@ -560,12 +570,19 @@ static phy_interface_t hns_mac_get_phy_if_acpi(struct hns_mac_cb *mac_cb)
560 570
561int hns_mac_get_sfp_prsnt(struct hns_mac_cb *mac_cb, int *sfp_prsnt) 571int hns_mac_get_sfp_prsnt(struct hns_mac_cb *mac_cb, int *sfp_prsnt)
562{ 572{
573 u32 val = 0;
574 int ret;
575
563 if (!mac_cb->cpld_ctrl) 576 if (!mac_cb->cpld_ctrl)
564 return -ENODEV; 577 return -ENODEV;
565 578
566 *sfp_prsnt = !dsaf_read_syscon(mac_cb->cpld_ctrl, mac_cb->cpld_ctrl_reg 579 ret = dsaf_read_syscon(mac_cb->cpld_ctrl,
567 + MAC_SFP_PORT_OFFSET); 580 mac_cb->cpld_ctrl_reg + MAC_SFP_PORT_OFFSET,
581 &val);
582 if (ret)
583 return ret;
568 584
585 *sfp_prsnt = !val;
569 return 0; 586 return 0;
570} 587}
571 588
@@ -615,7 +632,7 @@ static int hns_mac_config_sds_loopback(struct hns_mac_cb *mac_cb, bool en)
615#define RX_CSR(lane, reg) ((0x4080 + (reg) * 0x0002 + (lane) * 0x0200) * 2) 632#define RX_CSR(lane, reg) ((0x4080 + (reg) * 0x0002 + (lane) * 0x0200) * 2)
616 u64 reg_offset = RX_CSR(lane_id[mac_cb->mac_id], 0); 633 u64 reg_offset = RX_CSR(lane_id[mac_cb->mac_id], 0);
617 634
618 int sfp_prsnt; 635 int sfp_prsnt = 0;
619 int ret = hns_mac_get_sfp_prsnt(mac_cb, &sfp_prsnt); 636 int ret = hns_mac_get_sfp_prsnt(mac_cb, &sfp_prsnt);
620 637
621 if (!mac_cb->phy_dev) { 638 if (!mac_cb->phy_dev) {
@@ -627,7 +644,7 @@ static int hns_mac_config_sds_loopback(struct hns_mac_cb *mac_cb, bool en)
627 } 644 }
628 645
629 if (mac_cb->serdes_ctrl) { 646 if (mac_cb->serdes_ctrl) {
630 u32 origin; 647 u32 origin = 0;
631 648
632 if (!AE_IS_VER1(mac_cb->dsaf_dev->dsaf_ver)) { 649 if (!AE_IS_VER1(mac_cb->dsaf_dev->dsaf_ver)) {
633#define HILINK_ACCESS_SEL_CFG 0x40008 650#define HILINK_ACCESS_SEL_CFG 0x40008
@@ -644,7 +661,10 @@ static int hns_mac_config_sds_loopback(struct hns_mac_cb *mac_cb, bool en)
644 HILINK_ACCESS_SEL_CFG, 3); 661 HILINK_ACCESS_SEL_CFG, 3);
645 } 662 }
646 663
647 origin = dsaf_read_syscon(mac_cb->serdes_ctrl, reg_offset); 664 ret = dsaf_read_syscon(mac_cb->serdes_ctrl, reg_offset,
665 &origin);
666 if (ret)
667 return ret;
648 668
649 dsaf_set_field(origin, 1ull << 10, 10, en); 669 dsaf_set_field(origin, 1ull << 10, 10, en);
650 dsaf_write_syscon(mac_cb->serdes_ctrl, reg_offset, origin); 670 dsaf_write_syscon(mac_cb->serdes_ctrl, reg_offset, origin);
diff --git a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_reg.h b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_reg.h
index 46a52d9bb196..886cbbf25761 100644
--- a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_reg.h
+++ b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_reg.h
@@ -1034,12 +1034,9 @@ static inline void dsaf_write_syscon(struct regmap *base, u32 reg, u32 value)
1034 regmap_write(base, reg, value); 1034 regmap_write(base, reg, value);
1035} 1035}
1036 1036
1037static inline u32 dsaf_read_syscon(struct regmap *base, u32 reg) 1037static inline int dsaf_read_syscon(struct regmap *base, u32 reg, u32 *val)
1038{ 1038{
1039 unsigned int val; 1039 return regmap_read(base, reg, val);
1040
1041 regmap_read(base, reg, &val);
1042 return val;
1043} 1040}
1044 1041
1045#define dsaf_read_dev(a, reg) \ 1042#define dsaf_read_dev(a, reg) \