Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

leds: pca955x: Fix -Wvoid-pointer-to-enum-cast warning

When building with clang 18 I see the following warning:
| drivers/leds/leds-pca955x.c:487:15: warning: cast to smaller integer
| type 'enum pca955x_type' from 'const void *' [-Wvoid-pointer-to-enum-cast]
| 487 | chip_type = (enum pca955x_type)md;

This is due to the fact that `md` is a void* while `enum pca995x_type` has the
size of an int.

Add uintptr_t cast to silence clang warning while also keeping enum cast
for readability and consistency with other `chip_type` assignment just a
few lines below:
| chip_type = (enum pca955x_type)id->driver_data;

Reported-by: Nathan Chancellor <nathan@kernel.org>
Closes: https://github.com/ClangBuiltLinux/linux/issues/1910
Signed-off-by: Justin Stitt <justinstitt@google.com>
Reviewed-by: Nathan Chancellor <nathan@kernel.org>
Link: https://lore.kernel.org/r/20230816-void-drivers-leds-leds-pca955x-v1-1-2967e4c1bdcc@google.com
Signed-off-by: Lee Jones <lee@kernel.org>

authored by

Justin Stitt and committed by
Lee Jones
a09af055 0bb80ecc

+1 -1
+1 -1
drivers/leds/leds-pca955x.c
··· 484 484 const void *md = device_get_match_data(&client->dev); 485 485 486 486 if (md) { 487 - chip_type = (enum pca955x_type)md; 487 + chip_type = (enum pca955x_type)(uintptr_t)md; 488 488 } else { 489 489 const struct i2c_device_id *id = i2c_match_id(pca955x_id, 490 490 client);