Hi "Ramuthevar,Vadivel, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on linus/master] [cannot apply to v5.3 next-20190915] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Ramuthevar-Vadivel-MuruganX/spi-cadence-qspi-Add-cadence-qspi-support-for-Intel-LGM-SoC/20190916-163033 config: i386-allmodconfig (attached as .config) compiler: gcc-7 (Debian 7.4.0-11) 7.4.0 reproduce: # save the attached .config to linux build tree make ARCH=i386 If you fix the issue, kindly add following tag Reported-by: kbuild test robot <lkp@xxxxxxxxx> All warnings (new ones prefixed by >>): drivers/spi/spi-cadence-qspi-apb.c: In function 'cqspi_apb_indirect_write_execute': >> drivers/spi/spi-cadence-qspi-apb.c:382:7: warning: suggest parentheses around operand of '!' or change '&' to '&&' or '!' to '~' [-Wparentheses] if (!ret & (*irq_status & CQSPI_IRQ_STATUS_ERR)) { ^~~~ vim +382 drivers/spi/spi-cadence-qspi-apb.c 327 328 static int cqspi_apb_indirect_write_execute(struct struct_cqspi *cadence_qspi, 329 u32 txlen, const u8 *txbuf) 330 { 331 struct platform_device *pdev = cadence_qspi->pdev; 332 struct cqspi_platform_data *pdata = pdev->dev.platform_data; 333 struct cqspi_flash_pdata *f_pdata = 334 &pdata->f_pdata[cadence_qspi->current_cs]; 335 unsigned int *irq_status = &cadence_qspi->irq_status; 336 void __iomem *reg_base = cadence_qspi->iobase; 337 void __iomem *ahb_base = cadence_qspi->qspi_ahb_virt; 338 unsigned int page_size = f_pdata->page_size; 339 int remaining = (int)txlen; 340 u32 write_bytes, timeout, reg; 341 int ret, status = 0; 342 343 writel(0xa, reg_base + CQSPI_REG_INDIRECTTRIGGERADDRRANGE); 344 writel(0x0, reg_base + CQSPI_REG_INDIRECTWRWATERMARK); 345 reg = readl(reg_base + CQSPI_REG_SIZE); 346 reg &= ~(CQSPI_REG_SIZE_PAGE_MASK << CQSPI_REG_SIZE_PAGE_LSB); 347 reg &= ~(CQSPI_REG_SIZE_BLOCK_MASK << CQSPI_REG_SIZE_BLOCK_LSB); 348 reg |= (f_pdata->page_size << CQSPI_REG_SIZE_PAGE_LSB); 349 reg |= (f_pdata->block_size << CQSPI_REG_SIZE_BLOCK_LSB); 350 writel(reg, reg_base + CQSPI_REG_SIZE); 351 352 writel(remaining, reg_base + CQSPI_REG_INDIRECTWRBYTES); 353 writel(CQSPI_REG_SRAM_PARTITION_WR, reg_base + CQSPI_REG_SRAMPARTITION); 354 /* Clear all interrupts. */ 355 writel(CQSPI_IRQ_STATUS_MASK, reg_base + CQSPI_REG_IRQSTATUS); 356 writel(CQSPI_IRQ_MASK_WR, reg_base + CQSPI_REG_IRQMASK); 357 writel(CQSPI_REG_INDIRECTWR_START_MASK, 358 reg_base + CQSPI_REG_INDIRECTWR); 359 360 while (remaining > 0) { 361 size_t write_words, mod_bytes; 362 363 write_bytes = remaining > page_size ? page_size : remaining; 364 write_words = write_bytes / 4; 365 mod_bytes = write_bytes % 4; 366 367 if (write_words) { 368 iowrite32_rep(ahb_base, txbuf, write_words); 369 txbuf += (write_words * 4); 370 } 371 if (mod_bytes) { 372 unsigned int temp = 0xFFFFFFFF; 373 374 memcpy(&temp, txbuf, mod_bytes); 375 iowrite32(temp, ahb_base); 376 txbuf += mod_bytes; 377 } 378 ret = wait_event_interruptible_timeout(cadence_qspi->waitqueue, 379 *irq_status & 380 CQSPI_IRQ_MASK_WR, 381 CQSPI_TIMEOUT_MS); > 382 if (!ret & (*irq_status & CQSPI_IRQ_STATUS_ERR)) { 383 ret = -ETIMEDOUT; 384 goto failwr; 385 } else { 386 ret = 0; 387 } 388 remaining -= write_bytes; 389 } 390 391 /* Check indirect done status */ 392 timeout = cadence_qspi_init_timeout(CQSPI_TIMEOUT_MS); 393 while (cadence_qspi_check_timeout(timeout)) { 394 status = readl(reg_base + CQSPI_REG_INDIRECTWR); 395 if (status & CQSPI_REG_INDIRECTWR_DONE_MASK) 396 break; 397 } 398 if (!(status & CQSPI_REG_INDIRECTWR_DONE_MASK)) { 399 ret = -ETIMEDOUT; 400 goto failwr; 401 } 402 return 0; 403 404 failwr: 405 writel(0, reg_base + CQSPI_REG_IRQMASK); 406 writel(CQSPI_REG_INDIRECTWR_DONE_MASK, 407 reg_base + CQSPI_REG_INDIRECTWR); 408 if (ret) 409 writel(CQSPI_REG_INDIRECTWR_CANCEL_MASK, 410 reg_base + CQSPI_REG_INDIRECTWR); 411 return ret; 412 } 413 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
Attachment:
.config.gz
Description: application/gzip