Hi Owen,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on robh/for-next]
[also build test ERROR on v4.18-rc5 next-20180717]
[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/Mars-Cheng/Add-basic-SoC-support-for-mt6765/20180717-205540
base:   https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git for-next
config: openrisc-allyesconfig (attached as .config)
compiler: or1k-linux-gcc (GCC) 6.0.0 20160327 (experimental)
reproduce:
        wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        make.cross ARCH=openrisc 

All errors (new ones prefixed by >>):

   In file included from include/linux/kernel.h:14:0,
                    from include/linux/clk.h:16,
                    from drivers/soc/mediatek/mtk-scpsys-ext.c:6:
   drivers/soc/mediatek/mtk-scpsys-ext.c: In function 'bus_clk_enable_disable':
>> drivers/soc/mediatek/mtk-scpsys-ext.c:141:12: error: implicit declaration of 
>> function '__clk_get_name' [-Werror=implicit-function-declaration]
               __clk_get_name(cc->clk));
               ^
   include/linux/printk.h:304:33: note: in definition of macro 'pr_err'
     printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__)
                                    ^~~~~~~~~~~
   In file included from include/linux/printk.h:7:0,
                    from include/linux/kernel.h:14,
                    from include/linux/clk.h:16,
                    from drivers/soc/mediatek/mtk-scpsys-ext.c:6:
   include/linux/kern_levels.h:5:18: warning: format '%s' expects argument of 
type 'char *', but argument 3 has type 'int' [-Wformat=]
    #define KERN_SOH "\001"  /* ASCII Start Of Header */
                     ^
   include/linux/kern_levels.h:11:18: note: in expansion of macro 'KERN_SOH'
    #define KERN_ERR KERN_SOH "3" /* error conditions */
                     ^~~~~~~~
   include/linux/printk.h:304:9: note: in expansion of macro 'KERN_ERR'
     printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__)
            ^~~~~~~~
   drivers/soc/mediatek/mtk-scpsys-ext.c:139:5: note: in expansion of macro 
