lkml.org 
[lkml]   [2017]   [Jun]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [PATCH v10 5/6] i2c: designware: add SLAVE mode functions
From
Date
On Fri, 2017-06-09 at 14:57 +0800, kbuild test robot wrote:
> Hi Luis,
>

Luis, it seems you didn't rebase your patches against Wolfram's i2c-next
tree.

Please, rebase and retest.

> [auto build test ERROR on wsa/i2c/for-next]
> [also build test ERROR on v4.12-rc4 next-20170608]
> [if your patch is applied to the wrong git tree, please drop us a note
> to help improve the system]
>
> url:    https://github.com/0day-ci/linux/commits/Luis-Oliveira/i2c-des
> ignware-add-I2C-SLAVE-support/20170609-143533
> base:   https://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git
> i2c/for-next
> config: x86_64-randconfig-x012-201723 (attached as .config)
> compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901
> reproduce:
>         # save the attached .config to linux build tree
>         make ARCH=x86_64 
>
> All error/warnings (new ones prefixed by >>):
>
>    drivers/i2c/busses/i2c-designware-slave.c: In function
> 'i2c_dw_irq_handler_slave':
> > > drivers/i2c/busses/i2c-designware-slave.c:285:3: error: implicit
> > > declaration of function 'i2c_slave_event' [-Werror=implicit-
> > > function-declaration]
>
>       i2c_slave_event(dev->slave, I2C_SLAVE_WRITE_REQUESTED, &val);
>       ^~~~~~~~~~~~~~~
> > > drivers/i2c/busses/i2c-designware-slave.c:285:31: error:
> > > 'I2C_SLAVE_WRITE_REQUESTED' undeclared (first use in this
> > > function)
>
>       i2c_slave_event(dev->slave, I2C_SLAVE_WRITE_REQUESTED, &val);
>                                   ^~~~~~~~~~~~~~~~~~~~~~~~~
>    drivers/i2c/busses/i2c-designware-slave.c:285:31: note: each
> undeclared identifier is reported only once for each function it
> appears in
> > > drivers/i2c/busses/i2c-designware-slave.c:293:9: error:
> > > 'I2C_SLAVE_WRITE_RECEIVED' undeclared (first use in this function)
>
>             I2C_SLAVE_WRITE_RECEIVED, &val)) {
>             ^~~~~~~~~~~~~~~~~~~~~~~~
> > > drivers/i2c/busses/i2c-designware-slave.c:305:8: error:
> > > 'I2C_SLAVE_READ_REQUESTED' undeclared (first use in this function)
>
>            I2C_SLAVE_READ_REQUESTED, &val))
>            ^~~~~~~~~~~~~~~~~~~~~~~~
> > > drivers/i2c/busses/i2c-designware-slave.c:311:36: error:
> > > 'I2C_SLAVE_READ_PROCESSED' undeclared (first use in this function)
>
>       if (!i2c_slave_event(dev->slave, I2C_SLAVE_READ_PROCESSED,
>                                        ^~~~~~~~~~~~~~~~~~~~~~~~
> > > drivers/i2c/busses/i2c-designware-slave.c:315:31: error:
> > > 'I2C_SLAVE_STOP' undeclared (first use in this function)
>
>       i2c_slave_event(dev->slave, I2C_SLAVE_STOP, &val);
>                                   ^~~~~~~~~~~~~~
>    drivers/i2c/busses/i2c-designware-slave.c: At top level:
> > > drivers/i2c/busses/i2c-designware-slave.c:351:2: error: unknown
> > > field 'reg_slave' specified in initializer
>
>      .reg_slave = i2c_dw_reg_slave,
>      ^
> > > drivers/i2c/busses/i2c-designware-slave.c:351:15: warning: excess
> > > elements in struct initializer
>
>      .reg_slave = i2c_dw_reg_slave,
>                   ^~~~~~~~~~~~~~~~
>    drivers/i2c/busses/i2c-designware-slave.c:351:15: note: (near
> initialization for 'i2c_dw_algo')
> > > drivers/i2c/busses/i2c-designware-slave.c:352:2: error: unknown
> > > field 'unreg_slave' specified in initializer
>
>      .unreg_slave = i2c_dw_unreg_slave,
>      ^
>    drivers/i2c/busses/i2c-designware-slave.c:352:17: warning: excess
> elements in struct initializer
>      .unreg_slave = i2c_dw_unreg_slave,
>                     ^~~~~~~~~~~~~~~~~~
>    drivers/i2c/busses/i2c-designware-slave.c:352:17: note: (near
> initialization for 'i2c_dw_algo')
>    cc1: some warnings being treated as errors
>
> vim +/i2c_slave_event +285 drivers/i2c/busses/i2c-designware-slave.c
>
>    279 dev_dbg(dev->dev,
>    280 "%#x STAUTS SLAVE_ACTTVITY=%#x :
> RAW_INTR_STAT=%#x"
>    281 " : INTR_STAT=%#x\n",
>    282 enabled, slave_activity, raw_stat,
> stat);
>    283
>    284 if ((stat & DW_IC_INTR_RX_FULL) && (stat &
> DW_IC_INTR_STOP_DET))
>  > 285 i2c_slave_event(dev->slave,
> I2C_SLAVE_WRITE_REQUESTED, &val);
>    286
>    287 if (stat & DW_IC_INTR_RD_REQ) {
>    288 if (slave_activity) {
>    289 if (stat & DW_IC_INTR_RX_FULL) {
>    290     val = dw_readl(dev,
> DW_IC_DATA_CMD);
>    291
>    292 if
> (!i2c_slave_event(dev->slave,
>  > 293     I2C_SLAVE_WRITE_RECE
> IVED, &val)) {
>    294 dev_vdbg(dev-
> >dev, "Byte %X acked!",
>    295 val);
>    296 }
>    297 dw_readl(dev,
> DW_IC_CLR_RD_REQ);
>    298 stat =
> i2c_dw_read_clear_intrbits_slave(dev);
>    299 } else {
>    300 dw_readl(dev,
> DW_IC_CLR_RD_REQ);
>    301 dw_readl(dev,
> DW_IC_CLR_RX_UNDER);
>    302 stat =
> i2c_dw_read_clear_intrbits_slave(dev);
>    303 }
>    304 if (!i2c_slave_event(dev->slave,
>  > 305     I2C_SLAVE_READ_REQUESTED,
> &val))
>    306 dw_writel(dev, val,
> DW_IC_DATA_CMD);
>    307 }
>    308 }
>    309
>    310 if (stat & DW_IC_INTR_RX_DONE) {
>  > 311 if (!i2c_slave_event(dev->slave,
> I2C_SLAVE_READ_PROCESSED,
>    312     &val))
>    313 dw_readl(dev,
> DW_IC_CLR_RX_DONE);
>    314
>  > 315 i2c_slave_event(dev->slave,
> I2C_SLAVE_STOP, &val);
>    316 stat =
> i2c_dw_read_clear_intrbits_slave(dev);
>    317 return 1;
>    318 }
>    319
>    320 if (stat & DW_IC_INTR_RX_FULL) {
>    321 val = dw_readl(dev, DW_IC_DATA_CMD);
>    322 if (!i2c_slave_event(dev->slave,
> I2C_SLAVE_WRITE_RECEIVED,
>    323 &val))
>    324 dev_vdbg(dev->dev, "Byte %X
> acked!", val);
>    325 } else {
>    326 i2c_slave_event(dev->slave,
> I2C_SLAVE_STOP, &val);
>    327 stat =
> i2c_dw_read_clear_intrbits_slave(dev);
>    328 }
>    329
>    330 //~ if (stat & DW_IC_INTR_TX_OVER)
>    331 //~ dw_readl(dev, DW_IC_CLR_TX_OVER);
>    332
>    333 return 1;
>    334 }
>    335
>    336 static irqreturn_t i2c_dw_isr_slave(int this_irq, void
> *dev_id)
>    337 {
>    338 struct dw_i2c_dev *dev = dev_id;
>    339 int ret;
>    340
>    341 i2c_dw_read_clear_intrbits_slave(dev);
>    342 ret = i2c_dw_irq_handler_slave(dev);
>    343 if (ret > 0)
>    344 complete(&dev->cmd_complete);
>    345
>    346 return IRQ_RETVAL(ret);
>    347 }
>    348
>    349 static struct i2c_algorithm i2c_dw_algo = {
>    350 .functionality = i2c_dw_func,
>  > 351 .reg_slave = i2c_dw_reg_slave,
>  > 352 .unreg_slave = i2c_dw_unreg_slave,
>    353 };
>    354
>    355 int i2c_dw_probe_slave(struct dw_i2c_dev *dev)
>
> ---
> 0-DAY kernel test infrastructure                Open Source Technology
> Center
> https://lists.01.org/pipermail/kbuild-all                   Intel
> Corporation

--
Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Intel Finland Oy

\
 
 \ /
  Last update: 2017-06-12 01:43    [W:0.081 / U:0.140 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site