lkml.org 
[lkml]   [2016]   [Apr]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 1/2] [media] atmel-isc: add the Image Sensor Controller code
    Hi Songjun,

    [auto build test ERROR on linuxtv-media/master]
    [also build test ERROR on v4.6-rc3 next-20160413]
    [if your patch is applied to the wrong git tree, please drop us a note to help improving the system]

    url: https://github.com/0day-ci/linux/commits/Songjun-Wu/atmel-isc-add-driver-for-Atmel-ISC/20160413-155337
    base: git://linuxtv.org/media_tree.git master
    config: sparc64-allmodconfig (attached as .config)
    reproduce:
    wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/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/media/platform/atmel/atmel-isc.c:67:18: error: field 'hw' has incomplete type
    struct clk_hw hw;
    ^
    In file included from include/linux/list.h:8:0,
    from include/linux/kobject.h:20,
    from include/linux/of.h:21,
    from drivers/media/platform/atmel/atmel-isc.c:27:
    drivers/media/platform/atmel/atmel-isc.c: In function 'isc_clk_enable':
    include/linux/kernel.h:824:48: warning: initialization from incompatible pointer type
    const typeof( ((type *)0)->member ) *__mptr = (ptr); \
    ^
    >> drivers/media/platform/atmel/atmel-isc.c:55:24: note: in expansion of macro 'container_of'
    #define to_isc_clk(hw) container_of(hw, struct isc_clk, hw)
    ^
    >> drivers/media/platform/atmel/atmel-isc.c:247:28: note: in expansion of macro 'to_isc_clk'
    struct isc_clk *isc_clk = to_isc_clk(hw);
    ^
    include/linux/kernel.h:824:48: warning: (near initialization for 'isc_clk')
    const typeof( ((type *)0)->member ) *__mptr = (ptr); \
    ^
    >> drivers/media/platform/atmel/atmel-isc.c:55:24: note: in expansion of macro 'container_of'
    #define to_isc_clk(hw) container_of(hw, struct isc_clk, hw)
    ^
    >> drivers/media/platform/atmel/atmel-isc.c:247:28: note: in expansion of macro 'to_isc_clk'
    struct isc_clk *isc_clk = to_isc_clk(hw);
    ^
    drivers/media/platform/atmel/atmel-isc.c: In function 'isc_clk_disable':
    include/linux/kernel.h:824:48: warning: initialization from incompatible pointer type
    const typeof( ((type *)0)->member ) *__mptr = (ptr); \
    ^
    >> drivers/media/platform/atmel/atmel-isc.c:55:24: note: in expansion of macro 'container_of'
    #define to_isc_clk(hw) container_of(hw, struct isc_clk, hw)
    ^
    drivers/media/platform/atmel/atmel-isc.c:280:28: note: in expansion of macro 'to_isc_clk'
    struct isc_clk *isc_clk = to_isc_clk(hw);
    ^
    include/linux/kernel.h:824:48: warning: (near initialization for 'isc_clk')
    const typeof( ((type *)0)->member ) *__mptr = (ptr); \
    ^
    >> drivers/media/platform/atmel/atmel-isc.c:55:24: note: in expansion of macro 'container_of'
    #define to_isc_clk(hw) container_of(hw, struct isc_clk, hw)
    ^
    drivers/media/platform/atmel/atmel-isc.c:280:28: note: in expansion of macro 'to_isc_clk'
    struct isc_clk *isc_clk = to_isc_clk(hw);
    ^
    drivers/media/platform/atmel/atmel-isc.c: In function 'isc_clk_is_enabled':
    include/linux/kernel.h:824:48: warning: initialization from incompatible pointer type
    const typeof( ((type *)0)->member ) *__mptr = (ptr); \
    ^
    >> drivers/media/platform/atmel/atmel-isc.c:55:24: note: in expansion of macro 'container_of'
    #define to_isc_clk(hw) container_of(hw, struct isc_clk, hw)
    ^
    drivers/media/platform/atmel/atmel-isc.c:295:28: note: in expansion of macro 'to_isc_clk'
    struct isc_clk *isc_clk = to_isc_clk(hw);
    ^
    include/linux/kernel.h:824:48: warning: (near initialization for 'isc_clk')
    const typeof( ((type *)0)->member ) *__mptr = (ptr); \
    ^
    >> drivers/media/platform/atmel/atmel-isc.c:55:24: note: in expansion of macro 'container_of'
    #define to_isc_clk(hw) container_of(hw, struct isc_clk, hw)
    ^
    drivers/media/platform/atmel/atmel-isc.c:295:28: note: in expansion of macro 'to_isc_clk'
    struct isc_clk *isc_clk = to_isc_clk(hw);
    ^
    drivers/media/platform/atmel/atmel-isc.c: In function 'isc_clk_recalc_rate':
    include/linux/kernel.h:824:48: warning: initialization from incompatible pointer type
    const typeof( ((type *)0)->member ) *__mptr = (ptr); \
    ^
    >> drivers/media/platform/atmel/atmel-isc.c:55:24: note: in expansion of macro 'container_of'
    #define to_isc_clk(hw) container_of(hw, struct isc_clk, hw)
    ^
    drivers/media/platform/atmel/atmel-isc.c:309:28: note: in expansion of macro 'to_isc_clk'
    struct isc_clk *isc_clk = to_isc_clk(hw);
    ^
    include/linux/kernel.h:824:48: warning: (near initialization for 'isc_clk')
    const typeof( ((type *)0)->member ) *__mptr = (ptr); \
    ^
    >> drivers/media/platform/atmel/atmel-isc.c:55:24: note: in expansion of macro 'container_of'
    #define to_isc_clk(hw) container_of(hw, struct isc_clk, hw)
    ^
    drivers/media/platform/atmel/atmel-isc.c:309:28: note: in expansion of macro 'to_isc_clk'
    struct isc_clk *isc_clk = to_isc_clk(hw);
    ^
    drivers/media/platform/atmel/atmel-isc.c: At top level:
    >> drivers/media/platform/atmel/atmel-isc.c:315:14: warning: 'struct clk_rate_request' declared inside parameter list
    struct clk_rate_request *req)
    ^
    >> drivers/media/platform/atmel/atmel-isc.c:315:14: warning: its scope is only this definition or declaration, which is probably not what you want
    drivers/media/platform/atmel/atmel-isc.c: In function 'isc_clk_determine_rate':
    >> drivers/media/platform/atmel/atmel-isc.c:324:2: error: implicit declaration of function 'clk_hw_get_num_parents' [-Werror=implicit-function-declaration]
    for (i = 0; i < clk_hw_get_num_parents(hw); i++) {
    ^
    >> drivers/media/platform/atmel/atmel-isc.c:325:3: error: implicit declaration of function 'clk_hw_get_parent_by_index' [-Werror=implicit-function-declaration]
    parent = clk_hw_get_parent_by_index(hw, i);
    ^
    >> drivers/media/platform/atmel/atmel-isc.c:325:10: warning: assignment makes pointer from integer without a cast
    parent = clk_hw_get_parent_by_index(hw, i);
    ^
    >> drivers/media/platform/atmel/atmel-isc.c:329:3: error: implicit declaration of function 'clk_hw_get_rate' [-Werror=implicit-function-declaration]
    parent_rate = clk_hw_get_rate(parent);
    ^
    In file included from include/linux/list.h:8:0,
    from include/linux/kobject.h:20,
    from include/linux/of.h:21,
    from drivers/media/platform/atmel/atmel-isc.c:27:
    >> drivers/media/platform/atmel/atmel-isc.c:335:22: error: dereferencing pointer to incomplete type
    tmp_diff = abs(req->rate - tmp_rate);
    ^
    include/linux/kernel.h:222:38: note: in definition of macro '__abs_choose_expr'
    __builtin_types_compatible_p(typeof(x), signed type) || \
    ^
    >> drivers/media/platform/atmel/atmel-isc.c:335:15: note: in expansion of macro 'abs'
    tmp_diff = abs(req->rate - tmp_rate);
    ^
    >> drivers/media/platform/atmel/atmel-isc.c:335:22: error: dereferencing pointer to incomplete type
    tmp_diff = abs(req->rate - tmp_rate);
    ^
    include/linux/kernel.h:223:38: note: in definition of macro '__abs_choose_expr'
    __builtin_types_compatible_p(typeof(x), unsigned type), \
    ^

    vim +/hw +67 drivers/media/platform/atmel/atmel-isc.c

    21 * CBC: Contrast and Brightness control
    22 * SUB: This module performs YCbCr444 to YCbCr420 chrominance subsampling
    23 * RLP: This module performs rounding, range limiting
    24 * and packing of the incoming data
    25 */
    26
    > 27 #include <linux/of.h>
    28 #include <linux/clk.h>
    29 #include <linux/clkdev.h>
    30 #include <linux/clk-provider.h>
    31 #include <linux/interrupt.h>
    32 #include <linux/module.h>
    33 #include <linux/platform_device.h>
    34 #include <linux/regmap.h>
    35 #include <linux/delay.h>
    36 #include <linux/videodev2.h>
    37
    38 #include <media/v4l2-device.h>
    39 #include <media/v4l2-ioctl.h>
    40 #include <media/v4l2-of.h>
    41 #include <media/videobuf2-dma-contig.h>
    42
    43 #include "atmel-isc-regs.h"
    44
    45 #define ATMEL_ISC_NAME "atmel_isc"
    46
    47 #define ISC_MAX_BUF_NUM VIDEO_MAX_FRAME
    48 #define ISC_MAX_SUPPORT_WIDTH 2592
    49 #define ISC_MAX_SUPPORT_HEIGHT 1944
    50
    51 #define ISC_ISPCK_SOURCE_MAX 2
    52 #define ISC_MCK_SOURCE_MAX 3
    53 #define ISC_CLK_MAX_DIV 255
    54
    > 55 #define to_isc_clk(hw) container_of(hw, struct isc_clk, hw)
    56
    57 static u32 sensor_preferred;
    58
    59 static DEFINE_SPINLOCK(isc_clk_lock);
    60
    61 enum isc_clk_id {
    62 ISC_ISPCK = 0,
    63 ISC_MCK = 1,
    64 };
    65
    66 struct isc_clk {
    > 67 struct clk_hw hw;
    68 struct clk *clk;
    69 struct regmap *regmap;
    70 spinlock_t *lock;
    71 enum isc_clk_id id;
    72 u32 div;
    73 u8 parent_id;
    74 };
    75
    76 struct isc_buffer {
    77 struct vb2_v4l2_buffer vb;
    78 struct list_head list;
    79 };
    80
    81 struct isc_subdev_entity {
    82 struct v4l2_subdev *sd;
    83 struct v4l2_async_subdev *asd;
    84 struct v4l2_async_notifier notifier;
    85
    86 u32 hsync_active;
    87 u32 vsync_active;
    88 u32 pclk_sample;
    89
    90 struct list_head list;
    91 };
    92
    93 /*
    94 * struct isc_format - ISC media bus format information
    95 * @fourcc: Fourcc code for this format
    96 * @isc_mbus_code: V4L2 media bus format code if ISC is preferred
    97 * @sd_mbus_code: V4L2 media bus format code if subdev is preferred
    98 * @bpp: Bytes per pixel (when stored in memory)
    99 * @reg_sd_bps: reg value for bits per sample if subdev is preferred
    100 * (when transferred over a bus)
    101 * @reg_isc_bps: reg value for bits per sample if ISC is preferred
    102 * (when transferred over a bus)
    103 * @pipeline: pipeline switch if ISC is preferred
    104 * @isc_support: ISC can convert raw format to this format
    105 * @sd_support: Subdev supports this format
    106 */
    107 struct isc_format {
    108 u32 fourcc;
    109 u32 isc_mbus_code;
    110 u32 sd_mbus_code;
    111
    112 u8 bpp;
    113
    114 u32 reg_sd_bps;
    115 u32 reg_isc_bps;
    116
    117 u32 reg_wb_cfg;
    118 u32 reg_cfa_cfg;
    119 u32 reg_rlp_mode;
    120 u32 reg_dcfg_imode;
    121 u32 reg_dctrl_dview;
    122
    123 u32 pipeline;
    124
    125 bool isc_support;
    126 bool sd_support;
    127 };
    128
    129 struct isc_device {
    130 struct regmap *regmap;
    131 struct clk *hclock;
    132 struct clk *ispck;
    133 struct isc_clk isc_clks[2];
    134
    135 struct device *dev;
    136 struct v4l2_device v4l2_dev;
    137 struct video_device video_dev;
    138
    139 struct vb2_queue vb2_vidq;
    140 struct vb2_alloc_ctx *alloc_ctx;
    141
    142 spinlock_t dma_queue_lock;
    143 struct list_head dma_queue;
    144 struct isc_buffer *cur_frm;
    145 unsigned int sequence;
    146 bool stop;
    147
    148 struct v4l2_format fmt;
    149
    150 struct isc_format **user_formats;
    151 int num_user_formats;
    152 const struct isc_format *current_fmt;
    153
    154 struct mutex lock;
    155
    156 struct isc_subdev_entity *current_subdev;
    157 struct list_head subdev_entities;
    158 };
    159
    160 struct reg_mask {
    161 u32 reg;
    162 u32 mask;
    163 };
    164
    165 /* WB-->CFA-->CC-->GAM-->CSC-->CBC-->SUB422-->SUB420 */
    166 const struct reg_mask pipeline_regs[] = {
    167 { ISC_WB_CTRL, ISC_WB_CTRL_MASK },
    168 { ISC_CFA_CTRL, ISC_CFA_CTRL_MASK },
    169 { ISC_CC_CTRL, ISC_CC_CTRL_MASK },
    170 { ISC_GAM_CTRL, ISC_GAM_CTRL_MASK | ISC_GAM_CTRL_ALL_CHAN_MASK },
    171 { ISC_CSC_CTRL, ISC_CSC_CTRL_MASK },
    172 { ISC_CBC_CTRL, ISC_CBC_CTRL_MASK },
    173 { ISC_SUB422_CTRL, ISC_SUB422_CTRL_MASK },
    174 { ISC_SUB420_CTRL, ISC_SUB420_CTRL_MASK }
    175 };
    176
    177 #define RAW_FMT_INDEX_START 0
    178 #define RAW_FMT_INDEX_END 11
    179 #define ISC_FMT_INDEX_START 12
    180 #define ISC_FMT_INDEX_END 12
    181
    182 /*
    183 * index(0~11): raw formats.
    184 * index(12~12): the formats which can be converted from raw format by ISC.
    185 * index(): the formats which can only be provided by subdev.
    186 */
    187 static struct isc_format isc_formats[] = {
    188 {V4L2_PIX_FMT_SBGGR8, MEDIA_BUS_FMT_SBGGR8_1X8, MEDIA_BUS_FMT_SBGGR8_1X8,
    189 1, ISC_PFE_CFG0_BPS_EIGHT, ISC_PFE_CFG0_BPS_EIGHT, ISC_WB_CFG_BAYCFG_BGBG,
    190 ISC_CFA_CFG_BAY_BGBG, ISC_RLP_CFG_MODE_DAT8, ISC_DCFG_IMODE_PACKED8,
    191 ISC_DCTRL_DVIEW_PACKED, 0x0, false, false},
    192 {V4L2_PIX_FMT_SGBRG8, MEDIA_BUS_FMT_SGBRG8_1X8, MEDIA_BUS_FMT_SGBRG8_1X8,
    193 1, ISC_PFE_CFG0_BPS_EIGHT, ISC_PFE_CFG0_BPS_EIGHT, ISC_WB_CFG_BAYCFG_GBGB,
    194 ISC_CFA_CFG_BAY_GBGB, ISC_RLP_CFG_MODE_DAT8, ISC_DCFG_IMODE_PACKED8,
    195 ISC_DCTRL_DVIEW_PACKED, 0x0, false, false},
    196 {V4L2_PIX_FMT_SGRBG8, MEDIA_BUS_FMT_SGRBG8_1X8, MEDIA_BUS_FMT_SGRBG8_1X8,
    197 1, ISC_PFE_CFG0_BPS_EIGHT, ISC_PFE_CFG0_BPS_EIGHT, ISC_WB_CFG_BAYCFG_GRGR,
    198 ISC_CFA_CFG_BAY_GRGR, ISC_RLP_CFG_MODE_DAT8, ISC_DCFG_IMODE_PACKED8,
    199 ISC_DCTRL_DVIEW_PACKED, 0x0, false, false},
    200 {V4L2_PIX_FMT_SRGGB8, MEDIA_BUS_FMT_SRGGB8_1X8, MEDIA_BUS_FMT_SRGGB8_1X8,
    201 1, ISC_PFE_CFG0_BPS_EIGHT, ISC_PFE_CFG0_BPS_EIGHT, ISC_WB_CFG_BAYCFG_RGRG,
    202 ISC_CFA_CFG_BAY_RGRG, ISC_RLP_CFG_MODE_DAT8, ISC_DCFG_IMODE_PACKED8,
    203 ISC_DCTRL_DVIEW_PACKED, 0x0, false, false},
    204
    205 {V4L2_PIX_FMT_SBGGR10, MEDIA_BUS_FMT_SBGGR10_1X10, MEDIA_BUS_FMT_SBGGR10_1X10,
    206 2, ISC_PFG_CFG0_BPS_TEN, ISC_PFG_CFG0_BPS_TEN, ISC_WB_CFG_BAYCFG_BGBG,
    207 ISC_CFA_CFG_BAY_BGBG, ISC_RLP_CFG_MODE_DAT10, ISC_DCFG_IMODE_PACKED16,
    208 ISC_DCTRL_DVIEW_PACKED, 0x0, false, false},
    209 {V4L2_PIX_FMT_SGBRG10, MEDIA_BUS_FMT_SGBRG10_1X10, MEDIA_BUS_FMT_SGBRG10_1X10,
    210 2, ISC_PFG_CFG0_BPS_TEN, ISC_PFG_CFG0_BPS_TEN, ISC_WB_CFG_BAYCFG_GBGB,
    211 ISC_CFA_CFG_BAY_GBGB, ISC_RLP_CFG_MODE_DAT10, ISC_DCFG_IMODE_PACKED16,
    212 ISC_DCTRL_DVIEW_PACKED, 0x0, false, false},
    213 {V4L2_PIX_FMT_SGRBG10, MEDIA_BUS_FMT_SGRBG10_1X10, MEDIA_BUS_FMT_SGRBG10_1X10,
    214 2, ISC_PFG_CFG0_BPS_TEN, ISC_PFG_CFG0_BPS_TEN, ISC_WB_CFG_BAYCFG_GRGR,
    215 ISC_CFA_CFG_BAY_GRGR, ISC_RLP_CFG_MODE_DAT10, ISC_DCFG_IMODE_PACKED16,
    216 ISC_DCTRL_DVIEW_PACKED, 0x0, false, false},
    217 {V4L2_PIX_FMT_SRGGB10, MEDIA_BUS_FMT_SRGGB10_1X10, MEDIA_BUS_FMT_SRGGB10_1X10,
    218 2, ISC_PFG_CFG0_BPS_TEN, ISC_PFG_CFG0_BPS_TEN, ISC_WB_CFG_BAYCFG_RGRG,
    219 ISC_CFA_CFG_BAY_RGRG, ISC_RLP_CFG_MODE_DAT10, ISC_DCFG_IMODE_PACKED16,
    220 ISC_DCTRL_DVIEW_PACKED, 0x0, false, false},
    221
    222 {V4L2_PIX_FMT_SBGGR12, MEDIA_BUS_FMT_SBGGR12_1X12, MEDIA_BUS_FMT_SBGGR12_1X12,
    223 2, ISC_PFG_CFG0_BPS_TWELVE, ISC_PFG_CFG0_BPS_TWELVE, ISC_WB_CFG_BAYCFG_BGBG,
    224 ISC_CFA_CFG_BAY_BGBG, ISC_RLP_CFG_MODE_DAT12, ISC_DCFG_IMODE_PACKED16,
    225 ISC_DCTRL_DVIEW_PACKED, 0x0, false, false},
    226 {V4L2_PIX_FMT_SGBRG12, MEDIA_BUS_FMT_SGBRG12_1X12, MEDIA_BUS_FMT_SGBRG12_1X12,
    227 2, ISC_PFG_CFG0_BPS_TWELVE, ISC_PFG_CFG0_BPS_TWELVE, ISC_WB_CFG_BAYCFG_GBGB,
    228 ISC_CFA_CFG_BAY_GBGB, ISC_RLP_CFG_MODE_DAT12, ISC_DCFG_IMODE_PACKED16,
    229 ISC_DCTRL_DVIEW_PACKED, 0x0, false, false},
    230 {V4L2_PIX_FMT_SGRBG12, MEDIA_BUS_FMT_SGRBG12_1X12, MEDIA_BUS_FMT_SGRBG12_1X12,
    231 2, ISC_PFG_CFG0_BPS_TWELVE, ISC_PFG_CFG0_BPS_TWELVE, ISC_WB_CFG_BAYCFG_GRGR,
    232 ISC_CFA_CFG_BAY_GRGR, ISC_RLP_CFG_MODE_DAT12, ISC_DCFG_IMODE_PACKED16,
    233 ISC_DCTRL_DVIEW_PACKED, 0x0, false, false},
    234 {V4L2_PIX_FMT_SRGGB12, MEDIA_BUS_FMT_SRGGB12_1X12, MEDIA_BUS_FMT_SRGGB12_1X12,
    235 2, ISC_PFG_CFG0_BPS_TWELVE, ISC_PFG_CFG0_BPS_TWELVE, ISC_WB_CFG_BAYCFG_RGRG,
    236 ISC_CFA_CFG_BAY_RGRG, ISC_RLP_CFG_MODE_DAT12, ISC_DCFG_IMODE_PACKED16,
    237 ISC_DCTRL_DVIEW_PACKED, 0x0, false, false},
    238
    239 {V4L2_PIX_FMT_YUYV, MEDIA_BUS_FMT_YUYV8_2X8, MEDIA_BUS_FMT_YUYV8_2X8,
    240 2, ISC_PFE_CFG0_BPS_EIGHT, ISC_PFE_CFG0_BPS_EIGHT, ISC_WB_CFG_BAYCFG_BGBG,
    241 ISC_CFA_CFG_BAY_BGBG, ISC_RLP_CFG_MODE_DAT8, ISC_DCFG_IMODE_PACKED8,
    242 ISC_DCTRL_DVIEW_PACKED, 0x7f, false, false},
    243 };
    244
    245 static int isc_clk_enable(struct clk_hw *hw)
    246 {
    > 247 struct isc_clk *isc_clk = to_isc_clk(hw);
    248 u32 id = isc_clk->id;
    249 struct regmap *regmap = isc_clk->regmap;
    250 unsigned long flags;

    ---
    0-DAY kernel test infrastructure Open Source Technology Center
    https://lists.01.org/pipermail/kbuild-all Intel Corporation
    [unhandled content-type:application/octet-stream]
    \
     
     \ /
      Last update: 2016-04-13 14:01    [W:4.256 / U:0.660 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site