From: kernel test robot <lkp@intel.com>
To: Anurag Kumar Vulisha <anurag.kumar.vulisha@xilinx.com>
Cc: Piyush Mehta <piyush.mehta@xilinx.com>,
Michal Simek <monstr@monstr.eu>,
kbuild-all@lists.01.org,
Mayank Adesara <mayank.adesara@xilinx.com>,
linux-arm-kernel@lists.infradead.org
Subject: [xlnx:xlnx_rebase_v5.4 913/1697] drivers/usb/dwc3/core.c:977:5: warning: no previous prototype for 'dwc3_core_init'
Date: Wed, 13 Jan 2021 05:42:54 +0800 [thread overview]
Message-ID: <202101130541.1gtthCaT-lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 11334 bytes --]
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@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
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 23103 bytes --]
[-- Attachment #3: Type: text/plain, Size: 176 bytes --]
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: [xlnx:xlnx_rebase_v5.4 913/1697] drivers/usb/dwc3/core.c:977:5: warning: no previous prototype for 'dwc3_core_init'
Date: Wed, 13 Jan 2021 05:42:54 +0800 [thread overview]
Message-ID: <202101130541.1gtthCaT-lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 11629 bytes --]
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@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(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 23103 bytes --]
next reply other threads:[~2021-01-12 21:45 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-12 21:42 kernel test robot [this message]
2021-01-12 21:42 ` [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
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202101130541.1gtthCaT-lkp@intel.com \
--to=lkp@intel.com \
--cc=anurag.kumar.vulisha@xilinx.com \
--cc=kbuild-all@lists.01.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=mayank.adesara@xilinx.com \
--cc=monstr@monstr.eu \
--cc=piyush.mehta@xilinx.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.