public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: xiaopeitux@foxmail.com, linux-kernel@vger.kernel.org,
	f.fangjian@huawei.com, robh@kernel.org, john.g.garry@oracle.com,
	andriy.shevchenko@linux.intel.com, xuwei5@hisilicon.com
Cc: oe-kbuild-all@lists.linux.dev, Pei Xiao <xiaopei01@kylinos.cn>
Subject: Re: [PATCH 1/2] bus: hisi_lpc: remove unused head file in hisi_lpc.c
Date: Mon, 21 Apr 2025 19:34:23 +0800	[thread overview]
Message-ID: <202504211900.1fwfyPp3-lkp@intel.com> (raw)
In-Reply-To: <tencent_8024B8D7E209E31C8E2B5AC411B70C551106@qq.com>

Hi,

kernel test robot noticed the following build errors:

[auto build test ERROR on akpm-mm/mm-nonmm-unstable]
[also build test ERROR on linus/master v6.15-rc2 next-20250417]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/xiaopeitux-foxmail-com/logic_pio-Add-detailed-comments-for-find_io_range-and-logic_pio_trans_cpuaddr/20250418-171121
base:   https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-nonmm-unstable
patch link:    https://lore.kernel.org/r/tencent_8024B8D7E209E31C8E2B5AC411B70C551106%40qq.com
patch subject: [PATCH 1/2] bus: hisi_lpc: remove unused head file in hisi_lpc.c
config: sparc-allmodconfig (https://download.01.org/0day-ci/archive/20250421/202504211900.1fwfyPp3-lkp@intel.com/config)
compiler: sparc64-linux-gcc (GCC) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250421/202504211900.1fwfyPp3-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202504211900.1fwfyPp3-lkp@intel.com/

All errors (new ones prefixed by >>):

   drivers/bus/hisi_lpc.c: In function 'wait_lpc_idle':
>> drivers/bus/hisi_lpc.c:78:26: error: implicit declaration of function 'readl' [-Wimplicit-function-declaration]
      78 |                 status = readl(mbase + LPC_REG_OP_STATUS);
         |                          ^~~~~
   drivers/bus/hisi_lpc.c: In function 'hisi_lpc_target_in':
>> drivers/bus/hisi_lpc.c:119:9: error: implicit declaration of function 'writel_relaxed' [-Wimplicit-function-declaration]
     119 |         writel_relaxed(opcnt, lpcdev->membase + LPC_REG_OP_LEN);
         |         ^~~~~~~~~~~~~~
>> drivers/bus/hisi_lpc.c:123:9: error: implicit declaration of function 'writel' [-Wimplicit-function-declaration]
     123 |         writel(LPC_REG_STARTUP_SIGNAL_START,
         |         ^~~~~~
>> drivers/bus/hisi_lpc.c:133:9: error: implicit declaration of function 'readsb' [-Wimplicit-function-declaration]
     133 |         readsb(lpcdev->membase + LPC_REG_RDATA, buf, opcnt);
         |         ^~~~~~
   drivers/bus/hisi_lpc.c: In function 'hisi_lpc_target_out':
>> drivers/bus/hisi_lpc.c:176:9: error: implicit declaration of function 'writesb' [-Wimplicit-function-declaration]
     176 |         writesb(lpcdev->membase + LPC_REG_WDATA, buf, opcnt);
         |         ^~~~~~~


vim +/readl +78 drivers/bus/hisi_lpc.c

adf38bb0b5956ab Zhichang Yuan   2018-03-21   72  
663accf1872b22c John Garry      2019-11-05   73  static int wait_lpc_idle(void __iomem *mbase, unsigned int waitcnt)
adf38bb0b5956ab Zhichang Yuan   2018-03-21   74  {
adf38bb0b5956ab Zhichang Yuan   2018-03-21   75  	u32 status;
adf38bb0b5956ab Zhichang Yuan   2018-03-21   76  
adf38bb0b5956ab Zhichang Yuan   2018-03-21   77  	do {
adf38bb0b5956ab Zhichang Yuan   2018-03-21  @78  		status = readl(mbase + LPC_REG_OP_STATUS);
adf38bb0b5956ab Zhichang Yuan   2018-03-21   79  		if (status & LPC_REG_OP_STATUS_IDLE)
adf38bb0b5956ab Zhichang Yuan   2018-03-21   80  			return (status & LPC_REG_OP_STATUS_FINISHED) ? 0 : -EIO;
adf38bb0b5956ab Zhichang Yuan   2018-03-21   81  		ndelay(LPC_NSEC_PERWAIT);
adf38bb0b5956ab Zhichang Yuan   2018-03-21   82  	} while (--waitcnt);
adf38bb0b5956ab Zhichang Yuan   2018-03-21   83  
5e3e70b8e1ae983 Andy Shevchenko 2022-09-05   84  	return -ETIMEDOUT;
adf38bb0b5956ab Zhichang Yuan   2018-03-21   85  }
adf38bb0b5956ab Zhichang Yuan   2018-03-21   86  
adf38bb0b5956ab Zhichang Yuan   2018-03-21   87  /*
adf38bb0b5956ab Zhichang Yuan   2018-03-21   88   * hisi_lpc_target_in - trigger a series of LPC cycles for read operation
adf38bb0b5956ab Zhichang Yuan   2018-03-21   89   * @lpcdev: pointer to hisi lpc device
adf38bb0b5956ab Zhichang Yuan   2018-03-21   90   * @para: some parameters used to control the lpc I/O operations
adf38bb0b5956ab Zhichang Yuan   2018-03-21   91   * @addr: the lpc I/O target port address
adf38bb0b5956ab Zhichang Yuan   2018-03-21   92   * @buf: where the read back data is stored
adf38bb0b5956ab Zhichang Yuan   2018-03-21   93   * @opcnt: how many I/O operations required, i.e. data width
adf38bb0b5956ab Zhichang Yuan   2018-03-21   94   *
adf38bb0b5956ab Zhichang Yuan   2018-03-21   95   * Returns 0 on success, non-zero on fail.
adf38bb0b5956ab Zhichang Yuan   2018-03-21   96   */
adf38bb0b5956ab Zhichang Yuan   2018-03-21   97  static int hisi_lpc_target_in(struct hisi_lpc_dev *lpcdev,
adf38bb0b5956ab Zhichang Yuan   2018-03-21   98  			      struct lpc_cycle_para *para, unsigned long addr,
adf38bb0b5956ab Zhichang Yuan   2018-03-21   99  			      unsigned char *buf, unsigned long opcnt)
adf38bb0b5956ab Zhichang Yuan   2018-03-21  100  {
adf38bb0b5956ab Zhichang Yuan   2018-03-21  101  	unsigned int cmd_word;
adf38bb0b5956ab Zhichang Yuan   2018-03-21  102  	unsigned int waitcnt;
adf38bb0b5956ab Zhichang Yuan   2018-03-21  103  	unsigned long flags;
adf38bb0b5956ab Zhichang Yuan   2018-03-21  104  	int ret;
adf38bb0b5956ab Zhichang Yuan   2018-03-21  105  
adf38bb0b5956ab Zhichang Yuan   2018-03-21  106  	if (!buf || !opcnt || !para || !para->csize || !lpcdev)
adf38bb0b5956ab Zhichang Yuan   2018-03-21  107  		return -EINVAL;
adf38bb0b5956ab Zhichang Yuan   2018-03-21  108  
adf38bb0b5956ab Zhichang Yuan   2018-03-21  109  	cmd_word = 0; /* IO mode, Read */
adf38bb0b5956ab Zhichang Yuan   2018-03-21  110  	waitcnt = LPC_PEROP_WAITCNT;
adf38bb0b5956ab Zhichang Yuan   2018-03-21  111  	if (!(para->opflags & FG_INCRADDR_LPC)) {
adf38bb0b5956ab Zhichang Yuan   2018-03-21  112  		cmd_word |= LPC_REG_CMD_SAMEADDR;
adf38bb0b5956ab Zhichang Yuan   2018-03-21  113  		waitcnt = LPC_MAX_WAITCNT;
adf38bb0b5956ab Zhichang Yuan   2018-03-21  114  	}
adf38bb0b5956ab Zhichang Yuan   2018-03-21  115  
adf38bb0b5956ab Zhichang Yuan   2018-03-21  116  	/* whole operation must be atomic */
adf38bb0b5956ab Zhichang Yuan   2018-03-21  117  	spin_lock_irqsave(&lpcdev->cycle_lock, flags);
adf38bb0b5956ab Zhichang Yuan   2018-03-21  118  
adf38bb0b5956ab Zhichang Yuan   2018-03-21 @119  	writel_relaxed(opcnt, lpcdev->membase + LPC_REG_OP_LEN);
adf38bb0b5956ab Zhichang Yuan   2018-03-21  120  	writel_relaxed(cmd_word, lpcdev->membase + LPC_REG_CMD);
adf38bb0b5956ab Zhichang Yuan   2018-03-21  121  	writel_relaxed(addr, lpcdev->membase + LPC_REG_ADDR);
adf38bb0b5956ab Zhichang Yuan   2018-03-21  122  
adf38bb0b5956ab Zhichang Yuan   2018-03-21 @123  	writel(LPC_REG_STARTUP_SIGNAL_START,
adf38bb0b5956ab Zhichang Yuan   2018-03-21  124  	       lpcdev->membase + LPC_REG_STARTUP_SIGNAL);
adf38bb0b5956ab Zhichang Yuan   2018-03-21  125  
adf38bb0b5956ab Zhichang Yuan   2018-03-21  126  	/* whether the operation is finished */
adf38bb0b5956ab Zhichang Yuan   2018-03-21  127  	ret = wait_lpc_idle(lpcdev->membase, waitcnt);
adf38bb0b5956ab Zhichang Yuan   2018-03-21  128  	if (ret) {
adf38bb0b5956ab Zhichang Yuan   2018-03-21  129  		spin_unlock_irqrestore(&lpcdev->cycle_lock, flags);
adf38bb0b5956ab Zhichang Yuan   2018-03-21  130  		return ret;
adf38bb0b5956ab Zhichang Yuan   2018-03-21  131  	}
adf38bb0b5956ab Zhichang Yuan   2018-03-21  132  
adf38bb0b5956ab Zhichang Yuan   2018-03-21 @133  	readsb(lpcdev->membase + LPC_REG_RDATA, buf, opcnt);
adf38bb0b5956ab Zhichang Yuan   2018-03-21  134  
adf38bb0b5956ab Zhichang Yuan   2018-03-21  135  	spin_unlock_irqrestore(&lpcdev->cycle_lock, flags);
adf38bb0b5956ab Zhichang Yuan   2018-03-21  136  
adf38bb0b5956ab Zhichang Yuan   2018-03-21  137  	return 0;
adf38bb0b5956ab Zhichang Yuan   2018-03-21  138  }
adf38bb0b5956ab Zhichang Yuan   2018-03-21  139  
adf38bb0b5956ab Zhichang Yuan   2018-03-21  140  /*
adf38bb0b5956ab Zhichang Yuan   2018-03-21  141   * hisi_lpc_target_out - trigger a series of LPC cycles for write operation
adf38bb0b5956ab Zhichang Yuan   2018-03-21  142   * @lpcdev: pointer to hisi lpc device
adf38bb0b5956ab Zhichang Yuan   2018-03-21  143   * @para: some parameters used to control the lpc I/O operations
adf38bb0b5956ab Zhichang Yuan   2018-03-21  144   * @addr: the lpc I/O target port address
adf38bb0b5956ab Zhichang Yuan   2018-03-21  145   * @buf: where the data to be written is stored
adf38bb0b5956ab Zhichang Yuan   2018-03-21  146   * @opcnt: how many I/O operations required, i.e. data width
adf38bb0b5956ab Zhichang Yuan   2018-03-21  147   *
adf38bb0b5956ab Zhichang Yuan   2018-03-21  148   * Returns 0 on success, non-zero on fail.
adf38bb0b5956ab Zhichang Yuan   2018-03-21  149   */
adf38bb0b5956ab Zhichang Yuan   2018-03-21  150  static int hisi_lpc_target_out(struct hisi_lpc_dev *lpcdev,
adf38bb0b5956ab Zhichang Yuan   2018-03-21  151  			       struct lpc_cycle_para *para, unsigned long addr,
adf38bb0b5956ab Zhichang Yuan   2018-03-21  152  			       const unsigned char *buf, unsigned long opcnt)
adf38bb0b5956ab Zhichang Yuan   2018-03-21  153  {
adf38bb0b5956ab Zhichang Yuan   2018-03-21  154  	unsigned int waitcnt;
adf38bb0b5956ab Zhichang Yuan   2018-03-21  155  	unsigned long flags;
adf38bb0b5956ab Zhichang Yuan   2018-03-21  156  	u32 cmd_word;
adf38bb0b5956ab Zhichang Yuan   2018-03-21  157  	int ret;
adf38bb0b5956ab Zhichang Yuan   2018-03-21  158  
adf38bb0b5956ab Zhichang Yuan   2018-03-21  159  	if (!buf || !opcnt || !para || !lpcdev)
adf38bb0b5956ab Zhichang Yuan   2018-03-21  160  		return -EINVAL;
adf38bb0b5956ab Zhichang Yuan   2018-03-21  161  
adf38bb0b5956ab Zhichang Yuan   2018-03-21  162  	/* default is increasing address */
adf38bb0b5956ab Zhichang Yuan   2018-03-21  163  	cmd_word = LPC_REG_CMD_OP; /* IO mode, write */
adf38bb0b5956ab Zhichang Yuan   2018-03-21  164  	waitcnt = LPC_PEROP_WAITCNT;
adf38bb0b5956ab Zhichang Yuan   2018-03-21  165  	if (!(para->opflags & FG_INCRADDR_LPC)) {
adf38bb0b5956ab Zhichang Yuan   2018-03-21  166  		cmd_word |= LPC_REG_CMD_SAMEADDR;
adf38bb0b5956ab Zhichang Yuan   2018-03-21  167  		waitcnt = LPC_MAX_WAITCNT;
adf38bb0b5956ab Zhichang Yuan   2018-03-21  168  	}
adf38bb0b5956ab Zhichang Yuan   2018-03-21  169  
adf38bb0b5956ab Zhichang Yuan   2018-03-21  170  	spin_lock_irqsave(&lpcdev->cycle_lock, flags);
adf38bb0b5956ab Zhichang Yuan   2018-03-21  171  
adf38bb0b5956ab Zhichang Yuan   2018-03-21  172  	writel_relaxed(opcnt, lpcdev->membase + LPC_REG_OP_LEN);
adf38bb0b5956ab Zhichang Yuan   2018-03-21  173  	writel_relaxed(cmd_word, lpcdev->membase + LPC_REG_CMD);
adf38bb0b5956ab Zhichang Yuan   2018-03-21  174  	writel_relaxed(addr, lpcdev->membase + LPC_REG_ADDR);
adf38bb0b5956ab Zhichang Yuan   2018-03-21  175  
adf38bb0b5956ab Zhichang Yuan   2018-03-21 @176  	writesb(lpcdev->membase + LPC_REG_WDATA, buf, opcnt);
adf38bb0b5956ab Zhichang Yuan   2018-03-21  177  
adf38bb0b5956ab Zhichang Yuan   2018-03-21  178  	writel(LPC_REG_STARTUP_SIGNAL_START,
adf38bb0b5956ab Zhichang Yuan   2018-03-21  179  	       lpcdev->membase + LPC_REG_STARTUP_SIGNAL);
adf38bb0b5956ab Zhichang Yuan   2018-03-21  180  
adf38bb0b5956ab Zhichang Yuan   2018-03-21  181  	/* whether the operation is finished */
adf38bb0b5956ab Zhichang Yuan   2018-03-21  182  	ret = wait_lpc_idle(lpcdev->membase, waitcnt);
adf38bb0b5956ab Zhichang Yuan   2018-03-21  183  
adf38bb0b5956ab Zhichang Yuan   2018-03-21  184  	spin_unlock_irqrestore(&lpcdev->cycle_lock, flags);
adf38bb0b5956ab Zhichang Yuan   2018-03-21  185  
adf38bb0b5956ab Zhichang Yuan   2018-03-21  186  	return ret;
adf38bb0b5956ab Zhichang Yuan   2018-03-21  187  }
adf38bb0b5956ab Zhichang Yuan   2018-03-21  188  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

  parent reply	other threads:[~2025-04-21 11:35 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <cover.1744964101.git.xiaopei01@kylinos.cn>
2025-04-18  8:51 ` [PATCH 1/2] bus: hisi_lpc: remove unused head file in hisi_lpc.c xiaopeitux
2025-04-19  8:01   ` kernel test robot
2025-04-19 15:22   ` Andy Shevchenko
2025-04-21  2:06     ` Pei Xiao
2025-04-22  7:58       ` Andy Shevchenko
2025-04-22 11:35         ` Pei Xiao
2025-04-21 11:34   ` kernel test robot [this message]
2025-04-18  8:51 ` [PATCH 2/2] logic_pio: Add detailed comments for find_io_range() and logic_pio_trans_cpuaddr() xiaopeitux
2025-04-19 15:21   ` Andy Shevchenko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202504211900.1fwfyPp3-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=f.fangjian@huawei.com \
    --cc=john.g.garry@oracle.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=oe-kbuild-all@lists.linux.dev \
    --cc=robh@kernel.org \
    --cc=xiaopei01@kylinos.cn \
    --cc=xiaopeitux@foxmail.com \
    --cc=xuwei5@hisilicon.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox