[xlnx:xlnx_rebase_v5.4 913/1697] drivers/usb/dwc3/core.c:977:5: warning: no previous prototype for 'dwc3_core_init'
kernel test robot
lkp at intel.com
Tue Jan 12 16:42:54 EST 2021
tree: https://github.com/Xilinx/linux-xlnx xlnx_rebase_v5.4
head: 629150468791671b5fde21363e643e87c5815b17
commit: 526f56822f971265d67428fe61e40fe18f95ac81 [913/1697] usb: dwc3: Add hibernation support when operating as gadget
config: m68k-randconfig-r013-20210112 (attached as .config)
compiler: m68k-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/Xilinx/linux-xlnx/commit/526f56822f971265d67428fe61e40fe18f95ac81
git remote add xlnx https://github.com/Xilinx/linux-xlnx
git fetch --no-tags xlnx xlnx_rebase_v5.4
git checkout 526f56822f971265d67428fe61e40fe18f95ac81
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=m68k
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp at intel.com>
All warnings (new ones prefixed by >>):
In file included from include/linux/err.h:5,
from include/linux/clk.h:12,
from drivers/usb/dwc3/core.c:11:
include/linux/scatterlist.h: In function 'sg_set_buf':
arch/m68k/include/asm/page_no.h:33:50: warning: ordered comparison of pointer with null pointer [-Wextra]
33 | #define virt_addr_valid(kaddr) (((void *)(kaddr) >= (void *)PAGE_OFFSET) && \
| ^~
include/linux/compiler.h:78:42: note: in definition of macro 'unlikely'
78 | # define unlikely(x) __builtin_expect(!!(x), 0)
| ^
include/linux/scatterlist.h:143:2: note: in expansion of macro 'BUG_ON'
143 | BUG_ON(!virt_addr_valid(buf));
| ^~~~~~
include/linux/scatterlist.h:143:10: note: in expansion of macro 'virt_addr_valid'
143 | BUG_ON(!virt_addr_valid(buf));
| ^~~~~~~~~~~~~~~
In file included from drivers/usb/dwc3/core.c:36:
drivers/usb/dwc3/core.h: At top level:
drivers/usb/dwc3/core.h:1444:6: warning: no previous prototype for 'dwc3_simple_wakeup_capable' [-Wmissing-prototypes]
1444 | void dwc3_simple_wakeup_capable(struct device *dev, bool wakeup)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/usb/dwc3/core.h:1446:6: warning: no previous prototype for 'dwc3_set_simple_data' [-Wmissing-prototypes]
1446 | void dwc3_set_simple_data(struct dwc3 *dwc)
| ^~~~~~~~~~~~~~~~~~~~
drivers/usb/dwc3/core.h:1448:6: warning: no previous prototype for 'dwc3_simple_check_quirks' [-Wmissing-prototypes]
1448 | void dwc3_simple_check_quirks(struct dwc3 *dwc)
| ^~~~~~~~~~~~~~~~~~~~~~~~
drivers/usb/dwc3/core.h:1450:5: warning: no previous prototype for 'dwc3_set_usb_core_power' [-Wmissing-prototypes]
1450 | int dwc3_set_usb_core_power(struct dwc3 *dwc, bool on)
| ^~~~~~~~~~~~~~~~~~~~~~~
drivers/usb/dwc3/core.c:386:6: warning: no previous prototype for 'dwc3_free_event_buffers' [-Wmissing-prototypes]
386 | void dwc3_free_event_buffers(struct dwc3 *dwc)
| ^~~~~~~~~~~~~~~~~~~~~~~
drivers/usb/dwc3/core.c:403:5: warning: no previous prototype for 'dwc3_alloc_event_buffers' [-Wmissing-prototypes]
403 | int dwc3_alloc_event_buffers(struct dwc3 *dwc, unsigned length)
| ^~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/usb/dwc3/core.c:977:5: warning: no previous prototype for 'dwc3_core_init' [-Wmissing-prototypes]
977 | int dwc3_core_init(struct dwc3 *dwc)
| ^~~~~~~~~~~~~~
In file included from drivers/usb/dwc3/core.c:36:
drivers/usb/dwc3/core.h: In function 'dwc3_set_usb_core_power':
drivers/usb/dwc3/core.h:1451:1: warning: control reaches end of non-void function [-Wreturn-type]
1451 | { ; }
| ^
vim +/dwc3_core_init +977 drivers/usb/dwc3/core.c
970
971 /**
972 * dwc3_core_init - Low-level initialization of DWC3 Core
973 * @dwc: Pointer to our controller context structure
974 *
975 * Returns 0 on success otherwise negative errno.
976 */
> 977 int dwc3_core_init(struct dwc3 *dwc)
978 {
979 u32 reg;
980 int ret;
981
982 /*
983 * Write Linux Version Code to our GUID register so it's easy to figure
984 * out which kernel version a bug was found.
985 */
986 dwc3_writel(dwc->regs, DWC3_GUID, LINUX_VERSION_CODE);
987
988 /* Handle USB2.0-only core configuration */
989 if (DWC3_GHWPARAMS3_SSPHY_IFC(dwc->hwparams.hwparams3) ==
990 DWC3_GHWPARAMS3_SSPHY_IFC_DIS) {
991 if (dwc->maximum_speed == USB_SPEED_SUPER)
992 dwc->maximum_speed = USB_SPEED_HIGH;
993 }
994
995 ret = dwc3_phy_setup(dwc);
996 if (ret)
997 goto err0;
998
999 if (!dwc->ulpi_ready) {
1000 ret = dwc3_core_ulpi_init(dwc);
1001 if (ret)
1002 goto err0;
1003 dwc->ulpi_ready = true;
1004 }
1005
1006 if (!dwc->phys_ready) {
1007 ret = dwc3_core_get_phy(dwc);
1008 if (ret)
1009 goto err0a;
1010 dwc->phys_ready = true;
1011 }
1012
1013 ret = dwc3_core_soft_reset(dwc);
1014 if (ret)
1015 goto err0a;
1016
1017 dwc3_core_setup_global_control(dwc);
1018 dwc3_core_num_eps(dwc);
1019
1020 if (dwc->scratchbuf == NULL) {
1021 ret = dwc3_alloc_scratch_buffers(dwc);
1022 if (ret) {
1023 dev_err(dwc->dev,
1024 "Not enough memory for scratch buffers\n");
1025 goto err1;
1026 }
1027 }
1028
1029 ret = dwc3_setup_scratch_buffers(dwc);
1030 if (ret) {
1031 dev_err(dwc->dev, "Failed to setup scratch buffers: %d\n", ret);
1032 goto err1;
1033 }
1034
1035 /* Adjust Frame Length */
1036 dwc3_frame_length_adjustment(dwc);
1037
1038 dwc3_set_incr_burst_type(dwc);
1039
1040 ret = dwc3_config_soc_bus(dwc);
1041 if (ret)
1042 goto err1;
1043
1044 usb_phy_set_suspend(dwc->usb2_phy, 0);
1045 usb_phy_set_suspend(dwc->usb3_phy, 0);
1046 ret = phy_power_on(dwc->usb2_generic_phy);
1047 if (ret < 0)
1048 goto err2;
1049
1050 ret = phy_power_on(dwc->usb3_generic_phy);
1051 if (ret < 0)
1052 goto err3;
1053
1054 ret = dwc3_event_buffers_setup(dwc);
1055 if (ret) {
1056 dev_err(dwc->dev, "failed to setup event buffers\n");
1057 goto err4;
1058 }
1059
1060 /*
1061 * ENDXFER polling is available on version 3.10a and later of
1062 * the DWC_usb3 controller. It is NOT available in the
1063 * DWC_usb31 controller.
1064 */
1065 if (!dwc3_is_usb31(dwc) && dwc->revision >= DWC3_REVISION_310A) {
1066 reg = dwc3_readl(dwc->regs, DWC3_GUCTL2);
1067 reg |= DWC3_GUCTL2_RST_ACTBITLATER;
1068 dwc3_writel(dwc->regs, DWC3_GUCTL2, reg);
1069 }
1070
1071 /* When configured in HOST mode, after issuing U3/L2 exit controller
1072 * fails to send proper CRC checksum in CRC5 feild. Because of this
1073 * behaviour Transaction Error is generated, resulting in reset and
1074 * re-enumeration of usb device attached. Enabling bit 10 of GUCTL1
1075 * will correct this problem
1076 */
1077 if (dwc->enable_guctl1_resume_quirk) {
1078 reg = dwc3_readl(dwc->regs, DWC3_GUCTL1);
1079 reg |= DWC3_GUCTL1_RESUME_QUIRK;
1080 dwc3_writel(dwc->regs, DWC3_GUCTL1, reg);
1081 }
1082
1083 /* SNPS controller when configureed in HOST mode maintains Inter Packet
1084 * Delay (IPD) of ~380ns which works with most of the super-speed hubs
1085 * except VIA-LAB hubs. When IPD is ~380ns HOST controller fails to
1086 * enumerate FS/LS devices when connected behind VIA-LAB hubs.
1087 * Enabling bit 9 of GUCTL1 enables the workaround in HW to reduce the
1088 * ULPI clock latency by 1 cycle, thus reducing the IPD (~360ns) and
1089 * making controller enumerate FS/LS devices connected behind VIA-LAB.
1090 */
1091 if (dwc->enable_guctl1_ipd_quirk) {
1092 reg = dwc3_readl(dwc->regs, DWC3_GUCTL1);
1093 reg |= DWC3_GUCTL1_IPD_QUIRK;
1094 dwc3_writel(dwc->regs, DWC3_GUCTL1, reg);
1095 }
1096
1097 if (dwc->revision >= DWC3_REVISION_250A) {
1098 reg = dwc3_readl(dwc->regs, DWC3_GUCTL1);
1099
1100 /*
1101 * Enable hardware control of sending remote wakeup
1102 * in HS when the device is in the L1 state.
1103 */
1104 if (dwc->revision >= DWC3_REVISION_290A)
1105 reg |= DWC3_GUCTL1_DEV_L1_EXIT_BY_HW;
1106
1107 if (dwc->dis_tx_ipgap_linecheck_quirk)
1108 reg |= DWC3_GUCTL1_TX_IPGAP_LINECHECK_DIS;
1109
1110 dwc3_writel(dwc->regs, DWC3_GUCTL1, reg);
1111 }
1112
1113 if (dwc->dr_mode == USB_DR_MODE_HOST ||
1114 dwc->dr_mode == USB_DR_MODE_OTG) {
1115 reg = dwc3_readl(dwc->regs, DWC3_GUCTL);
1116
1117 /*
1118 * Enable Auto retry Feature to make the controller operating in
1119 * Host mode on seeing transaction errors(CRC errors or internal
1120 * overrun scenerios) on IN transfers to reply to the device
1121 * with a non-terminating retry ACK (i.e, an ACK transcation
1122 * packet with Retry=1 & Nump != 0)
1123 */
1124 reg |= DWC3_GUCTL_HSTINAUTORETRY;
1125
1126 dwc3_writel(dwc->regs, DWC3_GUCTL, reg);
1127 }
1128
1129 /*
1130 * Must config both number of packets and max burst settings to enable
1131 * RX and/or TX threshold.
1132 */
1133 if (dwc3_is_usb31(dwc) && dwc->dr_mode == USB_DR_MODE_HOST) {
1134 u8 rx_thr_num = dwc->rx_thr_num_pkt_prd;
1135 u8 rx_maxburst = dwc->rx_max_burst_prd;
1136 u8 tx_thr_num = dwc->tx_thr_num_pkt_prd;
1137 u8 tx_maxburst = dwc->tx_max_burst_prd;
1138
1139 if (rx_thr_num && rx_maxburst) {
1140 reg = dwc3_readl(dwc->regs, DWC3_GRXTHRCFG);
1141 reg |= DWC31_RXTHRNUMPKTSEL_PRD;
1142
1143 reg &= ~DWC31_RXTHRNUMPKT_PRD(~0);
1144 reg |= DWC31_RXTHRNUMPKT_PRD(rx_thr_num);
1145
1146 reg &= ~DWC31_MAXRXBURSTSIZE_PRD(~0);
1147 reg |= DWC31_MAXRXBURSTSIZE_PRD(rx_maxburst);
1148
1149 dwc3_writel(dwc->regs, DWC3_GRXTHRCFG, reg);
1150 }
1151
1152 if (tx_thr_num && tx_maxburst) {
1153 reg = dwc3_readl(dwc->regs, DWC3_GTXTHRCFG);
1154 reg |= DWC31_TXTHRNUMPKTSEL_PRD;
1155
1156 reg &= ~DWC31_TXTHRNUMPKT_PRD(~0);
1157 reg |= DWC31_TXTHRNUMPKT_PRD(tx_thr_num);
1158
1159 reg &= ~DWC31_MAXTXBURSTSIZE_PRD(~0);
1160 reg |= DWC31_MAXTXBURSTSIZE_PRD(tx_maxburst);
1161
1162 dwc3_writel(dwc->regs, DWC3_GTXTHRCFG, reg);
1163 }
1164 }
1165
1166 return 0;
1167
1168 err4:
1169 phy_power_off(dwc->usb3_generic_phy);
1170
1171 err3:
1172 phy_power_off(dwc->usb2_generic_phy);
1173
1174 err2:
1175 usb_phy_set_suspend(dwc->usb2_phy, 1);
1176 usb_phy_set_suspend(dwc->usb3_phy, 1);
1177
1178 err1:
1179 usb_phy_shutdown(dwc->usb2_phy);
1180 usb_phy_shutdown(dwc->usb3_phy);
1181 phy_exit(dwc->usb2_generic_phy);
1182 phy_exit(dwc->usb3_generic_phy);
1183
1184 err0a:
1185 dwc3_ulpi_exit(dwc);
1186
1187 err0:
1188 return ret;
1189 }
1190
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config.gz
Type: application/gzip
Size: 23103 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20210113/a78ba3c5/attachment-0001.gz>
More information about the linux-arm-kernel
mailing list