On Mon, 2018-03-12 at 19:04 +0530, Harish Jenny K N wrote: > > On Monday 12 March 2018 06:33 PM, Andy Shevchenko wrote: > > On Mon, 2018-03-12 at 18:00 +0530, Harish Jenny K N wrote: > > > > > > > > + for_each_set_bit(bit, (const unsigned long > > > > > > > > *)&caps, > > > > > > > > BITS_PER_LONG) > > > > > > > > + for_each_set_bit(bit, (const unsigned long > > > > > > > > *)&caps2, > > > > > > > > BITS_PER_LONG) > > > > > > > > > > > > > > Explicit casting is not needed anymore in both cases. > Sorry for I was not clear that the compilation error is for the > following case > > u32 caps = host->caps; > > for_each_set_bit(bit, &caps, ARRAY_SIZE(mmc_host_capabilities)) > > > example: compilation for arm gives this error for the following lines: > > drivers/mmc/core/debugfs.c: In function 'mmc_caps_show': > ./include/linux/bitops.h:41:30: error: passing argument 1 of > '_find_first_bit_le' from incompatible pointer type [- > Werror=incompatible-pointer-types] > for ((bit) = find_first_bit((addr), (size)); \ > ^ > ./arch/arm/include/asm/bitops.h:202:50: note: in definition of macro > 'find_first_bit' > #define find_first_bit(p,sz) _find_first_bit_le(p,sz) > ^ > drivers/mmc/core/debugfs.c:318:2: note: in expansion of macro > 'for_each_set_bit' > for_each_set_bit(bit, &caps, ARRAY_SIZE(mmc_host_capabilities)) > ^ > ./arch/arm/include/asm/bitops.h:165:12: note: expected 'const long > unsigned int *' but argument is of type 'u32 * {aka unsigned int *}' > extern int _find_first_bit_le(const unsigned long *p, unsigned size); > ^ Are you sure you have caps defined as unsigned long? Check your code, the explicit casting should gone. Otherwise you are doing something wrong. -- Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> Intel Finland Oy -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html