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

Merge branch 'various-mtk_eth_soc-cleanups'

Russell King says:

====================
Various mtk_eth_soc cleanups

Here are a number of patches that do a bit of cleanup to mtk_eth_soc.

The first patch cleans up mtk_gmac0_rgmii_adjust(), which is the
troublesome function preventing the driver becoming a post-March2020
phylink driver. It doesn't solve that problem, merely makes the code
easier to follow by getting rid of repeated tenary operators.

The second patch moves the check for DDR2 memory to the initialisation
of phylink's supported_interfaces - if TRGMII is not possible for some
reason, we should not be erroring out in phylink MAC operations when
that can be determined prior to phylink creation.

The third patch removes checks from mtk_mac_config() that are done
when initialising supported_interfaces - phylink will not call
mtk_mac_config() with an interface that was not marked as supported,
so these checks are redundant.

The last patch removes the remaining vestiges of REVMII and RMII
support, which appears to be entirely unused.

These shouldn't conflict with Daniel's patch set, but if they do I
will rework as appropriate.
====================

Link: https://lore.kernel.org/r/ZAdj9qUXcHUsK7Gt@shell.armlinux.org.uk
Signed-off-by: Paolo Abeni <pabeni@redhat.com>

+33 -48
+33 -48
drivers/net/ethernet/mediatek/mtk_eth_soc.c
··· 374 374 { 375 375 u32 val; 376 376 377 - /* Check DDR memory type. 378 - * Currently TRGMII mode with DDR2 memory is not supported. 379 - */ 380 - regmap_read(eth->ethsys, ETHSYS_SYSCFG, &val); 381 - if (interface == PHY_INTERFACE_MODE_TRGMII && 382 - val & SYSCFG_DRAM_TYPE_DDR2) { 383 - dev_err(eth->dev, 384 - "TRGMII mode with DDR2 memory is not supported!\n"); 385 - return -EOPNOTSUPP; 386 - } 387 - 388 377 val = (interface == PHY_INTERFACE_MODE_TRGMII) ? 389 378 ETHSYS_TRGMII_MT7621_DDR_PLL : 0; 390 379 ··· 386 397 static void mtk_gmac0_rgmii_adjust(struct mtk_eth *eth, 387 398 phy_interface_t interface, int speed) 388 399 { 389 - u32 val; 400 + unsigned long rate; 401 + u32 tck, rck, intf; 390 402 int ret; 391 403 392 404 if (interface == PHY_INTERFACE_MODE_TRGMII) { 393 405 mtk_w32(eth, TRGMII_MODE, INTF_MODE); 394 - val = 500000000; 395 - ret = clk_set_rate(eth->clks[MTK_CLK_TRGPLL], val); 406 + ret = clk_set_rate(eth->clks[MTK_CLK_TRGPLL], 500000000); 396 407 if (ret) 397 408 dev_err(eth->dev, "Failed to set trgmii pll: %d\n", ret); 398 409 return; 399 410 } 400 411 401 - val = (speed == SPEED_1000) ? 402 - INTF_MODE_RGMII_1000 : INTF_MODE_RGMII_10_100; 403 - mtk_w32(eth, val, INTF_MODE); 412 + if (speed == SPEED_1000) { 413 + intf = INTF_MODE_RGMII_1000; 414 + rate = 250000000; 415 + rck = RCK_CTRL_RGMII_1000; 416 + tck = TCK_CTRL_RGMII_1000; 417 + } else { 418 + intf = INTF_MODE_RGMII_10_100; 419 + rate = 500000000; 420 + rck = RCK_CTRL_RGMII_10_100; 421 + tck = TCK_CTRL_RGMII_10_100; 422 + } 423 + 424 + mtk_w32(eth, intf, INTF_MODE); 404 425 405 426 regmap_update_bits(eth->ethsys, ETHSYS_CLKCFG0, 406 427 ETHSYS_TRGMII_CLK_SEL362_5, 407 428 ETHSYS_TRGMII_CLK_SEL362_5); 408 429 409 - val = (speed == SPEED_1000) ? 250000000 : 500000000; 410 - ret = clk_set_rate(eth->clks[MTK_CLK_TRGPLL], val); 430 + ret = clk_set_rate(eth->clks[MTK_CLK_TRGPLL], rate); 411 431 if (ret) 412 432 dev_err(eth->dev, "Failed to set trgmii pll: %d\n", ret); 413 433 414 - val = (speed == SPEED_1000) ? 415 - RCK_CTRL_RGMII_1000 : RCK_CTRL_RGMII_10_100; 416 - mtk_w32(eth, val, TRGMII_RCK_CTRL); 417 - 418 - val = (speed == SPEED_1000) ? 419 - TCK_CTRL_RGMII_1000 : TCK_CTRL_RGMII_10_100; 420 - mtk_w32(eth, val, TRGMII_TCK_CTRL); 434 + mtk_w32(eth, rck, TRGMII_RCK_CTRL); 435 + mtk_w32(eth, tck, TRGMII_TCK_CTRL); 421 436 } 422 437 423 438 static struct phylink_pcs *mtk_mac_select_pcs(struct phylink_config *config, ··· 458 465 /* Setup soc pin functions */ 459 466 switch (state->interface) { 460 467 case PHY_INTERFACE_MODE_TRGMII: 461 - if (mac->id) 462 - goto err_phy; 463 - if (!MTK_HAS_CAPS(mac->hw->soc->caps, 464 - MTK_GMAC1_TRGMII)) 465 - goto err_phy; 466 - fallthrough; 467 468 case PHY_INTERFACE_MODE_RGMII_TXID: 468 469 case PHY_INTERFACE_MODE_RGMII_RXID: 469 470 case PHY_INTERFACE_MODE_RGMII_ID: 470 471 case PHY_INTERFACE_MODE_RGMII: 471 472 case PHY_INTERFACE_MODE_MII: 472 - case PHY_INTERFACE_MODE_REVMII: 473 - case PHY_INTERFACE_MODE_RMII: 474 473 if (MTK_HAS_CAPS(eth->soc->caps, MTK_RGMII)) { 475 474 err = mtk_gmac_rgmii_path_setup(eth, mac->id); 476 475 if (err) ··· 472 487 case PHY_INTERFACE_MODE_1000BASEX: 473 488 case PHY_INTERFACE_MODE_2500BASEX: 474 489 case PHY_INTERFACE_MODE_SGMII: 475 - if (MTK_HAS_CAPS(eth->soc->caps, MTK_SGMII)) { 476 - err = mtk_gmac_sgmii_path_setup(eth, mac->id); 477 - if (err) 478 - goto init_err; 479 - } 490 + err = mtk_gmac_sgmii_path_setup(eth, mac->id); 491 + if (err) 492 + goto init_err; 480 493 break; 481 494 case PHY_INTERFACE_MODE_GMII: 482 495 if (MTK_HAS_CAPS(eth->soc->caps, MTK_GEPHY)) { ··· 522 539 } 523 540 } 524 541 525 - ge_mode = 0; 526 542 switch (state->interface) { 527 543 case PHY_INTERFACE_MODE_MII: 528 544 case PHY_INTERFACE_MODE_GMII: 529 545 ge_mode = 1; 530 546 break; 531 - case PHY_INTERFACE_MODE_REVMII: 532 - ge_mode = 2; 533 - break; 534 - case PHY_INTERFACE_MODE_RMII: 535 - if (mac->id) 536 - goto err_phy; 537 - ge_mode = 3; 538 - break; 539 547 default: 548 + ge_mode = 0; 540 549 break; 541 550 } 542 551 ··· 4304 4329 struct mtk_mac *mac; 4305 4330 int id, err; 4306 4331 int txqs = 1; 4332 + u32 val; 4307 4333 4308 4334 if (!_id) { 4309 4335 dev_err(eth->dev, "missing mac id\n"); ··· 4380 4404 if (MTK_HAS_CAPS(mac->hw->soc->caps, MTK_TRGMII) && !mac->id) 4381 4405 __set_bit(PHY_INTERFACE_MODE_TRGMII, 4382 4406 mac->phylink_config.supported_interfaces); 4407 + 4408 + /* TRGMII is not permitted on MT7621 if using DDR2 */ 4409 + if (MTK_HAS_CAPS(mac->hw->soc->caps, MTK_GMAC1_TRGMII) && 4410 + MTK_HAS_CAPS(mac->hw->soc->caps, MTK_TRGMII_MT7621_CLK)) { 4411 + regmap_read(eth->ethsys, ETHSYS_SYSCFG, &val); 4412 + if (val & SYSCFG_DRAM_TYPE_DDR2) 4413 + __clear_bit(PHY_INTERFACE_MODE_TRGMII, 4414 + mac->phylink_config.supported_interfaces); 4415 + } 4383 4416 4384 4417 if (MTK_HAS_CAPS(mac->hw->soc->caps, MTK_SGMII)) { 4385 4418 __set_bit(PHY_INTERFACE_MODE_SGMII,