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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux