Hi Lubomir,

I love your patch! Yet something to improve:

[auto build test ERROR on linuxtv-media/master]
[also build test ERROR on v4.20-rc1 next-20181105]
[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/Lubomir-Rintel/media-ov7670-hook-s_power-onto-v4l2-core/20181105-163336
base:   git://linuxtv.org/media_tree.git master
config: ia64-allmodconfig (attached as .config)
compiler: ia64-linux-gcc (GCC) 8.1.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
        GCC_VERSION=8.1.0 make.cross ARCH=ia64 

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

   In file included from drivers/media/platform/marvell-ccic/cafe-driver.c:38:
>> drivers/media/platform/marvell-ccic/mcam-core.h:129:16: error: field 
>> 'mclk_hw' has incomplete type
     struct clk_hw mclk_hw;
                   ^~~~~~~
--
   In file included from drivers/media/platform/marvell-ccic/mmp-driver.c:30:
>> drivers/media/platform/marvell-ccic/mcam-core.h:129:16: error: field 
>> 'mclk_hw' has incomplete type
     struct clk_hw mclk_hw;
                   ^~~~~~~
   drivers/media/platform/marvell-ccic/mmp-driver.c: In function 'mmpcam_probe':
>> drivers/media/platform/marvell-ccic/mmp-driver.c:302:8: error: implicit 
>> declaration of function 'of_clk_add_provider'; did you mean 
>> 'of_clk_get_from_provider'? [-Werror=implicit-function-declaration]
     ret = of_clk_add_provider(pdev->dev.of_node, of_clk_src_simple_get,
           ^~~~~~~~~~~~~~~~~~~
           of_clk_get_from_provider
>> drivers/media/platform/marvell-ccic/mmp-driver.c:302:47: error: 
>> 'of_clk_src_simple_get' undeclared (first use in this function); did you 
>> mean 'ida_simple_get'?
     ret = of_clk_add_provider(pdev->dev.of_node, of_clk_src_simple_get,
                                                  ^~~~~~~~~~~~~~~~~~~~~
                                                  ida_simple_get
   drivers/media/platform/marvell-ccic/mmp-driver.c:302:47: note: each 
undeclared identifier is reported only once for each function it appears in
   cc1: some warnings being treated as errors
--
   In file included from drivers/media/platform/marvell-ccic/mcam-core.c:35:
>> drivers/media/platform/marvell-ccic/mcam-core.h:129:16: error: field 
>> 'mclk_hw' has incomplete type
     struct clk_hw mclk_hw;
                   ^~~~~~~
   In file included from include/linux/kernel.h:10,
                    from drivers/media/platform/marvell-ccic/mcam-core.c:9:
   drivers/media/platform/marvell-ccic/mcam-core.c: In function 'mclk_prepare':
   include/linux/kernel.h:997:32: error: dereferencing pointer to incomplete 
type 'struct clk_hw'
     BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
                                   ^~~~~~
   include/linux/compiler.h:353:9: note: in definition of macro 
'__compiletime_assert'
      if (!(condition))     \
            ^~~~~~~~~
   include/linux/compiler.h:373:2: note: in expansion of macro 
'_compiletime_assert'
     _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
     ^~~~~~~~~~~~~~~~~~~
   include/linux/build_bug.h:45:37: note: in expansion of macro 
'compiletime_assert'
    #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
                                        ^~~~~~~~~~~~~~~~~~
   include/linux/kernel.h:997:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
     BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
     ^~~~~~~~~~~~~~~~
   include/linux/kernel.h:997:20: note: in expansion of macro '__same_type'
     BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
                       ^~~~~~~~~~~
   drivers/media/platform/marvell-ccic/mcam-core.c:952:28: note: in expansion 
of macro 'container_of'
     struct mcam_camera *cam = container_of(hw, struct mcam_camera, mclk_hw);
                               ^~~~~~~~~~~~
   drivers/media/platform/marvell-ccic/mcam-core.c: At top level:
>> drivers/media/platform/marvell-ccic/mcam-core.c:1004:21: error: variable 
>> 'mclk_ops' has initializer but incomplete type
    static const struct clk_ops mclk_ops = {
                        ^~~~~~~
>> drivers/media/platform/marvell-ccic/mcam-core.c:1005:3: error: 'const struct 
>> clk_ops' has no member named 'prepare'
     .prepare = mclk_prepare,
      ^~~~~~~
>> drivers/media/platform/marvell-ccic/mcam-core.c:1005:13: warning: excess 
>> elements in struct initializer
     .prepare = mclk_prepare,
                ^~~~~~~~~~~~
   drivers/media/platform/marvell-ccic/mcam-core.c:1005:13: note: (near 
initialization for 'mclk_ops')
>> drivers/media/platform/marvell-ccic/mcam-core.c:1006:3: error: 'const struct 
>> clk_ops' has no member named 'unprepare'
     .unprepare = mclk_unprepare,
      ^~~~~~~~~
   drivers/media/platform/marvell-ccic/mcam-core.c:1006:15: warning: excess 
elements in struct initializer
     .unprepare = mclk_unprepare,
                  ^~~~~~~~~~~~~~
   drivers/media/platform/marvell-ccic/mcam-core.c:1006:15: note: (near 
initialization for 'mclk_ops')
>> drivers/media/platform/marvell-ccic/mcam-core.c:1007:3: error: 'const struct 
>> clk_ops' has no member named 'enable'
     .enable = mclk_enable,
      ^~~~~~
   drivers/media/platform/marvell-ccic/mcam-core.c:1007:12: warning: excess 
elements in struct initializer
     .enable = mclk_enable,
               ^~~~~~~~~~~
   drivers/media/platform/marvell-ccic/mcam-core.c:1007:12: note: (near 
initialization for 'mclk_ops')
>> drivers/media/platform/marvell-ccic/mcam-core.c:1008:3: error: 'const struct 
>> clk_ops' has no member named 'disable'
     .disable = mclk_disable,
      ^~~~~~~
   drivers/media/platform/marvell-ccic/mcam-core.c:1008:13: warning: excess 
elements in struct initializer
     .disable = mclk_disable,
                ^~~~~~~~~~~~
   drivers/media/platform/marvell-ccic/mcam-core.c:1008:13: note: (near 
initialization for 'mclk_ops')
>> drivers/media/platform/marvell-ccic/mcam-core.c:1009:3: error: 'const struct 
>> clk_ops' has no member named 'recalc_rate'
     .recalc_rate = mclk_recalc_rate,
      ^~~~~~~~~~~
   drivers/media/platform/marvell-ccic/mcam-core.c:1009:17: warning: excess 
elements in struct initializer
     .recalc_rate = mclk_recalc_rate,
                    ^~~~~~~~~~~~~~~~
   drivers/media/platform/marvell-ccic/mcam-core.c:1009:17: note: (near 
initialization for 'mclk_ops')
   drivers/media/platform/marvell-ccic/mcam-core.c: In function 
'mccic_register':
>> drivers/media/platform/marvell-ccic/mcam-core.c:1895:9: error: variable 
>> 'mclk_init' has initializer but incomplete type
     struct clk_init_data mclk_init = { };
            ^~~~~~~~~~~~~
>> drivers/media/platform/marvell-ccic/mcam-core.c:1895:23: error: storage size 
>> of 'mclk_init' isn't known
     struct clk_init_data mclk_init = { };
                          ^~~~~~~~~
>> drivers/media/platform/marvell-ccic/mcam-core.c:1963:14: error: implicit 
>> declaration of function 'devm_clk_register'; did you mean 'device_register'? 
>> [-Werror=implicit-function-declaration]
     cam->mclk = devm_clk_register(cam->dev, &cam->mclk_hw);
                 ^~~~~~~~~~~~~~~~~
                 device_register
   drivers/media/platform/marvell-ccic/mcam-core.c:1895:23: warning: unused 
variable 'mclk_init' [-Wunused-variable]
     struct clk_init_data mclk_init = { };
                          ^~~~~~~~~
   drivers/media/platform/marvell-ccic/mcam-core.c: At top level:
>> drivers/media/platform/marvell-ccic/mcam-core.c:1004:29: error: storage size 
>> of 'mclk_ops' isn't known
    static const struct clk_ops mclk_ops = {
                                ^~~~~~~~
   cc1: some warnings being treated as errors

vim +/mclk_hw +129 drivers/media/platform/marvell-ccic/mcam-core.h

    94  
    95  /*
    96   * A description of one of our devices.
    97   * Locking: controlled by s_mutex.  Certain fields, however, require
    98   *          the dev_lock spinlock; they are marked as such by comments.
    99   *          dev_lock is also required for access to device registers.
   100   */
   101  struct mcam_camera {
   102          /*
   103           * These fields should be set by the platform code prior to
   104           * calling mcam_register().
   105           */
   106          unsigned char __iomem *regs;
   107          unsigned regs_size; /* size in bytes of the register space */
   108          spinlock_t dev_lock;
   109          struct device *dev; /* For messages, dma alloc */
   110          enum mcam_chip_id chip_id;
   111          enum mcam_buffer_mode buffer_mode;
   112  
   113          int mclk_src;   /* which clock source the mclk derives from */
   114          int mclk_div;   /* Clock Divider Value for MCLK */
   115  
   116          enum v4l2_mbus_type bus_type;
   117          /* MIPI support */
   118          /* The dphy config value, allocated in board file
   119           * dphy[0]: DPHY3
   120           * dphy[1]: DPHY5
   121           * dphy[2]: DPHY6
   122           */
   123          int *dphy;
   124          bool mipi_enabled;      /* flag whether mipi is enabled already 
*/
   125          int lane;                       /* lane number */
   126  
   127          /* clock tree support */
   128          struct clk *clk[NR_MCAM_CLK];
 > 129          struct clk_hw mclk_hw;
   130          struct clk *mclk;
   131  
   132          /*
   133           * Callbacks from the core to the platform code.
   134           */
   135          int (*plat_power_up) (struct mcam_camera *cam);
   136          void (*plat_power_down) (struct mcam_camera *cam);
   137          void (*calc_dphy) (struct mcam_camera *cam);
   138  
   139          /*
   140           * Everything below here is private to the mcam core and
   141           * should not be touched by the platform code.
   142           */
   143          struct v4l2_device v4l2_dev;
   144          struct v4l2_ctrl_handler ctrl_handler;
   145          enum mcam_state state;
   146          unsigned long flags;            /* Buffer status, mainly 
(dev_lock) */
   147  
   148          struct mcam_frame_state frame_state;    /* Frame state counter 
*/
   149          /*
   150           * Subsystem structures.
   151           */
   152          struct video_device vdev;
   153          struct v4l2_async_notifier notifier;
   154          struct v4l2_async_subdev asd;
   155          struct v4l2_subdev *sensor;
   156  
   157          /* Videobuf2 stuff */
   158          struct vb2_queue vb_queue;
   159          struct list_head buffers;       /* Available frames */
   160  
   161          unsigned int nbufs;             /* How many are alloc'd */
   162          int next_buf;                   /* Next to consume (dev_lock) */
   163  
   164          char bus_info[32];              /* querycap bus_info */
   165  
   166          /* DMA buffers - vmalloc mode */
   167  #ifdef MCAM_MODE_VMALLOC
   168          unsigned int dma_buf_size;      /* allocated size */
   169          void *dma_bufs[MAX_DMA_BUFS];   /* Internal buffer addresses */
   170          dma_addr_t dma_handles[MAX_DMA_BUFS]; /* Buffer bus addresses */
   171          struct tasklet_struct s_tasklet;
   172  #endif
   173          unsigned int sequence;          /* Frame sequence number */
   174          unsigned int buf_seq[MAX_DMA_BUFS]; /* Sequence for individual 
bufs */
   175  
   176          /* DMA buffers - DMA modes */
   177          struct mcam_vb_buffer *vb_bufs[MAX_DMA_BUFS];
   178  
   179          /* Mode-specific ops, set at open time */
   180          void (*dma_setup)(struct mcam_camera *cam);
   181          void (*frame_complete)(struct mcam_camera *cam, int frame);
   182  
   183          /* Current operating parameters */
   184          struct v4l2_pix_format pix_format;
   185          u32 mbus_code;
   186  
   187          /* Locks */
   188          struct mutex s_mutex; /* Access to this structure */
   189  };
   190  
   191  

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