Re: [PATCH 11/11] [media] marvell-ccic: provide a clock for the sensor

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux