CC: [email protected]
CC: [email protected]
CC: [email protected]
TO: Sakari Ailus <[email protected]>
CC: Mauro Carvalho Chehab <[email protected]>
CC: [email protected]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   923dcc5eb0c111eccd51cc7ce1658537e3c38b25
commit: b24cc2a18c50e4e315abc76a86b26b4c49652f79 media: smiapp: Rename as "ccs"
date:   12 months ago
:::::: branch date: 14 hours ago
:::::: commit date: 12 months ago
config: x86_64-randconfig-c007-20211119 (attached as .config)
reproduce (this is a W=1 build):
        wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
        chmod +x ~/bin/make.cross
        # 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b24cc2a18c50e4e315abc76a86b26b4c49652f79
        git remote add linus 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout b24cc2a18c50e4e315abc76a86b26b4c49652f79
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 
clang-analyzer 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>


clang-analyzer warnings: (new ones prefixed by >>)
                      ^
   drivers/nvdimm/security.c:530:9: note: Taking false branch
           } else if (i == OP_DISABLE) {
                  ^
   drivers/nvdimm/security.c:533:13: note: 'i' is not equal to OP_UPDATE
           } else if (i == OP_UPDATE || i == OP_MASTER_UPDATE) {
                      ^
   drivers/nvdimm/security.c:533:13: note: Left side of '||' is false
   drivers/nvdimm/security.c:533:31: note: 'i' is not equal to OP_MASTER_UPDATE
           } else if (i == OP_UPDATE || i == OP_MASTER_UPDATE) {
                                        ^
   drivers/nvdimm/security.c:533:9: note: Taking false branch
           } else if (i == OP_UPDATE || i == OP_MASTER_UPDATE) {
                  ^
   drivers/nvdimm/security.c:537:13: note: 'i' is equal to OP_ERASE
           } else if (i == OP_ERASE || i == OP_MASTER_ERASE) {
                      ^
   drivers/nvdimm/security.c:537:27: note: Left side of '||' is true
           } else if (i == OP_ERASE || i == OP_MASTER_ERASE) {
                                    ^
   drivers/nvdimm/security.c:538:3: note: Taking false branch
                   dev_dbg(dev, "%s %u\n", ops[i].name, key);
                   ^
   include/linux/dev_printk.h:130:2: note: expanded from macro 'dev_dbg'
           if (0)                                                          \
           ^
   drivers/nvdimm/security.c:539:7: note: Assuming the condition is false
                   if (atomic_read(&nvdimm->busy)) {
                       ^
   include/asm-generic/atomic-instrumented.h:30:21: note: expanded from macro 
'atomic_read'
   #define atomic_read atomic_read
                       ^
   drivers/nvdimm/security.c:539:3: note: Taking false branch
                   if (atomic_read(&nvdimm->busy)) {
                   ^
   drivers/nvdimm/security.c:543:36: note: 'i' is equal to OP_ERASE
                   rc = security_erase(nvdimm, key, i == OP_ERASE
                                                    ^
   drivers/nvdimm/security.c:543:36: note: '?' condition is true
   drivers/nvdimm/security.c:543:8: note: 2nd function call argument is an 
uninitialized value
                   rc = security_erase(nvdimm, key, i == OP_ERASE
                        ^                      ~~~
   Suppressed 6 warnings (5 in non-user code, 1 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   5 warnings generated.
   Suppressed 5 warnings (5 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   5 warnings generated.
   drivers/i3c/device.c:221:10: warning: The left operand of '&' is a garbage 
value [clang-analyzer-core.UndefinedBinaryOperatorResult]
           manuf = I3C_PID_MANUF_ID(devinfo.pid);
                   ^
   include/linux/i3c/device.h:79:40: note: expanded from macro 
'I3C_PID_MANUF_ID'
   #define I3C_PID_MANUF_ID(pid)           (((pid) & GENMASK_ULL(47, 33)) >> 33)
                                              ~~~  ^
   drivers/i3c/device.c:219:2: note: Calling 'i3c_device_get_info'
           i3c_device_get_info(i3cdev, &devinfo);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/i3c/device.c:64:7: note: 'info' is non-null
           if (!info)
                ^~~~
   drivers/i3c/device.c:64:2: note: Taking false branch
           if (!info)
           ^
   drivers/i3c/device.c:68:6: note: Assuming field 'desc' is null
           if (dev->desc)
               ^~~~~~~~~
   drivers/i3c/device.c:68:2: note: Taking false branch
           if (dev->desc)
           ^
   drivers/i3c/device.c:71:1: note: Returning without writing to '->pid'
   }
   ^
   drivers/i3c/device.c:219:2: note: Returning from 'i3c_device_get_info'
           i3c_device_get_info(i3cdev, &devinfo);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/i3c/device.c:221:10: note: The left operand of '&' is a garbage value
           manuf = I3C_PID_MANUF_ID(devinfo.pid);
                   ^
   include/linux/i3c/device.h:79:40: note: expanded from macro 
'I3C_PID_MANUF_ID'
   #define I3C_PID_MANUF_ID(pid)           (((pid) & GENMASK_ULL(47, 33)) >> 33)
                                              ~~~  ^
   Suppressed 4 warnings (4 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   5 warnings generated.
   drivers/i3c/master.c:555:32: warning: Value stored to 'master' during its 
initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct i3c_master_controller *master = i3c_bus_to_i3c_master(i3cbus);
                                         ^~~~~~   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/i3c/master.c:555:32: note: Value stored to 'master' during its 
initialization is never read
           struct i3c_master_controller *master = i3c_bus_to_i3c_master(i3cbus);
                                         ^~~~~~   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Suppressed 4 warnings (4 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   5 warnings generated.
   drivers/i3c/master/i3c-master-cdns.c:1245:2: warning: Value stored to 
'prescl1' is never read [clang-analyzer-deadcode.DeadStores]
           prescl1 = PRESCL_CTRL1_OD_LOW(low);
           ^
   drivers/i3c/master/i3c-master-cdns.c:1245:2: note: Value stored to 'prescl1' 
is never read
   Suppressed 4 warnings (4 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   25 warnings generated.
>> drivers/media/i2c/ccs/ccs-core.c:105:21: warning: Value stored to 'client' 
>> during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct i2c_client *client = v4l2_get_subdevdata(&sensor->src->sd);
                              ^~~~~~   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/media/i2c/ccs/ccs-core.c:105:21: note: Value stored to 'client' 
during its initialization is never read
           struct i2c_client *client = v4l2_get_subdevdata(&sensor->src->sd);
                              ^~~~~~   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/media/i2c/ccs/ccs-core.c:230:21: warning: Value stored to 'client' 
during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct i2c_client *client = v4l2_get_subdevdata(&sensor->src->sd);
                              ^~~~~~   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/media/i2c/ccs/ccs-core.c:230:21: note: Value stored to 'client' 
during its initialization is never read
           struct i2c_client *client = v4l2_get_subdevdata(&sensor->src->sd);
                              ^~~~~~   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/media/i2c/ccs/ccs-core.c:288:4: warning: Value stored to 'which' is 
>> never read [clang-analyzer-deadcode.DeadStores]
                           which = "columns";
                           ^       ~~~~~~~~~
   drivers/media/i2c/ccs/ccs-core.c:288:4: note: Value stored to 'which' is 
never read
                           which = "columns";
                           ^       ~~~~~~~~~
   drivers/media/i2c/ccs/ccs-core.c:290:4: warning: Value stored to 'which' is 
never read [clang-analyzer-deadcode.DeadStores]
                           which = "rows";
                           ^       ~~~~~~
   drivers/media/i2c/ccs/ccs-core.c:290:4: note: Value stored to 'which' is 
never read
                           which = "rows";
                           ^       ~~~~~~
>> drivers/media/i2c/ccs/ccs-core.c:294:4: warning: Value stored to 'what' is 
>> never read [clang-analyzer-deadcode.DeadStores]
                           what = "embedded";
                           ^      ~~~~~~~~~~
   drivers/media/i2c/ccs/ccs-core.c:294:4: note: Value stored to 'what' is 
never read
                           what = "embedded";
                           ^      ~~~~~~~~~~
   drivers/media/i2c/ccs/ccs-core.c:297:4: warning: Value stored to 'what' is 
never read [clang-analyzer-deadcode.DeadStores]
                           what = "dummy";
                           ^      ~~~~~~~
   drivers/media/i2c/ccs/ccs-core.c:297:4: note: Value stored to 'what' is 
never read
                           what = "dummy";
                           ^      ~~~~~~~
   drivers/media/i2c/ccs/ccs-core.c:300:4: warning: Value stored to 'what' is 
never read [clang-analyzer-deadcode.DeadStores]
                           what = "black";
                           ^      ~~~~~~~
   drivers/media/i2c/ccs/ccs-core.c:300:4: note: Value stored to 'what' is 
never read
                           what = "black";
                           ^      ~~~~~~~
   drivers/media/i2c/ccs/ccs-core.c:303:4: warning: Value stored to 'what' is 
never read [clang-analyzer-deadcode.DeadStores]
                           what = "dark";
                           ^      ~~~~~~
   drivers/media/i2c/ccs/ccs-core.c:303:4: note: Value stored to 'what' is 
never read
                           what = "dark";
                           ^      ~~~~~~
   drivers/media/i2c/ccs/ccs-core.c:306:4: warning: Value stored to 'what' is 
never read [clang-analyzer-deadcode.DeadStores]
                           what = "visible";
                           ^      ~~~~~~~~~
   drivers/media/i2c/ccs/ccs-core.c:306:4: note: Value stored to 'what' is 
never read
                           what = "visible";
                           ^      ~~~~~~~~~
   drivers/media/i2c/ccs/ccs-core.c:309:4: warning: Value stored to 'what' is 
never read [clang-analyzer-deadcode.DeadStores]
                           what = "invalid";
                           ^      ~~~~~~~~~
   drivers/media/i2c/ccs/ccs-core.c:309:4: note: Value stored to 'what' is 
never read
                           what = "invalid";
                           ^      ~~~~~~~~~
   drivers/media/i2c/ccs/ccs-core.c:513:21: warning: Value stored to 'client' 
during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct i2c_client *client = v4l2_get_subdevdata(&sensor->src->sd);
                              ^~~~~~   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/media/i2c/ccs/ccs-core.c:513:21: note: Value stored to 'client' 
during its initialization is never read
           struct i2c_client *client = v4l2_get_subdevdata(&sensor->src->sd);
                              ^~~~~~   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/media/i2c/ccs/ccs-core.c:532:21: warning: Value stored to 'client' 
during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct i2c_client *client = v4l2_get_subdevdata(&sensor->src->sd);
                              ^~~~~~   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/media/i2c/ccs/ccs-core.c:532:21: note: Value stored to 'client' 
during its initialization is never read
           struct i2c_client *client = v4l2_get_subdevdata(&sensor->src->sd);
                              ^~~~~~   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/media/i2c/ccs/ccs-core.c:1001:21: warning: Value stored to 'client' 
during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct i2c_client *client = v4l2_get_subdevdata(&sensor->src->sd);
                              ^~~~~~   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/media/i2c/ccs/ccs-core.c:1001:21: note: Value stored to 'client' 
during its initialization is never read
           struct i2c_client *client = v4l2_get_subdevdata(&sensor->src->sd);
                              ^~~~~~   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/media/i2c/ccs/ccs-core.c:1797:23: warning: Dereference of undefined 
pointer value [clang-analyzer-core.NullDereference]
                   *crops[CCS_PAD_SRC] = *comp;
                                       ^
   drivers/media/i2c/ccs/ccs-core.c:2319:30: note: Left side of '&&' is false
           struct ccs_sensor *sensor = to_ccs_sensor(subdev);
                                       ^
   drivers/media/i2c/ccs/ccs.h:276:3: note: expanded from macro 'to_ccs_sensor'
           (to_ccs_subdev(_sd)->sensor)
            ^
   drivers/media/i2c/ccs/ccs.h:273:2: note: expanded from macro 'to_ccs_subdev'
           container_of(_sd, struct ccs_subdev, sd)
           ^
   include/linux/kernel.h:853:61: note: expanded from macro 'container_of'
           BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) &&   \
                                                                      ^
   drivers/media/i2c/ccs/ccs-core.c:2319:30: note: Taking false branch
           struct ccs_sensor *sensor = to_ccs_sensor(subdev);
                                       ^
   drivers/media/i2c/ccs/ccs.h:276:3: note: expanded from macro 'to_ccs_sensor'
           (to_ccs_subdev(_sd)->sensor)
            ^
   drivers/media/i2c/ccs/ccs.h:273:2: note: expanded from macro 'to_ccs_subdev'
           container_of(_sd, struct ccs_subdev, sd)
           ^
   include/linux/kernel.h:853:2: note: expanded from macro 'container_of'
           BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) &&   \
           ^
   note: (skipping 1 expansions in backtrace; use -fmacro-backtrace-limit=0 to 
see all)
   include/linux/compiler_types.h:315:2: note: expanded from macro 
'compiletime_assert'
           _compiletime_assert(condition, msg, __compiletime_assert_, 
__COUNTER__)
           ^
   include/linux/compiler_types.h:303:2: note: expanded from macro 
'_compiletime_assert'
           __compiletime_assert(condition, msg, prefix, suffix)
           ^
   include/linux/compiler_types.h:295:3: note: expanded from macro 
'__compiletime_assert'
                   if (!(condition))                                       \
                   ^
   drivers/media/i2c/ccs/ccs-core.c:2319:30: note: Loop condition is false.  
Exiting loop
           struct ccs_sensor *sensor = to_ccs_sensor(subdev);
                                       ^
   drivers/media/i2c/ccs/ccs.h:276:3: note: expanded from macro 'to_ccs_sensor'
           (to_ccs_subdev(_sd)->sensor)
            ^
   drivers/media/i2c/ccs/ccs.h:273:2: note: expanded from macro 'to_ccs_subdev'
           container_of(_sd, struct ccs_subdev, sd)
           ^
   include/linux/kernel.h:853:2: note: expanded from macro 'container_of'

vim +/client +105 drivers/media/i2c/ccs/ccs-core.c

ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 101  
161cc847370a92 drivers/media/i2c/smiapp/ccs-core.c      Sakari Ailus 2020-02-11 
 102  void ccs_replace_limit(struct ccs_sensor *sensor,
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 103                   unsigned int limit, unsigned int offset, u32 val)
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 104  {
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
@105    struct i2c_client *client = v4l2_get_subdevdata(&sensor->src->sd);
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 106    const struct ccs_limit *linfo;
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 107    void *ptr;
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 108    int ret;
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 109  
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 110    ret = ccs_limit_ptr(sensor, limit, offset, &ptr);
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 111    if (ret)
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 112            return;
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 113  
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 114    linfo = &ccs_limits[ccs_limit_offsets[limit].info];
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 115  
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 116    dev_dbg(&client->dev, "quirk: 0x%8.8x \"%s\" %u = %d, 0x%x\n",
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 117            linfo->reg, linfo->name, offset, val, val);
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 118  
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 119    ccs_assign_limit(ptr, ccs_reg_width(linfo->reg), val);
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 120  }
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 121  
161cc847370a92 drivers/media/i2c/smiapp/ccs-core.c      Sakari Ailus 2020-02-11 
 122  static u32 ccs_get_limit(struct ccs_sensor *sensor,
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 123                     unsigned int limit, unsigned int offset)
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 124  {
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 125    void *ptr;
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 126    int ret;
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 127  
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 128    ret = ccs_limit_ptr(sensor, limit, offset, &ptr);
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 129    if (ret)
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 130            return 0;
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 131  
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 132    switch (ccs_reg_width(ccs_limits[ccs_limit_offsets[limit].info].reg)) {
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 133    case sizeof(u8):
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 134            return *(u8 *)ptr;
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 135    case sizeof(u16):
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 136            return *(u16 *)ptr;
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 137    case sizeof(u32):
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 138            return *(u32 *)ptr;
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 139    }
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 140  
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 141    WARN_ON(1);
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 142  
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 143    return 0;
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 144  }
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 145  
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 146  #define CCS_LIM(sensor, limit) \
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 147    ccs_get_limit(sensor, CCS_L_##limit, 0)
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 148  
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 149  #define CCS_LIM_AT(sensor, limit, offset) \
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 150    ccs_get_limit(sensor, CCS_L_##limit, CCS_L_##limit##_OFFSET(offset))
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 151  
161cc847370a92 drivers/media/i2c/smiapp/ccs-core.c      Sakari Ailus 2020-02-11 
 152  static int ccs_read_all_limits(struct ccs_sensor *sensor)
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 153  {
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 154    struct i2c_client *client = v4l2_get_subdevdata(&sensor->src->sd);
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 155    void *ptr, *alloc, *end;
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 156    unsigned int i, l;
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 157    int ret;
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 158  
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 159    kfree(sensor->ccs_limits);
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 160    sensor->ccs_limits = NULL;
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 161  
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 162    alloc = kzalloc(ccs_limit_offsets[CCS_L_LAST].lim, GFP_KERNEL);
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 163    if (!alloc)
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 164            return -ENOMEM;
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 165  
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 166    end = alloc + ccs_limit_offsets[CCS_L_LAST].lim;
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 167  
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 168    for (i = 0, l = 0, ptr = alloc; ccs_limits[i].size; i++) {
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 169            u32 reg = ccs_limits[i].reg;
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 170            unsigned int width = ccs_reg_width(reg);
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 171            unsigned int j;
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 172  
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 173            if (l == CCS_L_LAST) {
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 174                    dev_err(&client->dev,
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 175                            "internal error --- end of limit array\n");
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 176                    ret = -EINVAL;
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 177                    goto out_err;
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 178            }
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 179  
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 180            for (j = 0; j < ccs_limits[i].size / width;
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 181                 j++, reg += width, ptr += width) {
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 182                    u32 val;
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 183  
47ff2ff267ee4f drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-11 
 184                    ret = ccs_read_addr(sensor, reg, &val);
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 185                    if (ret)
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 186                            goto out_err;
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 187  
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 188                    if (ptr + width > end) {
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 189                            dev_err(&client->dev,
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 190                                    "internal error --- no room for 
regs\n");
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 191                            ret = -EINVAL;
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 192                            goto out_err;
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 193                    }
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 194  
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 195                    ccs_assign_limit(ptr, width, val);
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 196  
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 197                    dev_dbg(&client->dev, "0x%8.8x \"%s\" = %u, 0x%x\n",
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 198                            reg, ccs_limits[i].name, val, val);
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 199            }
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 200  
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 201            if (ccs_limits[i].flags & CCS_L_FL_SAME_REG)
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 202                    continue;
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 203  
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 204            l++;
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 205            ptr = alloc + ccs_limit_offsets[l].lim;
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 206    }
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 207  
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 208    if (l != CCS_L_LAST) {
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 209            dev_err(&client->dev,
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 210                    "internal error --- insufficient limits\n");
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 211            ret = -EINVAL;
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 212            goto out_err;
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 213    }
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 214  
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 215    sensor->ccs_limits = alloc;
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 216  
3e158e1f1ec2ac drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-10 
 217    if (CCS_LIM(sensor, SCALER_N_MIN) < 16)
3e158e1f1ec2ac drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-10 
 218            ccs_replace_limit(sensor, CCS_L_SCALER_N_MIN, 0, 16);
3e158e1f1ec2ac drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-10 
 219  
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 220    return 0;
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 221  
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 222  out_err:
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 223    kfree(alloc);
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 224  
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 225    return ret;
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 226  }
ca296a11156a00 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-06 
 227  
161cc847370a92 drivers/media/i2c/smiapp/ccs-core.c      Sakari Ailus 2020-02-11 
 228  static int ccs_read_frame_fmt(struct ccs_sensor *sensor)
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 229  {
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 230    struct i2c_client *client = v4l2_get_subdevdata(&sensor->src->sd);
fd9065812c7b45 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-10 
 231    u8 fmt_model_type, fmt_model_subtype, ncol_desc, nrow_desc;
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 232    unsigned int i;
3fc34b7beb8947 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2016-09-05 
 233    int pixel_count = 0;
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 234    int line_count = 0;
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 235  
fd9065812c7b45 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-10 
 236    fmt_model_type = CCS_LIM(sensor, FRAME_FORMAT_MODEL_TYPE);
fd9065812c7b45 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-10 
 237    fmt_model_subtype = CCS_LIM(sensor, FRAME_FORMAT_MODEL_SUBTYPE);
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 238  
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 239    ncol_desc = (fmt_model_subtype
fd9065812c7b45 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-10 
 240                 & CCS_FRAME_FORMAT_MODEL_SUBTYPE_COLUMNS_MASK)
fd9065812c7b45 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-10 
 241            >> CCS_FRAME_FORMAT_MODEL_SUBTYPE_COLUMNS_SHIFT;
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 242    nrow_desc = fmt_model_subtype
fd9065812c7b45 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-10 
 243            & CCS_FRAME_FORMAT_MODEL_SUBTYPE_ROWS_MASK;
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 244  
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 245    dev_dbg(&client->dev, "format_model_type %s\n",
fd9065812c7b45 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-10 
 246            fmt_model_type == CCS_FRAME_FORMAT_MODEL_TYPE_2_BYTE
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 247            ? "2 byte" :
fd9065812c7b45 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-10 
 248            fmt_model_type == CCS_FRAME_FORMAT_MODEL_TYPE_4_BYTE
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 249            ? "4 byte" : "is simply bad");
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 250  
fd9065812c7b45 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-10 
 251    dev_dbg(&client->dev, "%u column and %u row descriptors\n",
fd9065812c7b45 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-10 
 252            ncol_desc, nrow_desc);
fd9065812c7b45 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-10 
 253  
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 254    for (i = 0; i < ncol_desc + nrow_desc; i++) {
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 255            u32 desc;
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 256            u32 pixelcode;
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 257            u32 pixels;
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 258            char *which;
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 259            char *what;
e43665a9d7b41b drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2016-09-07 
 260            u32 reg;
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 261  
fd9065812c7b45 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-10 
 262            if (fmt_model_type == CCS_FRAME_FORMAT_MODEL_TYPE_2_BYTE) {
fd9065812c7b45 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-10 
 263                    desc = CCS_LIM_AT(sensor, FRAME_FORMAT_DESCRIPTOR, i);
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 264  
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 265                    pixelcode =
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 266                            (desc
fd9065812c7b45 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-10 
 267                             & CCS_FRAME_FORMAT_DESCRIPTOR_PCODE_MASK)
fd9065812c7b45 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-10 
 268                            >> CCS_FRAME_FORMAT_DESCRIPTOR_PCODE_SHIFT;
fd9065812c7b45 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-10 
 269                    pixels = desc & CCS_FRAME_FORMAT_DESCRIPTOR_PIXELS_MASK;
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 270            } else if (fmt_model_type
fd9065812c7b45 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-10 
 271                       == CCS_FRAME_FORMAT_MODEL_TYPE_4_BYTE) {
fd9065812c7b45 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-10 
 272                    desc = CCS_LIM_AT(sensor, FRAME_FORMAT_DESCRIPTOR_4, i);
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 273  
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 274                    pixelcode =
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 275                            (desc
fd9065812c7b45 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-10 
 276                             & CCS_FRAME_FORMAT_DESCRIPTOR_4_PCODE_MASK)
fd9065812c7b45 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-10 
 277                            >> CCS_FRAME_FORMAT_DESCRIPTOR_4_PCODE_SHIFT;
fd9065812c7b45 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-10 
 278                    pixels = desc &
fd9065812c7b45 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-10 
 279                            CCS_FRAME_FORMAT_DESCRIPTOR_4_PIXELS_MASK;
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 280            } else {
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 281                    dev_dbg(&client->dev,
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 282                            "invalid frame format model type %d\n",
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 283                            fmt_model_type);
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 284                    return -EINVAL;
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 285            }
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 286  
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 287            if (i < ncol_desc)
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
@288                    which = "columns";
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 289            else
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 290                    which = "rows";
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 291  
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 292            switch (pixelcode) {
fd9065812c7b45 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-10 
 293            case CCS_FRAME_FORMAT_DESCRIPTOR_PCODE_EMBEDDED:
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
@294                    what = "embedded";
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 295                    break;
fd9065812c7b45 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-10 
 296            case CCS_FRAME_FORMAT_DESCRIPTOR_PCODE_DUMMY_PIXEL:
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 297                    what = "dummy";
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 298                    break;
fd9065812c7b45 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-10 
 299            case CCS_FRAME_FORMAT_DESCRIPTOR_PCODE_BLACK_PIXEL:
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 300                    what = "black";
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 301                    break;
fd9065812c7b45 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-10 
 302            case CCS_FRAME_FORMAT_DESCRIPTOR_PCODE_DARK_PIXEL:
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 303                    what = "dark";
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 304                    break;
fd9065812c7b45 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-10 
 305            case CCS_FRAME_FORMAT_DESCRIPTOR_PCODE_VISIBLE_PIXEL:
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 306                    what = "visible";
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 307                    break;
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 308            default:
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 309                    what = "invalid";
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 310                    break;
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 311            }
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 312  
e43665a9d7b41b drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2016-09-07 
 313            dev_dbg(&client->dev,
e43665a9d7b41b drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2016-09-07 
 314                    "0x%8.8x %s pixels: %d %s (pixelcode %u)\n", reg,
e43665a9d7b41b drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2016-09-07 
 315                    what, pixels, which, pixelcode);
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 316  
3fc34b7beb8947 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2016-09-05 
 317            if (i < ncol_desc) {
3fc34b7beb8947 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2016-09-05 
 318                    if (pixelcode ==
fd9065812c7b45 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-10 
 319                        CCS_FRAME_FORMAT_DESCRIPTOR_PCODE_VISIBLE_PIXEL)
3fc34b7beb8947 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2016-09-05 
 320                            sensor->visible_pixel_start = pixel_count;
3fc34b7beb8947 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2016-09-05 
 321                    pixel_count += pixels;
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 322                    continue;
3fc34b7beb8947 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2016-09-05 
 323            }
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 324  
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 325            /* Handle row descriptors */
3fc34b7beb8947 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2016-09-05 
 326            switch (pixelcode) {
fd9065812c7b45 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-10 
 327            case CCS_FRAME_FORMAT_DESCRIPTOR_PCODE_EMBEDDED:
3fc34b7beb8947 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2016-09-05 
 328                    if (sensor->embedded_end)
3fc34b7beb8947 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2016-09-05 
 329                            break;
3fc34b7beb8947 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2016-09-05 
 330                    sensor->embedded_start = line_count;
3fc34b7beb8947 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2016-09-05 
 331                    sensor->embedded_end = line_count + pixels;
3fc34b7beb8947 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2016-09-05 
 332                    break;
fd9065812c7b45 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2020-02-10 
 333            case CCS_FRAME_FORMAT_DESCRIPTOR_PCODE_VISIBLE_PIXEL:
3fc34b7beb8947 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2016-09-05 
 334                    sensor->image_start = line_count;
3fc34b7beb8947 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2016-09-05 
 335                    break;
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 336            }
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 337            line_count += pixels;
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 338    }
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 339  
3fc34b7beb8947 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2016-09-05 
 340    if (sensor->embedded_end > sensor->image_start) {
3fc34b7beb8947 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2016-09-05 
 341            dev_dbg(&client->dev,
3fc34b7beb8947 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2016-09-05 
 342                    "adjusting image start line to %u (was %u)\n",
3fc34b7beb8947 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2016-09-05 
 343                    sensor->embedded_end, sensor->image_start);
3fc34b7beb8947 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2016-09-05 
 344            sensor->image_start = sensor->embedded_end;
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 345    }
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 346  
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 347    dev_dbg(&client->dev, "embedded data from lines %d to %d\n",
3fc34b7beb8947 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2016-09-05 
 348            sensor->embedded_start, sensor->embedded_end);
3fc34b7beb8947 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2016-09-05 
 349    dev_dbg(&client->dev, "image data starts at line %d\n",
3fc34b7beb8947 drivers/media/i2c/smiapp/smiapp-core.c   Sakari Ailus 2016-09-05 
 350            sensor->image_start);
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 351  
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 352    return 0;
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 353  }
ccfc97bdb5ae8b drivers/media/video/smiapp/smiapp-core.c Sakari Ailus 2012-03-03 
 354  

:::::: The code at line 105 was first introduced by commit
:::::: ca296a11156a00cc2336ba5fbcbcf2c6c41755c5 media: smiapp: Read CCS limit 
values

:::::: TO: Sakari Ailus <[email protected]>
:::::: CC: Mauro Carvalho Chehab <[email protected]>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]

Attachment: .config.gz
Description: application/gzip

_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to