Hi Matti, url: https://github.com/0day-ci/linux/commits/Matti-Vaittinen/support-ROHM-BD70528-PMIC/20190205-114747 base: https://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd.git for-mfd-next
New smatch warnings: drivers/regulator/bd718x7-regulator.c:1041 bd718xx_probe() error: buffer overflow 'pmic_regulators' 2 <= 2 Old smatch warnings: drivers/regulator/bd718x7-regulator.c:1081 bd718xx_probe() error: buffer overflow 'pmic_regulators' 2 <= 2 # https://github.com/0day-ci/linux/commit/299c653896fe08769fc1d618f422461b6f95b15e git remote add linux-review https://github.com/0day-ci/linux git remote update linux-review git checkout 299c653896fe08769fc1d618f422461b6f95b15e vim +/pmic_regulators +1041 drivers/regulator/bd718x7-regulator.c ba08799e drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-05-30 1015 dd2be639 drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-09-14 1016 static int bd718xx_probe(struct platform_device *pdev) ba08799e drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-05-30 1017 { bcb047eb drivers/regulator/bd718x7-regulator.c Axel Lin 2018-10-04 1018 struct bd718xx *mfd; ba08799e drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-05-30 1019 struct regulator_config config = { 0 }; 494edd26 drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-09-14 1020 struct bd718xx_pmic_inits pmic_regulators[] = { 299c6538 drivers/regulator/bd718x7-regulator.c Matti Vaittinen 2019-02-04 1021 [ROHM_CHIP_TYPE_BD71837] = { de226ebd drivers/regulator/bd718x7-regulator.c Geert Uytterhoeven 2018-10-28 1022 .r_datas = bd71837_regulators, 494edd26 drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-09-14 1023 .r_amount = ARRAY_SIZE(bd71837_regulators), 494edd26 drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-09-14 1024 }, 299c6538 drivers/regulator/bd718x7-regulator.c Matti Vaittinen 2019-02-04 1025 [ROHM_CHIP_TYPE_BD71847] = { ^^^^^^^^^^^^^^^^^^^^^^ de226ebd drivers/regulator/bd718x7-regulator.c Geert Uytterhoeven 2018-10-28 1026 .r_datas = bd71847_regulators, 494edd26 drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-09-14 1027 .r_amount = ARRAY_SIZE(bd71847_regulators), 494edd26 drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-09-14 1028 }, ba08799e drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-05-30 1029 }; ba08799e drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-05-30 1030 494edd26 drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-09-14 1031 int i, j, err; ba08799e drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-05-30 1032 bcb047eb drivers/regulator/bd718x7-regulator.c Axel Lin 2018-10-04 1033 mfd = dev_get_drvdata(pdev->dev.parent); bcb047eb drivers/regulator/bd718x7-regulator.c Axel Lin 2018-10-04 1034 if (!mfd) { ba08799e drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-05-30 1035 dev_err(&pdev->dev, "No MFD driver data\n"); ba08799e drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-05-30 1036 err = -EINVAL; ba08799e drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-05-30 1037 goto err; ba08799e drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-05-30 1038 } bcb047eb drivers/regulator/bd718x7-regulator.c Axel Lin 2018-10-04 1039 299c6538 drivers/regulator/bd718x7-regulator.c Matti Vaittinen 2019-02-04 1040 if (mfd->chip.chip_type >= ROHM_CHIP_TYPE_AMOUNT || ^^^^^^^^^^^^^^^^^^^^^ 299c6538 drivers/regulator/bd718x7-regulator.c Matti Vaittinen 2019-02-04 @1041 !pmic_regulators[mfd->chip.chip_type].r_datas) { 494edd26 drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-09-14 1042 dev_err(&pdev->dev, "Unsupported chip type\n"); 494edd26 drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-09-14 1043 err = -EINVAL; 494edd26 drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-09-14 1044 goto err; 494edd26 drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-09-14 1045 } 494edd26 drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-09-14 1046 ba08799e drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-05-30 1047 /* Register LOCK release */ 299c6538 drivers/regulator/bd718x7-regulator.c Matti Vaittinen 2019-02-04 1048 err = regmap_update_bits(mfd->chip.regmap, BD718XX_REG_REGLOCK, ba08799e drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-05-30 1049 (REGLOCK_PWRSEQ | REGLOCK_VREG), 0); ba08799e drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-05-30 1050 if (err) { bcb047eb drivers/regulator/bd718x7-regulator.c Axel Lin 2018-10-04 1051 dev_err(&pdev->dev, "Failed to unlock PMIC (%d)\n", err); ba08799e drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-05-30 1052 goto err; ba08799e drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-05-30 1053 } else { bcb047eb drivers/regulator/bd718x7-regulator.c Axel Lin 2018-10-04 1054 dev_dbg(&pdev->dev, "Unlocked lock register 0x%x\n", 494edd26 drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-09-14 1055 BD718XX_REG_REGLOCK); 823f18f8 drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-08-29 1056 } 823f18f8 drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-08-29 1057 e770b18b drivers/regulator/bd718x7-regulator.c Matti Vaittinen 2018-11-07 1058 /* At poweroff transition PMIC HW disables EN bit for regulators but e770b18b drivers/regulator/bd718x7-regulator.c Matti Vaittinen 2018-11-07 1059 * leaves SEL bit untouched. So if state transition from POWEROFF e770b18b drivers/regulator/bd718x7-regulator.c Matti Vaittinen 2018-11-07 1060 * is done to SNVS - then all power rails controlled by SW (having e770b18b drivers/regulator/bd718x7-regulator.c Matti Vaittinen 2018-11-07 1061 * SEL bit set) stay disabled as EN is cleared. This may result boot e770b18b drivers/regulator/bd718x7-regulator.c Matti Vaittinen 2018-11-07 1062 * failure if any crucial systems are powered by these rails. e770b18b drivers/regulator/bd718x7-regulator.c Matti Vaittinen 2018-11-07 1063 * e770b18b drivers/regulator/bd718x7-regulator.c Matti Vaittinen 2018-11-07 1064 * Change the next stage from poweroff to be READY instead of SNVS e770b18b drivers/regulator/bd718x7-regulator.c Matti Vaittinen 2018-11-07 1065 * for all reset types because OTP loading at READY will clear SEL e770b18b drivers/regulator/bd718x7-regulator.c Matti Vaittinen 2018-11-07 1066 * bit allowing HW defaults for power rails to be used e770b18b drivers/regulator/bd718x7-regulator.c Matti Vaittinen 2018-11-07 1067 */ 299c6538 drivers/regulator/bd718x7-regulator.c Matti Vaittinen 2019-02-04 1068 err = regmap_update_bits(mfd->chip.regmap, BD718XX_REG_TRANS_COND1, e770b18b drivers/regulator/bd718x7-regulator.c Matti Vaittinen 2018-11-07 1069 BD718XX_ON_REQ_POWEROFF_MASK | e770b18b drivers/regulator/bd718x7-regulator.c Matti Vaittinen 2018-11-07 1070 BD718XX_SWRESET_POWEROFF_MASK | e770b18b drivers/regulator/bd718x7-regulator.c Matti Vaittinen 2018-11-07 1071 BD718XX_WDOG_POWEROFF_MASK | e770b18b drivers/regulator/bd718x7-regulator.c Matti Vaittinen 2018-11-07 1072 BD718XX_KEY_L_POWEROFF_MASK, e770b18b drivers/regulator/bd718x7-regulator.c Matti Vaittinen 2018-11-07 1073 BD718XX_POWOFF_TO_RDY); e770b18b drivers/regulator/bd718x7-regulator.c Matti Vaittinen 2018-11-07 1074 if (err) { e770b18b drivers/regulator/bd718x7-regulator.c Matti Vaittinen 2018-11-07 1075 dev_err(&pdev->dev, "Failed to change reset target\n"); e770b18b drivers/regulator/bd718x7-regulator.c Matti Vaittinen 2018-11-07 1076 goto err; e770b18b drivers/regulator/bd718x7-regulator.c Matti Vaittinen 2018-11-07 1077 } else { e770b18b drivers/regulator/bd718x7-regulator.c Matti Vaittinen 2018-11-07 1078 dev_dbg(&pdev->dev, "Changed all resets from SVNS to READY\n"); e770b18b drivers/regulator/bd718x7-regulator.c Matti Vaittinen 2018-11-07 1079 } e770b18b drivers/regulator/bd718x7-regulator.c Matti Vaittinen 2018-11-07 1080 299c6538 drivers/regulator/bd718x7-regulator.c Matti Vaittinen 2019-02-04 1081 for (i = 0; i < pmic_regulators[mfd->chip.chip_type].r_amount; i++) { ba08799e drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-05-30 1082 494edd26 drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-09-14 1083 const struct regulator_desc *desc; ba08799e drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-05-30 1084 struct regulator_dev *rdev; 494edd26 drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-09-14 1085 const struct bd718xx_regulator_data *r; ba08799e drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-05-30 1086 299c6538 drivers/regulator/bd718x7-regulator.c Matti Vaittinen 2019-02-04 1087 r = &pmic_regulators[mfd->chip.chip_type].r_datas[i]; 494edd26 drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-09-14 1088 desc = &r->desc; ba08799e drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-05-30 1089 ba08799e drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-05-30 1090 config.dev = pdev->dev.parent; 299c6538 drivers/regulator/bd718x7-regulator.c Matti Vaittinen 2019-02-04 1091 config.regmap = mfd->chip.regmap; ba08799e drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-05-30 1092 ba08799e drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-05-30 1093 rdev = devm_regulator_register(&pdev->dev, desc, &config); ba08799e drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-05-30 1094 if (IS_ERR(rdev)) { bcb047eb drivers/regulator/bd718x7-regulator.c Axel Lin 2018-10-04 1095 dev_err(&pdev->dev, ba08799e drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-05-30 1096 "failed to register %s regulator\n", ba08799e drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-05-30 1097 desc->name); ba08799e drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-05-30 1098 err = PTR_ERR(rdev); ba08799e drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-05-30 1099 goto err; ba08799e drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-05-30 1100 } ba08799e drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-05-30 1101 /* Regulator register gets the regulator constraints and ba08799e drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-05-30 1102 * applies them (set_machine_constraints). This should have ba08799e drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-05-30 1103 * turned the control register(s) to correct values and we ba08799e drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-05-30 1104 * can now switch the control from PMIC state machine to the ba08799e drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-05-30 1105 * register interface ba08799e drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-05-30 1106 */ 299c6538 drivers/regulator/bd718x7-regulator.c Matti Vaittinen 2019-02-04 1107 err = regmap_update_bits(mfd->chip.regmap, r->init.reg, 494edd26 drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-09-14 1108 r->init.mask, r->init.val); ba08799e drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-05-30 1109 if (err) { bcb047eb drivers/regulator/bd718x7-regulator.c Axel Lin 2018-10-04 1110 dev_err(&pdev->dev, ba08799e drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-05-30 1111 "Failed to write BUCK/LDO SEL bit for (%s)\n", ba08799e drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-05-30 1112 desc->name); ba08799e drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-05-30 1113 goto err; ba08799e drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-05-30 1114 } 494edd26 drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-09-14 1115 for (j = 0; j < r->additional_init_amnt; j++) { 299c6538 drivers/regulator/bd718x7-regulator.c Matti Vaittinen 2019-02-04 1116 err = regmap_update_bits(mfd->chip.regmap, 494edd26 drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-09-14 1117 r->additional_inits[j].reg, 494edd26 drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-09-14 1118 r->additional_inits[j].mask, 494edd26 drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-09-14 1119 r->additional_inits[j].val); 494edd26 drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-09-14 1120 if (err) { bcb047eb drivers/regulator/bd718x7-regulator.c Axel Lin 2018-10-04 1121 dev_err(&pdev->dev, 494edd26 drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-09-14 1122 "Buck (%s) initialization failed\n", 494edd26 drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-09-14 1123 desc->name); 494edd26 drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-09-14 1124 goto err; 494edd26 drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-09-14 1125 } 494edd26 drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-09-14 1126 } ba08799e drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-05-30 1127 } ba08799e drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-05-30 1128 ba08799e drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-05-30 1129 err: ba08799e drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-05-30 1130 return err; ba08799e drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-05-30 1131 } ba08799e drivers/regulator/bd71837-regulator.c Matti Vaittinen 2018-05-30 1132 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation _______________________________________________ kbuild mailing list kbuild@lists.01.org https://lists.01.org/mailman/listinfo/kbuild