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

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'usb-5.6-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb

Pull USB/PHY fixes from Greg KH:
"Here are some small USB and PHY driver fixes for reported issues for
5.6-rc5.

Included in here are:

- phy driver fixes

- new USB quirks

- USB cdns3 gadget driver fixes

- USB hub core fixes

All of these have been in linux-next with no reported issues"

* tag 'usb-5.6-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb:
usb: dwc3: gadget: Update chain bit correctly when using sg list
usb: core: port: do error out if usb_autopm_get_interface() fails
usb: core: hub: do error out if usb_autopm_get_interface() fails
usb: core: hub: fix unhandled return by employing a void function
usb: storage: Add quirk for Samsung Fit flash
usb: quirks: add NO_LPM quirk for Logitech Screen Share
usb: usb251xb: fix regulator probe and error handling
phy: allwinner: Fix GENMASK misuse
usb: cdns3: gadget: toggle cycle bit before reset endpoint
usb: cdns3: gadget: link trb should point to next request
phy: mapphone-mdm6600: Fix timeouts by adding wake-up handling
phy: brcm-sata: Correct MDIO operations for 40nm platforms
phy: ti: gmii-sel: do not fail in case of gmii
phy: ti: gmii-sel: fix set of copy-paste errors
phy: core: Fix phy_get() to not return error on link creation failure
phy: mapphone-mdm6600: Fix write timeouts with shorter GPIO toggle interval

