Hi Sunny,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on v4.17-rc3]
[also build test ERROR on next-20180503]
[cannot apply to spi/for-next]
[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/Yixun-Lan/spi-meson-axg-add-few-enhanced-features/20180504-083512
config: sparc64-allmodconfig (attached as .config)
compiler: sparc64-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0
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=sparc64 

All error/warnings (new ones prefixed by >>):

>> drivers//spi/spi-meson-spicc.c:517:15: error: variable 'meson_spicc_div0' 
>> has initializer but incomplete type
    static struct clk_fixed_factor meson_spicc_div0 = {
                  ^~~~~~~~~~~~~~~~
>> drivers//spi/spi-meson-spicc.c:518:3: error: 'struct clk_fixed_factor' has 
>> no member named 'mult'
     .mult = 1,
      ^~~~
>> drivers//spi/spi-meson-spicc.c:518:10: warning: excess elements in struct 
>> initializer
     .mult = 1,
             ^
   drivers//spi/spi-meson-spicc.c:518:10: note: (near initialization for 
'meson_spicc_div0')
>> drivers//spi/spi-meson-spicc.c:519:3: error: 'struct clk_fixed_factor' has 
>> no member named 'div'
     .div = 4,
      ^~~
   drivers//spi/spi-meson-spicc.c:519:9: warning: excess elements in struct 
initializer
     .div = 4,
            ^
   drivers//spi/spi-meson-spicc.c:519:9: note: (near initialization for 
'meson_spicc_div0')
>> drivers//spi/spi-meson-spicc.c:522:15: error: variable 'meson_spicc_div1' 
>> has initializer but incomplete type
    static struct clk_divider meson_spicc_div1 = {
                  ^~~~~~~~~~~
>> drivers//spi/spi-meson-spicc.c:523:3: error: 'struct clk_divider' has no 
>> member named 'reg'
     .reg = (void *) SPICC_CONREG,
      ^~~
   drivers//spi/spi-meson-spicc.c:523:9: warning: excess elements in struct 
initializer
     .reg = (void *) SPICC_CONREG,
            ^
   drivers//spi/spi-meson-spicc.c:523:9: note: (near initialization for 
'meson_spicc_div1')
>> drivers//spi/spi-meson-spicc.c:524:3: error: 'struct clk_divider' has no 
>> member named 'shift'
     .shift = 16,
      ^~~~~
   drivers//spi/spi-meson-spicc.c:524:11: warning: excess elements in struct 
initializer
     .shift = 16,
              ^~
   drivers//spi/spi-meson-spicc.c:524:11: note: (near initialization for 
'meson_spicc_div1')
>> drivers//spi/spi-meson-spicc.c:525:3: error: 'struct clk_divider' has no 
>> member named 'width'
     .width = 3,
      ^~~~~
   drivers//spi/spi-meson-spicc.c:525:11: warning: excess elements in struct 
initializer
     .width = 3,
              ^
   drivers//spi/spi-meson-spicc.c:525:11: note: (near initialization for 
'meson_spicc_div1')
>> drivers//spi/spi-meson-spicc.c:526:3: error: 'struct clk_divider' has no 
>> member named 'flags'
     .flags = CLK_DIVIDER_POWER_OF_TWO,
      ^~~~~
>> drivers//spi/spi-meson-spicc.c:526:11: error: 'CLK_DIVIDER_POWER_OF_TWO' 
>> undeclared here (not in a function)
     .flags = CLK_DIVIDER_POWER_OF_TWO,
              ^~~~~~~~~~~~~~~~~~~~~~~~
   drivers//spi/spi-meson-spicc.c:526:11: warning: excess elements in struct 
initializer
   drivers//spi/spi-meson-spicc.c:526:11: note: (near initialization for 
