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
next prev 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