
On 9/12/24 10:48 AM, Ye Li wrote:
[...]
+ timeout = max(CHIP_ERASE_2MB_READY_WAIT_JIFFIES, + CHIP_ERASE_2MB_READY_WAIT_JIFFIES * + (unsigned long)(mtd->size / SZ_2M));
Is the type cast needed ?
Yes. otherwise get below warning
In file included from include/linux/bitops.h:22, from include/log.h:15, from drivers/mtd/spi/spi-nor-core.c:13: drivers/mtd/spi/spi-nor-core.c: In function ‘spi_nor_erase’: include/linux/kernel.h:190:24: warning: comparison of distinct pointer types lacks a cast 190 | (void) (&_max1 == &_max2); \ | ^~ drivers/mtd/spi/spi-nor-core.c:1042:35: note: in expansion of macro ‘max’ 1042 | timeout = max(CHIP_ERASE_2MB_READY_WAIT_JIFFIES, |
mtd->size is uint64 , so you need to use do_div() :
u64 sz = mtd->size; do_div(sz, SZ_2M); timeout = CHIP_ERASE_2MB_READY_WAIT_JIFFIES * max(1ULL, sz);