Commit a69a3d09 authored by Biju Das's avatar Biju Das Committed by David S. Miller
Browse files

ravb: Add ptp_cfg_active to struct ravb_hw_info



There are some H/W differences for the gPTP feature between
R-Car Gen3, R-Car Gen2, and RZ/G2L as below.

1) On R-Car Gen3, gPTP support is active in config mode.
2) On R-Car Gen2, gPTP support is not active in config mode.
3) RZ/G2L does not support the gPTP feature.

Add a ptp_cfg_active hw feature bit to struct ravb_hw_info for
supporting gPTP active in config mode for R-Car Gen3.
This patch also removes enum ravb_chip_id, chip_id from both
struct ravb_hw_info and struct ravb_private, as it is unused.

Signed-off-by: default avatarBiju Das <biju.das.jz@bp.renesas.com>
Reviewed-by: default avatarLad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 8f27219a
Loading
Loading
Loading
Loading
+1 −7
Original line number Diff line number Diff line
@@ -979,17 +979,11 @@ struct ravb_ptp {
	struct ravb_ptp_perout perout[N_PER_OUT];
};

enum ravb_chip_id {
	RCAR_GEN2,
	RCAR_GEN3,
};

struct ravb_hw_info {
	const char (*gstrings_stats)[ETH_GSTRING_LEN];
	size_t gstrings_size;
	netdev_features_t net_hw_features;
	netdev_features_t net_features;
	enum ravb_chip_id chip_id;
	int stats_len;
	size_t max_rx_len;
	unsigned aligned_tx: 1;
@@ -999,6 +993,7 @@ struct ravb_hw_info {
	unsigned tx_counters:1;		/* E-MAC has TX counters */
	unsigned multi_irqs:1;		/* AVB-DMAC and E-MAC has multiple irqs */
	unsigned no_ptp_cfg_active:1;	/* AVB-DMAC does not support gPTP active in config mode */
	unsigned ptp_cfg_active:1;	/* AVB-DMAC has gPTP support active in config mode */
};

struct ravb_private {
@@ -1042,7 +1037,6 @@ struct ravb_private {
	int msg_enable;
	int speed;
	int emac_irq;
	enum ravb_chip_id chip_id;
	int rx_irqs[NUM_RX_QUEUE];
	int tx_irqs[NUM_TX_QUEUE];

+5 −7
Original line number Diff line number Diff line
@@ -1941,12 +1941,12 @@ static const struct ravb_hw_info ravb_gen3_hw_info = {
	.gstrings_size = sizeof(ravb_gstrings_stats),
	.net_hw_features = NETIF_F_RXCSUM,
	.net_features = NETIF_F_RXCSUM,
	.chip_id = RCAR_GEN3,
	.stats_len = ARRAY_SIZE(ravb_gstrings_stats),
	.max_rx_len = RX_BUF_SZ + RAVB_ALIGN - 1,
	.internal_delay = 1,
	.tx_counters = 1,
	.multi_irqs = 1,
	.ptp_cfg_active = 1,
};

static const struct ravb_hw_info ravb_gen2_hw_info = {
@@ -1954,7 +1954,6 @@ static const struct ravb_hw_info ravb_gen2_hw_info = {
	.gstrings_size = sizeof(ravb_gstrings_stats),
	.net_hw_features = NETIF_F_RXCSUM,
	.net_features = NETIF_F_RXCSUM,
	.chip_id = RCAR_GEN2,
	.stats_len = ARRAY_SIZE(ravb_gstrings_stats),
	.max_rx_len = RX_BUF_SZ + RAVB_ALIGN - 1,
	.aligned_tx = 1,
@@ -2152,8 +2151,6 @@ static int ravb_probe(struct platform_device *pdev)
		}
	}

	priv->chip_id = info->chip_id;

	priv->clk = devm_clk_get(&pdev->dev, NULL);
	if (IS_ERR(priv->clk)) {
		error = PTR_ERR(priv->clk);
@@ -2216,7 +2213,7 @@ static int ravb_probe(struct platform_device *pdev)
	INIT_LIST_HEAD(&priv->ts_skb_list);

	/* Initialise PTP Clock driver */
	if (info->chip_id != RCAR_GEN2)
	if (info->ptp_cfg_active)
		ravb_ptp_init(ndev, pdev);

	/* Debug message level */
@@ -2264,7 +2261,7 @@ static int ravb_probe(struct platform_device *pdev)
			  priv->desc_bat_dma);

	/* Stop PTP Clock driver */
	if (info->chip_id != RCAR_GEN2)
	if (info->ptp_cfg_active)
		ravb_ptp_stop(ndev);
out_disable_refclk:
	clk_disable_unprepare(priv->refclk);
@@ -2280,9 +2277,10 @@ static int ravb_remove(struct platform_device *pdev)
{
	struct net_device *ndev = platform_get_drvdata(pdev);
	struct ravb_private *priv = netdev_priv(ndev);
	const struct ravb_hw_info *info = priv->info;

	/* Stop PTP Clock driver */
	if (priv->chip_id != RCAR_GEN2)
	if (info->ptp_cfg_active)
		ravb_ptp_stop(ndev);

	clk_disable_unprepare(priv->refclk);