Hi Jan,

[auto build test ERROR on wsa/i2c/for-next]
[also build test ERROR on v4.5-rc6 next-20160229]
[if your patch is applied to the wrong git tree, please drop us a note to help 
improving the system]

url:    
https://github.com/0day-ci/linux/commits/Jan-Glauber/i2c-octeon-and-i2c-thunderx-drivers/20160229-215100
base:   https://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux i2c/for-next
config: x86_64-allmodconfig (attached as .config)
reproduce:
        # save the attached .config to linux build tree
        make ARCH=x86_64 

All errors (new ones prefixed by >>):

   In file included from arch/x86/include/asm/realmode.h:5:0,
                    from arch/x86/include/asm/acpi.h:33,
                    from arch/x86/include/asm/fixmap.h:19,
                    from arch/x86/include/asm/apic.h:12,
                    from arch/x86/include/asm/smp.h:12,
                    from arch/x86/include/asm/mmzone_64.h:10,
                    from arch/x86/include/asm/mmzone.h:4,
                    from include/linux/mmzone.h:855,
                    from include/linux/gfp.h:5,
                    from include/linux/device.h:29,
                    from include/linux/i2c.h:30,
                    from drivers/i2c/busses/i2c-thunderx-core.c:11:
   drivers/i2c/busses/i2c-thunderx-core.c: In function 'thunder_i2c_int_enable':
>> drivers/i2c/busses/i2c-thunderx-core.c:34:46: error: 'TWSI_INT_ENA_W1S' 
>> undeclared (first use in this function)
     __raw_writeq(INT_ENA_CORE, i2c->twsi_base + TWSI_INT_ENA_W1S);
                                                 ^
   arch/x86/include/asm/io.h:97:45: note: in definition of macro '__raw_writeq'
    #define __raw_writeq(val, addr) writeq(val, addr)
                                                ^
   drivers/i2c/busses/i2c-thunderx-core.c:34:46: note: each undeclared 
identifier is reported only once for each function it appears in
     __raw_writeq(INT_ENA_CORE, i2c->twsi_base + TWSI_INT_ENA_W1S);
                                                 ^
   arch/x86/include/asm/io.h:97:45: note: in definition of macro '__raw_writeq'
    #define __raw_writeq(val, addr) writeq(val, addr)
                                                ^
   drivers/i2c/busses/i2c-thunderx-core.c: In function 
'thunder_i2c_int_disable':
>> drivers/i2c/busses/i2c-thunderx-core.c:43:46: error: 'TWSI_INT_ENA_W1C' 
>> undeclared (first use in this function)
     __raw_writeq(INT_ENA_CORE, i2c->twsi_base + TWSI_INT_ENA_W1C);
                                                 ^
   arch/x86/include/asm/io.h:97:45: note: in definition of macro '__raw_writeq'
    #define __raw_writeq(val, addr) writeq(val, addr)
                                                ^
   drivers/i2c/busses/i2c-thunderx-core.c: In function 
'thunder_i2c_hlc_int_enable':
   drivers/i2c/busses/i2c-thunderx-core.c:50:25: error: 'TWSI_INT_ENA_W1S' 
undeclared (first use in this function)
           i2c->twsi_base + TWSI_INT_ENA_W1S);
                            ^
   arch/x86/include/asm/io.h:97:45: note: in definition of macro '__raw_writeq'
    #define __raw_writeq(val, addr) writeq(val, addr)
                                                ^
   drivers/i2c/busses/i2c-thunderx-core.c: In function 
'thunder_i2c_hlc_int_disable':
   drivers/i2c/busses/i2c-thunderx-core.c:57:25: error: 'TWSI_INT_ENA_W1C' 
undeclared (first use in this function)
           i2c->twsi_base + TWSI_INT_ENA_W1C);
                            ^
   arch/x86/include/asm/io.h:97:45: note: in definition of macro '__raw_writeq'
    #define __raw_writeq(val, addr) writeq(val, addr)
                                                ^
   drivers/i2c/busses/i2c-thunderx-core.c: In function 'thunder_i2c_probe_pci':
