Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

usb: dwc2: platform: adopt dev_err_probe() to silent probe defer

In case of probe defer, a message is logged for resets and clocks. Use
dev_err_probe to log the message only when error code is not -517.
Simplify phy, regulators and drd probe defer handling with dev_err_probe().
Then, take benefit of devices_deferred debugfs in case of probe deferral.

Acked-by: Minas Harutyunyan <Minas.Harutyunyan@synopsys.com>
Signed-off-by: Amelie Delaunay <amelie.delaunay@foss.st.com>
Link: https://lore.kernel.org/r/20211207120829.266837-1-amelie.delaunay@foss.st.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

authored by

Amelie Delaunay and committed by
Greg Kroah-Hartman
856d3624 cdf8e2de

+16 -37
+16 -37
drivers/usb/dwc2/platform.c
··· 222 222 int i, ret; 223 223 224 224 hsotg->reset = devm_reset_control_get_optional(hsotg->dev, "dwc2"); 225 - if (IS_ERR(hsotg->reset)) { 226 - ret = PTR_ERR(hsotg->reset); 227 - dev_err(hsotg->dev, "error getting reset control %d\n", ret); 228 - return ret; 229 - } 225 + if (IS_ERR(hsotg->reset)) 226 + return dev_err_probe(hsotg->dev, PTR_ERR(hsotg->reset), 227 + "error getting reset control\n"); 230 228 231 229 reset_control_deassert(hsotg->reset); 232 230 233 231 hsotg->reset_ecc = devm_reset_control_get_optional(hsotg->dev, "dwc2-ecc"); 234 - if (IS_ERR(hsotg->reset_ecc)) { 235 - ret = PTR_ERR(hsotg->reset_ecc); 236 - dev_err(hsotg->dev, "error getting reset control for ecc %d\n", ret); 237 - return ret; 238 - } 232 + if (IS_ERR(hsotg->reset_ecc)) 233 + return dev_err_probe(hsotg->dev, PTR_ERR(hsotg->reset_ecc), 234 + "error getting reset control for ecc\n"); 239 235 240 236 reset_control_deassert(hsotg->reset_ecc); 241 237 ··· 247 251 case -ENOSYS: 248 252 hsotg->phy = NULL; 249 253 break; 250 - case -EPROBE_DEFER: 251 - return ret; 252 254 default: 253 - dev_err(hsotg->dev, "error getting phy %d\n", ret); 254 - return ret; 255 + return dev_err_probe(hsotg->dev, ret, "error getting phy\n"); 255 256 } 256 257 } 257 258 ··· 261 268 case -ENXIO: 262 269 hsotg->uphy = NULL; 263 270 break; 264 - case -EPROBE_DEFER: 265 - return ret; 266 271 default: 267 - dev_err(hsotg->dev, "error getting usb phy %d\n", 268 - ret); 269 - return ret; 272 + return dev_err_probe(hsotg->dev, ret, "error getting usb phy\n"); 270 273 } 271 274 } 272 275 } ··· 271 282 272 283 /* Clock */ 273 284 hsotg->clk = devm_clk_get_optional(hsotg->dev, "otg"); 274 - if (IS_ERR(hsotg->clk)) { 275 - dev_err(hsotg->dev, "cannot get otg clock\n"); 276 - return PTR_ERR(hsotg->clk); 277 - } 285 + if (IS_ERR(hsotg->clk)) 286 + return dev_err_probe(hsotg->dev, PTR_ERR(hsotg->clk), "cannot get otg clock\n"); 278 287 279 288 /* Regulators */ 280 289 for (i = 0; i < ARRAY_SIZE(hsotg->supplies); i++) ··· 280 293 281 294 ret = devm_regulator_bulk_get(hsotg->dev, ARRAY_SIZE(hsotg->supplies), 282 295 hsotg->supplies); 283 - if (ret) { 284 - if (ret != -EPROBE_DEFER) 285 - dev_err(hsotg->dev, "failed to request supplies: %d\n", 286 - ret); 287 - return ret; 288 - } 296 + if (ret) 297 + return dev_err_probe(hsotg->dev, ret, "failed to request supplies\n"); 298 + 289 299 return 0; 290 300 } 291 301 ··· 542 558 hsotg->usb33d = devm_regulator_get(hsotg->dev, "usb33d"); 543 559 if (IS_ERR(hsotg->usb33d)) { 544 560 retval = PTR_ERR(hsotg->usb33d); 545 - if (retval != -EPROBE_DEFER) 546 - dev_err(hsotg->dev, 547 - "failed to request usb33d supply: %d\n", 548 - retval); 561 + dev_err_probe(hsotg->dev, retval, "failed to request usb33d supply\n"); 549 562 goto error; 550 563 } 551 564 retval = regulator_enable(hsotg->usb33d); 552 565 if (retval) { 553 - dev_err(hsotg->dev, 554 - "failed to enable usb33d supply: %d\n", retval); 566 + dev_err_probe(hsotg->dev, retval, "failed to enable usb33d supply\n"); 555 567 goto error; 556 568 } 557 569 ··· 559 579 560 580 retval = dwc2_drd_init(hsotg); 561 581 if (retval) { 562 - if (retval != -EPROBE_DEFER) 563 - dev_err(hsotg->dev, "failed to initialize dual-role\n"); 582 + dev_err_probe(hsotg->dev, retval, "failed to initialize dual-role\n"); 564 583 goto error_init; 565 584 } 566 585