Hi Elie,

I love your patch! Perhaps something to improve:

[auto build test WARNING on wsa/i2c/for-next]
[also build test WARNING on v4.20-rc5 next-20181207]
[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/Elie-Morisse/i2c-Add-drivers-for-the-AMD-PCIe-MP2-I2C-controller/20181209-070352
base:   https://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git 
i2c/for-next
config: i386-allmodconfig (attached as .config)
compiler: gcc-7 (Debian 7.3.0-1) 7.3.0
reproduce:
        # save the attached .config to linux build tree
        make ARCH=i386 

All warnings (new ones prefixed by >>):

   In file included from include/linux/printk.h:336:0,
                    from include/linux/kernel.h:14,
                    from include/linux/list.h:9,
                    from include/linux/wait.h:7,
                    from include/linux/wait_bit.h:8,
                    from include/linux/fs.h:6,
                    from include/linux/debugfs.h:15,
                    from drivers/i2c/busses/i2c-amd-mp2-pci.c:9:
   drivers/i2c/busses/i2c-amd-mp2-pci.c: In function 'amd_mp2_dma_map':
>> drivers/i2c/busses/i2c-amd-mp2-pci.c:125:30: warning: format '%llx' expects 
>> argument of type 'long long unsigned int', but argument 5 has type 
>> 'dma_addr_t {aka unsigned int}' [-Wformat=]
     dev_dbg(ndev_dev(privdata), "%s dma_addr: %llx size: %u dir: %s\n",
                                 ^
   include/linux/dynamic_debug.h:135:39: note: in definition of macro 
'dynamic_dev_dbg'
      __dynamic_dev_dbg(&descriptor, dev, fmt, \
                                          ^~~
   include/linux/device.h:1463:23: note: in expansion of macro 'dev_fmt'
     dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
                          ^~~~~~~
>> drivers/i2c/busses/i2c-amd-mp2-pci.c:125:2: note: in expansion of macro 
>> 'dev_dbg'
     dev_dbg(ndev_dev(privdata), "%s dma_addr: %llx size: %u dir: %s\n",
     ^~~~~~~
   drivers/i2c/busses/i2c-amd-mp2-pci.c: In function 'amd_mp2_debugfs_read':
   drivers/i2c/busses/i2c-amd-mp2-pci.c:384:16: warning: unused variable 'mmio' 
[-Wunused-variable]
     void __iomem *mmio = privdata->mmio;
                   ^~~~

vim +125 drivers/i2c/busses/i2c-amd-mp2-pci.c

   > 9  #include <linux/debugfs.h>
    10  #include <linux/dma-mapping.h>
    11  #include <linux/interrupt.h>
    12  #include <linux/module.h>
    13  #include <linux/pci.h>
    14  #include <linux/slab.h>
    15  
    16  #include "i2c-amd-mp2.h"
    17  
    18  #define DRIVER_NAME     "i2c_amd_mp2"
    19  #define DRIVER_DESC     "AMD(R) PCI-E MP2 I2C Controller Driver"
    20  #define DRIVER_VER      "1.0"
    21  
    22  static inline void write64(u64 val, void __iomem *mmio)
    23  {
    24          writel(val, mmio);
    25          writel(val >> 32, mmio + sizeof(u32));
    26  }
    27  
    28  static inline u64 read64(void __iomem *mmio)
    29  {
    30          u64 low, high;
    31  
    32          low = readl(mmio);
    33          high = readl(mmio + sizeof(u32));
    34          return low | (high << 32);
    35  }
    36  
    37  static void amd_mp2_c2p_mutex_lock(struct amd_i2c_common *i2c_common)
    38  {
    39          struct amd_mp2_dev *privdata = i2c_common->mp2_dev;
    40  
    41          /* there is only one data mailbox for two i2c adapters */
    42          mutex_lock(&privdata->c2p_lock);
    43          privdata->c2p_lock_busid = i2c_common->bus_id;
    44  }
    45  
    46  static void amd_mp2_c2p_mutex_unlock(struct amd_i2c_common *i2c_common)
    47  {
    48          struct amd_mp2_dev *privdata = i2c_common->mp2_dev;
    49  
    50          if (unlikely(privdata->c2p_lock_busid != i2c_common->bus_id)) {
    51                  dev_warn(ndev_dev(privdata),
    52                           "bus %d attempting to unlock C2P locked by bus 
%d\n",
    53                           i2c_common->bus_id, privdata->c2p_lock_busid);
    54                  return;
    55          }
    56  
    57          mutex_unlock(&privdata->c2p_lock);
    58  }
    59  
    60  static int amd_mp2_cmd(struct amd_i2c_common *i2c_common,
    61                         union i2c_cmd_base i2c_cmd_base)
    62  {
    63          struct amd_mp2_dev *privdata = i2c_common->mp2_dev;
    64          void __iomem *reg;
    65  
    66          i2c_common->reqcmd = i2c_cmd_base.s.i2c_cmd;
    67  
    68          reg = privdata->mmio + ((i2c_cmd_base.s.bus_id == 1) ?
    69                                  AMD_C2P_MSG1 : AMD_C2P_MSG0);
    70          writel(i2c_cmd_base.ul, reg);
    71  
    72          return 0;
    73  }
    74  
    75  int amd_mp2_bus_enable_set(struct amd_i2c_common *i2c_common, bool 
enable)
    76  {
    77          struct amd_mp2_dev *privdata = i2c_common->mp2_dev;
    78          union i2c_cmd_base i2c_cmd_base;
    79  
    80          dev_dbg(ndev_dev(privdata), "%s id: %d\n", __func__,
    81                  i2c_common->bus_id);
    82  
    83          i2c_cmd_base.ul = 0;
    84          i2c_cmd_base.s.i2c_cmd = enable ? i2c_enable : i2c_disable;
    85          i2c_cmd_base.s.bus_id = i2c_common->bus_id;
    86          i2c_cmd_base.s.i2c_speed = i2c_common->i2c_speed;
    87  
    88          amd_mp2_c2p_mutex_lock(i2c_common);
    89  
    90          return amd_mp2_cmd(i2c_common, i2c_cmd_base);
    91  }
    92  
    93  static void amd_mp2_cmd_rw_fill(struct amd_i2c_common *i2c_common,
    94                                  union i2c_cmd_base *i2c_cmd_base,
    95                                  enum i2c_cmd reqcmd)
    96  {
    97          i2c_cmd_base->s.i2c_cmd = reqcmd;
    98          i2c_cmd_base->s.bus_id = i2c_common->bus_id;
    99          i2c_cmd_base->s.i2c_speed = i2c_common->i2c_speed;
   100          i2c_cmd_base->s.slave_addr = i2c_common->msg->addr;
   101          i2c_cmd_base->s.length = i2c_common->msg->len;
   102  }
   103  
   104  static int amd_mp2_dma_map(struct amd_mp2_dev *privdata,
   105                             struct amd_i2c_common *i2c_common)
   106  {
   107          enum dma_data_direction dma_direction =
   108                          i2c_common->msg->flags & I2C_M_RD ?
   109                          DMA_FROM_DEVICE : DMA_TO_DEVICE;
   110  
   111          i2c_common->dma_buf = i2c_get_dma_safe_msg_buf(i2c_common->msg, 
0);
   112          i2c_common->dma_addr = dma_map_single(&privdata->pci_dev->dev,
   113                                                i2c_common->dma_buf,
   114                                                i2c_common->msg->len,
   115                                                dma_direction);
   116  
   117          if (dma_mapping_error(&privdata->pci_dev->dev,
   118                                i2c_common->dma_addr)) {
   119                  dev_err(ndev_dev(privdata),
   120                          "Error while mapping dma buffer %p\n",
   121                          i2c_common->dma_buf);
   122                  return -EIO;
   123          }
   124  
 > 125          dev_dbg(ndev_dev(privdata), "%s dma_addr: %llx size: %u dir: 
 > %s\n",
   126                  __func__, i2c_common->dma_addr, i2c_common->msg->len,
   127                  dma_direction == DMA_FROM_DEVICE ? "from" : "to");
   128  
   129          return 0;
   130  }
   131  

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

Attachment: .config.gz
Description: application/gzip

Reply via email to