Skip to contentSkip to conversation

regulator: core: Fix build error due to const qualifier for ops

PATCH Applied Axel Lin 3 participants 5 messages Aug 18, 2014 – Aug 20, 2014 Voltage and current regulator framework

lore
Share & tools
lore

Axel Lin

author
#0 lore raw

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.o
drivers/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
index efe058f..3abda75 100644
@@ -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
#1 lore raw

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.o
drivers/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
index efe058f..3abda75 100644
@@ -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;
maintainer Applied
#2 lore raw
In reply to Axel Lin
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.

author
#3 lore raw

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.o
drivers/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 struct
regulator_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

maintainer
#4 lore raw
Quoted 11 lines · Axel Lin

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 struct
regulator_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?

Adding back the const qualifier.