Re: [PATCH V8 2/3] pinctrl: Add support pin control for UP board CPLD/FPGA

From: kernel test robot
Date: Fri Dec 29 2023 - 06:57:17 EST


Hi larry.lai,

kernel test robot noticed the following build errors:

[auto build test ERROR on 4fe89d07dcc2804c8b562f6c7896a45643d34b2f]

url: https://github.com/intel-lab-lkp/linux/commits/larry-lai/mfd-Add-support-for-UP-board-CPLD-FPGA/20231228-231750
base: 4fe89d07dcc2804c8b562f6c7896a45643d34b2f
patch link: https://lore.kernel.org/r/20231228151544.14408-3-larry.lai%40yunjingtech.com
patch subject: [PATCH V8 2/3] pinctrl: Add support pin control for UP board CPLD/FPGA
config: i386-allyesconfig (https://download.01.org/0day-ci/archive/20231229/202312291907.7mgFSafz-lkp@xxxxxxxxx/config)
compiler: ClangBuiltLinux clang version 17.0.6 (https://github.com/llvm/llvm-project 6009708b4367171ccdbf4b5905cb6a803753fe18)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231229/202312291907.7mgFSafz-lkp@xxxxxxxxx/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202312291907.7mgFSafz-lkp@xxxxxxxxx/

All errors (new ones prefixed by >>):

drivers/pinctrl/pinctrl-upboard.c:709:13: warning: variable length array used [-Wvla]
709 | int offset[pctrl->pctldesc->npins];
| ^~~~~~~~~~~~~~~~~~~~~~
>> drivers/pinctrl/pinctrl-upboard.c:1089:12: error: incompatible integer to pointer conversion initializing 'const char *' with an expression of type 'int' [-Wint-conversion]
1089 | .ident = BOARD_UP_APL01,
| ^~~~~~~~~~~~~~
drivers/pinctrl/pinctrl-upboard.c:46:27: note: expanded from macro 'BOARD_UP_APL01'
46 | #define BOARD_UP_APL01 1
| ^
drivers/pinctrl/pinctrl-upboard.c:1096:12: error: incompatible integer to pointer conversion initializing 'const char *' with an expression of type 'int' [-Wint-conversion]
1096 | .ident = BOARD_UP_APL01,
| ^~~~~~~~~~~~~~
drivers/pinctrl/pinctrl-upboard.c:46:27: note: expanded from macro 'BOARD_UP_APL01'
46 | #define BOARD_UP_APL01 1
| ^
drivers/pinctrl/pinctrl-upboard.c:1103:12: error: incompatible integer to pointer conversion initializing 'const char *' with an expression of type 'int' [-Wint-conversion]
1103 | .ident = BOARD_UP_APL03,
| ^~~~~~~~~~~~~~
drivers/pinctrl/pinctrl-upboard.c:53:27: note: expanded from macro 'BOARD_UP_APL03'
53 | #define BOARD_UP_APL03 9
| ^
drivers/pinctrl/pinctrl-upboard.c:1110:12: error: incompatible integer to pointer conversion initializing 'const char *' with an expression of type 'int' [-Wint-conversion]
1110 | .ident = BOARD_UP_WHL01,
| ^~~~~~~~~~~~~~
drivers/pinctrl/pinctrl-upboard.c:50:27: note: expanded from macro 'BOARD_UP_WHL01'
50 | #define BOARD_UP_WHL01 5
| ^
drivers/pinctrl/pinctrl-upboard.c:1117:12: error: incompatible integer to pointer conversion initializing 'const char *' with an expression of type 'int' [-Wint-conversion]
1117 | .ident = BOARD_UPX_TGL,
| ^~~~~~~~~~~~~
drivers/pinctrl/pinctrl-upboard.c:55:26: note: expanded from macro 'BOARD_UPX_TGL'
55 | #define BOARD_UPX_TGL 11
| ^~
drivers/pinctrl/pinctrl-upboard.c:1124:12: error: incompatible integer to pointer conversion initializing 'const char *' with an expression of type 'int' [-Wint-conversion]
1124 | .ident = BOARD_UPN_EHL01,
| ^~~~~~~~~~~~~~~
drivers/pinctrl/pinctrl-upboard.c:57:28: note: expanded from macro 'BOARD_UPN_EHL01'
57 | #define BOARD_UPN_EHL01 13
| ^~
drivers/pinctrl/pinctrl-upboard.c:1131:12: error: incompatible integer to pointer conversion initializing 'const char *' with an expression of type 'int' [-Wint-conversion]
1131 | .ident = BOARD_UPS_EHL01,
| ^~~~~~~~~~~~~~~
drivers/pinctrl/pinctrl-upboard.c:58:28: note: expanded from macro 'BOARD_UPS_EHL01'
58 | #define BOARD_UPS_EHL01 BOARD_UPN_EHL01
| ^~~~~~~~~~~~~~~
drivers/pinctrl/pinctrl-upboard.c:57:28: note: expanded from macro 'BOARD_UPN_EHL01'
57 | #define BOARD_UPN_EHL01 13
| ^~
drivers/pinctrl/pinctrl-upboard.c:1138:12: error: incompatible integer to pointer conversion initializing 'const char *' with an expression of type 'int' [-Wint-conversion]
1138 | .ident = BOARD_UPX_ADLP01,
| ^~~~~~~~~~~~~~~~
drivers/pinctrl/pinctrl-upboard.c:59:28: note: expanded from macro 'BOARD_UPX_ADLP01'
59 | #define BOARD_UPX_ADLP01 15
| ^~
drivers/pinctrl/pinctrl-upboard.c:1145:12: error: incompatible integer to pointer conversion initializing 'const char *' with an expression of type 'int' [-Wint-conversion]
1145 | .ident = BOARD_UPN_ADLN01,
| ^~~~~~~~~~~~~~~~
drivers/pinctrl/pinctrl-upboard.c:60:28: note: expanded from macro 'BOARD_UPN_ADLN01'
60 | #define BOARD_UPN_ADLN01 16
| ^~
drivers/pinctrl/pinctrl-upboard.c:1152:12: error: incompatible integer to pointer conversion initializing 'const char *' with an expression of type 'int' [-Wint-conversion]
1152 | .ident = BOARD_UPS_ADLP01,
| ^~~~~~~~~~~~~~~~
drivers/pinctrl/pinctrl-upboard.c:61:28: note: expanded from macro 'BOARD_UPS_ADLP01'
61 | #define BOARD_UPS_ADLP01 BOARD_UPX_ADLP01
| ^~~~~~~~~~~~~~~~
drivers/pinctrl/pinctrl-upboard.c:59:28: note: expanded from macro 'BOARD_UPX_ADLP01'
59 | #define BOARD_UPX_ADLP01 15
| ^~
drivers/pinctrl/pinctrl-upboard.c:1159:12: error: incompatible integer to pointer conversion initializing 'const char *' with an expression of type 'int' [-Wint-conversion]
1159 | .ident = BOARD_UP_ADLN01,
| ^~~~~~~~~~~~~~~
drivers/pinctrl/pinctrl-upboard.c:62:28: note: expanded from macro 'BOARD_UP_ADLN01'
62 | #define BOARD_UP_ADLN01 18
| ^~
>> drivers/pinctrl/pinctrl-upboard.c:1185:12: error: incompatible pointer to integer conversion assigning to 'int' from 'const char *const' [-Wint-conversion]
1185 | board_id = system_id->ident;
| ^ ~~~~~~~~~~~~~~~~
1 warning and 12 errors generated.


vim +1089 drivers/pinctrl/pinctrl-upboard.c

1085
1086 /* DMI Matches to assign pin mapping driver data */
1087 static const struct dmi_system_id upboard_dmi_table[] __initconst = {
1088 {
> 1089 .ident = BOARD_UP_APL01,
1090 .matches = { /* UP SQUARED */
1091 DMI_EXACT_MATCH(DMI_SYS_VENDOR, "AAEON"),
1092 DMI_EXACT_MATCH(DMI_BOARD_NAME, "UP-APL01"),
1093 },
1094 },
1095 {
1096 .ident = BOARD_UP_APL01,
1097 .matches = { /* UP SQUARED Pro*/
1098 DMI_EXACT_MATCH(DMI_SYS_VENDOR, "AAEON"),
1099 DMI_EXACT_MATCH(DMI_BOARD_NAME, "UPN-APL01"),
1100 },
1101 },
1102 {
1103 .ident = BOARD_UP_APL03,
1104 .matches = { /* UP 4000 */
1105 DMI_EXACT_MATCH(DMI_SYS_VENDOR, "AAEON"),
1106 DMI_EXACT_MATCH(DMI_BOARD_NAME, "UP-APL03"),
1107 },
1108 },
1109 {
1110 .ident = BOARD_UP_WHL01,
1111 .matches = { /* UPX WHL */
1112 DMI_EXACT_MATCH(DMI_SYS_VENDOR, "AAEON"),
1113 DMI_EXACT_MATCH(DMI_BOARD_NAME, "UP-WHL01"),
1114 },
1115 },
1116 {
1117 .ident = BOARD_UPX_TGL,
1118 .matches = { /* UP i11 */
1119 DMI_EXACT_MATCH(DMI_SYS_VENDOR, "AAEON"),
1120 DMI_EXACT_MATCH(DMI_BOARD_NAME, "UPX-TGL01"),
1121 },
1122 },
1123 {
1124 .ident = BOARD_UPN_EHL01,
1125 .matches = { /* UP 6000 */
1126 DMI_EXACT_MATCH(DMI_SYS_VENDOR, "AAEON"),
1127 DMI_EXACT_MATCH(DMI_BOARD_NAME, "UPN-EHL01"),
1128 },
1129 },
1130 {
1131 .ident = BOARD_UPS_EHL01,
1132 .matches = { /* UP squared v2 */
1133 DMI_EXACT_MATCH(DMI_SYS_VENDOR, "AAEON"),
1134 DMI_EXACT_MATCH(DMI_BOARD_NAME, "UPS-EHL01"),
1135 },
1136 },
1137 {
1138 .ident = BOARD_UPX_ADLP01,
1139 .matches = { /* UP Xtreme i12 */
1140 DMI_EXACT_MATCH(DMI_SYS_VENDOR, "AAEON"),
1141 DMI_EXACT_MATCH(DMI_BOARD_NAME, "UPX-ADLP01"),
1142 },
1143 },
1144 {
1145 .ident = BOARD_UPN_ADLN01,
1146 .matches = { /* UP 7000 */
1147 DMI_EXACT_MATCH(DMI_SYS_VENDOR, "AAEON"),
1148 DMI_EXACT_MATCH(DMI_BOARD_NAME, "UPN-ADLN01"),
1149 },
1150 },
1151 {
1152 .ident = BOARD_UPS_ADLP01,
1153 .matches = { /* UP Squared i12 */
1154 DMI_EXACT_MATCH(DMI_SYS_VENDOR, "AAEON"),
1155 DMI_EXACT_MATCH(DMI_BOARD_NAME, "UPS-ADLP01"),
1156 },
1157 },
1158 {
1159 .ident = BOARD_UP_ADLN01,
1160 .matches = { /* UP 7000 */
1161 DMI_EXACT_MATCH(DMI_SYS_VENDOR, "AAEON"),
1162 DMI_EXACT_MATCH(DMI_BOARD_NAME, "UP-ADLN01"),
1163 },
1164 },
1165 { } /* Terminating entry */
1166 };
1167
1168 static int upboard_pinctrl_probe(struct platform_device *pdev)
1169 {
1170 struct upboard_fpga * const fpga = dev_get_drvdata(pdev->dev.parent);
1171 struct pinctrl_desc *pctldesc;
1172 struct upboard_pinctrl *pctrl;
1173 struct upboard_pin *pins;
1174 const struct dmi_system_id *system_id;
1175 const unsigned int *rpi_mapping;
1176 unsigned int ngpio;
1177 int ret;
1178 int i;
1179 /* default */
1180 int board_id = BOARD_UP_APL03;
1181
1182 /* check board id to arrange driver data */
1183 system_id = dmi_first_match(upboard_dmi_table);
1184 if (system_id)
> 1185 board_id = system_id->ident;
1186 dev_info(&pdev->dev, "Compatible Up Board ID %d", board_id);
1187 switch (board_id) {
1188 case BOARD_UP_APL01:
1189 pctldesc = &upboard_up2_pinctrl_desc;
1190 rpi_mapping = upboard_up2_rpi_mapping;
1191 ngpio = ARRAY_SIZE(upboard_up2_rpi_mapping);
1192 break;
1193 case BOARD_UP_UPCORE:
1194 pctldesc = &upboard_upcore_crex_pinctrl_desc;
1195 rpi_mapping = upboard_upcore_crex_rpi_mapping;
1196 ngpio = ARRAY_SIZE(upboard_upcore_crex_rpi_mapping);
1197 break;
1198 case BOARD_UP_CORE_PLUS:
1199 pctldesc = &upboard_upcore_crst02_pinctrl_desc;
1200 rpi_mapping = upboard_upcore_crst02_rpi_mapping;
1201 ngpio = ARRAY_SIZE(upboard_upcore_crst02_rpi_mapping);
1202 break;
1203 default:
1204 pctldesc = &upboard_up_pinctrl_desc;
1205 rpi_mapping = upboard_up_rpi_mapping;
1206 ngpio = ARRAY_SIZE(upboard_up_rpi_mapping);
1207 break;
1208 }
1209
1210 pctldesc->name = dev_name(&pdev->dev);
1211
1212 pins = devm_kcalloc(&pdev->dev, pctldesc->npins, sizeof(*pins), GFP_KERNEL);
1213 if (!pins)
1214 return -ENOMEM;
1215
1216 /* initialise pins */
1217 for (i = 0; i < pctldesc->npins; i++) {
1218 struct upboard_pin *pin = &pins[i];
1219 struct pinctrl_pin_desc *pd = (struct pinctrl_pin_desc *) &pctldesc->pins[i];
1220 struct reg_field fldconf = {0};
1221 unsigned int regoff = (pd->number / UPFPGA_REGISTER_SIZE);
1222 unsigned int lsb = pd->number % UPFPGA_REGISTER_SIZE;
1223
1224 pin->funcbit = NULL;
1225
1226 if (pd->drv_data) {
1227 fldconf = *(struct reg_field *)pd->drv_data;
1228
1229 pin->funcbit = devm_regmap_field_alloc(&pdev->dev,
1230 fpga->regmap,
1231 fldconf);
1232 if (IS_ERR(pin->funcbit))
1233 return PTR_ERR(pin->funcbit);
1234 }
1235
1236 fldconf.reg = UPFPGA_REG_GPIO_EN0 + regoff;
1237 fldconf.lsb = lsb;
1238 fldconf.msb = lsb;
1239
1240 pin->enbit = devm_regmap_field_alloc(&pdev->dev,
1241 fpga->regmap,
1242 fldconf);
1243 if (IS_ERR(pin->enbit))
1244 return PTR_ERR(pin->enbit);
1245
1246 fldconf.reg = UPFPGA_REG_GPIO_DIR0 + regoff;
1247 fldconf.lsb = lsb;
1248 fldconf.msb = lsb;
1249
1250 pin->dirbit = devm_regmap_field_alloc(&pdev->dev,
1251 fpga->regmap,
1252 fldconf);
1253 if (IS_ERR(pin->dirbit))
1254 return PTR_ERR(pin->dirbit);
1255
1256 pd->drv_data = pin;
1257 }
1258
1259 /* create a new pinctrl device and register it */
1260 pctrl = devm_kzalloc(&pdev->dev, sizeof(*pctrl), GFP_KERNEL);
1261 if (!pctrl)
1262 return -ENOMEM;
1263
1264 pctrl->rpi_mapping = rpi_mapping;
1265 pctrl->chip = upboard_gpio_chip;
1266 pctrl->pctldesc = pctldesc;
1267 pctrl->chip.parent = &pdev->dev;
1268 pctrl->chip.ngpio = ngpio;
1269 pctrl->pins = pins;
1270 pctrl->ident = board_id;
1271
1272 ret = devm_gpiochip_add_data(&pdev->dev, &pctrl->chip, pctrl);
1273 if (ret)
1274 return ret;
1275
1276 pctrl->pctldev = devm_pinctrl_register(&pdev->dev, pctldesc, pctrl);
1277 if (IS_ERR(pctrl->pctldev))
1278 return PTR_ERR(pctrl->pctldev);
1279
1280 /* add acpi pin mapping according to external-gpios key */
1281 ret = upboard_acpi_node_pin_mapping(fpga, pctrl,
1282 "external",
1283 dev_name(&pdev->dev),
1284 0);
1285 if (ret)
1286 return ret;
1287
1288 upboard_alt_func_enable(&pctrl->chip, "I2C", pctrl->ident);
1289 upboard_alt_func_enable(&pctrl->chip, "SPI", pctrl->ident);
1290 upboard_alt_func_enable(&pctrl->chip, "UART", pctrl->ident);
1291 upboard_alt_func_enable(&pctrl->chip, "I2S", pctrl->ident);
1292 upboard_alt_func_enable(&pctrl->chip, "PWM", pctrl->ident);
1293 upboard_alt_func_enable(&pctrl->chip, "ADC", pctrl->ident);
1294 upboard_alt_func_enable(&pctrl->chip, "PINMUX", pctrl->ident);
1295
1296 return ret;
1297 }
1298

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki