regulator: core: Fix build error due to const qualifier for ops
PATCH 1/1 regulator: core: Fix build error due to const qualifier for ops
Drop const qualifier for ops of struct regulator_desc. Allow regulator drivers to update ops before registering regulator.
Fix below build error:
CC [M] drivers/regulator/mc13892-regulator.odrivers/regulator/mc13892-regulator.c: In function 'mc13892_regulator_probe':drivers/regulator/mc13892-regulator.c:586:3: error: assignment of member 'set_mode' in read-only object drivers/regulator/mc13892-regulator.c:588:3: error: assignment of member 'get_mode' in read-only object make[2]: *** [drivers/regulator/mc13892-regulator.o] Error 1
make[1]: *** [drivers/regulator] Error 2
make: *** [drivers] Error 2
--- include/linux/regulator/driver.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
include/linux/regulator/driver.h +1 -1
@@ -246,7 +246,7 @@ struct regulator_desc {int id;bool continuous_voltage_range;unsigned n_voltages; -const struct regulator_ops *ops; +struct regulator_ops *ops;int irq;enum regulator_type type;struct module *owner;
Signature · 1 line
1.9.1
I'm sending a patch to fix the build error on mc13892-regulator.c
-Guodong
Quoted 32 lines · Axel Lin
Drop const qualifier for ops of struct
regulator_desc. Allow regulator drivers to update ops before registering regulator.Fix below build error:
CC [M]drivers/regulator/mc13892-regulator.odrivers/regulator/mc13892-regulator.c: In function 'mc13892_regulator_probe':drivers/regulator/mc13892-regulator.c:586:3: error: assignment of member 'set_mode' in read-only objectdrivers/regulator/mc13892-regulator.c:588:3: error: assignment of member 'get_mode' in read-only object make[2]: *** [drivers/regulator/mc13892-regulator.o] Error 1
make[1]: *** [drivers/regulator] Error 2
make: *** [drivers] Error 2Reported-by Stephen Rothwell <[email protected]>Signed-off-by Axel Lin <[email protected]>--- include/linux/regulator/driver.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)include/linux/regulator/driver.h +1
-1@@ -246,7 +246,7 @@ struct regulator_desc {int id;bool continuous_voltage_range;unsigned n_voltages; -const struct regulator_ops *ops; +struct regulator_ops *ops;int irq;enum regulator_type type;struct module *owner;
Quoted 2 lines · Axel Lin
Drop const qualifier for ops of struct
regulator_desc. Allow regulator drivers to update ops before registering regulator.
Applied, thanks.
2014-08-18 22:10 GMT+08:00 Mark Brown <[email protected]>:
Quoted 5 lines · Axel Lin
Quoted 2 lines
Drop const qualifier for ops of struct
regulator_desc. Allow regulator drivers to update ops before registering regulator.Applied, thanks.
Hi Mark,
I found this commit is applied and I got below build warning in your for-next tree.
CC [M] drivers/regulator/hi6421-regulator.odrivers/regulator/hi6421-regulator.c:356:2: warning: initialization discards 'const' qualifier from pointer target type [enabled by default]drivers/regulator/hi6421-regulator.c:358:2: warning: initialization discards 'const' qualifier from pointer target type [enabled by default]drivers/regulator/hi6421-regulator.c:360:2: warning: initialization discards 'const' qualifier from pointer target type [enabled by default]drivers/regulator/hi6421-regulator.c:362:2: warning: initialization discards 'const' qualifier from pointer target type [enabled by default]drivers/regulator/hi6421-regulator.c:364:2: warning: initialization discards 'const' qualifier from pointer target type [enabled by default]drivers/regulator/hi6421-regulator.c:366:2: warning: initialization discards 'const' qualifier from pointer target type [enabled by default]drivers/regulator/hi6421-regulator.c:368:2: warning: initialization discards 'const' qualifier from pointer target type [enabled by default]drivers/regulator/hi6421-regulator.c:370:2: warning: initialization discards 'const' qualifier from pointer target type [enabled by default]drivers/regulator/hi6421-regulator.c:372:2: warning: initialization discards 'const' qualifier from pointer target type [enabled by default]drivers/regulator/hi6421-regulator.c:374:2: warning: initialization discards 'const' qualifier from pointer target type [enabled by default]drivers/regulator/hi6421-regulator.c:376:2: warning: initialization discards 'const' qualifier from pointer target type [enabled by default]drivers/regulator/hi6421-regulator.c:378:2: warning: initialization discards 'const' qualifier from pointer target type [enabled by default]drivers/regulator/hi6421-regulator.c:380:2: warning: initialization discards 'const' qualifier from pointer target type [enabled by default]drivers/regulator/hi6421-regulator.c:382:2: warning: initialization discards 'const' qualifier from pointer target type [enabled by default]drivers/regulator/hi6421-regulator.c:384:2: warning: initialization discards 'const' qualifier from pointer target type [enabled by default]drivers/regulator/hi6421-regulator.c:386:2: warning: initialization discards 'const' qualifier from pointer target type [enabled by default]drivers/regulator/hi6421-regulator.c:388:2: warning: initialization discards 'const' qualifier from pointer target type [enabled by default]drivers/regulator/hi6421-regulator.c:390:2: warning: initialization discards 'const' qualifier from pointer target type [enabled by default]drivers/regulator/hi6421-regulator.c:392:2: warning: initialization discards 'const' qualifier from pointer target type [enabled by default]drivers/regulator/hi6421-regulator.c:394:2: warning: initialization discards 'const' qualifier from pointer target type [enabled by default]drivers/regulator/hi6421-regulator.c:396:2: warning: initialization discards 'const' qualifier from pointer target type [enabled by default]drivers/regulator/hi6421-regulator.c:398:2: warning: initialization discards 'const' qualifier from pointer target type [enabled by default]drivers/regulator/hi6421-regulator.c:400:2: warning: initialization discards 'const' qualifier from pointer target type [enabled by default]drivers/regulator/hi6421-regulator.c:401:2: warning: initialization discards 'const' qualifier from pointer target type [enabled by default]drivers/regulator/hi6421-regulator.c:402:2: warning: initialization discards 'const' qualifier from pointer target type [enabled by default]drivers/regulator/hi6421-regulator.c:403:2: warning: initialization discards 'const' qualifier from pointer target type [enabled by default]drivers/regulator/hi6421-regulator.c:405:2: warning: initialization discards 'const' qualifier from pointer target type [enabled by default]drivers/regulator/hi6421-regulator.c:407:2: warning: initialization discards 'const' qualifier from pointer target type [enabled by default]
As I mentioned in the commit log:
Drop const qualifier for ops of struct regulator_desc.
Allow regulator drivers to update ops before registering regulator. So I don't think it's necessary to add const for ops in structregulator_desc.
(I think the original point was the "regulator core" won't modify the ops).
The fix is either drop the 'const' qualifier in hi6421-regulator driver or add back const qualifier for ops of struct regulator_desc in include/linux/regulator/driver.h.
Which one do you prefer?
Thanks,
Axel
Mark Brown
maintainerQuoted 11 lines · Axel Lin
As I mentioned in the commit log:
Drop const qualifier for ops of structregulator_desc.
Allow regulator drivers to update ops before registering regulator. So I don't think it's necessary to add const for ops in structregulator_desc.
(I think the original point was the "regulator core" won't modify the ops).The fix is either drop the 'const' qualifier in hi6421-regulator driver or add back const qualifier for ops of struct
regulator_descininclude/linux/regulator/driver.h.
Which one do you prefer?
Adding back the const qualifier.