:::::: :::::: Manual check reason: "low confidence static check warning: drivers/i2c/busses/i2c-npcm7xx.c:1749:10: warning: Redundant initialization for 'status'. The initialized value is overwritten before it is read. [redundantInitialization]" ::::::
CC: [email protected] BCC: [email protected] TO: Sasha Levin <[email protected]> tree: https://git.kernel.org/pub/scm/linux/kernel/git/sashal/linux-stable.git pending-5.10 head: 6d2c86b375e6eb49f508f3f8efe7ec77e33632f4 commit: c009b2220e563462677477b8e90edc17672e631c [370/373] i2c: npcm: Handle spurious interrupts :::::: branch date: 2 days ago :::::: commit date: 2 days ago compiler: alpha-linux-gcc (GCC) 11.3.0 reproduce (cppcheck warning): # apt-get install cppcheck git checkout c009b2220e563462677477b8e90edc17672e631c cppcheck --quiet --enable=style,performance,portability --template=gcc FILE If you fix the issue, kindly add following tag where applicable Reported-by: kernel test robot <[email protected]> cppcheck warnings: (new ones prefixed by >>) >> drivers/platform/chrome/cros_ec_proto.c:686:26: warning: Local variable >> 'msg' shadows outer variable [shadowVariable] struct cros_ec_command msg; ^ drivers/platform/chrome/cros_ec_proto.c:686:26: note: Shadowed declaration struct cros_ec_command msg; ^ drivers/platform/chrome/cros_ec_proto.c:686:26: note: Shadow variable struct cros_ec_command msg; ^ >> drivers/platform/chrome/cros_ec_proto.c:687:40: warning: Local variable >> 'event' shadows outer variable [shadowVariable] struct ec_response_get_next_event_v1 event; ^ drivers/platform/chrome/cros_ec_proto.c:687:40: note: Shadowed declaration struct ec_response_get_next_event_v1 event; ^ drivers/platform/chrome/cros_ec_proto.c:687:40: note: Shadow variable struct ec_response_get_next_event_v1 event; ^ >> drivers/platform/chrome/cros_ec.c:94:26: warning: Local variable 'msg' >> shadows outer variable [shadowVariable] struct cros_ec_command msg; ^ drivers/platform/chrome/cros_ec.c:94:26: note: Shadowed declaration struct cros_ec_command msg; ^ drivers/platform/chrome/cros_ec.c:94:26: note: Shadow variable struct cros_ec_command msg; ^ >> drivers/platform/chrome/cros_ec.c:99:5: warning: Local variable 'u' shadows >> outer variable [shadowVariable] } u; ^ drivers/platform/chrome/cros_ec.c:99:5: note: Shadowed declaration } u; ^ drivers/platform/chrome/cros_ec.c:99:5: note: Shadow variable } u; ^ -- >> drivers/soc/qcom/smsm.c:356:2: warning: %d in format string (no. 1) requires >> 'int' but the argument type is 'unsigned int'. [invalidPrintfArgType_sint] snprintf(key, sizeof(key), "qcom,ipc-%d", host_id); ^ -- cppcheck possible warnings: (new ones prefixed by >>, may not real problems) >> drivers/platform/chrome/cros_ec_proto.c:664:49: warning: Parameter 'event' >> can be declared with const [constParameter] struct ec_response_get_next_event_v1 *event, ^ -- >> drivers/pci/controller/dwc/pcie-designware-host.c:598:27: warning: Possible >> null pointer dereference: entry [nullPointer] PCIE_ATU_TYPE_MEM, entry->res->start, ^ drivers/pci/controller/dwc/pcie-designware-host.c:590:40: note: Assignment 'entry=NULL', assigned value is 0 struct resource_entry *tmp, *entry = NULL; ^ drivers/pci/controller/dwc/pcie-designware-host.c:594:32: note: Assuming condition is false if (resource_type(tmp->res) == IORESOURCE_MEM) ^ drivers/pci/controller/dwc/pcie-designware-host.c:598:27: note: Null pointer dereference PCIE_ATU_TYPE_MEM, entry->res->start, ^ drivers/pci/controller/dwc/pcie-designware-host.c:599:8: warning: Possible null pointer dereference: entry [nullPointer] entry->res->start - entry->offset, ^ drivers/pci/controller/dwc/pcie-designware-host.c:590:40: note: Assignment 'entry=NULL', assigned value is 0 struct resource_entry *tmp, *entry = NULL; ^ drivers/pci/controller/dwc/pcie-designware-host.c:594:32: note: Assuming condition is false if (resource_type(tmp->res) == IORESOURCE_MEM) ^ drivers/pci/controller/dwc/pcie-designware-host.c:599:8: note: Null pointer dereference entry->res->start - entry->offset, ^ drivers/pci/controller/dwc/pcie-designware-host.c:600:22: warning: Possible null pointer dereference: entry [nullPointer] resource_size(entry->res)); ^ drivers/pci/controller/dwc/pcie-designware-host.c:590:40: note: Assignment 'entry=NULL', assigned value is 0 struct resource_entry *tmp, *entry = NULL; ^ drivers/pci/controller/dwc/pcie-designware-host.c:594:32: note: Assuming condition is false if (resource_type(tmp->res) == IORESOURCE_MEM) ^ drivers/pci/controller/dwc/pcie-designware-host.c:600:22: note: Null pointer dereference resource_size(entry->res)); ^ >> drivers/i2c/busses/i2c-npcm7xx.c:1749:10: warning: Redundant initialization >> for 'status'. The initialized value is overwritten before it is read. >> [redundantInitialization] status = 0; ^ drivers/i2c/busses/i2c-npcm7xx.c:1686:26: note: status is initialized int status = -ENOTRECOVERABLE; ^ drivers/i2c/busses/i2c-npcm7xx.c:1749:10: note: status is overwritten status = 0; ^ vim +/status +1749 drivers/i2c/busses/i2c-npcm7xx.c 56a1485b102ed1 Tali Perry 2020-05-27 1679 56a1485b102ed1 Tali Perry 2020-05-27 1680 /* recovery using TGCLK functionality of the module */ 56a1485b102ed1 Tali Perry 2020-05-27 1681 static int npcm_i2c_recovery_tgclk(struct i2c_adapter *_adap) 56a1485b102ed1 Tali Perry 2020-05-27 1682 { 56a1485b102ed1 Tali Perry 2020-05-27 1683 u8 val; 56a1485b102ed1 Tali Perry 2020-05-27 1684 u8 fif_cts; 56a1485b102ed1 Tali Perry 2020-05-27 1685 bool done = false; 56a1485b102ed1 Tali Perry 2020-05-27 1686 int status = -ENOTRECOVERABLE; 56a1485b102ed1 Tali Perry 2020-05-27 1687 struct npcm_i2c *bus = container_of(_adap, struct npcm_i2c, adap); 56a1485b102ed1 Tali Perry 2020-05-27 1688 /* Allow 3 bytes (27 toggles) to be read from the slave: */ 56a1485b102ed1 Tali Perry 2020-05-27 1689 int iter = 27; 56a1485b102ed1 Tali Perry 2020-05-27 1690 56a1485b102ed1 Tali Perry 2020-05-27 1691 if ((npcm_i2c_get_SDA(_adap) == 1) && (npcm_i2c_get_SCL(_adap) == 1)) { c009b2220e5634 Tali Perry 2022-05-17 1692 dev_dbg(bus->dev, "bus%d-0x%x recovery skipped, bus not stuck", c009b2220e5634 Tali Perry 2022-05-17 1693 bus->num, bus->dest_addr); 56a1485b102ed1 Tali Perry 2020-05-27 1694 npcm_i2c_reset(bus); c009b2220e5634 Tali Perry 2022-05-17 1695 return 0; 56a1485b102ed1 Tali Perry 2020-05-27 1696 } 56a1485b102ed1 Tali Perry 2020-05-27 1697 56a1485b102ed1 Tali Perry 2020-05-27 1698 npcm_i2c_int_enable(bus, false); 56a1485b102ed1 Tali Perry 2020-05-27 1699 npcm_i2c_disable(bus); 56a1485b102ed1 Tali Perry 2020-05-27 1700 npcm_i2c_enable(bus); 56a1485b102ed1 Tali Perry 2020-05-27 1701 iowrite8(NPCM_I2CCST_BB, bus->reg + NPCM_I2CCST); 56a1485b102ed1 Tali Perry 2020-05-27 1702 npcm_i2c_clear_tx_fifo(bus); 56a1485b102ed1 Tali Perry 2020-05-27 1703 npcm_i2c_clear_rx_fifo(bus); 56a1485b102ed1 Tali Perry 2020-05-27 1704 iowrite8(0, bus->reg + NPCM_I2CRXF_CTL); 56a1485b102ed1 Tali Perry 2020-05-27 1705 iowrite8(0, bus->reg + NPCM_I2CTXF_CTL); 56a1485b102ed1 Tali Perry 2020-05-27 1706 npcm_i2c_stall_after_start(bus, false); 56a1485b102ed1 Tali Perry 2020-05-27 1707 56a1485b102ed1 Tali Perry 2020-05-27 1708 /* select bank 1 for FIFO regs */ 56a1485b102ed1 Tali Perry 2020-05-27 1709 npcm_i2c_select_bank(bus, I2C_BANK_1); 56a1485b102ed1 Tali Perry 2020-05-27 1710 56a1485b102ed1 Tali Perry 2020-05-27 1711 /* clear FIFO and relevant status bits. */ 56a1485b102ed1 Tali Perry 2020-05-27 1712 fif_cts = ioread8(bus->reg + NPCM_I2CFIF_CTS); 56a1485b102ed1 Tali Perry 2020-05-27 1713 fif_cts &= ~NPCM_I2CFIF_CTS_SLVRSTR; 56a1485b102ed1 Tali Perry 2020-05-27 1714 fif_cts |= NPCM_I2CFIF_CTS_CLR_FIFO; 56a1485b102ed1 Tali Perry 2020-05-27 1715 iowrite8(fif_cts, bus->reg + NPCM_I2CFIF_CTS); 56a1485b102ed1 Tali Perry 2020-05-27 1716 npcm_i2c_set_fifo(bus, -1, 0); 56a1485b102ed1 Tali Perry 2020-05-27 1717 56a1485b102ed1 Tali Perry 2020-05-27 1718 /* Repeat the following sequence until SDA is released */ 56a1485b102ed1 Tali Perry 2020-05-27 1719 do { 56a1485b102ed1 Tali Perry 2020-05-27 1720 /* Issue a single SCL toggle */ 56a1485b102ed1 Tali Perry 2020-05-27 1721 iowrite8(NPCM_I2CCST_TGSCL, bus->reg + NPCM_I2CCST); 56a1485b102ed1 Tali Perry 2020-05-27 1722 usleep_range(20, 30); 56a1485b102ed1 Tali Perry 2020-05-27 1723 /* If SDA line is inactive (high), stop */ 56a1485b102ed1 Tali Perry 2020-05-27 1724 if (npcm_i2c_get_SDA(_adap)) { 56a1485b102ed1 Tali Perry 2020-05-27 1725 done = true; 56a1485b102ed1 Tali Perry 2020-05-27 1726 status = 0; 56a1485b102ed1 Tali Perry 2020-05-27 1727 } 56a1485b102ed1 Tali Perry 2020-05-27 1728 } while (!done && iter--); 56a1485b102ed1 Tali Perry 2020-05-27 1729 56a1485b102ed1 Tali Perry 2020-05-27 1730 /* If SDA line is released: send start-addr-stop, to re-sync. */ 56a1485b102ed1 Tali Perry 2020-05-27 1731 if (npcm_i2c_get_SDA(_adap)) { 56a1485b102ed1 Tali Perry 2020-05-27 1732 /* Send an address byte in write direction: */ 56a1485b102ed1 Tali Perry 2020-05-27 1733 npcm_i2c_wr_byte(bus, bus->dest_addr); 56a1485b102ed1 Tali Perry 2020-05-27 1734 npcm_i2c_master_start(bus); 56a1485b102ed1 Tali Perry 2020-05-27 1735 /* Wait until START condition is sent */ 56a1485b102ed1 Tali Perry 2020-05-27 1736 status = readx_poll_timeout(npcm_i2c_get_SCL, _adap, val, !val, 56a1485b102ed1 Tali Perry 2020-05-27 1737 20, 200); 56a1485b102ed1 Tali Perry 2020-05-27 1738 /* If START condition was sent */ 56a1485b102ed1 Tali Perry 2020-05-27 1739 if (npcm_i2c_is_master(bus) > 0) { 56a1485b102ed1 Tali Perry 2020-05-27 1740 usleep_range(20, 30); 56a1485b102ed1 Tali Perry 2020-05-27 1741 npcm_i2c_master_stop(bus); 56a1485b102ed1 Tali Perry 2020-05-27 1742 usleep_range(200, 500); 56a1485b102ed1 Tali Perry 2020-05-27 1743 } 56a1485b102ed1 Tali Perry 2020-05-27 1744 } 56a1485b102ed1 Tali Perry 2020-05-27 1745 npcm_i2c_reset(bus); 56a1485b102ed1 Tali Perry 2020-05-27 1746 npcm_i2c_int_enable(bus, true); 56a1485b102ed1 Tali Perry 2020-05-27 1747 56a1485b102ed1 Tali Perry 2020-05-27 1748 if ((npcm_i2c_get_SDA(_adap) == 1) && (npcm_i2c_get_SCL(_adap) == 1)) 56a1485b102ed1 Tali Perry 2020-05-27 @1749 status = 0; 56a1485b102ed1 Tali Perry 2020-05-27 1750 else 56a1485b102ed1 Tali Perry 2020-05-27 1751 status = -ENOTRECOVERABLE; 56a1485b102ed1 Tali Perry 2020-05-27 1752 if (status) { 56a1485b102ed1 Tali Perry 2020-05-27 1753 if (bus->rec_fail_cnt < ULLONG_MAX) 56a1485b102ed1 Tali Perry 2020-05-27 1754 bus->rec_fail_cnt++; 56a1485b102ed1 Tali Perry 2020-05-27 1755 } else { 56a1485b102ed1 Tali Perry 2020-05-27 1756 if (bus->rec_succ_cnt < ULLONG_MAX) 56a1485b102ed1 Tali Perry 2020-05-27 1757 bus->rec_succ_cnt++; 56a1485b102ed1 Tali Perry 2020-05-27 1758 } 56a1485b102ed1 Tali Perry 2020-05-27 1759 return status; 56a1485b102ed1 Tali Perry 2020-05-27 1760 } 56a1485b102ed1 Tali Perry 2020-05-27 1761 :::::: The code at line 1749 was first introduced by commit :::::: 56a1485b102ed1cd5a4af8e87ed794699fd1cad2 i2c: npcm7xx: Add Nuvoton NPCM I2C controller driver :::::: TO: Tali Perry <[email protected]> :::::: CC: Wolfram Sang <[email protected]> -- 0-DAY CI Kernel Test Service https://01.org/lkp _______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
