Skip to content

Commit

Permalink
Merge branch 'stmmac-jh7100'
Browse files Browse the repository at this point in the history
Cristian Ciocaltea says:

====================
StarFive DWMAC support for JH7100

This is just a subset of the initial patch series [1] adding networking
support for StarFive JH7100 SoC.

[1]: https://lore.kernel.org/lkml/20231218214451.2345691-1-cristian.ciocaltea@collabora.com/

Changes in v4:
 - Rebased series onto next-20240125
 - Added R-b tag from Rob in PATCH 1
 - v3:
   https://lore.kernel.org/lkml/20231222101001.2541758-1-cristian.ciocaltea@collabora.com/

Changes in v3:
 - Optimized jh7110 resets & reset-names properties (Rob)
 - Added R-b tag from Jacob in PATCH 1
 - v2:
   https://lore.kernel.org/lkml/20231220002824.2462655-1-cristian.ciocaltea@collabora.com/

Changes in v2:
 - Add the missing binding patch (Conor)
 - v1:
   https://lore.kernel.org/lkml/20231219231040.2459358-1-cristian.ciocaltea@collabora.com/
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
David S. Miller committed Jan 31, 2024
2 parents ccf1445 + 8d4597b commit bc34d10
Show file tree
Hide file tree
Showing 4 changed files with 88 additions and 33 deletions.
11 changes: 7 additions & 4 deletions Documentation/devicetree/bindings/net/snps,dwmac.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@ properties:
- snps,dwmac-5.20
- snps,dwxgmac
- snps,dwxgmac-2.10
- starfive,jh7100-dwmac
- starfive,jh7110-dwmac

reg:
Expand Down Expand Up @@ -144,10 +145,12 @@ properties:
- description: AHB reset

reset-names:
minItems: 1
items:
- const: stmmaceth
- const: ahb
oneOf:
- items:
- enum: [stmmaceth, ahb]
- items:
- const: stmmaceth
- const: ahb

power-domains:
maxItems: 1
Expand Down
72 changes: 50 additions & 22 deletions Documentation/devicetree/bindings/net/starfive,jh7110-dwmac.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,16 +16,20 @@ select:
compatible:
contains:
enum:
- starfive,jh7100-dwmac
- starfive,jh7110-dwmac
required:
- compatible

properties:
compatible:
items:
- enum:
- starfive,jh7110-dwmac
- const: snps,dwmac-5.20
oneOf:
- items:
- const: starfive,jh7100-dwmac
- const: snps,dwmac
- items:
- const: starfive,jh7110-dwmac
- const: snps,dwmac-5.20

reg:
maxItems: 1
Expand All @@ -46,24 +50,6 @@ properties:
- const: tx
- const: gtx

interrupts:
minItems: 3
maxItems: 3

interrupt-names:
minItems: 3
maxItems: 3

resets:
items:
- description: MAC Reset signal.
- description: AHB Reset signal.

reset-names:
items:
- const: stmmaceth
- const: ahb

starfive,tx-use-rgmii-clk:
description:
Tx clock is provided by external rgmii clock.
Expand Down Expand Up @@ -94,6 +80,48 @@ required:
allOf:
- $ref: snps,dwmac.yaml#

- if:
properties:
compatible:
contains:
const: starfive,jh7100-dwmac
then:
properties:
interrupts:
minItems: 2
maxItems: 2

interrupt-names:
minItems: 2
maxItems: 2

resets:
maxItems: 1

reset-names:
const: ahb

- if:
properties:
compatible:
contains:
const: starfive,jh7110-dwmac
then:
properties:
interrupts:
minItems: 3
maxItems: 3

interrupt-names:
minItems: 3
maxItems: 3

resets:
minItems: 2

reset-names:
minItems: 2

unevaluatedProperties: false

examples:
Expand Down
6 changes: 3 additions & 3 deletions drivers/net/ethernet/stmicro/stmmac/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -165,9 +165,9 @@ config DWMAC_STARFIVE
help
Support for ethernet controllers on StarFive RISC-V SoCs

This selects the StarFive platform specific glue layer support for
the stmmac device driver. This driver is used for StarFive JH7110
ethernet controller.
This selects the StarFive platform specific glue layer support
for the stmmac device driver. This driver is used for the
StarFive JH7100 and JH7110 ethernet controllers.

config DWMAC_STI
tristate "STi GMAC support"
Expand Down
32 changes: 28 additions & 4 deletions drivers/net/ethernet/stmicro/stmmac/dwmac-starfive.c
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,20 @@

#include "stmmac_platform.h"

#define STARFIVE_DWMAC_PHY_INFT_RGMII 0x1
#define STARFIVE_DWMAC_PHY_INFT_RMII 0x4
#define STARFIVE_DWMAC_PHY_INFT_FIELD 0x7U
#define STARFIVE_DWMAC_PHY_INFT_RGMII 0x1
#define STARFIVE_DWMAC_PHY_INFT_RMII 0x4
#define STARFIVE_DWMAC_PHY_INFT_FIELD 0x7U

#define JH7100_SYSMAIN_REGISTER49_DLYCHAIN 0xc8

struct starfive_dwmac_data {
unsigned int gtxclk_dlychain;
};

struct starfive_dwmac {
struct device *dev;
struct clk *clk_tx;
const struct starfive_dwmac_data *data;
};

static void starfive_dwmac_fix_mac_speed(void *priv, unsigned int speed, unsigned int mode)
Expand Down Expand Up @@ -67,6 +74,8 @@ static int starfive_dwmac_set_mode(struct plat_stmmacenet_data *plat_dat)

case PHY_INTERFACE_MODE_RGMII:
case PHY_INTERFACE_MODE_RGMII_ID:
case PHY_INTERFACE_MODE_RGMII_RXID:
case PHY_INTERFACE_MODE_RGMII_TXID:
mode = STARFIVE_DWMAC_PHY_INFT_RGMII;
break;

Expand All @@ -89,6 +98,14 @@ static int starfive_dwmac_set_mode(struct plat_stmmacenet_data *plat_dat)
if (err)
return dev_err_probe(dwmac->dev, err, "error setting phy mode\n");

if (dwmac->data) {
err = regmap_write(regmap, JH7100_SYSMAIN_REGISTER49_DLYCHAIN,
dwmac->data->gtxclk_dlychain);
if (err)
return dev_err_probe(dwmac->dev, err,
"error selecting gtxclk delay chain\n");
}

return 0;
}

Expand All @@ -114,6 +131,8 @@ static int starfive_dwmac_probe(struct platform_device *pdev)
if (!dwmac)
return -ENOMEM;

dwmac->data = device_get_match_data(&pdev->dev);

dwmac->clk_tx = devm_clk_get_enabled(&pdev->dev, "tx");
if (IS_ERR(dwmac->clk_tx))
return dev_err_probe(&pdev->dev, PTR_ERR(dwmac->clk_tx),
Expand Down Expand Up @@ -144,8 +163,13 @@ static int starfive_dwmac_probe(struct platform_device *pdev)
return stmmac_dvr_probe(&pdev->dev, plat_dat, &stmmac_res);
}

static const struct starfive_dwmac_data jh7100_data = {
.gtxclk_dlychain = 4,
};

static const struct of_device_id starfive_dwmac_match[] = {
{ .compatible = "starfive,jh7110-dwmac" },
{ .compatible = "starfive,jh7100-dwmac", .data = &jh7100_data },
{ .compatible = "starfive,jh7110-dwmac" },
{ /* sentinel */ }
};
MODULE_DEVICE_TABLE(of, starfive_dwmac_match);
Expand Down

0 comments on commit bc34d10

Please sign in to comment.