'meson_spicc_div1')
>> drivers//spi/spi-meson-spicc.c:530:15: error: variable 'meson_spicc_div2' 
>> has initializer but incomplete type
    static struct clk_fixed_factor meson_spicc_div2 = {
                  ^~~~~~~~~~~~~~~~
   drivers//spi/spi-meson-spicc.c:531:3: error: 'struct clk_fixed_factor' has 
no member named 'mult'
     .mult = 1,
      ^~~~
   drivers//spi/spi-meson-spicc.c:531:10: warning: excess elements in struct 
initializer
     .mult = 1,
             ^
   drivers//spi/spi-meson-spicc.c:531:10: note: (near initialization for 
'meson_spicc_div2')
   drivers//spi/spi-meson-spicc.c:532:3: error: 'struct clk_fixed_factor' has 
no member named 'div'
     .div = 2,
      ^~~
   drivers//spi/spi-meson-spicc.c:532:9: warning: excess elements in struct 
initializer
     .div = 2,
            ^
   drivers//spi/spi-meson-spicc.c:532:9: note: (near initialization for 
'meson_spicc_div2')
>> drivers//spi/spi-meson-spicc.c:535:15: error: variable 'meson_spicc_div3' 
>> has initializer but incomplete type
    static struct clk_divider meson_spicc_div3 = {
                  ^~~~~~~~~~~
   drivers//spi/spi-meson-spicc.c:536:3: error: 'struct clk_divider' has no 
member named 'reg'
     .reg = (void *) SPICC_ENH_CTL0,
      ^~~
   drivers//spi/spi-meson-spicc.c:536:9: warning: excess elements in struct 
initializer
     .reg = (void *) SPICC_ENH_CTL0,
            ^
   drivers//spi/spi-meson-spicc.c:536:9: note: (near initialization for 
'meson_spicc_div3')
   drivers//spi/spi-meson-spicc.c:537:3: error: 'struct clk_divider' has no 
member named 'shift'
     .shift = 16,
      ^~~~~
   drivers//spi/spi-meson-spicc.c:537:11: warning: excess elements in struct 
initializer
     .shift = 16,
              ^~
   drivers//spi/spi-meson-spicc.c:537:11: note: (near initialization for 
'meson_spicc_div3')
   drivers//spi/spi-meson-spicc.c:538:3: error: 'struct clk_divider' has no 
member named 'width'
     .width = 8,
      ^~~~~
   drivers//spi/spi-meson-spicc.c:538:11: warning: excess elements in struct 
initializer
     .width = 8,
              ^
   drivers//spi/spi-meson-spicc.c:538:11: note: (near initialization for 
'meson_spicc_div3')
>> drivers//spi/spi-meson-spicc.c:541:15: error: variable 'meson_spicc_sel' has 
>> initializer but incomplete type
    static struct clk_mux meson_spicc_sel = {
                  ^~~~~~~
>> drivers//spi/spi-meson-spicc.c:542:3: error: 'struct clk_mux' has no member 
>> named 'reg'
     .reg = (void *) SPICC_ENH_CTL0,
      ^~~
   drivers//spi/spi-meson-spicc.c:542:9: warning: excess elements in struct 
initializer
     .reg = (void *) SPICC_ENH_CTL0,
            ^
   drivers//spi/spi-meson-spicc.c:542:9: note: (near initialization for 
'meson_spicc_sel')
>> drivers//spi/spi-meson-spicc.c:543:3: error: 'struct clk_mux' has no member 
>> named 'mask'
     .mask = 0x1,
      ^~~~
   drivers//spi/spi-meson-spicc.c:543:10: warning: excess elements in struct 
initializer
     .mask = 0x1,
             ^~~
   drivers//spi/spi-meson-spicc.c:543:10: note: (near initialization for 
'meson_spicc_sel')
>> drivers//spi/spi-meson-spicc.c:544:3: error: 'struct clk_mux' has no member 
>> named 'shift'
     .shift = 24,
      ^~~~~
   drivers//spi/spi-meson-spicc.c:544:11: warning: excess elements in struct 