+163 -117
+1 -1
drivers/phy/allwinner/phy-sun50i-usb3.c
··· 49 49 #define SUNXI_LOS_BIAS(n) ((n) << 3) 50 50 #define SUNXI_LOS_BIAS_MASK GENMASK(5, 3) 51 51 #define SUNXI_TXVBOOSTLVL(n) ((n) << 0) 52 - #define SUNXI_TXVBOOSTLVL_MASK GENMASK(0, 2) 52 + #define SUNXI_TXVBOOSTLVL_MASK GENMASK(2, 0) 53 53 54 54 struct sun50i_usb3_phy { 55 55 struct phy *phy;
+65 -83
drivers/phy/broadcom/phy-brcm-sata.c
··· 186 186 PHY_CTRL_1_RESET = BIT(0), 187 187 }; 188 188 189 - static inline void __iomem *brcm_sata_pcb_base(struct brcm_sata_port *port) 190 - { 191 - struct brcm_sata_phy *priv = port->phy_priv; 192 - u32 size = 0; 193 - 194 - switch (priv->version) { 195 - case BRCM_SATA_PHY_STB_16NM: 196 - case BRCM_SATA_PHY_STB_28NM: 197 - case BRCM_SATA_PHY_IPROC_NS2: 198 - case BRCM_SATA_PHY_DSL_28NM: 199 - size = SATA_PCB_REG_28NM_SPACE_SIZE; 200 - break; 201 - case BRCM_SATA_PHY_STB_40NM: 202 - size = SATA_PCB_REG_40NM_SPACE_SIZE; 203 - break; 204 - default: 205 - dev_err(priv->dev, "invalid phy version\n"); 206 - break; 207 - } 208 - 209 - return priv->phy_base + (port->portnum * size); 210 - } 211 - 212 189 static inline void __iomem *brcm_sata_ctrl_base(struct brcm_sata_port *port) 213 190 { 214 191 struct brcm_sata_phy *priv = port->phy_priv; ··· 203 226 return priv->ctrl_base + (port->portnum * size); 204 227 } 205 228 206 - static void brcm_sata_phy_wr(void __iomem *pcb_base, u32 bank, 229 + static void brcm_sata_phy_wr(struct brcm_sata_port *port, u32 bank, 207 230 u32 ofs, u32 msk, u32 value) 208 231 { 232 + struct brcm_sata_phy *priv = port->phy_priv; 233 + void __iomem *pcb_base = priv->phy_base; 209 234 u32 tmp; 235 + 236 + if (priv->version == BRCM_SATA_PHY_STB_40NM) 237 + bank += (port->portnum * SATA_PCB_REG_40NM_SPACE_SIZE); 238 + else 239 + pcb_base += (port->portnum * SATA_PCB_REG_28NM_SPACE_SIZE); 210 240 211 241 writel(bank, pcb_base + SATA_PCB_BANK_OFFSET); 212 242 tmp = readl(pcb_base + SATA_PCB_REG_OFFSET(ofs)); ··· 221 237 writel(tmp, pcb_base + SATA_PCB_REG_OFFSET(ofs)); 222 238 } 223 239 224 - static u32 brcm_sata_phy_rd(void __iomem *pcb_base, u32 bank, u32 ofs) 240 + static u32 brcm_sata_phy_rd(struct brcm_sata_port *port, u32 bank, u32 ofs) 225 241 { 242 + struct brcm_sata_phy *priv = port->phy_priv; 243 + void __iomem *pcb_base = priv->phy_base; 244 + 245 + if (priv->version == BRCM_SATA_PHY_STB_40NM) 246 + bank += (port->portnum * SATA_PCB_REG_40NM_SPACE_SIZE); 247 + else 248 + pcb_base += (port->portnum * SATA_PCB_REG_28NM_SPACE_SIZE); 249 + 226 250 writel(bank, pcb_base + SATA_PCB_BANK_OFFSET); 227 251 return readl(pcb_base + SATA_PCB_REG_OFFSET(ofs)); 228 252 } ··· 242 250 243 251 static void brcm_stb_sata_ssc_init(struct brcm_sata_port *port) 244 252 { 245 - void __iomem *base = brcm_sata_pcb_base(port); 246 253 struct brcm_sata_phy *priv = port->phy_priv; 247 254 u32 tmp; 248 255 249 256 /* override the TX spread spectrum setting */ 250 257 tmp = TXPMD_CONTROL1_TX_SSC_EN_FRC_VAL | TXPMD_CONTROL1_TX_SSC_EN_FRC; 251 - brcm_sata_phy_wr(base, TXPMD_REG_BANK, TXPMD_CONTROL1, ~tmp, tmp); 258 + brcm_sata_phy_wr(port, TXPMD_REG_BANK, TXPMD_CONTROL1, ~tmp, tmp); 252 259 253 260 /* set fixed min freq */ 254 - brcm_sata_phy_wr(base, TXPMD_REG_BANK, TXPMD_TX_FREQ_CTRL_CONTROL2, 261 + brcm_sata_phy_wr(port, TXPMD_REG_BANK, TXPMD_TX_FREQ_CTRL_CONTROL2, 255 262 ~TXPMD_TX_FREQ_CTRL_CONTROL2_FMIN_MASK, 256 263 STB_FMIN_VAL_DEFAULT); 257 264 ··· 262 271 tmp = STB_FMAX_VAL_DEFAULT; 263 272 } 264 273 265 - brcm_sata_phy_wr(base, TXPMD_REG_BANK, TXPMD_TX_FREQ_CTRL_CONTROL3, 274 + brcm_sata_phy_wr(port, TXPMD_REG_BANK, TXPMD_TX_FREQ_CTRL_CONTROL3, 266 275 ~TXPMD_TX_FREQ_CTRL_CONTROL3_FMAX_MASK, tmp); 267 276 } 268 277 ··· 271 280 272 281 static int brcm_stb_sata_rxaeq_init(struct brcm_sata_port *port) 273 282 { 274 - void __iomem *base = brcm_sata_pcb_base(port); 275 283 u32 tmp = 0, reg = 0; 276 284 277 285 switch (port->rxaeq_mode) { ··· 291 301 break; 292 302 } 293 303 294 - brcm_sata_phy_wr(base, AEQRX_REG_BANK_0, reg, ~tmp, tmp); 295 - brcm_sata_phy_wr(base, AEQRX_REG_BANK_1, reg, ~tmp, tmp); 304 + brcm_sata_phy_wr(port, AEQRX_REG_BANK_0, reg, ~tmp, tmp); 305 + brcm_sata_phy_wr(port, AEQRX_REG_BANK_1, reg, ~tmp, tmp); 296 306 297 307 return 0; 298 308 } ··· 306 316 307 317 static int brcm_stb_sata_16nm_ssc_init(struct brcm_sata_port *port) 308 318 { 309 - void __iomem *base = brcm_sata_pcb_base(port); 310 319 u32 tmp, value; 311 320 312 321 /* Reduce CP tail current to 1/16th of its default value */ 313 - brcm_sata_phy_wr(base, PLL1_REG_BANK, PLL1_ACTRL6, 0, 0x141); 322 + brcm_sata_phy_wr(port, PLL1_REG_BANK, PLL1_ACTRL6, 0, 0x141); 314 323 315 324 /* Turn off CP tail current boost */ 316 - brcm_sata_phy_wr(base, PLL1_REG_BANK, PLL1_ACTRL8, 0, 0xc006); 325 + brcm_sata_phy_wr(port, PLL1_REG_BANK, PLL1_ACTRL8, 0, 0xc006); 317 326 318 327 /* Set a specific AEQ equalizer value */ 319 328 tmp = AEQ_FRC_EQ_FORCE_VAL | AEQ_FRC_EQ_FORCE; 320 - brcm_sata_phy_wr(base, AEQRX_REG_BANK_0, AEQ_FRC_EQ, 329 + brcm_sata_phy_wr(port, AEQRX_REG_BANK_0, AEQ_FRC_EQ, 321 330 ~(tmp | AEQ_RFZ_FRC_VAL | 322 331 AEQ_FRC_EQ_VAL_MASK << AEQ_FRC_EQ_VAL_SHIFT), 323 332 tmp | 32 << AEQ_FRC_EQ_VAL_SHIFT); ··· 326 337 value = 0x52; 327 338 else 328 339 value = 0; 329 - brcm_sata_phy_wr(base, RXPMD_REG_BANK, RXPMD_RX_CDR_CONTROL1, 340 + brcm_sata_phy_wr(port, RXPMD_REG_BANK, RXPMD_RX_CDR_CONTROL1, 330 341 ~RXPMD_RX_PPM_VAL_MASK, value); 331 342 332 343 /* Set proportional loop bandwith Gen1/2/3 */ ··· 341 352 value = 1 << RXPMD_G1_CDR_PROP_BW_SHIFT | 342 353 1 << RXPMD_G2_CDR_PROP_BW_SHIFT | 343 354 1 << RXPMD_G3_CDR_PROB_BW_SHIFT; 344 - brcm_sata_phy_wr(base, RXPMD_REG_BANK, RXPMD_RX_CDR_CDR_PROP_BW, ~tmp, 355 + brcm_sata_phy_wr(port, RXPMD_REG_BANK, RXPMD_RX_CDR_CDR_PROP_BW, ~tmp, 345 356 value); 346 357 347 358 /* Set CDR integral loop acquisition bandwidth for Gen1/2/3 */ ··· 354 365 1 << RXPMD_G3_CDR_ACQ_INT_BW_SHIFT; 355 366 else 356 367 value = 0; 357 - brcm_sata_phy_wr(base, RXPMD_REG_BANK, RXPMD_RX_CDR_CDR_ACQ_INTEG_BW, 368 + brcm_sata_phy_wr(port, RXPMD_REG_BANK, RXPMD_RX_CDR_CDR_ACQ_INTEG_BW, 358 369 ~tmp, value); 359 370 360 371 /* Set CDR integral loop locking bandwidth to 1 for Gen 1/2/3 */ ··· 367 378 1 << RXPMD_G3_CDR_LOCK_INT_BW_SHIFT; 368 379 else 369 380 value = 0; 370 - brcm_sata_phy_wr(base, RXPMD_REG_BANK, RXPMD_RX_CDR_CDR_LOCK_INTEG_BW, 381 + brcm_sata_phy_wr(port, RXPMD_REG_BANK, RXPMD_RX_CDR_CDR_LOCK_INTEG_BW, 371 382 ~tmp, value); 372 383 373 384 /* Set no guard band and clamp CDR */ ··· 376 387 value = 0x51; 377 388 else 378 389 value = 0; 379 - brcm_sata_phy_wr(base, RXPMD_REG_BANK, RXPMD_RX_FREQ_MON_CONTROL1, 390 + brcm_sata_phy_wr(port, RXPMD_REG_BANK, RXPMD_RX_FREQ_MON_CONTROL1, 380 391 ~tmp, RXPMD_MON_CORRECT_EN | value); 381 392 382 393 /* Turn on/off SSC */ 383 - brcm_sata_phy_wr(base, TX_REG_BANK, TX_ACTRL5, ~TX_ACTRL5_SSC_EN, 394 + brcm_sata_phy_wr(port, TX_REG_BANK, TX_ACTRL5, ~TX_ACTRL5_SSC_EN, 384 395 port->ssc_en ? TX_ACTRL5_SSC_EN : 0); 385 396 386 397 return 0; ··· 400 411 { 401 412 int try; 402 413 unsigned int val; 403 - void __iomem *base = brcm_sata_pcb_base(port); 404 414 void __iomem *ctrl_base = brcm_sata_ctrl_base(port); 405 415 struct device *dev = port->phy_priv->dev; 406 416 ··· 409 421 val |= (0x4 << OOB_CTRL1_BURST_MIN_SHIFT); 410 422 val |= (0x9 << OOB_CTRL1_WAKE_IDLE_MAX_SHIFT); 411 423 val |= (0x3 << OOB_CTRL1_WAKE_IDLE_MIN_SHIFT); 412 - brcm_sata_phy_wr(base, OOB_REG_BANK, OOB_CTRL1, 0x0, val); 424 + brcm_sata_phy_wr(port, OOB_REG_BANK, OOB_CTRL1, 0x0, val); 413 425 val = 0x0; 414 426 val |= (0x1b << OOB_CTRL2_RESET_IDLE_MAX_SHIFT); 415 427 val |= (0x2 << OOB_CTRL2_BURST_CNT_SHIFT); 416 428 val |= (0x9 << OOB_CTRL2_RESET_IDLE_MIN_SHIFT); 417 - brcm_sata_phy_wr(base, OOB_REG_BANK, OOB_CTRL2, 0x0, val); 429 + brcm_sata_phy_wr(port, OOB_REG_BANK, OOB_CTRL2, 0x0, val); 418 430 419 431 /* Configure PHY PLL register bank 1 */ 420 432 val = NS2_PLL1_ACTRL2_MAGIC; 421 - brcm_sata_phy_wr(base, PLL1_REG_BANK, PLL1_ACTRL2, 0x0, val); 433 + brcm_sata_phy_wr(port, PLL1_REG_BANK, PLL1_ACTRL2, 0x0, val); 422 434 val = NS2_PLL1_ACTRL3_MAGIC; 423 - brcm_sata_phy_wr(base, PLL1_REG_BANK, PLL1_ACTRL3, 0x0, val); 435 + brcm_sata_phy_wr(port, PLL1_REG_BANK, PLL1_ACTRL3, 0x0, val); 424 436 val = NS2_PLL1_ACTRL4_MAGIC; 425 - brcm_sata_phy_wr(base, PLL1_REG_BANK, PLL1_ACTRL4, 0x0, val); 437 + brcm_sata_phy_wr(port, PLL1_REG_BANK, PLL1_ACTRL4, 0x0, val); 426 438 427 439 /* Configure PHY BLOCK0 register bank */ 428 440 /* Set oob_clk_sel to refclk/2 */ 429 - brcm_sata_phy_wr(base, BLOCK0_REG_BANK, BLOCK0_SPARE, 441 + brcm_sata_phy_wr(port, BLOCK0_REG_BANK, BLOCK0_SPARE, 430 442 ~BLOCK0_SPARE_OOB_CLK_SEL_MASK, 431 443 BLOCK0_SPARE_OOB_CLK_SEL_REFBY2); 432 444 ··· 439 451 /* Wait for PHY PLL lock by polling pll_lock bit */ 440 452 try = 50; 441 453 while (try) { 442 - val = brcm_sata_phy_rd(base, BLOCK0_REG_BANK, 454 + val = brcm_sata_phy_rd(port, BLOCK0_REG_BANK, 443 455 BLOCK0_XGXSSTATUS); 444 456 if (val & BLOCK0_XGXSSTATUS_PLL_LOCK) 445 457 break; ··· 459 471 460 472 static int brcm_nsp_sata_init(struct brcm_sata_port *port) 461 473 { 462 - struct brcm_sata_phy *priv = port->phy_priv; 463 474 struct device *dev = port->phy_priv->dev; 464 - void __iomem *base = priv->phy_base; 465 475 unsigned int oob_bank; 466 476 unsigned int val, try; 467 477 ··· 476 490 val |= (0x06 << OOB_CTRL1_BURST_MIN_SHIFT); 477 491 val |= (0x0f << OOB_CTRL1_WAKE_IDLE_MAX_SHIFT); 478 492 val |= (0x06 << OOB_CTRL1_WAKE_IDLE_MIN_SHIFT); 479 - brcm_sata_phy_wr(base, oob_bank, OOB_CTRL1, 0x0, val); 493 + brcm_sata_phy_wr(port, oob_bank, OOB_CTRL1, 0x0, val); 480 494 481 495 val = 0x0; 482 496 val |= (0x2e << OOB_CTRL2_RESET_IDLE_MAX_SHIFT); 483 497 val |= (0x02 << OOB_CTRL2_BURST_CNT_SHIFT); 484 498 val |= (0x16 << OOB_CTRL2_RESET_IDLE_MIN_SHIFT); 485 - brcm_sata_phy_wr(base, oob_bank, OOB_CTRL2, 0x0, val); 499 + brcm_sata_phy_wr(port, oob_bank, OOB_CTRL2, 0x0, val); 486 500 487 501 488 - brcm_sata_phy_wr(base, PLL_REG_BANK_0, PLL_ACTRL2, 502 + brcm_sata_phy_wr(port, PLL_REG_BANK_0, PLL_ACTRL2, 489 503 ~(PLL_ACTRL2_SELDIV_MASK << PLL_ACTRL2_SELDIV_SHIFT), 490 504 0x0c << PLL_ACTRL2_SELDIV_SHIFT); 491 505 492 - brcm_sata_phy_wr(base, PLL_REG_BANK_0, PLL_CAP_CONTROL, 506 + brcm_sata_phy_wr(port, PLL_REG_BANK_0, PLL_CAP_CONTROL, 493 507 0xff0, 0x4f0); 494 508 495 509 val = PLLCONTROL_0_FREQ_DET_RESTART | PLLCONTROL_0_FREQ_MONITOR; 496 - brcm_sata_phy_wr(base, PLL_REG_BANK_0, PLL_REG_BANK_0_PLLCONTROL_0, 510 + brcm_sata_phy_wr(port, PLL_REG_BANK_0, PLL_REG_BANK_0_PLLCONTROL_0, 497 511 ~val, val); 498 512 val = PLLCONTROL_0_SEQ_START; 499 - brcm_sata_phy_wr(base, PLL_REG_BANK_0, PLL_REG_BANK_0_PLLCONTROL_0, 513 + brcm_sata_phy_wr(port, PLL_REG_BANK_0, PLL_REG_BANK_0_PLLCONTROL_0, 500 514 ~val, 0); 501 515 mdelay(10); 502 - brcm_sata_phy_wr(base, PLL_REG_BANK_0, PLL_REG_BANK_0_PLLCONTROL_0, 516 + brcm_sata_phy_wr(port, PLL_REG_BANK_0, PLL_REG_BANK_0_PLLCONTROL_0, 503 517 ~val, val); 504 518 505 519 /* Wait for pll_seq_done bit */ 506 520 try = 50; 507 521 while (--try) { 508 - val = brcm_sata_phy_rd(base, BLOCK0_REG_BANK, 522 + val = brcm_sata_phy_rd(port, BLOCK0_REG_BANK, 509 523 BLOCK0_XGXSSTATUS); 510 524 if (val & BLOCK0_XGXSSTATUS_PLL_LOCK) 511 525 break; ··· 532 546 533 547 static int brcm_sr_sata_init(struct brcm_sata_port *port) 534 548 { 535 - struct brcm_sata_phy *priv = port->phy_priv; 536 549 struct device *dev = port->phy_priv->dev; 537 - void __iomem *base = priv->phy_base; 538 550 unsigned int val, try; 539 551 540 552 /* Configure PHY PLL register bank 1 */ 541 553 val = SR_PLL1_ACTRL2_MAGIC; 542 - brcm_sata_phy_wr(base, PLL1_REG_BANK, PLL1_ACTRL2, 0x0, val); 554 + brcm_sata_phy_wr(port, PLL1_REG_BANK, PLL1_ACTRL2, 0x0, val); 543 555 val = SR_PLL1_ACTRL3_MAGIC; 544 - brcm_sata_phy_wr(base, PLL1_REG_BANK, PLL1_ACTRL3, 0x0, val); 556 + brcm_sata_phy_wr(port, PLL1_REG_BANK, PLL1_ACTRL3, 0x0, val); 545 557 val = SR_PLL1_ACTRL4_MAGIC; 546 - brcm_sata_phy_wr(base, PLL1_REG_BANK, PLL1_ACTRL4, 0x0, val); 558 + brcm_sata_phy_wr(port, PLL1_REG_BANK, PLL1_ACTRL4, 0x0, val); 547 559 548 560 /* Configure PHY PLL register bank 0 */ 549 561 val = SR_PLL0_ACTRL6_MAGIC; 550 - brcm_sata_phy_wr(base, PLL_REG_BANK_0, PLL_ACTRL6, 0x0, val); 562 + brcm_sata_phy_wr(port, PLL_REG_BANK_0, PLL_ACTRL6, 0x0, val); 551 563 552 564 /* Wait for PHY PLL lock by polling pll_lock bit */ 553 565 try = 50; 554 566 do { 555 - val = brcm_sata_phy_rd(base, BLOCK0_REG_BANK, 567 + val = brcm_sata_phy_rd(port, BLOCK0_REG_BANK, 556 568 BLOCK0_XGXSSTATUS); 557 569 if (val & BLOCK0_XGXSSTATUS_PLL_LOCK) 558 570 break; ··· 565 581 } 566 582 567 583 /* Invert Tx polarity */ 568 - brcm_sata_phy_wr(base, TX_REG_BANK, TX_ACTRL0, 584 + brcm_sata_phy_wr(port, TX_REG_BANK, TX_ACTRL0, 569 585 ~TX_ACTRL0_TXPOL_FLIP, TX_ACTRL0_TXPOL_FLIP); 570 586 571 587 /* Configure OOB control to handle 100MHz reference clock */ ··· 573 589 (0x4 << OOB_CTRL1_BURST_MIN_SHIFT) | 574 590 (0x8 << OOB_CTRL1_WAKE_IDLE_MAX_SHIFT) | 575 591 (0x3 << OOB_CTRL1_WAKE_IDLE_MIN_SHIFT)); 576 - brcm_sata_phy_wr(base, OOB_REG_BANK, OOB_CTRL1, 0x0, val); 592 + brcm_sata_phy_wr(port, OOB_REG_BANK, OOB_CTRL1, 0x0, val); 577 593 val = ((0x1b << OOB_CTRL2_RESET_IDLE_MAX_SHIFT) | 578 594 (0x2 << OOB_CTRL2_BURST_CNT_SHIFT) | 579 595 (0x9 << OOB_CTRL2_RESET_IDLE_MIN_SHIFT)); 580 - brcm_sata_phy_wr(base, OOB_REG_BANK, OOB_CTRL2, 0x0, val); 596 + brcm_sata_phy_wr(port, OOB_REG_BANK, OOB_CTRL2, 0x0, val); 581 597 582 598 return 0; 583 599 } 584 600 585 601 static int brcm_dsl_sata_init(struct brcm_sata_port *port) 586 602 { 587 - void __iomem *base = brcm_sata_pcb_base(port); 588 603 struct device *dev = port->phy_priv->dev; 589 604 unsigned int try; 590 605 u32 tmp; 591 606 592 - brcm_sata_phy_wr(base, PLL1_REG_BANK, PLL1_ACTRL7, 0, 0x873); 607 + brcm_sata_phy_wr(port, PLL1_REG_BANK, PLL1_ACTRL7, 0, 0x873); 593 608 594 - brcm_sata_phy_wr(base, PLL1_REG_BANK, PLL1_ACTRL6, 0, 0xc000); 609 + brcm_sata_phy_wr(port, PLL1_REG_BANK, PLL1_ACTRL6, 0, 0xc000); 595 610 596 - brcm_sata_phy_wr(base, PLL_REG_BANK_0, PLL_REG_BANK_0_PLLCONTROL_0, 611 + brcm_sata_phy_wr(port, PLL_REG_BANK_0, PLL_REG_BANK_0_PLLCONTROL_0, 597 612 0, 0x3089); 598 613 usleep_range(1000, 2000); 599 614 600 - brcm_sata_phy_wr(base, PLL_REG_BANK_0, PLL_REG_BANK_0_PLLCONTROL_0, 615 + brcm_sata_phy_wr(port, PLL_REG_BANK_0, PLL_REG_BANK_0_PLLCONTROL_0, 601 616 0, 0x3088); 602 617 usleep_range(1000, 2000); 603 618 604 - brcm_sata_phy_wr(base, AEQRX_REG_BANK_1, AEQRX_SLCAL0_CTRL0, 619 + brcm_sata_phy_wr(port, AEQRX_REG_BANK_1, AEQRX_SLCAL0_CTRL0, 605 620 0, 0x3000); 606 621 607 - brcm_sata_phy_wr(base, AEQRX_REG_BANK_1, AEQRX_SLCAL1_CTRL0, 622 + brcm_sata_phy_wr(port, AEQRX_REG_BANK_1, AEQRX_SLCAL1_CTRL0, 608 623 0, 0x3000); 609 624 usleep_range(1000, 2000); 610 625 611 - brcm_sata_phy_wr(base, PLL_REG_BANK_0, PLL_CAP_CHARGE_TIME, 0, 0x32); 626 + brcm_sata_phy_wr(port, PLL_REG_BANK_0, PLL_CAP_CHARGE_TIME, 0, 0x32); 612 627 613 - brcm_sata_phy_wr(base, PLL_REG_BANK_0, PLL_VCO_CAL_THRESH, 0, 0xa); 628 + brcm_sata_phy_wr(port, PLL_REG_BANK_0, PLL_VCO_CAL_THRESH, 0, 0xa); 614 629 615 - brcm_sata_phy_wr(base, PLL_REG_BANK_0, PLL_FREQ_DET_TIME, 0, 0x64); 630 + brcm_sata_phy_wr(port, PLL_REG_BANK_0, PLL_FREQ_DET_TIME, 0, 0x64); 616 631 usleep_range(1000, 2000); 617 632 618 633 /* Acquire PLL lock */ 619 634 try = 50; 620 635 while (try) { 621 - tmp = brcm_sata_phy_rd(base, BLOCK0_REG_BANK, 636 + tmp = brcm_sata_phy_rd(port, BLOCK0_REG_BANK, 622 637 BLOCK0_XGXSSTATUS); 623 638 if (tmp & BLOCK0_XGXSSTATUS_PLL_LOCK) 624 639 break; ··· 670 687 671 688 static void brcm_stb_sata_calibrate(struct brcm_sata_port *port) 672 689 { 673 - void __iomem *base = brcm_sata_pcb_base(port); 674 690 u32 tmp = BIT(8); 675 691 676 - brcm_sata_phy_wr(base, RXPMD_REG_BANK, RXPMD_RX_FREQ_MON_CONTROL1, 692 + brcm_sata_phy_wr(port, RXPMD_REG_BANK, RXPMD_RX_FREQ_MON_CONTROL1, 677 693 ~tmp, tmp); 678 694 } 679 695
+24 -3
drivers/phy/motorola/phy-mapphone-mdm6600.c
··· 20 20 21 21 #define PHY_MDM6600_PHY_DELAY_MS 4000 /* PHY enable 2.2s to 3.5s */ 22 22 #define PHY_MDM6600_ENABLED_DELAY_MS 8000 /* 8s more total for MDM6600 */ 23 + #define PHY_MDM6600_WAKE_KICK_MS 600 /* time on after GPIO toggle */ 23 24 #define MDM6600_MODEM_IDLE_DELAY_MS 1000 /* modem after USB suspend */ 24 25 #define MDM6600_MODEM_WAKE_DELAY_MS 200 /* modem response after idle */ 25 26 ··· 244 243 { 245 244 struct phy_mdm6600 *ddata = data; 246 245 struct gpio_desc *mode_gpio1; 246 + int error, wakeup; 247 247 248 248 mode_gpio1 = ddata->mode_gpios->desc[PHY_MDM6600_MODE1]; 249 - dev_dbg(ddata->dev, "OOB wake on mode_gpio1: %i\n", 250 - gpiod_get_value(mode_gpio1)); 249 + wakeup = gpiod_get_value(mode_gpio1); 250 + if (!wakeup) 251 + return IRQ_NONE; 252 + 253 + dev_dbg(ddata->dev, "OOB wake on mode_gpio1: %i\n", wakeup); 254 + error = pm_runtime_get_sync(ddata->dev); 255 + if (error < 0) { 256 + pm_runtime_put_noidle(ddata->dev); 257 + 258 + return IRQ_NONE; 259 + } 260 + 261 + /* Just wake-up and kick the autosuspend timer */ 262 + pm_runtime_mark_last_busy(ddata->dev); 263 + pm_runtime_put_autosuspend(ddata->dev); 251 264 252 265 return IRQ_HANDLED; 253 266 } ··· 511 496 512 497 ddata = container_of(work, struct phy_mdm6600, modem_wake_work.work); 513 498 phy_mdm6600_wake_modem(ddata); 499 + 500 + /* 501 + * The modem does not always stay awake 1.2 seconds after toggling 502 + * the wake GPIO, and sometimes it idles after about some 600 ms 503 + * making writes time out. 504 + */ 514 505 schedule_delayed_work(&ddata->modem_wake_work, 515 - msecs_to_jiffies(MDM6600_MODEM_IDLE_DELAY_MS)); 506 + msecs_to_jiffies(PHY_MDM6600_WAKE_KICK_MS)); 516 507 } 517 508 518 509 static int __maybe_unused phy_mdm6600_runtime_suspend(struct device *dev)
+6 -12
drivers/phy/phy-core.c
··· 688 688 get_device(&phy->dev); 689 689 690 690 link = device_link_add(dev, &phy->dev, DL_FLAG_STATELESS); 691 - if (!link) { 692 - dev_err(dev, "failed to create device link to %s\n", 691 + if (!link) 692 + dev_dbg(dev, "failed to create device link to %s\n", 693 693 dev_name(phy->dev.parent)); 694 - return ERR_PTR(-EINVAL); 695 - } 696 694 697 695 return phy; 698 696 } ··· 801 803 } 802 804 803 805 link = device_link_add(dev, &phy->dev, DL_FLAG_STATELESS); 804 - if (!link) { 805 - dev_err(dev, "failed to create device link to %s\n", 806 + if (!link) 807 + dev_dbg(dev, "failed to create device link to %s\n", 806 808 dev_name(phy->dev.parent)); 807 - return ERR_PTR(-EINVAL); 808 - } 809 809 810 810 return phy; 811 811 } ··· 848 852 devres_add(dev, ptr); 849 853 850 854 link = device_link_add(dev, &phy->dev, DL_FLAG_STATELESS); 851 - if (!link) { 852 - dev_err(dev, "failed to create device link to %s\n", 855 + if (!link) 856 + dev_dbg(dev, "failed to create device link to %s\n", 853 857 dev_name(phy->dev.parent)); 854 - return ERR_PTR(-EINVAL); 855 - } 856 858 857 859 return phy; 858 860 }
+5 -5
drivers/phy/ti/phy-gmii-sel.c
··· 80 80 break; 81 81 82 82 case PHY_INTERFACE_MODE_MII: 83 - mode = AM33XX_GMII_SEL_MODE_MII; 83 + case PHY_INTERFACE_MODE_GMII: 84 + gmii_sel_mode = AM33XX_GMII_SEL_MODE_MII; 84 85 break; 85 86 86 87 default: 87 - dev_warn(dev, 88 - "port%u: unsupported mode: \"%s\". Defaulting to MII.\n", 89 - if_phy->id, phy_modes(rgmii_id)); 88 + dev_warn(dev, "port%u: unsupported mode: \"%s\"\n", 89 + if_phy->id, phy_modes(submode)); 90 90 return -EINVAL; 91 91 } 92 92 93 93 if_phy->phy_if_mode = submode; 94 94 95 95 dev_dbg(dev, "%s id:%u mode:%u rgmii_id:%d rmii_clk_ext:%d\n", 96 - __func__, if_phy->id, mode, rgmii_id, 96 + __func__, if_phy->id, submode, rgmii_id, 97 97 if_phy->rmii_clock_external); 98 98 99 99 regfield = if_phy->fields[PHY_GMII_SEL_PORT_MODE];
+15 -4
drivers/usb/cdns3/gadget.c
··· 2550 2550 /* Update ring only if removed request is on pending_req_list list */ 2551 2551 if (req_on_hw_ring) { 2552 2552 link_trb->buffer = TRB_BUFFER(priv_ep->trb_pool_dma + 2553 - (priv_req->start_trb * TRB_SIZE)); 2553 + ((priv_req->end_trb + 1) * TRB_SIZE)); 2554 2554 link_trb->control = (link_trb->control & TRB_CYCLE) | 2555 2555 TRB_TYPE(TRB_LINK) | TRB_CHAIN; 2556 2556 ··· 2595 2595 { 2596 2596 struct cdns3_device *priv_dev = priv_ep->cdns3_dev; 2597 2597 struct usb_request *request; 2598 + struct cdns3_request *priv_req; 2599 + struct cdns3_trb *trb = NULL; 2598 2600 int ret; 2599 2601 int val; 2600 2602 2601 2603 trace_cdns3_halt(priv_ep, 0, 0); 2604 + 2605 + request = cdns3_next_request(&priv_ep->pending_req_list); 2606 + if (request) { 2607 + priv_req = to_cdns3_request(request); 2608 + trb = priv_req->trb; 2609 + if (trb) 2610 + trb->control = trb->control ^ TRB_CYCLE; 2611 + } 2602 2612 2603 2613 writel(EP_CMD_CSTALL | EP_CMD_EPRST, &priv_dev->regs->ep_cmd); 2604 2614 ··· 2620 2610 2621 2611 priv_ep->flags &= ~(EP_STALLED | EP_STALL_PENDING); 2622 2612 2623 - request = cdns3_next_request(&priv_ep->pending_req_list); 2624 - 2625 - if (request) 2613 + if (request) { 2614 + if (trb) 2615 + trb->control = trb->control ^ TRB_CYCLE; 2626 2616 cdns3_rearm_transfer(priv_ep, 1); 2617 + } 2627 2618 2628 2619 cdns3_start_all_request(priv_dev, priv_ep); 2629 2620 return ret;
+6 -2
drivers/usb/core/hub.c
··· 988 988 { 989 989 struct usb_hub *hub; 990 990 struct usb_interface *intf; 991 + int ret; 991 992 992 993 if (!udev->parent) /* Can't remove a root hub */ 993 994 return -EINVAL; 994 995 hub = usb_hub_to_struct_hub(udev->parent); 995 996 intf = to_usb_interface(hub->intfdev); 996 997 997 - usb_autopm_get_interface(intf); 998 + ret = usb_autopm_get_interface(intf); 999 + if (ret < 0) 1000 + return ret; 1001 + 998 1002 set_bit(udev->portnum, hub->removed_bits); 999 1003 hub_port_logical_disconnect(hub, udev->portnum); 1000 1004 usb_autopm_put_interface(intf); ··· 1870 1866 1871 1867 if (id->driver_info & HUB_QUIRK_DISABLE_AUTOSUSPEND) { 1872 1868 hub->quirk_disable_autosuspend = 1; 1873 - usb_autopm_get_interface(intf); 1869 + usb_autopm_get_interface_no_resume(intf); 1874 1870 } 1875 1871 1876 1872 if (hub_configure(hub, &desc->endpoint[0].desc) >= 0)
+8 -2
drivers/usb/core/port.c
··· 213 213 if (!port_dev->is_superspeed && peer) 214 214 pm_runtime_get_sync(&peer->dev); 215 215 216 - usb_autopm_get_interface(intf); 216 + retval = usb_autopm_get_interface(intf); 217 + if (retval < 0) 218 + return retval; 219 + 217 220 retval = usb_hub_set_port_power(hdev, hub, port1, true); 218 221 msleep(hub_power_on_good_delay(hub)); 219 222 if (udev && !retval) { ··· 269 266 if (usb_port_block_power_off) 270 267 return -EBUSY; 271 268 272 - usb_autopm_get_interface(intf); 269 + retval = usb_autopm_get_interface(intf); 270 + if (retval < 0) 271 + return retval; 272 + 273 273 retval = usb_hub_set_port_power(hdev, hub, port1, false); 274 274 usb_clear_port_feature(hdev, port1, USB_PORT_FEAT_C_CONNECTION); 275 275 if (!port_dev->is_superspeed)
+3
drivers/usb/core/quirks.c
··· 231 231 /* Logitech PTZ Pro Camera */ 232 232 { USB_DEVICE(0x046d, 0x0853), .driver_info = USB_QUIRK_DELAY_INIT }, 233 233 234 + /* Logitech Screen Share */ 235 + { USB_DEVICE(0x046d, 0x086c), .driver_info = USB_QUIRK_NO_LPM }, 236 + 234 237 /* Logitech Quickcam Fusion */ 235 238 { USB_DEVICE(0x046d, 0x08c1), .driver_info = USB_QUIRK_RESET_RESUME }, 236 239
+8 -1
drivers/usb/dwc3/gadget.c
··· 1071 1071 unsigned int rem = length % maxp; 1072 1072 unsigned chain = true; 1073 1073 1074 - if (sg_is_last(s)) 1074 + /* 1075 + * IOMMU driver is coalescing the list of sgs which shares a 1076 + * page boundary into one and giving it to USB driver. With 1077 + * this the number of sgs mapped is not equal to the number of 1078 + * sgs passed. So mark the chain bit to false if it isthe last 1079 + * mapped sg. 1080 + */ 1081 + if (i == remaining - 1) 1075 1082 chain = false; 1076 1083 1077 1084 if (rem && usb_endpoint_dir_out(dep->endpoint.desc) && !chain) {
+16 -4
drivers/usb/misc/usb251xb.c
··· 424 424 return err; 425 425 } 426 426 427 - hub->vdd = devm_regulator_get(dev, "vdd"); 428 - if (IS_ERR(hub->vdd)) 429 - return PTR_ERR(hub->vdd); 430 - 431 427 if (of_property_read_u16_array(np, "vendor-id", &hub->vendor_id, 1)) 432 428 hub->vendor_id = USB251XB_DEF_VENDOR_ID; 433 429 ··· 636 640 } 637 641 #endif /* CONFIG_OF */ 638 642 643 + static void usb251xb_regulator_disable_action(void *data) 644 + { 645 + struct usb251xb *hub = data; 646 + 647 + regulator_disable(hub->vdd); 648 + } 649 + 639 650 static int usb251xb_probe(struct usb251xb *hub) 640 651 { 641 652 struct device *dev = hub->dev; ··· 679 676 if (err) 680 677 return err; 681 678 679 + hub->vdd = devm_regulator_get(dev, "vdd"); 680 + if (IS_ERR(hub->vdd)) 681 + return PTR_ERR(hub->vdd); 682 + 682 683 err = regulator_enable(hub->vdd); 684 + if (err) 685 + return err; 686 + 687 + err = devm_add_action_or_reset(dev, 688 + usb251xb_regulator_disable_action, hub); 683 689 if (err) 684 690 return err; 685 691
+6
drivers/usb/storage/unusual_devs.h
··· 1258 1258 USB_SC_RBC, USB_PR_BULK, NULL, 1259 1259 0 ), 1260 1260 1261 + UNUSUAL_DEV(0x090c, 0x1000, 0x1100, 0x1100, 1262 + "Samsung", 1263 + "Flash Drive FIT", 1264 + USB_SC_DEVICE, USB_PR_DEVICE, NULL, 1265 + US_FL_MAX_SECTORS_64), 1266 + 1261 1267 /* aeb */ 1262 1268 UNUSUAL_DEV( 0x090c, 0x1132, 0x0000, 0xffff, 1263 1269 "Feiya",