'pr_err'
        pr_err("Failed to  %s %s\n",
        ^~~~~~
   cc1: some warnings being treated as errors

vim +/__clk_get_name +141 drivers/soc/mediatek/mtk-scpsys-ext.c

   > 6  #include <linux/clk.h>
     7  #include <linux/clk-provider.h>
     8  #include <linux/slab.h>
     9  #include <linux/export.h>
    10  #include <linux/mfd/syscon.h>
    11  #include <linux/of_device.h>
    12  #include <linux/platform_device.h>
    13  #include <linux/regmap.h>
    14  #include <linux/soc/mediatek/infracfg.h>
    15  #include <linux/soc/mediatek/scpsys-ext.h>
    16  
    17  
    18  #define MAX_CLKS                10
    19  #define INFRA                   "infracfg"
    20  #define SMIC                    "smi_comm"
    21  
    22  static LIST_HEAD(ext_clk_map_list);
    23  static LIST_HEAD(ext_attr_map_list);
    24  
    25  static struct regmap *infracfg;
    26  static struct regmap *smi_comm;
    27  
    28  enum regmap_type {
    29          IFR_TYPE,
    30          SMI_TYPE,
    31          MAX_REGMAP_TYPE,
    32  };
    33  
    34  /**
    35   * struct ext_reg_ctrl - set multiple register for bus protect
    36   * @regmap: The bus protect regmap, 1: infracfg, 2: other master regmap
    37   *                  such as SMI.
    38   * @set_ofs: The set register offset to set corresponding bit to 1.
    39   * @clr_ofs: The clr register offset to clear corresponding bit to 0.
    40   * @sta_ofs: The status register offset to show bus protect 
enable/disable.
    41   */
    42  struct ext_reg_ctrl {
    43          enum regmap_type type;
    44          u32 set_ofs;
    45          u32 clr_ofs;
    46          u32 sta_ofs;
    47  };
    48  
    49  /**
    50   * struct ext_clk_ctrl - enable multiple clks for bus protect
    51   * @clk: The clk need to enable before pwr on/bus protect.
    52   * @scpd_n: The name present the scpsys domain where the clks belongs 
to.
    53   * @clk_list: The list node linked to ext_clk_map_list.
    54   */
    55  struct ext_clk_ctrl {
    56          struct clk *clk;
    57          const char *scpd_n;
    58          struct list_head clk_list;
    59  };
    60  
    61  struct bus_mask_ops {
    62          int     (*set)(struct regmap *regmap, u32 set_ofs,
    63                         u32 sta_ofs, u32 mask);
    64          int     (*release)(struct regmap *regmap, u32 clr_ofs,
    65                             u32 sta_ofs, u32 mask);
    66  };
    67  
    68  static struct scpsys_ext_attr *__get_attr_parent(const char *parent_n)
    69  {
    70          struct scpsys_ext_attr *attr;
    71  
    72          if (!parent_n)
    73                  return ERR_PTR(-EINVAL);
    74  
    75          list_for_each_entry(attr, &ext_attr_map_list, attr_list) {
    76                  if (attr->scpd_n && !strcmp(parent_n, attr->scpd_n))
    77                          return attr;
    78          }
    79  
    80          return ERR_PTR(-EINVAL);
    81  }
    82  
    83  int bus_ctrl_set_release(struct scpsys_ext_attr *attr, bool set)
    84  {
    85          int i;
    86          int ret = 0;
    87  
    88          for (i = 0; i < MAX_STEP_NUM && attr->mask[i].mask; i++) {
    89                  struct ext_reg_ctrl *rc = attr->mask[i].regs;
    90                  struct regmap *regmap;
    91  
    92                  if (rc->type == IFR_TYPE)
    93                          regmap = infracfg;
    94                  else if (rc->type == SMI_TYPE)
    95                          regmap = smi_comm;
    96                  else
    97                          return -EINVAL;
    98  
    99                  if (set)
   100                          ret = attr->mask[i].ops->set(regmap,
   101                                                  rc->set_ofs,
   102                                                  rc->sta_ofs,
   103                                                  attr->mask[i].mask);
   104                  else
   105                          ret = attr->mask[i].ops->release(regmap,
   106                                                  rc->clr_ofs,
   107                                                  rc->sta_ofs,
   108                                                  attr->mask[i].mask);
   109          }
   110  
   111          return ret;
   112  }
   113  
   114  int bus_ctrl_set(struct scpsys_ext_attr *attr)
   115  {
   116          return bus_ctrl_set_release(attr, CMD_ENABLE);
   117  }
   118  
   119  int bus_ctrl_release(struct scpsys_ext_attr *attr)
   120  {
   121          return bus_ctrl_set_release(attr, CMD_DISABLE);
   122  }
   123  
   124  int bus_clk_enable_disable(struct scpsys_ext_attr *attr, bool enable)
   125  {
   126          int i = 0;
   127          int ret = 0;
   128          struct ext_clk_ctrl *cc;
   129          struct clk *clk[MAX_CLKS];
   130  
   131          list_for_each_entry(cc, &ext_clk_map_list, clk_list) {
   132                  if (!strcmp(cc->scpd_n, attr->scpd_n)) {
   133                          if (enable)
   134                                  ret = clk_prepare_enable(cc->clk);
   135                          else
   136                                  clk_disable_unprepare(cc->clk);
   137  
   138                          if (ret) {
   139                                  pr_err("Failed to  %s %s\n",
   140                                         enable ? "enable" : "disable",
 > 141                                         __clk_get_name(cc->clk));
   142                                  goto err;
   143                          } else {
   144                                  clk[i] = cc->clk;
   145                                  i++;
   146                          }
   147                  }
   148          }
   149  
   150          return ret;
   151  
   152  err:
   153          for (--i; i >= 0; i--)
   154                  if (enable)
   155                          clk_disable_unprepare(clk[i]);
   156                  else
   157                          clk_prepare_enable(clk[i]);
   158          return ret;
   159  }
   160  

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