initializer
     .shift = 24,
              ^~
   drivers//spi/spi-meson-spicc.c:544:11: note: (near initialization for 
'meson_spicc_sel')
   drivers//spi/spi-meson-spicc.c: In function 'meson_spicc_clk_init':
>> drivers//spi/spi-meson-spicc.c:553:23: error: storage size of 'init' isn't 
>> known
     struct clk_init_data init;
                          ^~~~
>> drivers//spi/spi-meson-spicc.c:562:14: error: 'clk_fixed_factor_ops' 
>> undeclared (first use in this function); did you mean 'clk_fixed_factor'?
     init.ops = &clk_fixed_factor_ops;
                 ^~~~~~~~~~~~~~~~~~~~
                 clk_fixed_factor
   drivers//spi/spi-meson-spicc.c:562:14: note: each undeclared identifier is 
reported only once for each function it appears in
>> drivers//spi/spi-meson-spicc.c:564:20: error: implicit declaration of 
>> function '__clk_get_name'; did you mean 'clk_get_rate'? 
>> [-Werror=implicit-function-declaration]
     parent_names[0] = __clk_get_name(spicc->core);
                       ^~~~~~~~~~~~~~
                       clk_get_rate
>> drivers//spi/spi-meson-spicc.c:564:18: warning: assignment makes pointer 
>> from integer without a cast [-Wint-conversion]
     parent_names[0] = __clk_get_name(spicc->core);
                     ^