>> drivers/i2c/busses/i2c-thunderx-core.c:174:34: error: 'struct octeon_i2c' 
>> has no member named 'i2c_msix'
     ret = pci_enable_msix(pdev, &i2c->i2c_msix, 1);
                                     ^
   drivers/i2c/busses/i2c-thunderx-core.c:180:33: error: 'struct octeon_i2c' 
has no member named 'i2c_msix'
     ret = devm_request_irq(dev, i2c->i2c_msix.vector, octeon_i2c_isr, 0,
                                    ^
   drivers/i2c/busses/i2c-thunderx-core.c:209:24: error: 'struct octeon_i2c' 
has no member named 'i2c_msix'
     devm_free_irq(dev, i2c->i2c_msix.vector, i2c);
                           ^
   drivers/i2c/busses/i2c-thunderx-core.c: In function 'thunder_i2c_remove_pci':
   drivers/i2c/busses/i2c-thunderx-core.c:236:24: error: 'struct octeon_i2c' 
has no member named 'i2c_msix'
     devm_free_irq(dev, i2c->i2c_msix.vector, i2c);
                           ^

vim +/TWSI_INT_ENA_W1S +34 drivers/i2c/busses/i2c-thunderx-core.c

     5   * Authors: Fred Martin <[email protected]>
     6   *          Jan Glauber <[email protected]>
     7   */
     8  
     9  #include <linux/clk.h>
    10  #include <linux/delay.h>
  > 11  #include <linux/i2c.h>
    12  #include <linux/interrupt.h>
    13  #include <linux/kernel.h>
    14  #include <linux/module.h>
    15  #include <linux/pci.h>
    16  
    17  #include "i2c-cavium.h"
    18  
    19  #define DRV_NAME                        "i2c-thunderx"
    20  
    21  #define PCI_CFG_REG_BAR_NUM             0
    22  #define PCI_DEVICE_ID_THUNDER_TWSI      0xa012
    23  
    24  #define TWSI_DFL_RATE                   100000
    25  #define SYS_FREQ_DEFAULT                800000000
    26  
    27  /*
    28   * Enable the CORE interrupt.
    29   * The interrupt will be asserted when there is non-STAT_IDLE state in 
the
    30   * SW_TWSI_EOP_TWSI_STAT register.
    31   */
    32  static void thunder_i2c_int_enable(struct octeon_i2c *i2c)
    33  {
  > 34          __raw_writeq(INT_ENA_CORE, i2c->twsi_base + TWSI_INT_ENA_W1S);
    35          __raw_readq(i2c->twsi_base + TWSI_INT_ENA_W1S);
    36  }
    37  
    38  /*
    39   * Disable the CORE interrupt.
    40   */
    41  static void thunder_i2c_int_disable(struct octeon_i2c *i2c)
    42  {
  > 43          __raw_writeq(INT_ENA_CORE, i2c->twsi_base + TWSI_INT_ENA_W1C);
    44          __raw_readq(i2c->twsi_base + TWSI_INT_ENA_W1C);
    45  }
    46  
    47  static void thunder_i2c_hlc_int_enable(struct octeon_i2c *i2c)
    48  {
    49          __raw_writeq(INT_ENA_ST | INT_ENA_TS,
    50                       i2c->twsi_base + TWSI_INT_ENA_W1S);
    51          __raw_readq(i2c->twsi_base + TWSI_INT_ENA_W1S);
    52  }
    53  
    54  static void thunder_i2c_hlc_int_disable(struct octeon_i2c *i2c)
    55  {
    56          __raw_writeq(INT_ENA_ST | INT_ENA_TS,
  > 57                       i2c->twsi_base + TWSI_INT_ENA_W1C);
    58          __raw_readq(i2c->twsi_base + TWSI_INT_ENA_W1C);
    59  }
    60  
    61  static u32 thunderx_i2c_functionality(struct i2c_adapter *adap)
    62  {
    63          return I2C_FUNC_I2C | I2C_FUNC_SMBUS_EMUL;
    64  }
    65  
    66  static const struct i2c_algorithm thunderx_i2c_algo = {
    67          .master_xfer = octeon_i2c_xfer,
    68          .functionality = thunderx_i2c_functionality,
    69  };
    70  
    71  static struct i2c_adapter thunderx_i2c_ops = {
    72          .owner  = THIS_MODULE,
    73          .name   = "ThunderX adapter",
    74          .algo   = &thunderx_i2c_algo,
    75  };
    76  
    77  static void thunder_i2c_clock_enable(struct device *dev, struct 
octeon_i2c *i2c)
    78  {
    79          int ret;
    80  
    81          i2c->clk = devm_clk_get(dev, NULL);
    82          if (IS_ERR(i2c->clk)) {
    83                  i2c->clk = NULL;
    84                  goto skip;
    85          }
    86  
    87          ret = clk_prepare_enable(i2c->clk);
    88          if (ret)
    89                  goto skip;
    90          i2c->sys_freq = clk_get_rate(i2c->clk);
    91  
    92  skip:
    93          if (!i2c->sys_freq)
    94                  i2c->sys_freq = SYS_FREQ_DEFAULT;
    95  
    96          dev_info(dev, "Set system clock to %u\n", i2c->sys_freq);
    97  }
    98  
    99  static void thunder_i2c_clock_disable(struct device *dev, struct clk 
*clk)
   100  {
   101          if (!clk)
   102                  return;
   103          clk_disable_unprepare(clk);
   104          devm_clk_put(dev, clk);
   105  }
   106  
   107  static void thunder_i2c_set_name(struct pci_dev *pdev, struct 
octeon_i2c *i2c,
   108                                   char *name)
   109  {
   110          u8 i2c_bus_id, soc_node;
   111          resource_size_t start;
   112  
   113          start = pci_resource_start(pdev, PCI_CFG_REG_BAR_NUM);
   114          soc_node = (start >> 44) & 0x3;
   115          i2c_bus_id = (start >> 24) & 0x7;
   116          snprintf(name, 10, "i2c%d", soc_node * 6 + i2c_bus_id);
   117  
   118          snprintf(i2c->adap.name, sizeof(i2c->adap.name), 
"thunderx-i2c-%d.%d",
   119                   soc_node, i2c_bus_id);
   120  }
   121  
   122  static int thunder_i2c_probe_pci(struct pci_dev *pdev,
   123                                   const struct pci_device_id *ent)
   124  {
   125          struct device *dev = &pdev->dev;
   126          struct device_node *node = NULL;
   127          struct octeon_i2c *i2c;
   128          char i2c_name[10];
   129          int ret = 0;
   130  
   131          i2c = devm_kzalloc(dev, sizeof(*i2c), GFP_KERNEL);
   132          if (!i2c)
   133                  return -ENOMEM;
   134  
   135          i2c->dev = dev;
   136          pci_set_drvdata(pdev, i2c);
   137          ret = pci_enable_device(pdev);
   138          if (ret) {
   139                  dev_err(dev, "Failed to enable PCI device\n");
   140                  goto out_free_i2c;
   141          }
   142  
   143          ret = pci_request_regions(pdev, DRV_NAME);
   144          if (ret) {
   145                  dev_err(dev, "PCI request regions failed 0x%x\n", ret);
   146                  goto out_disable_device;
   147          }
   148  
   149          i2c->twsi_base = pci_ioremap_bar(pdev, PCI_CFG_REG_BAR_NUM);
   150          if (!i2c->twsi_base) {
   151                  dev_err(dev, "Cannot map CSR memory space\n");
   152                  ret = -EINVAL;
   153                  goto out_release_regions;
   154          }
   155  
   156          thunder_i2c_clock_enable(dev, i2c);
   157  
   158          thunder_i2c_set_name(pdev, i2c, i2c_name);
   159          node = of_find_node_by_name(NULL, i2c_name);
   160          if (!node || of_property_read_u32(node, "clock-frequency",
   161              &i2c->twsi_freq))
   162                  i2c->twsi_freq = TWSI_DFL_RATE;
   163  
   164          init_waitqueue_head(&i2c->queue);
   165  
   166          ret = octeon_i2c_initlowlevel(i2c);
   167          if (ret) {
   168                  dev_err(dev, "Init low level failed\n");
   169                  goto out_unmap;
   170          }
   171  
   172          octeon_i2c_setclock(i2c);
   173  
 > 174          ret = pci_enable_msix(pdev, &i2c->i2c_msix, 1);
   175          if (ret) {
   176                  dev_err(dev, "Unable to enable MSI-X\n");
   177                  goto out_unmap;

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: Binary data

Reply via email to