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

regulator: tps6586x: silence pointer-to-int-cast

of_regulator_match.driver_data is (void *). tps6586x uses it to store an
anonymous enum value (those TPS6586X_ID_ values).

Later, it tries to extract the ID by casting directly to an int, which is a
no-no ([-Wpointer-to-int-cast]):

drivers/regulator/tps6586x-regulator.c: In function 'tps6586x_parse_regulator_dt':
drivers/regulator/tps6586x-regulator.c:430:8: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
id = (int)tps6586x_matches[i].driver_data;
^

Instead of casting to int, uintptr_t is better suited for receiving and
comparing integers extracted from void *. This is especially true on
64-bit systems where sizeof(void *) != sizeof(int).

Signed-off-by: Daniel Kurtz <djkurtz@chromium.org>
Signed-off-by: Mark Brown <broonie@kernel.org>

authored by

Daniel Kurtz and committed by
Mark Brown
a70f0d02 bc0195aa

+2 -2
+2 -2
drivers/regulator/tps6586x-regulator.c
··· 422 422 return NULL; 423 423 424 424 for (i = 0; i < num; i++) { 425 - int id; 425 + uintptr_t id; 426 426 if (!tps6586x_matches[i].init_data) 427 427 continue; 428 428 429 429 pdata->reg_init_data[i] = tps6586x_matches[i].init_data; 430 - id = (int)tps6586x_matches[i].driver_data; 430 + id = (uintptr_t)tps6586x_matches[i].driver_data; 431 431 if (id == TPS6586X_ID_SYS) 432 432 sys_rail = pdata->reg_init_data[i]->constraints.name; 433 433