Message ID | 20210223155005.21712-3-noltari@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | usb: host: ehci-platform: add ignore-oc DT support | expand |
Hi "Álvaro, Thank you for the patch! Yet something to improve: [auto build test ERROR on usb/usb-testing] [also build test ERROR on v5.11 next-20210223] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/lvaro-Fern-ndez-Rojas/usb-host-ehci-platform-add-ignore-oc-DT-support/20210223-235717 base: https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-testing config: m68k-randconfig-s031-20210223 (attached as .config) compiler: m68k-linux-gcc (GCC) 9.3.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # apt-get install sparse # sparse version: v0.6.3-229-g60c1f270-dirty # https://github.com/0day-ci/linux/commit/cb5cc55cab35476258f04e40cac0a9dd02271475 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review lvaro-Fern-ndez-Rojas/usb-host-ehci-platform-add-ignore-oc-DT-support/20210223-235717 git checkout cb5cc55cab35476258f04e40cac0a9dd02271475 # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=m68k If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> All errors (new ones prefixed by >>): In file included from include/linux/build_bug.h:5, from include/linux/bits.h:22, from include/linux/ioport.h:13, from include/linux/acpi.h:12, from drivers/usb/host/ehci-platform.c:21: 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:137:2: note: in expansion of macro 'BUG_ON' 137 | BUG_ON(!virt_addr_valid(buf)); | ^~~~~~ include/linux/scatterlist.h:137:10: note: in expansion of macro 'virt_addr_valid' 137 | BUG_ON(!virt_addr_valid(buf)); | ^~~~~~~~~~~~~~~ drivers/usb/host/ehci-platform.c: In function 'ehci_platform_probe': >> drivers/usb/host/ehci-platform.c:290:8: error: 'struct ehci_hcd' has no member named 'ignore_oc' 290 | ehci->ignore_oc = 1; | ^~ vim +290 drivers/usb/host/ehci-platform.c 238 239 static int ehci_platform_probe(struct platform_device *dev) 240 { 241 struct usb_hcd *hcd; 242 struct resource *res_mem; 243 struct usb_ehci_pdata *pdata = dev_get_platdata(&dev->dev); 244 struct ehci_platform_priv *priv; 245 struct ehci_hcd *ehci; 246 int err, irq, clk = 0; 247 248 if (usb_disabled()) 249 return -ENODEV; 250 251 /* 252 * Use reasonable defaults so platforms don't have to provide these 253 * with DT probing on ARM. 254 */ 255 if (!pdata) 256 pdata = &ehci_platform_defaults; 257 258 err = dma_coerce_mask_and_coherent(&dev->dev, 259 pdata->dma_mask_64 ? DMA_BIT_MASK(64) : DMA_BIT_MASK(32)); 260 if (err) { 261 dev_err(&dev->dev, "Error: DMA mask configuration failed\n"); 262 return err; 263 } 264 265 irq = platform_get_irq(dev, 0); 266 if (irq < 0) 267 return irq; 268 269 hcd = usb_create_hcd(&ehci_platform_hc_driver, &dev->dev, 270 dev_name(&dev->dev)); 271 if (!hcd) 272 return -ENOMEM; 273 274 platform_set_drvdata(dev, hcd); 275 dev->dev.platform_data = pdata; 276 priv = hcd_to_ehci_priv(hcd); 277 ehci = hcd_to_ehci(hcd); 278 279 if (pdata == &ehci_platform_defaults && dev->dev.of_node) { 280 if (of_property_read_bool(dev->dev.of_node, "big-endian-regs")) 281 ehci->big_endian_mmio = 1; 282 283 if (of_property_read_bool(dev->dev.of_node, "big-endian-desc")) 284 ehci->big_endian_desc = 1; 285 286 if (of_property_read_bool(dev->dev.of_node, "big-endian")) 287 ehci->big_endian_mmio = ehci->big_endian_desc = 1; 288 289 if (of_property_read_bool(dev->dev.of_node, "ignore-oc")) > 290 ehci->ignore_oc = 1; 291 292 if (of_property_read_bool(dev->dev.of_node, 293 "needs-reset-on-resume")) 294 priv->reset_on_resume = true; 295 296 if (of_property_read_bool(dev->dev.of_node, 297 "has-transaction-translator")) 298 hcd->has_tt = 1; 299 300 if (soc_device_match(quirk_poll_match)) 301 priv->quirk_poll = true; 302 303 for (clk = 0; clk < EHCI_MAX_CLKS; clk++) { 304 priv->clks[clk] = of_clk_get(dev->dev.of_node, clk); 305 if (IS_ERR(priv->clks[clk])) { 306 err = PTR_ERR(priv->clks[clk]); 307 if (err == -EPROBE_DEFER) 308 goto err_put_clks; 309 priv->clks[clk] = NULL; 310 break; 311 } 312 } 313 } 314 315 priv->rsts = devm_reset_control_array_get_optional_shared(&dev->dev); 316 if (IS_ERR(priv->rsts)) { 317 err = PTR_ERR(priv->rsts); 318 goto err_put_clks; 319 } 320 321 err = reset_control_deassert(priv->rsts); 322 if (err) 323 goto err_put_clks; 324 325 if (pdata->big_endian_desc) 326 ehci->big_endian_desc = 1; 327 if (pdata->big_endian_mmio) 328 ehci->big_endian_mmio = 1; 329 if (pdata->has_tt) 330 hcd->has_tt = 1; 331 if (pdata->reset_on_resume) 332 priv->reset_on_resume = true; 333 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
Hi "Álvaro, Thank you for the patch! Yet something to improve: [auto build test ERROR on usb/usb-testing] [also build test ERROR on v5.11 next-20210223] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/lvaro-Fern-ndez-Rojas/usb-host-ehci-platform-add-ignore-oc-DT-support/20210223-235717 base: https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-testing config: mips-randconfig-r022-20210223 (attached as .config) compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project c9439ca36342fb6013187d0a69aef92736951476) 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 # install mips cross compiling tool for clang build # apt-get install binutils-mips-linux-gnu # https://github.com/0day-ci/linux/commit/cb5cc55cab35476258f04e40cac0a9dd02271475 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review lvaro-Fern-ndez-Rojas/usb-host-ehci-platform-add-ignore-oc-DT-support/20210223-235717 git checkout cb5cc55cab35476258f04e40cac0a9dd02271475 # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=mips If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> All error/warnings (new ones prefixed by >>): >> drivers/usb/host/ehci-platform.c:290:10: error: no member named 'ignore_oc' in 'struct ehci_hcd' ehci->ignore_oc = 1; ~~~~ ^ >> drivers/usb/host/ehci-platform.c:259:24: warning: shift count >= width of type [-Wshift-count-overflow] pdata->dma_mask_64 ? DMA_BIT_MASK(64) : DMA_BIT_MASK(32)); ^~~~~~~~~~~~~~~~ include/linux/dma-mapping.h:76:54: note: expanded from macro 'DMA_BIT_MASK' #define DMA_BIT_MASK(n) (((n) == 64) ? ~0ULL : ((1ULL<<(n))-1)) ^ ~~~ 1 warning and 1 error generated. vim +290 drivers/usb/host/ehci-platform.c 238 239 static int ehci_platform_probe(struct platform_device *dev) 240 { 241 struct usb_hcd *hcd; 242 struct resource *res_mem; 243 struct usb_ehci_pdata *pdata = dev_get_platdata(&dev->dev); 244 struct ehci_platform_priv *priv; 245 struct ehci_hcd *ehci; 246 int err, irq, clk = 0; 247 248 if (usb_disabled()) 249 return -ENODEV; 250 251 /* 252 * Use reasonable defaults so platforms don't have to provide these 253 * with DT probing on ARM. 254 */ 255 if (!pdata) 256 pdata = &ehci_platform_defaults; 257 258 err = dma_coerce_mask_and_coherent(&dev->dev, > 259 pdata->dma_mask_64 ? DMA_BIT_MASK(64) : DMA_BIT_MASK(32)); 260 if (err) { 261 dev_err(&dev->dev, "Error: DMA mask configuration failed\n"); 262 return err; 263 } 264 265 irq = platform_get_irq(dev, 0); 266 if (irq < 0) 267 return irq; 268 269 hcd = usb_create_hcd(&ehci_platform_hc_driver, &dev->dev, 270 dev_name(&dev->dev)); 271 if (!hcd) 272 return -ENOMEM; 273 274 platform_set_drvdata(dev, hcd); 275 dev->dev.platform_data = pdata; 276 priv = hcd_to_ehci_priv(hcd); 277 ehci = hcd_to_ehci(hcd); 278 279 if (pdata == &ehci_platform_defaults && dev->dev.of_node) { 280 if (of_property_read_bool(dev->dev.of_node, "big-endian-regs")) 281 ehci->big_endian_mmio = 1; 282 283 if (of_property_read_bool(dev->dev.of_node, "big-endian-desc")) 284 ehci->big_endian_desc = 1; 285 286 if (of_property_read_bool(dev->dev.of_node, "big-endian")) 287 ehci->big_endian_mmio = ehci->big_endian_desc = 1; 288 289 if (of_property_read_bool(dev->dev.of_node, "ignore-oc")) > 290 ehci->ignore_oc = 1; 291 292 if (of_property_read_bool(dev->dev.of_node, 293 "needs-reset-on-resume")) 294 priv->reset_on_resume = true; 295 296 if (of_property_read_bool(dev->dev.of_node, 297 "has-transaction-translator")) 298 hcd->has_tt = 1; 299 300 if (soc_device_match(quirk_poll_match)) 301 priv->quirk_poll = true; 302 303 for (clk = 0; clk < EHCI_MAX_CLKS; clk++) { 304 priv->clks[clk] = of_clk_get(dev->dev.of_node, clk); 305 if (IS_ERR(priv->clks[clk])) { 306 err = PTR_ERR(priv->clks[clk]); 307 if (err == -EPROBE_DEFER) 308 goto err_put_clks; 309 priv->clks[clk] = NULL; 310 break; 311 } 312 } 313 } 314 315 priv->rsts = devm_reset_control_array_get_optional_shared(&dev->dev); 316 if (IS_ERR(priv->rsts)) { 317 err = PTR_ERR(priv->rsts); 318 goto err_put_clks; 319 } 320 321 err = reset_control_deassert(priv->rsts); 322 if (err) 323 goto err_put_clks; 324 325 if (pdata->big_endian_desc) 326 ehci->big_endian_desc = 1; 327 if (pdata->big_endian_mmio) 328 ehci->big_endian_mmio = 1; 329 if (pdata->has_tt) 330 hcd->has_tt = 1; 331 if (pdata->reset_on_resume) 332 priv->reset_on_resume = true; 333 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
diff --git a/drivers/usb/host/ehci-platform.c b/drivers/usb/host/ehci-platform.c index a48dd3fac153..f8e58372f7fe 100644 --- a/drivers/usb/host/ehci-platform.c +++ b/drivers/usb/host/ehci-platform.c @@ -286,6 +286,9 @@ static int ehci_platform_probe(struct platform_device *dev) if (of_property_read_bool(dev->dev.of_node, "big-endian")) ehci->big_endian_mmio = ehci->big_endian_desc = 1; + if (of_property_read_bool(dev->dev.of_node, "ignore-oc")) + ehci->ignore_oc = 1; + if (of_property_read_bool(dev->dev.of_node, "needs-reset-on-resume")) priv->reset_on_resume = true;
Over-current reporting isn't supported on some platforms such as bcm63xx. These devices will incorrectly report over-current if this flag isn't properly activated. Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> --- drivers/usb/host/ehci-platform.c | 3 +++ 1 file changed, 3 insertions(+)