From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: drivers/dma/mediatek/mtk-hsdma.c:451:17: sparse: sparse: incorrect type in assignment (different base types)
Date: Tue, 07 Jul 2020 10:55:32 +0800 [thread overview]
Message-ID: <202007071029.Df99kxfm%lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 10449 bytes --]
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: bfe91da29bfad9941d5d703d45e29f0812a20724
commit: a5460b5e5fb82656807840d40d3deaecad094044 READ_ONCE: Simplify implementations of {READ,WRITE}_ONCE()
date: 3 months ago
config: i386-randconfig-s002-20200707 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-14) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.2-31-gabbfd661-dirty
git checkout a5460b5e5fb82656807840d40d3deaecad094044
# save the attached .config to linux build tree
make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=i386
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
sparse warnings: (new ones prefixed by >>)
>> drivers/dma/mediatek/mtk-hsdma.c:451:17: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 volatile @@ got unsigned int [usertype] src @@
drivers/dma/mediatek/mtk-hsdma.c:451:17: sparse: expected restricted __le32 volatile
>> drivers/dma/mediatek/mtk-hsdma.c:451:17: sparse: got unsigned int [usertype] src
drivers/dma/mediatek/mtk-hsdma.c:452:17: sparse: sparse: restricted __le32 degrades to integer
drivers/dma/mediatek/mtk-hsdma.c:452:17: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 volatile @@ got unsigned int @@
drivers/dma/mediatek/mtk-hsdma.c:452:17: sparse: expected restricted __le32 volatile
drivers/dma/mediatek/mtk-hsdma.c:452:17: sparse: got unsigned int
>> drivers/dma/mediatek/mtk-hsdma.c:456:17: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 volatile @@ got unsigned int [usertype] dest @@
drivers/dma/mediatek/mtk-hsdma.c:456:17: sparse: expected restricted __le32 volatile
>> drivers/dma/mediatek/mtk-hsdma.c:456:17: sparse: got unsigned int [usertype] dest
drivers/dma/mediatek/mtk-hsdma.c:457:17: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 volatile @@ got int @@
drivers/dma/mediatek/mtk-hsdma.c:457:17: sparse: expected restricted __le32 volatile
drivers/dma/mediatek/mtk-hsdma.c:457:17: sparse: got int
drivers/dma/mediatek/mtk-hsdma.c:580:33: sparse: sparse: restricted __le32 degrades to integer
drivers/dma/mediatek/mtk-hsdma.c:604:26: sparse: sparse: Using plain integer as NULL pointer
drivers/dma/mediatek/mtk-hsdma.c:878:18: sparse: sparse: incorrect type in initializer (different base types) @@ expected restricted __le32 [usertype] ddone @@ got unsigned long @@
drivers/dma/mediatek/mtk-hsdma.c:878:18: sparse: expected restricted __le32 [usertype] ddone
drivers/dma/mediatek/mtk-hsdma.c:878:18: sparse: got unsigned long
drivers/dma/mediatek/mtk-hsdma.c:879:16: sparse: sparse: incorrect type in initializer (different base types) @@ expected restricted __le32 [usertype] ls0 @@ got unsigned long @@
drivers/dma/mediatek/mtk-hsdma.c:879:16: sparse: expected restricted __le32 [usertype] ls0
drivers/dma/mediatek/mtk-hsdma.c:879:16: sparse: got unsigned long
drivers/dma/mediatek/mtk-hsdma.c:883:18: sparse: sparse: incorrect type in initializer (different base types) @@ expected restricted __le32 [usertype] ddone @@ got unsigned long @@
drivers/dma/mediatek/mtk-hsdma.c:883:18: sparse: expected restricted __le32 [usertype] ddone
drivers/dma/mediatek/mtk-hsdma.c:883:18: sparse: got unsigned long
drivers/dma/mediatek/mtk-hsdma.c:884:16: sparse: sparse: incorrect type in initializer (different base types) @@ expected restricted __le32 [usertype] ls0 @@ got unsigned long @@
drivers/dma/mediatek/mtk-hsdma.c:884:16: sparse: expected restricted __le32 [usertype] ls0
drivers/dma/mediatek/mtk-hsdma.c:884:16: sparse: got unsigned long
vim +451 drivers/dma/mediatek/mtk-hsdma.c
548c4597e984b7 Sean Wang 2018-03-15 411
548c4597e984b7 Sean Wang 2018-03-15 412 static int mtk_hsdma_issue_pending_vdesc(struct mtk_hsdma_device *hsdma,
548c4597e984b7 Sean Wang 2018-03-15 413 struct mtk_hsdma_pchan *pc,
548c4597e984b7 Sean Wang 2018-03-15 414 struct mtk_hsdma_vdesc *hvd)
548c4597e984b7 Sean Wang 2018-03-15 415 {
548c4597e984b7 Sean Wang 2018-03-15 416 struct mtk_hsdma_ring *ring = &pc->ring;
548c4597e984b7 Sean Wang 2018-03-15 417 struct mtk_hsdma_pdesc *txd, *rxd;
548c4597e984b7 Sean Wang 2018-03-15 418 u16 reserved, prev, tlen, num_sgs;
548c4597e984b7 Sean Wang 2018-03-15 419 unsigned long flags;
548c4597e984b7 Sean Wang 2018-03-15 420
548c4597e984b7 Sean Wang 2018-03-15 421 /* Protect against PC is accessed by multiple VCs simultaneously */
548c4597e984b7 Sean Wang 2018-03-15 422 spin_lock_irqsave(&hsdma->lock, flags);
548c4597e984b7 Sean Wang 2018-03-15 423
548c4597e984b7 Sean Wang 2018-03-15 424 /*
548c4597e984b7 Sean Wang 2018-03-15 425 * Reserve rooms, where pc->nr_free is used to track how many free
548c4597e984b7 Sean Wang 2018-03-15 426 * rooms in the ring being updated in user and IRQ context.
548c4597e984b7 Sean Wang 2018-03-15 427 */
548c4597e984b7 Sean Wang 2018-03-15 428 num_sgs = DIV_ROUND_UP(hvd->len, MTK_HSDMA_MAX_LEN);
548c4597e984b7 Sean Wang 2018-03-15 429 reserved = min_t(u16, num_sgs, atomic_read(&pc->nr_free));
548c4597e984b7 Sean Wang 2018-03-15 430
548c4597e984b7 Sean Wang 2018-03-15 431 if (!reserved) {
548c4597e984b7 Sean Wang 2018-03-15 432 spin_unlock_irqrestore(&hsdma->lock, flags);
548c4597e984b7 Sean Wang 2018-03-15 433 return -ENOSPC;
548c4597e984b7 Sean Wang 2018-03-15 434 }
548c4597e984b7 Sean Wang 2018-03-15 435
548c4597e984b7 Sean Wang 2018-03-15 436 atomic_sub(reserved, &pc->nr_free);
548c4597e984b7 Sean Wang 2018-03-15 437
548c4597e984b7 Sean Wang 2018-03-15 438 while (reserved--) {
548c4597e984b7 Sean Wang 2018-03-15 439 /* Limit size by PD capability for valid data moving */
548c4597e984b7 Sean Wang 2018-03-15 440 tlen = (hvd->len > MTK_HSDMA_MAX_LEN) ?
548c4597e984b7 Sean Wang 2018-03-15 441 MTK_HSDMA_MAX_LEN : hvd->len;
548c4597e984b7 Sean Wang 2018-03-15 442
548c4597e984b7 Sean Wang 2018-03-15 443 /*
548c4597e984b7 Sean Wang 2018-03-15 444 * Setup PDs using the remaining VD info mapped on those
548c4597e984b7 Sean Wang 2018-03-15 445 * reserved rooms. And since RXD is shared memory between the
548c4597e984b7 Sean Wang 2018-03-15 446 * host and the device allocated by dma_alloc_coherent call,
548c4597e984b7 Sean Wang 2018-03-15 447 * the helper macro WRITE_ONCE can ensure the data written to
548c4597e984b7 Sean Wang 2018-03-15 448 * RAM would really happens.
548c4597e984b7 Sean Wang 2018-03-15 449 */
548c4597e984b7 Sean Wang 2018-03-15 450 txd = &ring->txd[ring->cur_tptr];
548c4597e984b7 Sean Wang 2018-03-15 @451 WRITE_ONCE(txd->desc1, hvd->src);
548c4597e984b7 Sean Wang 2018-03-15 452 WRITE_ONCE(txd->desc2,
548c4597e984b7 Sean Wang 2018-03-15 453 hsdma->soc->ls0 | MTK_HSDMA_DESC_PLEN(tlen));
548c4597e984b7 Sean Wang 2018-03-15 454
548c4597e984b7 Sean Wang 2018-03-15 455 rxd = &ring->rxd[ring->cur_tptr];
548c4597e984b7 Sean Wang 2018-03-15 @456 WRITE_ONCE(rxd->desc1, hvd->dest);
548c4597e984b7 Sean Wang 2018-03-15 457 WRITE_ONCE(rxd->desc2, MTK_HSDMA_DESC_PLEN(tlen));
548c4597e984b7 Sean Wang 2018-03-15 458
548c4597e984b7 Sean Wang 2018-03-15 459 /* Associate VD, the PD belonged to */
548c4597e984b7 Sean Wang 2018-03-15 460 ring->cb[ring->cur_tptr].vd = &hvd->vd;
548c4597e984b7 Sean Wang 2018-03-15 461
548c4597e984b7 Sean Wang 2018-03-15 462 /* Move forward the pointer of TX ring */
548c4597e984b7 Sean Wang 2018-03-15 463 ring->cur_tptr = MTK_HSDMA_NEXT_DESP_IDX(ring->cur_tptr,
548c4597e984b7 Sean Wang 2018-03-15 464 MTK_DMA_SIZE);
548c4597e984b7 Sean Wang 2018-03-15 465
548c4597e984b7 Sean Wang 2018-03-15 466 /* Update VD with remaining data */
548c4597e984b7 Sean Wang 2018-03-15 467 hvd->src += tlen;
548c4597e984b7 Sean Wang 2018-03-15 468 hvd->dest += tlen;
548c4597e984b7 Sean Wang 2018-03-15 469 hvd->len -= tlen;
548c4597e984b7 Sean Wang 2018-03-15 470 }
548c4597e984b7 Sean Wang 2018-03-15 471
548c4597e984b7 Sean Wang 2018-03-15 472 /*
548c4597e984b7 Sean Wang 2018-03-15 473 * Tagging flag for the last PD for VD will be responsible for
548c4597e984b7 Sean Wang 2018-03-15 474 * completing VD.
548c4597e984b7 Sean Wang 2018-03-15 475 */
548c4597e984b7 Sean Wang 2018-03-15 476 if (!hvd->len) {
548c4597e984b7 Sean Wang 2018-03-15 477 prev = MTK_HSDMA_LAST_DESP_IDX(ring->cur_tptr, MTK_DMA_SIZE);
548c4597e984b7 Sean Wang 2018-03-15 478 ring->cb[prev].flag = MTK_HSDMA_VDESC_FINISHED;
548c4597e984b7 Sean Wang 2018-03-15 479 }
548c4597e984b7 Sean Wang 2018-03-15 480
548c4597e984b7 Sean Wang 2018-03-15 481 /* Ensure all changes indeed done before we're going on */
548c4597e984b7 Sean Wang 2018-03-15 482 wmb();
548c4597e984b7 Sean Wang 2018-03-15 483
548c4597e984b7 Sean Wang 2018-03-15 484 /*
548c4597e984b7 Sean Wang 2018-03-15 485 * Updating into hardware the pointer of TX ring lets HSDMA to take
548c4597e984b7 Sean Wang 2018-03-15 486 * action for those pending PDs.
548c4597e984b7 Sean Wang 2018-03-15 487 */
548c4597e984b7 Sean Wang 2018-03-15 488 mtk_dma_write(hsdma, MTK_HSDMA_TX_CPU, ring->cur_tptr);
548c4597e984b7 Sean Wang 2018-03-15 489
548c4597e984b7 Sean Wang 2018-03-15 490 spin_unlock_irqrestore(&hsdma->lock, flags);
548c4597e984b7 Sean Wang 2018-03-15 491
548c4597e984b7 Sean Wang 2018-03-15 492 return 0;
548c4597e984b7 Sean Wang 2018-03-15 493 }
548c4597e984b7 Sean Wang 2018-03-15 494
:::::: The code at line 451 was first introduced by commit
:::::: 548c4597e984b79aad8190235d664f1c3a433f94 dmaengine: mediatek: Add MediaTek High-Speed DMA controller for MT7622 and MT7623 SoC
:::::: TO: Sean Wang <sean.wang@mediatek.com>
:::::: CC: Vinod Koul <vinod.koul@intel.com>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 41089 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: Will Deacon <will@kernel.org>
Cc: kbuild-all@lists.01.org, linux-kernel@vger.kernel.org
Subject: drivers/dma/mediatek/mtk-hsdma.c:451:17: sparse: sparse: incorrect type in assignment (different base types)
Date: Tue, 7 Jul 2020 10:55:32 +0800 [thread overview]
Message-ID: <202007071029.Df99kxfm%lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 10304 bytes --]
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: bfe91da29bfad9941d5d703d45e29f0812a20724
commit: a5460b5e5fb82656807840d40d3deaecad094044 READ_ONCE: Simplify implementations of {READ,WRITE}_ONCE()
date: 3 months ago
config: i386-randconfig-s002-20200707 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-14) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.2-31-gabbfd661-dirty
git checkout a5460b5e5fb82656807840d40d3deaecad094044
# save the attached .config to linux build tree
make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=i386
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
sparse warnings: (new ones prefixed by >>)
>> drivers/dma/mediatek/mtk-hsdma.c:451:17: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 volatile @@ got unsigned int [usertype] src @@
drivers/dma/mediatek/mtk-hsdma.c:451:17: sparse: expected restricted __le32 volatile
>> drivers/dma/mediatek/mtk-hsdma.c:451:17: sparse: got unsigned int [usertype] src
drivers/dma/mediatek/mtk-hsdma.c:452:17: sparse: sparse: restricted __le32 degrades to integer
drivers/dma/mediatek/mtk-hsdma.c:452:17: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 volatile @@ got unsigned int @@
drivers/dma/mediatek/mtk-hsdma.c:452:17: sparse: expected restricted __le32 volatile
drivers/dma/mediatek/mtk-hsdma.c:452:17: sparse: got unsigned int
>> drivers/dma/mediatek/mtk-hsdma.c:456:17: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 volatile @@ got unsigned int [usertype] dest @@
drivers/dma/mediatek/mtk-hsdma.c:456:17: sparse: expected restricted __le32 volatile
>> drivers/dma/mediatek/mtk-hsdma.c:456:17: sparse: got unsigned int [usertype] dest
drivers/dma/mediatek/mtk-hsdma.c:457:17: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 volatile @@ got int @@
drivers/dma/mediatek/mtk-hsdma.c:457:17: sparse: expected restricted __le32 volatile
drivers/dma/mediatek/mtk-hsdma.c:457:17: sparse: got int
drivers/dma/mediatek/mtk-hsdma.c:580:33: sparse: sparse: restricted __le32 degrades to integer
drivers/dma/mediatek/mtk-hsdma.c:604:26: sparse: sparse: Using plain integer as NULL pointer
drivers/dma/mediatek/mtk-hsdma.c:878:18: sparse: sparse: incorrect type in initializer (different base types) @@ expected restricted __le32 [usertype] ddone @@ got unsigned long @@
drivers/dma/mediatek/mtk-hsdma.c:878:18: sparse: expected restricted __le32 [usertype] ddone
drivers/dma/mediatek/mtk-hsdma.c:878:18: sparse: got unsigned long
drivers/dma/mediatek/mtk-hsdma.c:879:16: sparse: sparse: incorrect type in initializer (different base types) @@ expected restricted __le32 [usertype] ls0 @@ got unsigned long @@
drivers/dma/mediatek/mtk-hsdma.c:879:16: sparse: expected restricted __le32 [usertype] ls0
drivers/dma/mediatek/mtk-hsdma.c:879:16: sparse: got unsigned long
drivers/dma/mediatek/mtk-hsdma.c:883:18: sparse: sparse: incorrect type in initializer (different base types) @@ expected restricted __le32 [usertype] ddone @@ got unsigned long @@
drivers/dma/mediatek/mtk-hsdma.c:883:18: sparse: expected restricted __le32 [usertype] ddone
drivers/dma/mediatek/mtk-hsdma.c:883:18: sparse: got unsigned long
drivers/dma/mediatek/mtk-hsdma.c:884:16: sparse: sparse: incorrect type in initializer (different base types) @@ expected restricted __le32 [usertype] ls0 @@ got unsigned long @@
drivers/dma/mediatek/mtk-hsdma.c:884:16: sparse: expected restricted __le32 [usertype] ls0
drivers/dma/mediatek/mtk-hsdma.c:884:16: sparse: got unsigned long
vim +451 drivers/dma/mediatek/mtk-hsdma.c
548c4597e984b7 Sean Wang 2018-03-15 411
548c4597e984b7 Sean Wang 2018-03-15 412 static int mtk_hsdma_issue_pending_vdesc(struct mtk_hsdma_device *hsdma,
548c4597e984b7 Sean Wang 2018-03-15 413 struct mtk_hsdma_pchan *pc,
548c4597e984b7 Sean Wang 2018-03-15 414 struct mtk_hsdma_vdesc *hvd)
548c4597e984b7 Sean Wang 2018-03-15 415 {
548c4597e984b7 Sean Wang 2018-03-15 416 struct mtk_hsdma_ring *ring = &pc->ring;
548c4597e984b7 Sean Wang 2018-03-15 417 struct mtk_hsdma_pdesc *txd, *rxd;
548c4597e984b7 Sean Wang 2018-03-15 418 u16 reserved, prev, tlen, num_sgs;
548c4597e984b7 Sean Wang 2018-03-15 419 unsigned long flags;
548c4597e984b7 Sean Wang 2018-03-15 420
548c4597e984b7 Sean Wang 2018-03-15 421 /* Protect against PC is accessed by multiple VCs simultaneously */
548c4597e984b7 Sean Wang 2018-03-15 422 spin_lock_irqsave(&hsdma->lock, flags);
548c4597e984b7 Sean Wang 2018-03-15 423
548c4597e984b7 Sean Wang 2018-03-15 424 /*
548c4597e984b7 Sean Wang 2018-03-15 425 * Reserve rooms, where pc->nr_free is used to track how many free
548c4597e984b7 Sean Wang 2018-03-15 426 * rooms in the ring being updated in user and IRQ context.
548c4597e984b7 Sean Wang 2018-03-15 427 */
548c4597e984b7 Sean Wang 2018-03-15 428 num_sgs = DIV_ROUND_UP(hvd->len, MTK_HSDMA_MAX_LEN);
548c4597e984b7 Sean Wang 2018-03-15 429 reserved = min_t(u16, num_sgs, atomic_read(&pc->nr_free));
548c4597e984b7 Sean Wang 2018-03-15 430
548c4597e984b7 Sean Wang 2018-03-15 431 if (!reserved) {
548c4597e984b7 Sean Wang 2018-03-15 432 spin_unlock_irqrestore(&hsdma->lock, flags);
548c4597e984b7 Sean Wang 2018-03-15 433 return -ENOSPC;
548c4597e984b7 Sean Wang 2018-03-15 434 }
548c4597e984b7 Sean Wang 2018-03-15 435
548c4597e984b7 Sean Wang 2018-03-15 436 atomic_sub(reserved, &pc->nr_free);
548c4597e984b7 Sean Wang 2018-03-15 437
548c4597e984b7 Sean Wang 2018-03-15 438 while (reserved--) {
548c4597e984b7 Sean Wang 2018-03-15 439 /* Limit size by PD capability for valid data moving */
548c4597e984b7 Sean Wang 2018-03-15 440 tlen = (hvd->len > MTK_HSDMA_MAX_LEN) ?
548c4597e984b7 Sean Wang 2018-03-15 441 MTK_HSDMA_MAX_LEN : hvd->len;
548c4597e984b7 Sean Wang 2018-03-15 442
548c4597e984b7 Sean Wang 2018-03-15 443 /*
548c4597e984b7 Sean Wang 2018-03-15 444 * Setup PDs using the remaining VD info mapped on those
548c4597e984b7 Sean Wang 2018-03-15 445 * reserved rooms. And since RXD is shared memory between the
548c4597e984b7 Sean Wang 2018-03-15 446 * host and the device allocated by dma_alloc_coherent call,
548c4597e984b7 Sean Wang 2018-03-15 447 * the helper macro WRITE_ONCE can ensure the data written to
548c4597e984b7 Sean Wang 2018-03-15 448 * RAM would really happens.
548c4597e984b7 Sean Wang 2018-03-15 449 */
548c4597e984b7 Sean Wang 2018-03-15 450 txd = &ring->txd[ring->cur_tptr];
548c4597e984b7 Sean Wang 2018-03-15 @451 WRITE_ONCE(txd->desc1, hvd->src);
548c4597e984b7 Sean Wang 2018-03-15 452 WRITE_ONCE(txd->desc2,
548c4597e984b7 Sean Wang 2018-03-15 453 hsdma->soc->ls0 | MTK_HSDMA_DESC_PLEN(tlen));
548c4597e984b7 Sean Wang 2018-03-15 454
548c4597e984b7 Sean Wang 2018-03-15 455 rxd = &ring->rxd[ring->cur_tptr];
548c4597e984b7 Sean Wang 2018-03-15 @456 WRITE_ONCE(rxd->desc1, hvd->dest);
548c4597e984b7 Sean Wang 2018-03-15 457 WRITE_ONCE(rxd->desc2, MTK_HSDMA_DESC_PLEN(tlen));
548c4597e984b7 Sean Wang 2018-03-15 458
548c4597e984b7 Sean Wang 2018-03-15 459 /* Associate VD, the PD belonged to */
548c4597e984b7 Sean Wang 2018-03-15 460 ring->cb[ring->cur_tptr].vd = &hvd->vd;
548c4597e984b7 Sean Wang 2018-03-15 461
548c4597e984b7 Sean Wang 2018-03-15 462 /* Move forward the pointer of TX ring */
548c4597e984b7 Sean Wang 2018-03-15 463 ring->cur_tptr = MTK_HSDMA_NEXT_DESP_IDX(ring->cur_tptr,
548c4597e984b7 Sean Wang 2018-03-15 464 MTK_DMA_SIZE);
548c4597e984b7 Sean Wang 2018-03-15 465
548c4597e984b7 Sean Wang 2018-03-15 466 /* Update VD with remaining data */
548c4597e984b7 Sean Wang 2018-03-15 467 hvd->src += tlen;
548c4597e984b7 Sean Wang 2018-03-15 468 hvd->dest += tlen;
548c4597e984b7 Sean Wang 2018-03-15 469 hvd->len -= tlen;
548c4597e984b7 Sean Wang 2018-03-15 470 }
548c4597e984b7 Sean Wang 2018-03-15 471
548c4597e984b7 Sean Wang 2018-03-15 472 /*
548c4597e984b7 Sean Wang 2018-03-15 473 * Tagging flag for the last PD for VD will be responsible for
548c4597e984b7 Sean Wang 2018-03-15 474 * completing VD.
548c4597e984b7 Sean Wang 2018-03-15 475 */
548c4597e984b7 Sean Wang 2018-03-15 476 if (!hvd->len) {
548c4597e984b7 Sean Wang 2018-03-15 477 prev = MTK_HSDMA_LAST_DESP_IDX(ring->cur_tptr, MTK_DMA_SIZE);
548c4597e984b7 Sean Wang 2018-03-15 478 ring->cb[prev].flag = MTK_HSDMA_VDESC_FINISHED;
548c4597e984b7 Sean Wang 2018-03-15 479 }
548c4597e984b7 Sean Wang 2018-03-15 480
548c4597e984b7 Sean Wang 2018-03-15 481 /* Ensure all changes indeed done before we're going on */
548c4597e984b7 Sean Wang 2018-03-15 482 wmb();
548c4597e984b7 Sean Wang 2018-03-15 483
548c4597e984b7 Sean Wang 2018-03-15 484 /*
548c4597e984b7 Sean Wang 2018-03-15 485 * Updating into hardware the pointer of TX ring lets HSDMA to take
548c4597e984b7 Sean Wang 2018-03-15 486 * action for those pending PDs.
548c4597e984b7 Sean Wang 2018-03-15 487 */
548c4597e984b7 Sean Wang 2018-03-15 488 mtk_dma_write(hsdma, MTK_HSDMA_TX_CPU, ring->cur_tptr);
548c4597e984b7 Sean Wang 2018-03-15 489
548c4597e984b7 Sean Wang 2018-03-15 490 spin_unlock_irqrestore(&hsdma->lock, flags);
548c4597e984b7 Sean Wang 2018-03-15 491
548c4597e984b7 Sean Wang 2018-03-15 492 return 0;
548c4597e984b7 Sean Wang 2018-03-15 493 }
548c4597e984b7 Sean Wang 2018-03-15 494
:::::: The code at line 451 was first introduced by commit
:::::: 548c4597e984b79aad8190235d664f1c3a433f94 dmaengine: mediatek: Add MediaTek High-Speed DMA controller for MT7622 and MT7623 SoC
:::::: TO: Sean Wang <sean.wang@mediatek.com>
:::::: CC: Vinod Koul <vinod.koul@intel.com>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 41089 bytes --]
next reply other threads:[~2020-07-07 2:55 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-07-07 2:55 kernel test robot [this message]
2020-07-07 2:55 ` drivers/dma/mediatek/mtk-hsdma.c:451:17: sparse: sparse: incorrect type in assignment (different base types) kernel test robot
-- strict thread matches above, loose matches on Subject: below --
2023-07-01 20:39 kernel test robot
2020-10-28 23:11 kernel test robot
2020-10-28 23:11 ` kernel test robot
2020-06-13 17:41 kernel test robot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202007071029.Df99kxfm%lkp@intel.com \
--to=lkp@intel.com \
--cc=kbuild-all@lists.01.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.