CC: [email protected] CC: [email protected] BCC: [email protected] CC: Linux Memory Management List <[email protected]> TO: Jonathan Marek <[email protected]> CC: Mauro Carvalho Chehab <[email protected]> CC: [email protected] CC: Julian Grahsl <[email protected]> CC: Robert Foss <[email protected]> CC: "Bryan O'Donoghue" <[email protected]> CC: Hans Verkuil <[email protected]>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master head: 06aeb1495c39c86ccfaf1adadc1d2200179f16eb commit: b4436a18eedb8d93e148d009b145b4ae142e6f9d [900/9128] media: camss: add support for SM8250 camss :::::: branch date: 27 hours ago :::::: commit date: 5 weeks ago config: riscv-randconfig-c006-20220222 (https://download.01.org/0day-ci/archive/20220227/[email protected]/config) compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project d271fc04d5b97b12e6b797c6067d3c96a8d7470e) 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 # install riscv cross compiling tool for clang build # apt-get install binutils-riscv64-linux-gnu # https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=b4436a18eedb8d93e148d009b145b4ae142e6f9d git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git git fetch --no-tags linux-next master git checkout b4436a18eedb8d93e148d009b145b4ae142e6f9d # save the config file to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=riscv 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 >>) ^ mm/memblock.c:1177:9: note: Assuming 'out_end' is null if (out_end) ^~~~~~~ mm/memblock.c:1177:5: note: Taking false branch if (out_end) ^ mm/memblock.c:1179:9: note: Assuming 'out_nid' is null if (out_nid) ^~~~~~~ mm/memblock.c:1179:5: note: Taking false branch if (out_nid) ^ mm/memblock.c:1181:9: note: 'm_start' is >= 'r_start' if (m_start >= r_start) ^~~~~~~ mm/memblock.c:1181:5: note: Taking true branch if (m_start >= r_start) ^ mm/memblock.c:1185:36: note: The result of the '<<' expression is undefined *idx = (u32)idx_a | (u64)idx_b << 32; ~~~~~~~~~~~^~~~~ 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. 13 warnings generated. drivers/scsi/scsi_logging.c:75:3: warning: Value stored to 'off' is never read [clang-analyzer-deadcode.DeadStores] off += vscnprintf(logbuf + off, logbuf_len - off, fmt, args); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/scsi/scsi_logging.c:75:3: note: Value stored to 'off' is never read off += vscnprintf(logbuf + off, logbuf_len - off, fmt, args); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/scsi/scsi_logging.c:100:3: warning: Value stored to 'off' is never read [clang-analyzer-deadcode.DeadStores] off += vscnprintf(logbuf + off, logbuf_len - off, fmt, args); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/scsi/scsi_logging.c:100:3: note: Value stored to 'off' is never read off += vscnprintf(logbuf + off, logbuf_len - off, fmt, args); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/scsi/scsi_logging.c:209:3: warning: Value stored to 'off' is never read [clang-analyzer-deadcode.DeadStores] off += scnprintf(logbuf + off, logbuf_len - off, "\n"); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/scsi/scsi_logging.c:209:3: note: Value stored to 'off' is never read off += scnprintf(logbuf + off, logbuf_len - off, "\n"); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/scsi/scsi_logging.c:331:2: warning: Value stored to 'off' is never read [clang-analyzer-deadcode.DeadStores] off += scsi_format_sense_hdr(logbuf + off, logbuf_len - off, sshdr); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/scsi/scsi_logging.c:331:2: note: Value stored to 'off' is never read off += scsi_format_sense_hdr(logbuf + off, logbuf_len - off, sshdr); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/scsi/scsi_logging.c:339:2: warning: Value stored to 'off' is never read [clang-analyzer-deadcode.DeadStores] off += scsi_format_extd_sense(logbuf + off, logbuf_len - off, ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/scsi/scsi_logging.c:339:2: note: Value stored to 'off' is never read off += scsi_format_extd_sense(logbuf + off, logbuf_len - off, ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/scsi/scsi_logging.c:435:2: warning: Value stored to 'off' is never read [clang-analyzer-deadcode.DeadStores] off += scnprintf(logbuf + off, logbuf_len - off, ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/scsi/scsi_logging.c:435:2: note: Value stored to 'off' is never read off += scnprintf(logbuf + off, logbuf_len - off, ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Suppressed 7 warnings (7 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. 7 warnings generated. Suppressed 7 warnings (7 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. 6 warnings generated. Suppressed 6 warnings (6 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. 6 warnings generated. Suppressed 6 warnings (6 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. 7 warnings generated. drivers/mfd/tps65010.c:650:5: warning: Value stored to 'status' is never read [clang-analyzer-deadcode.DeadStores] status = 0; ^ ~ drivers/mfd/tps65010.c:650:5: note: Value stored to 'status' is never read status = 0; ^ ~ Suppressed 6 warnings (6 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. 6 warnings generated. Suppressed 6 warnings (6 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. 6 warnings generated. Suppressed 6 warnings (6 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. 7 warnings generated. Suppressed 7 warnings (7 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. 6 warnings generated. Suppressed 6 warnings (6 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. 6 warnings generated. Suppressed 6 warnings (6 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. 6 warnings generated. Suppressed 6 warnings (6 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. 10 warnings generated. >> drivers/media/platform/qcom/camss/camss-csid-gen2.c:407:3: warning: Value >> stored to 'val' is never read [clang-analyzer-deadcode.DeadStores] val = 0; ^ ~ drivers/media/platform/qcom/camss/camss-csid-gen2.c:407:3: note: Value stored to 'val' is never read val = 0; ^ ~ >> drivers/media/platform/qcom/camss/camss-csid-gen2.c:484:2: warning: Value >> stored to 'hw_gen' is never read [clang-analyzer-deadcode.DeadStores] hw_gen = (hw_version >> HW_VERSION_GENERATION) & 0xF; ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/media/platform/qcom/camss/camss-csid-gen2.c:484:2: note: Value stored to 'hw_gen' is never read hw_gen = (hw_version >> HW_VERSION_GENERATION) & 0xF; ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/media/platform/qcom/camss/camss-csid-gen2.c:485:2: warning: Value >> stored to 'hw_rev' is never read [clang-analyzer-deadcode.DeadStores] hw_rev = (hw_version >> HW_VERSION_REVISION) & 0xFFF; ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/media/platform/qcom/camss/camss-csid-gen2.c:485:2: note: Value stored to 'hw_rev' is never read hw_rev = (hw_version >> HW_VERSION_REVISION) & 0xFFF; ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/media/platform/qcom/camss/camss-csid-gen2.c:486:2: warning: Value >> stored to 'hw_step' is never read [clang-analyzer-deadcode.DeadStores] hw_step = (hw_version >> HW_VERSION_STEPPING) & 0xFFFF; ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/media/platform/qcom/camss/camss-csid-gen2.c:486:2: note: Value stored to 'hw_step' is never read hw_step = (hw_version >> HW_VERSION_STEPPING) & 0xFFFF; ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Suppressed 6 warnings (6 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. 7 warnings generated. drivers/vfio/pci/vfio_pci_intrs.c:301:6: warning: Use of memory after it is freed [clang-analyzer-unix.Malloc] if (vdev->ctx[vector].trigger) { ^ drivers/vfio/pci/vfio_pci_intrs.c:646:2: note: Control jumps to 'case VFIO_PCI_MSI_IRQ_INDEX:' at line 660 switch (index) { ^ drivers/vfio/pci/vfio_pci_intrs.c:662:3: note: Control jumps to 'case 32:' at line 667 switch (flags & VFIO_IRQ_SET_ACTION_TYPE_MASK) { ^ drivers/vfio/pci/vfio_pci_intrs.c:669:4: note: Execution continues on line 671 break; ^ drivers/vfio/pci/vfio_pci_intrs.c:671:3: note: Execution continues on line 689 break; ^ drivers/vfio/pci/vfio_pci_intrs.c:689:7: note: 'func' is non-null if (!func) ^~~~ drivers/vfio/pci/vfio_pci_intrs.c:689:2: note: Taking false branch if (!func) ^ drivers/vfio/pci/vfio_pci_intrs.c:692:9: note: Calling 'vfio_pci_set_msi_trigger' return func(vdev, index, start, count, flags, data); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/vfio/pci/vfio_pci_intrs.c:515:15: note: 'index' is not equal to VFIO_PCI_MSIX_IRQ_INDEX bool msix = (index == VFIO_PCI_MSIX_IRQ_INDEX) ? true : false; ^~~~~ drivers/vfio/pci/vfio_pci_intrs.c:515:14: note: '?' condition is false bool msix = (index == VFIO_PCI_MSIX_IRQ_INDEX) ? true : false; ^ drivers/vfio/pci/vfio_pci_intrs.c:517:13: note: Assuming 'index' is not equal to field 'irq_type' if (irq_is(vdev, index) && !count && (flags & VFIO_IRQ_SET_DATA_NONE)) { ^ include/linux/vfio_pci_core.h:146:29: note: expanded from macro 'irq_is' #define irq_is(vdev, type) (vdev->irq_type == type) ^~~~~~~~~~~~~~~~~~~~~~ drivers/vfio/pci/vfio_pci_intrs.c:517:26: note: Left side of '&&' is false if (irq_is(vdev, index) && !count && (flags & VFIO_IRQ_SET_DATA_NONE)) { ^ drivers/vfio/pci/vfio_pci_intrs.c:522:21: note: 'index' is not equal to field 'irq_type' if (!(irq_is(vdev, index) || is_irq_none(vdev))) ^ include/linux/vfio_pci_core.h:146:47: note: expanded from macro 'irq_is' #define irq_is(vdev, type) (vdev->irq_type == type) ^~~~ drivers/vfio/pci/vfio_pci_intrs.c:522:8: note: Left side of '||' is false if (!(irq_is(vdev, index) || is_irq_none(vdev))) ^ include/linux/vfio_pci_core.h:146:28: note: expanded from macro 'irq_is' #define irq_is(vdev, type) (vdev->irq_type == type) ^ drivers/vfio/pci/vfio_pci_intrs.c:522:43: note: Assuming field 'irq_type' is not equal to VFIO_PCI_INTX_IRQ_INDEX if (!(irq_is(vdev, index) || is_irq_none(vdev))) ^ include/linux/vfio_pci_core.h:145:38: note: expanded from macro 'is_irq_none' #define is_irq_none(vdev) (!(is_intx(vdev) || is_msi(vdev) || is_msix(vdev))) ~~~~~~~~^~~~~ include/linux/vfio_pci_core.h:142:24: note: expanded from macro 'is_intx' #define is_intx(vdev) (vdev->irq_type == VFIO_PCI_INTX_IRQ_INDEX) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/vfio/pci/vfio_pci_intrs.c:522:31: note: Left side of '||' is false if (!(irq_is(vdev, index) || is_irq_none(vdev))) ^ include/linux/vfio_pci_core.h:145:30: note: expanded from macro 'is_irq_none' #define is_irq_none(vdev) (!(is_intx(vdev) || is_msi(vdev) || is_msix(vdev))) ^ include/linux/vfio_pci_core.h:142:23: note: expanded from macro 'is_intx' #define is_intx(vdev) (vdev->irq_type == VFIO_PCI_INTX_IRQ_INDEX) ^ drivers/vfio/pci/vfio_pci_intrs.c:522:31: note: Field 'irq_type' is not equal to VFIO_PCI_MSI_IRQ_INDEX if (!(irq_is(vdev, index) || is_irq_none(vdev))) ^ include/linux/vfio_pci_core.h:145:47: note: expanded from macro 'is_irq_none' #define is_irq_none(vdev) (!(is_intx(vdev) || is_msi(vdev) || is_msix(vdev))) ^ include/linux/vfio_pci_core.h:143:29: note: expanded from macro 'is_msi' #define is_msi(vdev) (vdev->irq_type == VFIO_PCI_MSI_IRQ_INDEX) ^ drivers/vfio/pci/vfio_pci_intrs.c:522:31: note: Left side of '||' is false if (!(irq_is(vdev, index) || is_irq_none(vdev))) ^ include/linux/vfio_pci_core.h:145:30: note: expanded from macro 'is_irq_none' #define is_irq_none(vdev) (!(is_intx(vdev) || is_msi(vdev) || is_msix(vdev))) ^ include/linux/vfio_pci_core.h:142:23: note: expanded from macro 'is_intx' #define is_intx(vdev) (vdev->irq_type == VFIO_PCI_INTX_IRQ_INDEX) ^ drivers/vfio/pci/vfio_pci_intrs.c:522:43: note: Assuming field 'irq_type' is not equal to VFIO_PCI_MSIX_IRQ_INDEX if (!(irq_is(vdev, index) || is_irq_none(vdev))) ^ include/linux/vfio_pci_core.h:145:71: note: expanded from macro 'is_irq_none' #define is_irq_none(vdev) (!(is_intx(vdev) || is_msi(vdev) || is_msix(vdev))) vim +/val +407 drivers/media/platform/qcom/camss/camss-csid-gen2.c eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 336 eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 337 static void csid_configure_stream(struct csid_device *csid, u8 enable) eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 338 { eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 339 struct csid_testgen_config *tg = &csid->testgen; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 340 u32 val; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 341 u32 phy_sel = 0; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 342 u8 lane_cnt = csid->phy.lane_cnt; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 343 struct v4l2_mbus_framefmt *input_format = &csid->fmt[MSM_CSID_PAD_SRC]; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 344 const struct csid_format *format = csid_get_fmt_entry(csid->formats, csid->nformats, eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 345 input_format->code); eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 346 eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 347 if (!lane_cnt) eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 348 lane_cnt = 4; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 349 eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 350 if (!tg->enabled) eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 351 phy_sel = csid->phy.csiphy_id; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 352 eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 353 if (enable) { eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 354 u8 vc = 0; /* Virtual Channel 0 */ eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 355 u8 dt_id = vc * 4; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 356 eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 357 if (tg->enabled) { eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 358 /* Config Test Generator */ eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 359 vc = 0xa; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 360 eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 361 /* configure one DT, infinite frames */ eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 362 val = vc << TPG_VC_CFG0_VC_NUM; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 363 val |= INTELEAVING_MODE_ONE_SHOT << TPG_VC_CFG0_LINE_INTERLEAVING_MODE; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 364 val |= 0 << TPG_VC_CFG0_NUM_FRAMES; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 365 writel_relaxed(val, csid->base + CSID_TPG_VC_CFG0); eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 366 eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 367 val = 0x740 << TPG_VC_CFG1_H_BLANKING_COUNT; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 368 val |= 0x3ff << TPG_VC_CFG1_V_BLANKING_COUNT; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 369 writel_relaxed(val, csid->base + CSID_TPG_VC_CFG1); eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 370 eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 371 writel_relaxed(0x12345678, csid->base + CSID_TPG_LFSR_SEED); eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 372 eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 373 val = input_format->height & 0x1fff << TPG_DT_n_CFG_0_FRAME_HEIGHT; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 374 val |= input_format->width & 0x1fff << TPG_DT_n_CFG_0_FRAME_WIDTH; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 375 writel_relaxed(val, csid->base + CSID_TPG_DT_n_CFG_0(0)); eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 376 14d510e040f85f drivers/media/platform/qcom/camss/camss-csid-170.c Jonathan Marek 2021-12-22 377 val = format->data_type << TPG_DT_n_CFG_1_DATA_TYPE; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 378 writel_relaxed(val, csid->base + CSID_TPG_DT_n_CFG_1(0)); eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 379 eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 380 val = tg->mode << TPG_DT_n_CFG_2_PAYLOAD_MODE; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 381 val |= 0xBE << TPG_DT_n_CFG_2_USER_SPECIFIED_PAYLOAD; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 382 val |= format->decode_format << TPG_DT_n_CFG_2_ENCODE_FORMAT; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 383 writel_relaxed(val, csid->base + CSID_TPG_DT_n_CFG_2(0)); eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 384 eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 385 writel_relaxed(0, csid->base + CSID_TPG_COLOR_BARS_CFG); eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 386 eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 387 writel_relaxed(0, csid->base + CSID_TPG_COLOR_BOX_CFG); eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 388 } eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 389 eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 390 val = 1 << RDI_CFG0_BYTE_CNTR_EN; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 391 val |= 1 << RDI_CFG0_FORMAT_MEASURE_EN; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 392 val |= 1 << RDI_CFG0_TIMESTAMP_EN; 14d510e040f85f drivers/media/platform/qcom/camss/camss-csid-170.c Jonathan Marek 2021-12-22 393 /* note: for non-RDI path, this should be format->decode_format */ eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 394 val |= DECODE_FORMAT_PAYLOAD_ONLY << RDI_CFG0_DECODE_FORMAT; 14d510e040f85f drivers/media/platform/qcom/camss/camss-csid-170.c Jonathan Marek 2021-12-22 395 val |= format->data_type << RDI_CFG0_DATA_TYPE; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 396 val |= vc << RDI_CFG0_VIRTUAL_CHANNEL; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 397 val |= dt_id << RDI_CFG0_DT_ID; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 398 writel_relaxed(val, csid->base + CSID_RDI_CFG0(0)); eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 399 eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 400 /* CSID_TIMESTAMP_STB_POST_IRQ */ eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 401 val = 2 << RDI_CFG1_TIMESTAMP_STB_SEL; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 402 writel_relaxed(val, csid->base + CSID_RDI_CFG1(0)); eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 403 eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 404 val = 1; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 405 writel_relaxed(val, csid->base + CSID_RDI_FRM_DROP_PERIOD(0)); eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 406 eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 @407 val = 0; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 408 writel_relaxed(0, csid->base + CSID_RDI_FRM_DROP_PATTERN(0)); eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 409 eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 410 val = 1; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 411 writel_relaxed(val, csid->base + CSID_RDI_IRQ_SUBSAMPLE_PERIOD(0)); eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 412 eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 413 val = 0; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 414 writel_relaxed(val, csid->base + CSID_RDI_IRQ_SUBSAMPLE_PATTERN(0)); eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 415 eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 416 val = 1; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 417 writel_relaxed(val, csid->base + CSID_RDI_RPP_PIX_DROP_PERIOD(0)); eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 418 eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 419 val = 0; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 420 writel_relaxed(val, csid->base + CSID_RDI_RPP_PIX_DROP_PATTERN(0)); eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 421 eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 422 val = 1; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 423 writel_relaxed(val, csid->base + CSID_RDI_RPP_LINE_DROP_PERIOD(0)); eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 424 eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 425 val = 0; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 426 writel_relaxed(val, csid->base + CSID_RDI_RPP_LINE_DROP_PATTERN(0)); eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 427 eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 428 val = 0; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 429 writel_relaxed(val, csid->base + CSID_RDI_CTRL(0)); eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 430 eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 431 val = readl_relaxed(csid->base + CSID_RDI_CFG0(0)); eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 432 val |= 1 << RDI_CFG0_ENABLE; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 433 writel_relaxed(val, csid->base + CSID_RDI_CFG0(0)); eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 434 } eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 435 eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 436 if (tg->enabled) { eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 437 val = enable << TPG_CTRL_TEST_EN; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 438 val |= 1 << TPG_CTRL_FS_PKT_EN; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 439 val |= 1 << TPG_CTRL_FE_PKT_EN; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 440 val |= (lane_cnt - 1) << TPG_CTRL_NUM_ACTIVE_LANES; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 441 val |= 0x64 << TPG_CTRL_CYCLES_BETWEEN_PKTS; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 442 val |= 0xA << TPG_CTRL_NUM_TRAIL_BYTES; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 443 writel_relaxed(val, csid->base + CSID_TPG_CTRL); eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 444 } eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 445 eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 446 val = (lane_cnt - 1) << CSI2_RX_CFG0_NUM_ACTIVE_LANES; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 447 val |= csid->phy.lane_assign << CSI2_RX_CFG0_DL0_INPUT_SEL; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 448 val |= phy_sel << CSI2_RX_CFG0_PHY_NUM_SEL; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 449 writel_relaxed(val, csid->base + CSID_CSI2_RX_CFG0); eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 450 eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 451 val = 1 << CSI2_RX_CFG1_PACKET_ECC_CORRECTION_EN; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 452 val |= 1 << CSI2_RX_CFG1_MISR_EN; 7d8210851cb3db drivers/media/platform/qcom/camss/camss-csid-170.c Jonathan Marek 2021-12-22 453 writel_relaxed(val, csid->base + CSID_CSI2_RX_CFG1); eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 454 ee780cd7be3b56 drivers/media/platform/qcom/camss/camss-csid-170.c Jonathan Marek 2021-12-22 455 if (enable) ee780cd7be3b56 drivers/media/platform/qcom/camss/camss-csid-170.c Jonathan Marek 2021-12-22 456 val = HALT_CMD_RESUME_AT_FRAME_BOUNDARY << RDI_CTRL_HALT_CMD; ee780cd7be3b56 drivers/media/platform/qcom/camss/camss-csid-170.c Jonathan Marek 2021-12-22 457 else ee780cd7be3b56 drivers/media/platform/qcom/camss/camss-csid-170.c Jonathan Marek 2021-12-22 458 val = HALT_CMD_HALT_AT_FRAME_BOUNDARY << RDI_CTRL_HALT_CMD; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 459 writel_relaxed(val, csid->base + CSID_RDI_CTRL(0)); eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 460 } eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 461 eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 462 static int csid_configure_testgen_pattern(struct csid_device *csid, s32 val) eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 463 { eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 464 if (val > 0 && val <= csid->testgen.nmodes) eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 465 csid->testgen.mode = val; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 466 eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 467 return 0; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 468 } eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 469 eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 470 /* eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 471 * csid_hw_version - CSID hardware version query eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 472 * @csid: CSID device eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 473 * eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 474 * Return HW version or error eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 475 */ eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 476 static u32 csid_hw_version(struct csid_device *csid) eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 477 { eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 478 u32 hw_version; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 479 u32 hw_gen; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 480 u32 hw_rev; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 481 u32 hw_step; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 482 eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 483 hw_version = readl_relaxed(csid->base + CSID_HW_VERSION); eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 @484 hw_gen = (hw_version >> HW_VERSION_GENERATION) & 0xF; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 @485 hw_rev = (hw_version >> HW_VERSION_REVISION) & 0xFFF; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 @486 hw_step = (hw_version >> HW_VERSION_STEPPING) & 0xFFFF; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 487 dev_dbg(csid->camss->dev, "CSID HW Version = %u.%u.%u\n", eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 488 hw_gen, hw_rev, hw_step); eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 489 eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 490 return hw_version; eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 491 } eebe6d00e9bf12 drivers/media/platform/qcom/camss/camss-csid-170.c Robert Foss 2021-03-16 492 :::::: The code at line 407 was first introduced by commit :::::: eebe6d00e9bf1216fb381b64146e1b7e50d90b3f media: camss: Add support for CSID hardware version Titan 170 :::::: TO: Robert Foss <[email protected]> :::::: CC: Mauro Carvalho Chehab <[email protected]> --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/[email protected] _______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