vim +/meson_spicc_div0 +517 drivers//spi/spi-meson-spicc.c

   497  
   498  /*
   499   * The Clock Mux
   500   *            x-----------------x   x------------x    x------\
   501   *        |---| 0) fixed factor |---| 1) old div |----|      |
   502   *        |   x-----------------x   x------------x    |      |
   503   * src ---|                                           |5) mux|-- out
   504   *        |   x-----------------x   x------------x    |      |
   505   *        |---| 2) fixed factor |---| 3) new div |0---|      |
   506   *            x-----------------x   x------------x    x------/
   507   *
   508   * Clk path for GX series:
   509   *    src -> 0 -> 1 -> out
   510   *
   511   * Clk path for AXG series:
   512   *    src -> 0 -> 1 -> 5 -> out
   513   *    src -> 2 -> 3 -> 5 -> out
   514   */
   515  
   516  /* algorithm for div0 + div1: rate = freq / 4 / (2 ^ N) */
 > 517  static struct clk_fixed_factor meson_spicc_div0 = {
 > 518          .mult   = 1,
 > 519          .div    = 4,
   520  };
   521  
 > 522  static struct clk_divider meson_spicc_div1 = {
 > 523          .reg    = (void *) SPICC_CONREG,
 > 524          .shift  = 16,
 > 525          .width  = 3,
 > 526          .flags  = CLK_DIVIDER_POWER_OF_TWO,
   527  };
   528  
   529  /* algorithm for div2 + div3: rate = freq / 2 / (N + 1) */
 > 530  static struct clk_fixed_factor meson_spicc_div2 = {
 > 531          .mult   = 1,
   532          .div    = 2,
   533  };
   534  
 > 535  static struct clk_divider meson_spicc_div3 = {
   536          .reg    = (void *) SPICC_ENH_CTL0,
 > 537          .shift  = 16,
 > 538          .width  = 8,
   539  };
   540  
 > 541  static struct clk_mux meson_spicc_sel = {
 > 542          .reg    = (void *) SPICC_ENH_CTL0,
 > 543          .mask   = 0x1,
 > 544          .shift  = 24,
   545  };
   546  
   547  static int meson_spicc_clk_init(struct meson_spicc_device *spicc)
   548  {
   549          struct device *dev = &spicc->pdev->dev;
   550          struct clk_fixed_factor *div0;
   551          struct clk_divider *div1;
   552          struct clk_mux *mux;
 > 553          struct clk_init_data init;
   554          struct clk *clk;
   555          const char *parent_names[1];
   556          const char *mux_parent_names[2];
   557          char name[32];
   558  
   559          div0 = &meson_spicc_div0;
   560          snprintf(name, sizeof(name), "%s#_div0", dev_name(dev));
   561          init.name = name;
 > 562          init.ops = &clk_fixed_factor_ops;
   563          init.flags = 0;
 > 564          parent_names[0] = __clk_get_name(spicc->core);
   565          init.parent_names = parent_names;
   566          init.num_parents = 1;
   567  
 > 568          div0->hw.init = &init;
   569  
 > 570          clk = devm_clk_register(dev, &div0->hw);
   571          if (WARN_ON(IS_ERR(clk)))
   572                  return PTR_ERR(clk);
   573  
   574          div1 = &meson_spicc_div1;
   575          snprintf(name, sizeof(name), "%s#_div1", dev_name(dev));
   576          init.name = name;
 > 577          init.ops = &clk_divider_ops;
 > 578          init.flags = CLK_SET_RATE_PARENT;
   579          parent_names[0] = __clk_get_name(clk);
   580          init.parent_names = parent_names;
   581          init.num_parents = 1;
   582  
 > 583          div1->reg = spicc->base + (u64) div1->reg;
   584          div1->hw.init = &init;
   585  
   586          clk = devm_clk_register(dev, &div1->hw);
   587          if (WARN_ON(IS_ERR(clk)))
   588                  return PTR_ERR(clk);
   589  
   590          if (spicc->data->has_enhance_clk_div == false) {
   591                  spicc->clk = clk;
   592                  return 0;
   593          }
   594  
   595          mux_parent_names[0] = __clk_get_name(clk);
   596  
   597          div0 = &meson_spicc_div2;
   598          snprintf(name, sizeof(name), "%s#_div2", dev_name(dev));
   599          init.name = name;
   600          init.ops = &clk_fixed_factor_ops;
   601          init.flags = 0;
 > 602          parent_names[0] = __clk_get_name(spicc->core);
   603          init.parent_names = parent_names;
   604          init.num_parents = 1;
   605  
   606          div0->hw.init = &init;
   607  
   608          clk = devm_clk_register(dev, &div0->hw);
   609          if (WARN_ON(IS_ERR(clk)))
   610                  return PTR_ERR(clk);
   611  
   612          div1 = &meson_spicc_div3;
   613          snprintf(name, sizeof(name), "%s#_div3", dev_name(dev));
   614          init.name = name;
   615          init.ops = &clk_divider_ops;
   616          init.flags = CLK_SET_RATE_PARENT;
   617          parent_names[0] = __clk_get_name(clk);
   618          init.parent_names = parent_names;
   619          init.num_parents = 1;
   620  
   621          div1->reg = spicc->base + (u64) div1->reg;
   622          div1->hw.init = &init;
   623  
   624          clk = devm_clk_register(dev, &div1->hw);
   625          if (WARN_ON(IS_ERR(clk)))
   626                  return PTR_ERR(clk);
   627  
 > 628          mux_parent_names[1] = __clk_get_name(clk);
   629  
   630          mux = &meson_spicc_sel;
   631          snprintf(name, sizeof(name), "%s#_sel", dev_name(dev));
   632          init.name = name;
 > 633          init.ops = &clk_mux_ops;
   634          init.parent_names = mux_parent_names;
   635          init.num_parents = 2;
 > 636          init.flags = CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT;
   637  
 > 638          mux->reg = spicc->base + (u64) mux->reg;
   639          mux->hw.init = &init;
   640  
   641          spicc->clk = devm_clk_register(dev, &mux->hw);
   642          if (WARN_ON(IS_ERR(spicc->clk)))
   643                  return PTR_ERR(spicc->clk);
   644  
   645          clk_set_parent(spicc->clk, clk);
   646          return 0;
   647  }
   648  

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