da905x: Add const to da905x_regulator_info blocks
PATCH 1/1 da905x: Add const to da905x_regulator_info blocks
Moving data to text is a good thing.
Mark the regulator_info structs as const and change the pointers to const.
$ size drivers/regulator/*.o* text data bss dec hex filename 7455 100 0 7555 1d83 drivers/regulator/da9052-regulator.o.new 2111 5392 0 7503 1d4f drivers/regulator/da9052-regulator.o.old 4321 100 0 4421 1145 drivers/regulator/da9055-regulator.o.new 2611 1800 0 4411 113b drivers/regulator/da9055-regulator.o.old
--- drivers/regulator/da9052-regulator.c | 37 ++++++++++++++++++------------------ drivers/regulator/da9055-regulator.c | 32 +++++++++++++++---------------- 2 files changed, 34 insertions(+), 35 deletions(-)
drivers/regulator/da9052-regulator.c +18 -19
@@ -75,11 +75,11 @@ struct da9052_regulator_info {struct da9052_regulator {struct da9052 *da9052; -struct da9052_regulator_info *info; +const struct da9052_regulator_info *info;struct regulator_dev *rdev; }; -static int verify_range (struct da9052_regulator_info *info, +static int verify_range (const struct da9052_regulator_info *info,int min_uV,int max_uV) {if (min_uV > info->max_uV || max_uV < info->min_uV)
@@ -159,7 +159,7 @@ static int da9052_list_voltage(struct regulator_dev *rdev, unsigned int selector) {struct da9052_regulator *regulator =rdev_get_drvdata (rdev); -struct da9052_regulator_info *info = regulator->info; +const struct da9052_regulator_info *info = regulator->info;int id =rdev_get_id (rdev);int volt_uV;
@@ -183,7 +183,7 @@ static int da9052_map_voltage(struct regulator_dev *rdev, int min_uV, int max_uV) {struct da9052_regulator *regulator =rdev_get_drvdata (rdev); -struct da9052_regulator_info *info = regulator->info; +const struct da9052_regulator_info *info = regulator->info;int id =rdev_get_id (rdev);int ret, sel;
@@ -214,7 +214,7 @@ static int da9052_regulator_set_voltage_sel(struct regulator_dev *rdev, unsigned int selector) {struct da9052_regulator *regulator =rdev_get_drvdata (rdev); -struct da9052_regulator_info *info = regulator->info; +const struct da9052_regulator_info *info = regulator->info;int id =rdev_get_id (rdev);int ret;
@@ -245,7 +245,7 @@ static int da9052_regulator_set_voltage_time_sel(struct regulator_dev *rdev, unsigned int new_sel) {struct da9052_regulator *regulator =rdev_get_drvdata (rdev); -struct da9052_regulator_info *info = regulator->info; +const struct da9052_regulator_info *info = regulator->info;int id =rdev_get_id (rdev);int ret =0 ;
@@ -330,7 +330,7 @@ static const struct regulator_ops da9052_ldo_ops = { .activate_bit = (abits),\ } -static struct da9052_regulator_info da9052_regulator_info[] = { +static const struct da9052_regulator_info da9052_regulator_info[] = {DA9052_DCDC (BUCK1 ,25 ,500 ,2075 ,6 ,6 ,DA9052_SUPPLY_VBCOREGO ),DA9052_DCDC (BUCK2 ,25 ,500 ,2075 ,6 ,6 ,DA9052_SUPPLY_VBPROGO ),DA9052_DCDC (BUCK3 ,25 ,950 ,2525 ,6 ,6 ,DA9052_SUPPLY_VBMEMGO ),
@@ -347,7 +347,7 @@ static struct da9052_regulator_info da9052_regulator_info[] = { DA9052_LDO(LDO10, 50, 1200, 3600, 6, 6, 0), }; -static struct da9052_regulator_info da9053_regulator_info[] = { +static const struct da9052_regulator_info da9053_regulator_info[] = {DA9052_DCDC (BUCK1 ,25 ,500 ,2075 ,6 ,6 ,DA9052_SUPPLY_VBCOREGO ),DA9052_DCDC (BUCK2 ,25 ,500 ,2075 ,6 ,6 ,DA9052_SUPPLY_VBPROGO ),DA9052_DCDC (BUCK3 ,25 ,950 ,2525 ,6 ,6 ,DA9052_SUPPLY_VBMEMGO ),
@@ -364,10 +364,10 @@ static struct da9052_regulator_info da9053_regulator_info[] = { DA9052_LDO(LDO10, 50, 1200, 3600, 6, 6, 0), }; -static inline struct da9052_regulator_info *find_regulator_info (u8 chip_id, -int id) +static inline const struct da9052_regulator_info * +find_regulator_info (u8 chip_id,int id) { -struct da9052_regulator_info *info; +const struct da9052_regulator_info *info;int i;switch (chip_id) {
@@ -435,14 +435,13 @@ static int da9052_regulator_probe(struct platform_device *pdev)return -ENODEV ;for_each_child_of_node (nproot, np) { -if (!of_node_cmp (np->name, - regulator->info->reg_desc.name)) { - config.init_data =of_get_regulator_init_data ( - &pdev->dev, np, - ®ulator->info->reg_desc); - config.of_node = np; -break ; - } +if (of_node_cmp (np->name, regulator->info->reg_desc.name)) +continue ; + config.init_data = +of_get_regulator_init_data (&pdev->dev, np, + ®ulator->info->reg_desc); + config.of_node = np; +break ; }of_node_put (nproot);#endif
drivers/regulator/da9055-regulator.c +16 -16
@@ -77,7 +77,7 @@ struct da9055_regulator_info {struct da9055_regulator {struct da9055 *da9055; -struct da9055_regulator_info *info; +const struct da9055_regulator_info *info;struct regulator_dev *rdev;enum gpio_select reg_rselect; };
@@ -85,7 +85,7 @@ struct da9055_regulator {static unsigned int da9055_buck_get_mode (struct regulator_dev *rdev) {struct da9055_regulator *regulator =rdev_get_drvdata (rdev); -struct da9055_regulator_info *info = regulator->info; +const struct da9055_regulator_info *info = regulator->info;int ret, mode =0 ; ret =da9055_reg_read (regulator->da9055, info->mode.reg);
@@ -111,7 +111,7 @@ static int da9055_buck_set_mode(struct regulator_dev *rdev, unsigned int mode) {struct da9055_regulator *regulator =rdev_get_drvdata (rdev); -struct da9055_regulator_info *info = regulator->info; +const struct da9055_regulator_info *info = regulator->info;int val =0 ;switch (mode) {
@@ -133,7 +133,7 @@ static int da9055_buck_set_mode(struct regulator_dev *rdev,static unsigned int da9055_ldo_get_mode (struct regulator_dev *rdev) {struct da9055_regulator *regulator =rdev_get_drvdata (rdev); -struct da9055_regulator_info *info = regulator->info; +const struct da9055_regulator_info *info = regulator->info;int ret; ret =da9055_reg_read (regulator->da9055, info->volt.reg_b);
@@ -149,7 +149,7 @@ static unsigned int da9055_ldo_get_mode(struct regulator_dev *rdev)static int da9055_ldo_set_mode (struct regulator_dev *rdev,unsigned int mode) {struct da9055_regulator *regulator =rdev_get_drvdata (rdev); -struct da9055_regulator_info *info = regulator->info; +const struct da9055_regulator_info *info = regulator->info;struct da9055_volt_reg volt = info->volt;int val =0 ;
@@ -171,7 +171,7 @@ static int da9055_ldo_set_mode(struct regulator_dev *rdev, unsigned int mode)static int da9055_buck_get_current_limit (struct regulator_dev *rdev) {struct da9055_regulator *regulator =rdev_get_drvdata (rdev); -struct da9055_regulator_info *info = regulator->info; +const struct da9055_regulator_info *info = regulator->info;int ret; ret =da9055_reg_read (regulator->da9055,DA9055_REG_BUCK_LIM );
@@ -186,7 +186,7 @@ static int da9055_buck_set_current_limit(struct regulator_dev *rdev, int min_uA, int max_uA) {struct da9055_regulator *regulator =rdev_get_drvdata (rdev); -struct da9055_regulator_info *info = regulator->info; +const struct da9055_regulator_info *info = regulator->info;int i;for (i =ARRAY_SIZE (da9055_current_limits) -1 ; i >=0 ; i--) {
@@ -204,7 +204,7 @@ static int da9055_buck_set_current_limit(struct regulator_dev *rdev, int min_uA,static int da9055_regulator_get_voltage_sel (struct regulator_dev *rdev) {struct da9055_regulator *regulator =rdev_get_drvdata (rdev); -struct da9055_regulator_info *info = regulator->info; +const struct da9055_regulator_info *info = regulator->info;struct da9055_volt_reg volt = info->volt;int ret, sel;
@@ -236,7 +236,7 @@ static int da9055_regulator_set_voltage_sel(struct regulator_dev *rdev, unsigned int selector) {struct da9055_regulator *regulator =rdev_get_drvdata (rdev); -struct da9055_regulator_info *info = regulator->info; +const struct da9055_regulator_info *info = regulator->info;int ret;/*
@@ -279,7 +279,7 @@ static int da9055_regulator_set_suspend_voltage(struct regulator_dev *rdev, int uV) {struct da9055_regulator *regulator =rdev_get_drvdata (rdev); -struct da9055_regulator_info *info = regulator->info; +const struct da9055_regulator_info *info = regulator->info;int ret;/* Select register set B for suspend voltage ramping. */
@@ -301,7 +301,7 @@ static int da9055_regulator_set_suspend_voltage(struct regulator_dev *rdev,static int da9055_suspend_enable (struct regulator_dev *rdev) {struct da9055_regulator *regulator =rdev_get_drvdata (rdev); -struct da9055_regulator_info *info = regulator->info; +const struct da9055_regulator_info *info = regulator->info;/* Select register set B for voltage ramping. */ if (regulator->reg_rselect ==NO_GPIO )
@@ -314,7 +314,7 @@ static int da9055_suspend_enable(struct regulator_dev *rdev)static int da9055_suspend_disable (struct regulator_dev *rdev) {struct da9055_regulator *regulator =rdev_get_drvdata (rdev); -struct da9055_regulator_info *info = regulator->info; +const struct da9055_regulator_info *info = regulator->info;/* Diselect register set B. */ if (regulator->reg_rselect ==NO_GPIO )
@@ -425,7 +425,7 @@ static const struct regulator_ops da9055_ldo_ops = { },\ } -static struct da9055_regulator_info da9055_regulator_info[] = { +static const struct da9055_regulator_info da9055_regulator_info[] = {DA9055_BUCK (BUCK1 ,25 ,725 ,2075 ,6 ,9 ,0xc ,2 ),DA9055_BUCK (BUCK2 ,25 ,925 ,2500 ,6 ,0 ,3 ,0 ),DA9055_LDO (LDO1 ,50 ,900 ,3300 ,6 ,2 ),
@@ -445,7 +445,7 @@ static int da9055_gpio_init(struct da9055_regulator *regulator,struct regulator_config *config, struct da9055_pdata *pdata, int id) { - struct da9055_regulator_info *info = regulator->info; + const struct da9055_regulator_info *info = regulator->info;int ret =0 ;if (!pdata)
@@ -521,9 +521,9 @@ static irqreturn_t da9055_ldo5_6_oc_irq(int irq, void *data)return IRQ_HANDLED ; } -static inline struct da9055_regulator_info *find_regulator_info (int id) +static inline const struct da9055_regulator_info *find_regulator_info (int id) { -struct da9055_regulator_info *info; +const struct da9055_regulator_info *info;int i;for (i =0 ; i <ARRAY_SIZE (da9055_regulator_info); i++) {
Signature · 1 line
2.10.0.rc2.1.g053435c
PATCH 1/1 da905x: Add const to da905x_regulator_info blocks
Hi Julia.
Could coccinelle identify non-const arrays that are never modified by anything and add const like this patch below by some mechanism?
---
Quoted 273 lines · Joe Perches
Moving data to text is a good thing.
Mark the
regulator_infostructs as const and change the pointers to const.$ size drivers/regulator/*.o* text data bss dec hex filename 7455 100 0 7555 1d83 drivers/regulator/da9052-regulator.o.new 2111 5392 0 7503 1d4f drivers/regulator/da9052-regulator.o.old 4321 100 0 4421 1145 drivers/regulator/da9055-regulator.o.new 2611 1800 0 4411 113b drivers/regulator/da9055-regulator.o.oldSigned-off-by Joe Perches <[email protected]>--- drivers/regulator/da9052-regulator.c | 37 ++++++++++++++++++------------------ drivers/regulator/da9055-regulator.c | 32 +++++++++++++++---------------- 2 files changed, 34 insertions(+), 35 deletions(-)drivers/regulator/da9052-regulator.c +18
-19@@ -75,11 +75,11 @@ struct da9052_regulator_info {struct da9052_regulator {struct da9052 *da9052; -struct da9052_regulator_info *info; +const struct da9052_regulator_info *info;struct regulator_dev *rdev; }; -static int verify_range (struct da9052_regulator_info *info, +static int verify_range (const struct da9052_regulator_info *info,int min_uV,int max_uV) {if (min_uV > info->max_uV || max_uV < info->min_uV)@@ -159,7 +159,7 @@ static int da9052_list_voltage(struct regulator_dev *rdev, unsigned int selector) {struct da9052_regulator *regulator =rdev_get_drvdata (rdev); -struct da9052_regulator_info *info = regulator->info; +const struct da9052_regulator_info *info = regulator->info;int id =rdev_get_id (rdev);int volt_uV;@@ -183,7 +183,7 @@ static int da9052_map_voltage(struct regulator_dev *rdev, int min_uV, int max_uV) {struct da9052_regulator *regulator =rdev_get_drvdata (rdev); -struct da9052_regulator_info *info = regulator->info; +const struct da9052_regulator_info *info = regulator->info;int id =rdev_get_id (rdev);int ret, sel;@@ -214,7 +214,7 @@ static int da9052_regulator_set_voltage_sel(struct regulator_dev *rdev, unsigned int selector) {struct da9052_regulator *regulator =rdev_get_drvdata (rdev); -struct da9052_regulator_info *info = regulator->info; +const struct da9052_regulator_info *info = regulator->info;int id =rdev_get_id (rdev);int ret;@@ -245,7 +245,7 @@ static int da9052_regulator_set_voltage_time_sel(struct regulator_dev *rdev, unsigned int new_sel) {struct da9052_regulator *regulator =rdev_get_drvdata (rdev); -struct da9052_regulator_info *info = regulator->info; +const struct da9052_regulator_info *info = regulator->info;int id =rdev_get_id (rdev);int ret =0 ;@@ -330,7 +330,7 @@ static const struct regulator_ops da9052_ldo_ops = { .activate_bit = (abits),\ } -static struct da9052_regulator_info da9052_regulator_info[] = { +static const struct da9052_regulator_info da9052_regulator_info[] = {DA9052_DCDC (BUCK1 ,25 ,500 ,2075 ,6 ,6 ,DA9052_SUPPLY_VBCOREGO ),DA9052_DCDC (BUCK2 ,25 ,500 ,2075 ,6 ,6 ,DA9052_SUPPLY_VBPROGO ),DA9052_DCDC (BUCK3 ,25 ,950 ,2525 ,6 ,6 ,DA9052_SUPPLY_VBMEMGO ),@@ -347,7 +347,7 @@ static struct da9052_regulator_info da9052_regulator_info[] = { DA9052_LDO(LDO10, 50, 1200, 3600, 6, 6, 0), }; -static struct da9052_regulator_info da9053_regulator_info[] = { +static const struct da9052_regulator_info da9053_regulator_info[] = {DA9052_DCDC (BUCK1 ,25 ,500 ,2075 ,6 ,6 ,DA9052_SUPPLY_VBCOREGO ),DA9052_DCDC (BUCK2 ,25 ,500 ,2075 ,6 ,6 ,DA9052_SUPPLY_VBPROGO ),DA9052_DCDC (BUCK3 ,25 ,950 ,2525 ,6 ,6 ,DA9052_SUPPLY_VBMEMGO ),@@ -364,10 +364,10 @@ static struct da9052_regulator_info da9053_regulator_info[] = { DA9052_LDO(LDO10, 50, 1200, 3600, 6, 6, 0), }; -static inline struct da9052_regulator_info *find_regulator_info (u8 chip_id, -int id) +static inline const struct da9052_regulator_info * +find_regulator_info (u8 chip_id,int id) { -struct da9052_regulator_info *info; +const struct da9052_regulator_info *info;int i;switch (chip_id) {@@ -435,14 +435,13 @@ static int da9052_regulator_probe(struct platform_device *pdev)return -ENODEV ;for_each_child_of_node (nproot, np) { -if (!of_node_cmp (np->name, - regulator->info->reg_desc.name)) { - config.init_data =of_get_regulator_init_data ( - &pdev->dev, np, - ®ulator->info->reg_desc); - config.of_node = np; -break ; - } +if (of_node_cmp (np->name, regulator->info->reg_desc.name)) +continue ; + config.init_data = +of_get_regulator_init_data (&pdev->dev, np, + ®ulator->info->reg_desc); + config.of_node = np; +break ; }of_node_put (nproot);#endif drivers/regulator/da9055-regulator.c +16
-16@@ -77,7 +77,7 @@ struct da9055_regulator_info {struct da9055_regulator {struct da9055 *da9055; -struct da9055_regulator_info *info; +const struct da9055_regulator_info *info;struct regulator_dev *rdev;enum gpio_select reg_rselect; };@@ -85,7 +85,7 @@ struct da9055_regulator {static unsigned int da9055_buck_get_mode (struct regulator_dev *rdev) {struct da9055_regulator *regulator =rdev_get_drvdata (rdev); -struct da9055_regulator_info *info = regulator->info; +const struct da9055_regulator_info *info = regulator->info;int ret, mode =0 ; ret =da9055_reg_read (regulator->da9055, info->mode.reg);@@ -111,7 +111,7 @@ static int da9055_buck_set_mode(struct regulator_dev *rdev, unsigned int mode) {struct da9055_regulator *regulator =rdev_get_drvdata (rdev); -struct da9055_regulator_info *info = regulator->info; +const struct da9055_regulator_info *info = regulator->info;int val =0 ;switch (mode) {@@ -133,7 +133,7 @@ static int da9055_buck_set_mode(struct regulator_dev *rdev,static unsigned int da9055_ldo_get_mode (struct regulator_dev *rdev) {struct da9055_regulator *regulator =rdev_get_drvdata (rdev); -struct da9055_regulator_info *info = regulator->info; +const struct da9055_regulator_info *info = regulator->info;int ret; ret =da9055_reg_read (regulator->da9055, info->volt.reg_b);@@ -149,7 +149,7 @@ static unsigned int da9055_ldo_get_mode(struct regulator_dev *rdev)static int da9055_ldo_set_mode (struct regulator_dev *rdev,unsigned int mode) {struct da9055_regulator *regulator =rdev_get_drvdata (rdev); -struct da9055_regulator_info *info = regulator->info; +const struct da9055_regulator_info *info = regulator->info;struct da9055_volt_reg volt = info->volt;int val =0 ;@@ -171,7 +171,7 @@ static int da9055_ldo_set_mode(struct regulator_dev *rdev, unsigned int mode)static int da9055_buck_get_current_limit (struct regulator_dev *rdev) {struct da9055_regulator *regulator =rdev_get_drvdata (rdev); -struct da9055_regulator_info *info = regulator->info; +const struct da9055_regulator_info *info = regulator->info;int ret; ret =da9055_reg_read (regulator->da9055,DA9055_REG_BUCK_LIM );@@ -186,7 +186,7 @@ static int da9055_buck_set_current_limit(struct regulator_dev *rdev, int min_uA, int max_uA) {struct da9055_regulator *regulator =rdev_get_drvdata (rdev); -struct da9055_regulator_info *info = regulator->info; +const struct da9055_regulator_info *info = regulator->info;int i;for (i =ARRAY_SIZE (da9055_current_limits) -1 ; i >=0 ; i--) {@@ -204,7 +204,7 @@ static int da9055_buck_set_current_limit(struct regulator_dev *rdev, int min_uA,static int da9055_regulator_get_voltage_sel (struct regulator_dev *rdev) {struct da9055_regulator *regulator =rdev_get_drvdata (rdev); -struct da9055_regulator_info *info = regulator->info; +const struct da9055_regulator_info *info = regulator->info;struct da9055_volt_reg volt = info->volt;int ret, sel;@@ -236,7 +236,7 @@ static int da9055_regulator_set_voltage_sel(struct regulator_dev *rdev, unsigned int selector) {struct da9055_regulator *regulator =rdev_get_drvdata (rdev); -struct da9055_regulator_info *info = regulator->info; +const struct da9055_regulator_info *info = regulator->info;int ret;/* @@ -279,7 +279,7 @@ static int da9055_regulator_set_suspend_voltage(struct regulator_dev *rdev, int uV) {struct da9055_regulator *regulator =rdev_get_drvdata (rdev); -struct da9055_regulator_info *info = regulator->info; +const struct da9055_regulator_info *info = regulator->info;int ret;/* Select register set B for suspend voltage ramping. */ @@ -301,7 +301,7 @@ static int da9055_regulator_set_suspend_voltage(struct regulator_dev *rdev,static int da9055_suspend_enable (struct regulator_dev *rdev) {struct da9055_regulator *regulator =rdev_get_drvdata (rdev); -struct da9055_regulator_info *info = regulator->info; +const struct da9055_regulator_info *info = regulator->info;/* Select register set B for voltage ramping. */ if (regulator->reg_rselect ==NO_GPIO )@@ -314,7 +314,7 @@ static int da9055_suspend_enable(struct regulator_dev *rdev)static int da9055_suspend_disable (struct regulator_dev *rdev) {struct da9055_regulator *regulator =rdev_get_drvdata (rdev); -struct da9055_regulator_info *info = regulator->info; +const struct da9055_regulator_info *info = regulator->info;/* Diselect register set B. */ if (regulator->reg_rselect ==NO_GPIO )@@ -425,7 +425,7 @@ static const struct regulator_ops da9055_ldo_ops = { }, } -static struct da9055_regulator_info da9055_regulator_info[] = { +static const struct da9055_regulator_info da9055_regulator_info[] = {DA9055_BUCK (BUCK1 ,25 ,725 ,2075 ,6 ,9 ,0xc ,2 ),DA9055_BUCK (BUCK2 ,25 ,925 ,2500 ,6 ,0 ,3 ,0 ),DA9055_LDO (LDO1 ,50 ,900 ,3300 ,6 ,2 ),@@ -445,7 +445,7 @@ static int da9055_gpio_init(struct da9055_regulator *regulator,struct regulator_config *config, struct da9055_pdata *pdata, int id) { - struct da9055_regulator_info *info = regulator->info; + const struct da9055_regulator_info *info = regulator->info;int ret =0 ;if (!pdata)@@ -521,9 +521,9 @@ static irqreturn_t da9055_ldo5_6_oc_irq(int irq, void *data)return IRQ_HANDLED ; } -static inline struct da9055_regulator_info *find_regulator_info (int id) +static inline const struct da9055_regulator_info *find_regulator_info (int id) { -struct da9055_regulator_info *info; +const struct da9055_regulator_info *info;int i;for (i =0 ; i <ARRAY_SIZE (da9055_regulator_info); i++) {
PATCH 1/1 da905x: Add const to da905x_regulator_info blocks
Le 09.09.2016 10:56, Joe Perches a ?crit?:
Quoted 4 lines
Hi Julia.
Could coccinelle identify non-const arrays that are never modified by anything and add const like this patch below by some mechanism?
If you know the type that should be const, then Coccinlle can add the consts everywhere.
Previously, I was collecting top-level structures that contain only function pointers and speculatively adding const on them, I would submit the patch if gcc compiled all of the files containing the structure and didn't complain.
When you move away from structures with fields that are function pointers,
perhaps the chance that a field is modified increases, so that is why I focused only on function pointers. If it is eg likely that arrays are not
modified, then one could apply the same methodology to them.
Coccinelle doesn't always have complete type information, because it doesn't necessarily have access to all header files, so it is not clear that it could be useful for it to blindly search for all structures that are used in a read-only way.
Currently, I am just looking at what can be done with existing const annotations. If an existing const structure is eg only stored in a certain field or only passed as an argument to a certain function, then other structures that are not currently annotated as const, but that are only used in those ways, can be annotated as const as well. This approach
gives lots of results, and even better causes the construction of some semantic patches that could be integrated into the kernel (not done yet) to be used in the future. It is also totally insensitive to the types of
the field. On the other hand, it is not helpful when there are no const annotations at all related to a given type, but actually everything could
be const. The latter cases can be handled by the previous approach.
julia
Quoted 311 lines
---
Quoted 308 lines · Joe Perches
Moving data to text is a good thing.
Mark the
regulator_infostructs as const and change the pointers to const.$ size drivers/regulator/*.o* text data bss dec hex filename 7455 100 0 7555 1d83 drivers/regulator/da9052-regulator.o.new 2111 5392 0 7503 1d4f drivers/regulator/da9052-regulator.o.old 4321 100 0 4421 1145 drivers/regulator/da9055-regulator.o.new 2611 1800 0 4411 113b drivers/regulator/da9055-regulator.o.oldSigned-off-by Joe Perches <[email protected]>--- drivers/regulator/da9052-regulator.c | 37 ++++++++++++++++++------------------ drivers/regulator/da9055-regulator.c | 32 +++++++++++++++---------------- 2 files changed, 34 insertions(+), 35 deletions(-)drivers/regulator/da9052-regulator.c +7
-7@@ -75,11 +75,11 @@ struct da9052_regulator_info {struct da9052_regulator {struct da9052 *da9052; -struct da9052_regulator_info *info; +const struct da9052_regulator_info *info;struct regulator_dev *rdev; }; -static int verify_range (struct da9052_regulator_info *info, +static int verify_range (const struct da9052_regulator_info *info,int min_uV,int max_uV) {if (min_uV > info->max_uV || max_uV < info->min_uV)@@ -159,7 +159,7 @@ static int da9052_list_voltage(struct regulator_dev *rdev, unsigned int selector) {struct da9052_regulator *regulator =rdev_get_drvdata (rdev); -struct da9052_regulator_info *info = regulator->info; +const struct da9052_regulator_info *info = regulator->info;int id =rdev_get_id (rdev);int volt_uV;@@ -183,7 +183,7 @@ static int da9052_map_voltage(struct regulator_dev *rdev, int min_uV, int max_uV) {struct da9052_regulator *regulator =rdev_get_drvdata (rdev); -struct da9052_regulator_info *info = regulator->info; +const struct da9052_regulator_info *info = regulator->info;int id =rdev_get_id (rdev);int ret, sel;@@ -214,7 +214,7 @@ static int da9052_regulator_set_voltage_sel(struct regulator_dev *rdev, unsigned int selector) {struct da9052_regulator *regulator =rdev_get_drvdata (rdev); -struct da9052_regulator_info *info = regulator->info; +const struct da9052_regulator_info *info = regulator->info;int id =rdev_get_id (rdev);int ret;@@ -245,7 +245,7 @@ static int da9052_regulator_set_voltage_time_sel(struct regulator_dev *rdev, unsigned int new_sel) {struct da9052_regulator *regulator =rdev_get_drvdata (rdev); -struct da9052_regulator_info *info = regulator->info; +const struct da9052_regulator_info *info = regulator->info;int id =rdev_get_id (rdev);int ret =0 ;@@ -330,7 +330,7 @@ static const struct regulator_ops da9052_ldo_ops = { .activate_bit = (abits),\ } -static struct da9052_regulator_info da9052_regulator_info[] = { +static const struct da9052_regulator_info da9052_regulator_info[] = {DA9052_DCDC (BUCK1 ,25 ,500 ,2075 ,6 ,6 ,DA9052_SUPPLY_VBCOREGO ),DA9052_DCDC (BUCK2 ,25 ,500 ,2075 ,6 ,6 ,DA9052_SUPPLY_VBPROGO ),drivers/regulator/da9052-regulator.c +1
-1DA9052_DCDC(BUCK3, 25, 950, 2525, 6, 6, DA9052_SUPPLY_VBMEMGO),@@ -347,7 +347,7 @@ static struct da9052_regulator_info da9052_regulator_info[] = { DA9052_LDO(LDO10, 50, 1200, 3600, 6, 6, 0), }; -static struct da9052_regulator_info da9053_regulator_info[] = { +static const struct da9052_regulator_info da9053_regulator_info[] = {DA9052_DCDC (BUCK1 ,25 ,500 ,2075 ,6 ,6 ,DA9052_SUPPLY_VBCOREGO ),DA9052_DCDC (BUCK2 ,25 ,500 ,2075 ,6 ,6 ,DA9052_SUPPLY_VBPROGO ),drivers/regulator/da9052-regulator.c +3
-3DA9052_DCDC(BUCK3, 25, 950, 2525, 6, 6, DA9052_SUPPLY_VBMEMGO),@@ -364,10 +364,10 @@ static struct da9052_regulator_info da9053_regulator_info[] = {DA9052_LDO (LDO10 ,50 ,1200 ,3600 ,6 ,6 ,0 ), }; -static inline struct da9052_regulator_info *find_regulator_info (u8 chip_id, -int id) +static inline const struct da9052_regulator_info * +find_regulator_info (u8 chip_id,int id) { -struct da9052_regulator_info *info; +const struct da9052_regulator_info *info;int i;drivers/regulator/da9052-regulator.c +7
-8switch (chip_id) {@@ -435,14 +435,13 @@ static int da9052_regulator_probe(struct platform_device *pdev)return -ENODEV ;for_each_child_of_node (nproot, np) { -if (!of_node_cmp (np->name, - regulator->info->reg_desc.name)) { - config.init_data =of_get_regulator_init_data ( - &pdev->dev, np, - ®ulator->info->reg_desc); - config.of_node = np; -break ; - } +if (of_node_cmp (np->name, regulator->info->reg_desc.name)) +continue ; + config.init_data = +of_get_regulator_init_data (&pdev->dev, np, + ®ulator->info->reg_desc); + config.of_node = np; +break ; }of_node_put (nproot);#endif
drivers/regulator/da9055-regulator.c +3
-3@@ -77,7 +77,7 @@ struct da9055_regulator_info {struct da9055_regulator {struct da9055 *da9055; -struct da9055_regulator_info *info; +const struct da9055_regulator_info *info;struct regulator_dev *rdev;enum gpio_select reg_rselect; };@@ -85,7 +85,7 @@ struct da9055_regulator {static unsigned int da9055_buck_get_mode (struct regulator_dev *rdev) {struct da9055_regulator *regulator =rdev_get_drvdata (rdev); -struct da9055_regulator_info *info = regulator->info; +const struct da9055_regulator_info *info = regulator->info;int ret, mode =0 ; ret =da9055_reg_read (regulator->da9055, info->mode.reg);@@ -111,7 +111,7 @@ static int da9055_buck_set_mode(struct regulator_dev *rdev, unsigned int mode) {struct da9055_regulator *regulator =rdev_get_drvdata (rdev); -struct da9055_regulator_info *info = regulator->info; +const struct da9055_regulator_info *info = regulator->info;int val =0 ;drivers/regulator/da9055-regulator.c +1
-1switch (mode) {@@ -133,7 +133,7 @@ static int da9055_buck_set_mode(structregulator_dev *rdev, static unsigned int da9055_ldo_get_mode(struct regulator_dev *rdev) { struct da9055_regulator *regulator = rdev_get_drvdata(rdev); -struct da9055_regulator_info *info = regulator->info; +const struct da9055_regulator_info *info = regulator->info;int ret;drivers/regulator/da9055-regulator.c +1
-1ret =da9055_reg_read (regulator->da9055, info->volt.reg_b);@@ -149,7 +149,7 @@ static unsigned int da9055_ldo_get_mode(struct regulator_dev *rdev)static int da9055_ldo_set_mode (struct regulator_dev *rdev,unsigned int mode) {struct da9055_regulator *regulator =rdev_get_drvdata (rdev); -struct da9055_regulator_info *info = regulator->info; +const struct da9055_regulator_info *info = regulator->info;struct da9055_volt_reg volt = info->volt;drivers/regulator/da9055-regulator.c +1
-1int val =0 ;@@ -171,7 +171,7 @@ static int da9055_ldo_set_mode(struct regulator_dev *rdev, unsigned int mode)static int da9055_buck_get_current_limit (struct regulator_dev *rdev) {struct da9055_regulator *regulator =rdev_get_drvdata (rdev); -struct da9055_regulator_info *info = regulator->info; +const struct da9055_regulator_info *info = regulator->info;int ret;drivers/regulator/da9055-regulator.c +1
-1ret =da9055_reg_read (regulator->da9055,DA9055_REG_BUCK_LIM );@@ -186,7 +186,7 @@ static int da9055_buck_set_current_limit(struct regulator_dev *rdev, int min_uA, int max_uA) { struct da9055_regulator *regulator = rdev_get_drvdata(rdev); -struct da9055_regulator_info *info = regulator->info; +const struct da9055_regulator_info *info = regulator->info;int i;drivers/regulator/da9055-regulator.c +1
-1for (i =ARRAY_SIZE (da9055_current_limits) -1 ; i >=0 ; i--) {@@ -204,7 +204,7 @@ static int da9055_buck_set_current_limit(struct regulator_dev *rdev, int min_uA, static int da9055_regulator_get_voltage_sel(struct regulator_dev *rdev) { struct da9055_regulator *regulator = rdev_get_drvdata(rdev); -struct da9055_regulator_info *info = regulator->info; +const struct da9055_regulator_info *info = regulator->info;struct da9055_volt_reg volt = info->volt;drivers/regulator/da9055-regulator.c +1
-1int ret, sel;@@ -236,7 +236,7 @@ static int da9055_regulator_set_voltage_sel(struct regulator_dev *rdev, unsigned int selector) {struct da9055_regulator *regulator =rdev_get_drvdata (rdev); -struct da9055_regulator_info *info = regulator->info; +const struct da9055_regulator_info *info = regulator->info;int ret;drivers/regulator/da9055-regulator.c +1
-1/* @@ -279,7 +279,7 @@ static int da9055_regulator_set_suspend_voltage(struct regulator_dev *rdev, int uV) {struct da9055_regulator *regulator =rdev_get_drvdata (rdev); -struct da9055_regulator_info *info = regulator->info; +const struct da9055_regulator_info *info = regulator->info;int ret;drivers/regulator/da9055-regulator.c +1
-1/* Select register set B for suspend voltage ramping. */ @@ -301,7 +301,7 @@ static int da9055_regulator_set_suspend_voltage(struct regulator_dev *rdev, static int da9055_suspend_enable(struct regulator_dev *rdev) { struct da9055_regulator *regulator = rdev_get_drvdata(rdev); -struct da9055_regulator_info *info = regulator->info; +const struct da9055_regulator_info *info = regulator->info;/* Select register set B for voltage ramping. */ drivers/regulator/da9055-regulator.c +1
-1if (regulator->reg_rselect ==NO_GPIO )@@ -314,7 +314,7 @@ static int da9055_suspend_enable(struct regulator_dev *rdev)static int da9055_suspend_disable (struct regulator_dev *rdev) {struct da9055_regulator *regulator =rdev_get_drvdata (rdev); -struct da9055_regulator_info *info = regulator->info; +const struct da9055_regulator_info *info = regulator->info;/* Diselect register set B. */ drivers/regulator/da9055-regulator.c +1
-1if (regulator->reg_rselect ==NO_GPIO )@@ -425,7 +425,7 @@ static const struct regulator_ops da9055_ldo_ops = { }, } -static struct da9055_regulator_info da9055_regulator_info[] = { +static const struct da9055_regulator_info da9055_regulator_info[] = {DA9055_BUCK (BUCK1 ,25 ,725 ,2075 ,6 ,9 ,0xc ,2 ),DA9055_BUCK (BUCK2 ,25 ,925 ,2500 ,6 ,0 ,3 ,0 ),drivers/regulator/da9055-regulator.c +1
-1DA9055_LDO(LDO1, 50, 900, 3300, 6, 2),@@ -445,7 +445,7 @@ static int da9055_gpio_init(structda9055_regulator *regulator, struct regulator_config *config, struct da9055_pdata *pdata, int id) { - struct da9055_regulator_info *info = regulator->info; + const struct da9055_regulator_info *info = regulator->info;int ret =0 ;drivers/regulator/da9055-regulator.c +2
-2if (!pdata)@@ -521,9 +521,9 @@ static irqreturn_t da9055_ldo5_6_oc_irq(int irq, void *data)return IRQ_HANDLED ; } -static inline struct da9055_regulator_info *find_regulator_info(int id) +static inline const struct da9055_regulator_info *find_regulator_info (int id) { -struct da9055_regulator_info *info; +const struct da9055_regulator_info *info;drivers/regulator/da9055-regulator.c +0
-0int i;for (i =0 ; i <ARRAY_SIZE (da9055_regulator_info); i++) {
PATCH 1/1 da905x: Add const to da905x_regulator_info blocks
Quoted 5 lines · Julia Lawall
Le 09.09.2016 10:56, Joe Perches a ?crit?:
Quoted 2 lines
Could coccinelle identify non-const arrays that are never modified by anything and add const like this patch below by some mechanism?
If you know the type that should be const, then Coccinlle can add the consts everywhere.
Sure, but the fundamental here is that you don't know that the type _could_ be const.
Quoted 4 lines
Coccinelle doesn't always have complete type information, because it doesn't necessarily have access to all header files, so it is not clear that it could be useful for it to blindly search for all structures that are used in a read-only way.
In the example given the struct definitions are file local.
It's not an easy problem but it could be worthwhile when all structure members are never modified after initialization.
PATCH 1/1 da905x: Add const to da905x_regulator_info blocks
Le 09.09.2016 12:38, Joe Perches a ?crit?:
Quoted 17 lines · Julia Lawall
Quoted 5 lines
Le 09.09.2016 10:56, Joe Perches a ?crit?:
Quoted 2 lines
Could coccinelle identify non-const arrays that are never modified by anything and add const like this patch below by some mechanism?
If you know the type that should be const, then Coccinlle can add the consts everywhere.
Sure, but the fundamental here is that you don't know that the type _could_ be const.
Quoted 6 lines
Coccinelle doesn't always have complete type information, because it doesn't necessarily have access to all header files, so it is not clear
that it could be useful for it to blindly search for all structures that
are used in a read-only way.
Quoted 4 lines
In the example given the struct definitions are file local.
It's not an easy problem but it could be worthwhile when all structure members are never modified after initialization.
If the structure type is file-local, it could indeed be possible to do something. Thanks for the suggestion.
julia
[Cocci] Marking data structures as "const" (like da905x_regulator_info blocks)?
Quoted 4 lines
Quoted 2 lines
It's not an easy problem but it could be worthwhile when all structure members are never modified after initialization.
If the structure type is file-local,
This scope limitation sounds promising. Some source code analysis seems to be easier when you can be sure that all the information you need for a specific task is contained in a single file.
Quoted 1 line
it could indeed be possible to do something.
I imagine that a general software development challenge remains for further considerations and corresponding technology research. How will the available software tools become better
in data flow analysis?
Regards,
Makrus