Hi larry.lai, kernel test robot noticed the following build warnings: [auto build test WARNING on 4fe89d07dcc2804c8b562f6c7896a45643d34b2f] url: https://github.com/intel-lab-lkp/linux/commits/larry-lai/mfd-Add-support-for-UP-board-CPLD-FPGA/20230915-111244 base: 4fe89d07dcc2804c8b562f6c7896a45643d34b2f patch link: https://lore.kernel.org/r/20230915031123.14515-3-larry.lai%40yunjingtech.com patch subject: [PATCH V6 2/3] pinctrl: Add support pin control for UP board CPLD/FPGA config: x86_64-allyesconfig (https://download.01.org/0day-ci/archive/20230916/202309160256.4y4zg2ZM-lkp@xxxxxxxxx/config) compiler: gcc-12 (Debian 12.2.0-14) 12.2.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20230916/202309160256.4y4zg2ZM-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/202309160256.4y4zg2ZM-lkp@xxxxxxxxx/ All warnings (new ones prefixed by >>): drivers/pinctrl/pinctrl-upboard.c: In function 'upboard_pin_dbg_show': >> drivers/pinctrl/pinctrl-upboard.c:748:30: warning: format '%x' expects argument of type 'unsigned int', but argument 3 has type 'void *' [-Wformat=] 748 | seq_printf(s, " 0x%08x", pctrl->pins[pin].regs); | ~~~^ ~~~~~~~~~~~~~~~~~~~~~ | | | | unsigned int void * | %08p >> drivers/pinctrl/pinctrl-upboard.c:727:13: warning: unused variable 'locked' [-Wunused-variable] 727 | int locked; | ^~~~~~ drivers/pinctrl/pinctrl-upboard.c: In function 'upboard_alt_func_enable': >> drivers/pinctrl/pinctrl-upboard.c:792:9: warning: ISO C90 forbids variable length array 'offset' [-Wvla] 792 | int offset[pctrl->pctldesc->npins]; | ^~~ >> drivers/pinctrl/pinctrl-upboard.c:805:17: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] 805 | bool input = false; | ^~~~ drivers/pinctrl/pinctrl-upboard.c: In function 'upboard_gpio_get_direction': drivers/pinctrl/pinctrl-upboard.c:960:9: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] 960 | unsigned int padcfg0 = readl(pctrl->pins[pin].regs); | ^~~~~~~~ drivers/pinctrl/pinctrl-upboard.c: At top level: >> drivers/pinctrl/pinctrl-upboard.c:1109:5: warning: no previous prototype for 'upboard_acpi_node_pin_mapping' [-Wmissing-prototypes] 1109 | int upboard_acpi_node_pin_mapping(struct upboard_fpga *fpga, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/pinctrl/pinctrl-upboard.c:84:49: warning: initialization of 'const char *' from 'int' makes pointer from integer without a cast [-Wint-conversion] 84 | #define BOARD_UP_APL01 1 | ^ drivers/pinctrl/pinctrl-upboard.c:1170:26: note: in expansion of macro 'BOARD_UP_APL01' 1170 | .ident = BOARD_UP_APL01, | ^~~~~~~~~~~~~~ drivers/pinctrl/pinctrl-upboard.c:84:49: note: (near initialization for 'upboard_dmi_table[0].ident') 84 | #define BOARD_UP_APL01 1 | ^ drivers/pinctrl/pinctrl-upboard.c:1170:26: note: in expansion of macro 'BOARD_UP_APL01' 1170 | .ident = BOARD_UP_APL01, | ^~~~~~~~~~~~~~ >> drivers/pinctrl/pinctrl-upboard.c:84:49: warning: initialization of 'const char *' from 'int' makes pointer from integer without a cast [-Wint-conversion] 84 | #define BOARD_UP_APL01 1 | ^ drivers/pinctrl/pinctrl-upboard.c:1177:26: note: in expansion of macro 'BOARD_UP_APL01' 1177 | .ident = BOARD_UP_APL01, | ^~~~~~~~~~~~~~ drivers/pinctrl/pinctrl-upboard.c:84:49: note: (near initialization for 'upboard_dmi_table[1].ident') 84 | #define BOARD_UP_APL01 1 | ^ drivers/pinctrl/pinctrl-upboard.c:1177:26: note: in expansion of macro 'BOARD_UP_APL01' 1177 | .ident = BOARD_UP_APL01, | ^~~~~~~~~~~~~~ drivers/pinctrl/pinctrl-upboard.c:91:49: warning: initialization of 'const char *' from 'int' makes pointer from integer without a cast [-Wint-conversion] 91 | #define BOARD_UP_APL03 9 | ^ drivers/pinctrl/pinctrl-upboard.c:1184:26: note: in expansion of macro 'BOARD_UP_APL03' 1184 | .ident = BOARD_UP_APL03, | ^~~~~~~~~~~~~~ drivers/pinctrl/pinctrl-upboard.c:91:49: note: (near initialization for 'upboard_dmi_table[2].ident') 91 | #define BOARD_UP_APL03 9 | ^ drivers/pinctrl/pinctrl-upboard.c:1184:26: note: in expansion of macro 'BOARD_UP_APL03' 1184 | .ident = BOARD_UP_APL03, | ^~~~~~~~~~~~~~ drivers/pinctrl/pinctrl-upboard.c:88:49: warning: initialization of 'const char *' from 'int' makes pointer from integer without a cast [-Wint-conversion] 88 | #define BOARD_UP_WHL01 5 | ^ drivers/pinctrl/pinctrl-upboard.c:1191:26: note: in expansion of macro 'BOARD_UP_WHL01' 1191 | .ident = BOARD_UP_WHL01, | ^~~~~~~~~~~~~~ drivers/pinctrl/pinctrl-upboard.c:88:49: note: (near initialization for 'upboard_dmi_table[3].ident') 88 | #define BOARD_UP_WHL01 5 | ^ drivers/pinctrl/pinctrl-upboard.c:1191:26: note: in expansion of macro 'BOARD_UP_WHL01' 1191 | .ident = BOARD_UP_WHL01, | ^~~~~~~~~~~~~~ drivers/pinctrl/pinctrl-upboard.c:93:49: warning: initialization of 'const char *' from 'int' makes pointer from integer without a cast [-Wint-conversion] 93 | #define BOARD_UPX_TGL 11 | ^~ drivers/pinctrl/pinctrl-upboard.c:1198:26: note: in expansion of macro 'BOARD_UPX_TGL' 1198 | .ident = BOARD_UPX_TGL, | ^~~~~~~~~~~~~ drivers/pinctrl/pinctrl-upboard.c:93:49: note: (near initialization for 'upboard_dmi_table[4].ident') 93 | #define BOARD_UPX_TGL 11 | ^~ drivers/pinctrl/pinctrl-upboard.c:1198:26: note: in expansion of macro 'BOARD_UPX_TGL' 1198 | .ident = BOARD_UPX_TGL, | ^~~~~~~~~~~~~ drivers/pinctrl/pinctrl-upboard.c:95:49: warning: initialization of 'const char *' from 'int' makes pointer from integer without a cast [-Wint-conversion] 95 | #define BOARD_UPN_EHL01 13 | ^~ drivers/pinctrl/pinctrl-upboard.c:1205:26: note: in expansion of macro 'BOARD_UPN_EHL01' 1205 | .ident = BOARD_UPN_EHL01, | ^~~~~~~~~~~~~~~ drivers/pinctrl/pinctrl-upboard.c:95:49: note: (near initialization for 'upboard_dmi_table[5].ident') 95 | #define BOARD_UPN_EHL01 13 | ^~ drivers/pinctrl/pinctrl-upboard.c:1205:26: note: in expansion of macro 'BOARD_UPN_EHL01' 1205 | .ident = BOARD_UPN_EHL01, | ^~~~~~~~~~~~~~~ drivers/pinctrl/pinctrl-upboard.c:95:49: warning: initialization of 'const char *' from 'int' makes pointer from integer without a cast [-Wint-conversion] 95 | #define BOARD_UPN_EHL01 13 | ^~ drivers/pinctrl/pinctrl-upboard.c:96:49: note: in expansion of macro 'BOARD_UPN_EHL01' 96 | #define BOARD_UPS_EHL01 BOARD_UPN_EHL01 | ^~~~~~~~~~~~~~~ drivers/pinctrl/pinctrl-upboard.c:1212:26: note: in expansion of macro 'BOARD_UPS_EHL01' 1212 | .ident = BOARD_UPS_EHL01, | ^~~~~~~~~~~~~~~ drivers/pinctrl/pinctrl-upboard.c:95:49: note: (near initialization for 'upboard_dmi_table[6].ident') 95 | #define BOARD_UPN_EHL01 13 | ^~ drivers/pinctrl/pinctrl-upboard.c:96:49: note: in expansion of macro 'BOARD_UPN_EHL01' 96 | #define BOARD_UPS_EHL01 BOARD_UPN_EHL01 | ^~~~~~~~~~~~~~~ drivers/pinctrl/pinctrl-upboard.c:1212:26: note: in expansion of macro 'BOARD_UPS_EHL01' 1212 | .ident = BOARD_UPS_EHL01, | ^~~~~~~~~~~~~~~ drivers/pinctrl/pinctrl-upboard.c:97:49: warning: initialization of 'const char *' from 'int' makes pointer from integer without a cast [-Wint-conversion] 97 | #define BOARD_UPX_ADLP01 15 | ^~ drivers/pinctrl/pinctrl-upboard.c:1219:26: note: in expansion of macro 'BOARD_UPX_ADLP01' 1219 | .ident = BOARD_UPX_ADLP01, | ^~~~~~~~~~~~~~~~ drivers/pinctrl/pinctrl-upboard.c:97:49: note: (near initialization for 'upboard_dmi_table[7].ident') 97 | #define BOARD_UPX_ADLP01 15 | ^~ drivers/pinctrl/pinctrl-upboard.c:1219:26: note: in expansion of macro 'BOARD_UPX_ADLP01' 1219 | .ident = BOARD_UPX_ADLP01, | ^~~~~~~~~~~~~~~~ drivers/pinctrl/pinctrl-upboard.c:98:49: warning: initialization of 'const char *' from 'int' makes pointer from integer without a cast [-Wint-conversion] 98 | #define BOARD_UPN_ADLN01 16 | ^~ drivers/pinctrl/pinctrl-upboard.c:1226:26: note: in expansion of macro 'BOARD_UPN_ADLN01' 1226 | .ident = BOARD_UPN_ADLN01, | ^~~~~~~~~~~~~~~~ drivers/pinctrl/pinctrl-upboard.c:98:49: note: (near initialization for 'upboard_dmi_table[8].ident') 98 | #define BOARD_UPN_ADLN01 16 | ^~ drivers/pinctrl/pinctrl-upboard.c:1226:26: note: in expansion of macro 'BOARD_UPN_ADLN01' 1226 | .ident = BOARD_UPN_ADLN01, | ^~~~~~~~~~~~~~~~ drivers/pinctrl/pinctrl-upboard.c:97:49: warning: initialization of 'const char *' from 'int' makes pointer from integer without a cast [-Wint-conversion] 97 | #define BOARD_UPX_ADLP01 15 | ^~ drivers/pinctrl/pinctrl-upboard.c:99:49: note: in expansion of macro 'BOARD_UPX_ADLP01' 99 | #define BOARD_UPS_ADLP01 BOARD_UPX_ADLP01 | ^~~~~~~~~~~~~~~~ drivers/pinctrl/pinctrl-upboard.c:1233:26: note: in expansion of macro 'BOARD_UPS_ADLP01' 1233 | .ident = BOARD_UPS_ADLP01, | ^~~~~~~~~~~~~~~~ drivers/pinctrl/pinctrl-upboard.c:97:49: note: (near initialization for 'upboard_dmi_table[9].ident') 97 | #define BOARD_UPX_ADLP01 15 | ^~ drivers/pinctrl/pinctrl-upboard.c:99:49: note: in expansion of macro 'BOARD_UPX_ADLP01' 99 | #define BOARD_UPS_ADLP01 BOARD_UPX_ADLP01 | ^~~~~~~~~~~~~~~~ drivers/pinctrl/pinctrl-upboard.c:1233:26: note: in expansion of macro 'BOARD_UPS_ADLP01' 1233 | .ident = BOARD_UPS_ADLP01, | ^~~~~~~~~~~~~~~~ drivers/pinctrl/pinctrl-upboard.c:100:49: warning: initialization of 'const char *' from 'int' makes pointer from integer without a cast [-Wint-conversion] 100 | #define BOARD_UP_ADLN01 18 | ^~ drivers/pinctrl/pinctrl-upboard.c:1240:26: note: in expansion of macro 'BOARD_UP_ADLN01' 1240 | .ident = BOARD_UP_ADLN01, | ^~~~~~~~~~~~~~~ drivers/pinctrl/pinctrl-upboard.c:100:49: note: (near initialization for 'upboard_dmi_table[10].ident') 100 | #define BOARD_UP_ADLN01 18 | ^~ drivers/pinctrl/pinctrl-upboard.c:1240:26: note: in expansion of macro 'BOARD_UP_ADLN01' 1240 | .ident = BOARD_UP_ADLN01, | ^~~~~~~~~~~~~~~ drivers/pinctrl/pinctrl-upboard.c: In function 'upboard_pinctrl_probe': >> drivers/pinctrl/pinctrl-upboard.c:1266:26: warning: assignment to 'int' from 'const char *' makes integer from pointer without a cast [-Wint-conversion] 1266 | board_id = system_id->ident; | ^ drivers/pinctrl/pinctrl-upboard.c: At top level: >> drivers/pinctrl/pinctrl-upboard.c:327:38: warning: 'pin_functions' defined but not used [-Wunused-const-variable=] 327 | static const struct upboard_function pin_functions[] = { | ^~~~~~~~~~~~~ >> drivers/pinctrl/pinctrl-upboard.c:305:38: warning: 'pin_groups' defined but not used [-Wunused-const-variable=] 305 | static const struct upboard_pingroup pin_groups[] = { | ^~~~~~~~~~ vim +748 drivers/pinctrl/pinctrl-upboard.c 720 721 static void upboard_pin_dbg_show(struct pinctrl_dev *pctldev, struct seq_file *s, 722 unsigned int pin) 723 { 724 struct upboard_pinctrl *pctrl = pinctrl_dev_get_drvdata(pctldev); 725 void __iomem *padcfg; 726 u32 cfg0, cfg1, mode; > 727 int locked; 728 729 if (pctrl->pins[pin].regs == NULL) 730 return; 731 732 cfg0 = readl(pctrl->pins[pin].regs); 733 cfg1 = readl(pctrl->pins[pin].regs + PADCFG1); 734 735 mode = (cfg0 & PADCFG0_PMODE_MASK) >> PADCFG0_PMODE_SHIFT; 736 if (mode == PADCFG0_PMODE_GPIO) 737 seq_puts(s, "GPIO "); 738 else 739 seq_printf(s, "mode %d ", mode); 740 741 seq_printf(s, "0x%08x 0x%08x", cfg0, cfg1); 742 743 /* Dump the additional PADCFG registers if available */ 744 padcfg = pctrl->pins[pin].regs + PADCFG2; 745 if (padcfg) 746 seq_printf(s, " 0x%08x", readl(padcfg)); 747 > 748 seq_printf(s, " 0x%08x", pctrl->pins[pin].regs); 749 } 750 751 static const struct pinctrl_ops upboard_pinctrl_ops = { 752 .get_groups_count = upboard_get_groups_count, 753 .get_group_name = upboard_get_group_name, 754 .pin_dbg_show = upboard_pin_dbg_show, 755 }; 756 757 static struct pinctrl_desc upboard_up_pinctrl_desc = { 758 .pins = upboard_up_pins, 759 .npins = ARRAY_SIZE(upboard_up_pins), 760 .pctlops = &upboard_pinctrl_ops, 761 .pmxops = &upboard_pinmux_ops, 762 .owner = THIS_MODULE, 763 }; 764 765 static struct pinctrl_desc upboard_up2_pinctrl_desc = { 766 .pins = upboard_up2_pins, 767 .npins = ARRAY_SIZE(upboard_up2_pins), 768 .pctlops = &upboard_pinctrl_ops, 769 .pmxops = &upboard_pinmux_ops, 770 .owner = THIS_MODULE, 771 }; 772 773 static struct pinctrl_desc upboard_upcore_crex_pinctrl_desc = { 774 .pins = upboard_upcore_crex_pins, 775 .npins = ARRAY_SIZE(upboard_upcore_crex_pins), 776 .pctlops = &upboard_pinctrl_ops, 777 .pmxops = &upboard_pinmux_ops, 778 .owner = THIS_MODULE, 779 }; 780 781 static struct pinctrl_desc upboard_upcore_crst02_pinctrl_desc = { 782 .pins = upboard_upcore_crst02_pins, 783 .npins = ARRAY_SIZE(upboard_upcore_crst02_pins), 784 .pctlops = &upboard_pinctrl_ops, 785 .pmxops = &upboard_pinmux_ops, 786 .owner = THIS_MODULE, 787 }; 788 789 static void upboard_alt_func_enable(struct gpio_chip *gc, const char *name, int id) 790 { 791 struct upboard_pinctrl *pctrl = container_of(gc, struct upboard_pinctrl, chip); > 792 int offset[pctrl->pctldesc->npins]; 793 int i, cnt; 794 795 /* find all pins */ 796 for (i = 0, cnt = 0; i < pctrl->pctldesc->npins; i++) { 797 if (strstr(pctrl->pctldesc->pins[i].name, name)) 798 offset[cnt++] = i; 799 } 800 801 /* change to alternate function */ 802 for (i = 0; i < cnt; i++) { 803 if (pctrl->pins[offset[i]].regs == NULL) 804 continue; > 805 bool input = false; 806 int mode = 0; /* default GPIO */ 807 unsigned int val = readl(pctrl->pins[offset[i]].regs); 808 809 if (strstr(pctrl->pctldesc->pins[offset[i]].name, "I2C") || 810 strstr(pctrl->pctldesc->pins[offset[i]].name, "PINMUX")) { 811 mode = 1; 812 switch (id) { 813 case BOARD_UPN_ADLN01: 814 case BOARD_UPX_ADLP01: 815 mode = 2; 816 break; 817 default: 818 break; 819 } 820 821 val |= mode<<PADCFG0_PMODE_SHIFT; 822 writel(val, pctrl->pins[offset[i]].regs); 823 upboard_fpga_request_free(pctrl->pctldev, offset[i]); 824 continue; 825 } 826 827 if (strstr(pctrl->pctldesc->pins[offset[i]].name, "UART")) { 828 mode = 1; 829 switch (id) { 830 case BOARD_UPN_EHL01: 831 mode = 4; 832 break; 833 case BOARD_UP_ADLN01: 834 case BOARD_UPN_ADLN01: 835 case BOARD_UPX_ADLP01: 836 mode = 2; 837 break; 838 default: 839 break; 840 } 841 } 842 843 if (strstr(pctrl->pctldesc->pins[offset[i]].name, "SPI")) { 844 mode = 1; 845 switch (id) { 846 case BOARD_UP_WHL01: 847 mode = 3; 848 break; 849 case BOARD_UP_ADLN01: 850 case BOARD_UPN_ADLN01: 851 case BOARD_UPX_ADLP01: 852 mode = 7; 853 if (strstr(pctrl->pctldesc->pins[offset[i]].name, "MOSI")) { 854 val &= ~PADCFG0_GPIOTXDIS; 855 val |= PADCFG0_GPIORXDIS; 856 } 857 858 if (strstr(pctrl->pctldesc->pins[offset[i]].name, "MISO")) 859 val |= PADCFG0_GPIORXDIS; 860 861 if (strstr(pctrl->pctldesc->pins[offset[i]].name, "CLK")) { 862 val &= ~PADCFG0_GPIOTXDIS; 863 val |= PADCFG0_GPIORXDIS; 864 } 865 if (strstr(pctrl->pctldesc->pins[offset[i]].name, "CS0")) 866 val |= PADCFG0_GPIORXDIS; 867 868 if (strstr(pctrl->pctldesc->pins[offset[i]].name, "CS1")) 869 continue; 870 break; 871 default: 872 break; 873 } 874 } 875 876 if (strstr(pctrl->pctldesc->pins[offset[i]].name, "I2S")) { 877 mode = 1; 878 switch (id) { 879 case BOARD_UPX_ADLP01: 880 mode = 4; 881 break; 882 default: 883 break; 884 } 885 } 886 887 val |= mode<<PADCFG0_PMODE_SHIFT; 888 writel(val, pctrl->pins[offset[i]].regs); 889 890 /* input pins */ 891 if (strstr(pctrl->pctldesc->pins[offset[i]].name, "RX")) 892 input = true; 893 894 if (strstr(pctrl->pctldesc->pins[offset[i]].name, "CTS")) 895 input = true; 896 897 if (strstr(pctrl->pctldesc->pins[offset[i]].name, "ADC")) { 898 input = true; 899 if (id == BOARD_UP_APL01) 900 upboard_fpga_request_enable(pctrl->pctldev, NULL, offset[i]); 901 else 902 upboard_fpga_request_free(pctrl->pctldev, offset[i]); 903 } 904 905 if (strstr(pctrl->pctldesc->pins[offset[i]].name, "MISO")) 906 input = true; 907 908 if (strstr(pctrl->pctldesc->pins[offset[i]].name, "DIN")) 909 input = true; 910 911 if (strstr(pctrl->pctldesc->pins[offset[i]].name, "SDI")) 912 input = true; 913 914 upboard_fpga_set_direction(pctrl->pctldev, NULL, offset[i], input); 915 } 916 } 917 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki