Commit 7e7125dd authored by David S. Miller's avatar David S. Miller

Merge branch 'macb-versal-device-support'

Harini Katakam says:

====================
macb: Add Versal compatible string to Macb driver

Add Versal device support.

v2:
- Sort compatible strings alphabetically in DT bindings.
- Reorganize new config and CAPS order to be cleaner.
====================
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 61aee772 8a1c9753
...@@ -20,6 +20,7 @@ properties: ...@@ -20,6 +20,7 @@ properties:
- items: - items:
- enum: - enum:
- cdns,versal-gem # Xilinx Versal
- cdns,zynq-gem # Xilinx Zynq-7xxx SoC - cdns,zynq-gem # Xilinx Zynq-7xxx SoC
- cdns,zynqmp-gem # Xilinx Zynq Ultrascale+ MPSoC - cdns,zynqmp-gem # Xilinx Zynq Ultrascale+ MPSoC
- const: cdns,gem # Generic - const: cdns,gem # Generic
......
...@@ -717,14 +717,15 @@ ...@@ -717,14 +717,15 @@
#define MACB_CAPS_BD_RD_PREFETCH 0x00000080 #define MACB_CAPS_BD_RD_PREFETCH 0x00000080
#define MACB_CAPS_NEEDS_RSTONUBR 0x00000100 #define MACB_CAPS_NEEDS_RSTONUBR 0x00000100
#define MACB_CAPS_MIIONRGMII 0x00000200 #define MACB_CAPS_MIIONRGMII 0x00000200
#define MACB_CAPS_NEED_TSUCLK 0x00000400
#define MACB_CAPS_PCS 0x01000000
#define MACB_CAPS_HIGH_SPEED 0x02000000
#define MACB_CAPS_CLK_HW_CHG 0x04000000 #define MACB_CAPS_CLK_HW_CHG 0x04000000
#define MACB_CAPS_MACB_IS_EMAC 0x08000000 #define MACB_CAPS_MACB_IS_EMAC 0x08000000
#define MACB_CAPS_FIFO_MODE 0x10000000 #define MACB_CAPS_FIFO_MODE 0x10000000
#define MACB_CAPS_GIGABIT_MODE_AVAILABLE 0x20000000 #define MACB_CAPS_GIGABIT_MODE_AVAILABLE 0x20000000
#define MACB_CAPS_SG_DISABLED 0x40000000 #define MACB_CAPS_SG_DISABLED 0x40000000
#define MACB_CAPS_MACB_IS_GEM 0x80000000 #define MACB_CAPS_MACB_IS_GEM 0x80000000
#define MACB_CAPS_PCS 0x01000000
#define MACB_CAPS_HIGH_SPEED 0x02000000
/* LSO settings */ /* LSO settings */
#define MACB_LSO_UFO_ENABLE 0x01 #define MACB_LSO_UFO_ENABLE 0x01
......
...@@ -4773,6 +4773,16 @@ static const struct macb_config sama7g5_emac_config = { ...@@ -4773,6 +4773,16 @@ static const struct macb_config sama7g5_emac_config = {
.usrio = &sama7g5_usrio, .usrio = &sama7g5_usrio,
}; };
static const struct macb_config versal_config = {
.caps = MACB_CAPS_GIGABIT_MODE_AVAILABLE | MACB_CAPS_JUMBO |
MACB_CAPS_GEM_HAS_PTP | MACB_CAPS_BD_RD_PREFETCH | MACB_CAPS_NEED_TSUCLK,
.dma_burst_length = 16,
.clk_init = macb_clk_init,
.init = init_reset_optional,
.jumbo_max_len = 10240,
.usrio = &macb_default_usrio,
};
static const struct of_device_id macb_dt_ids[] = { static const struct of_device_id macb_dt_ids[] = {
{ .compatible = "cdns,at32ap7000-macb" }, { .compatible = "cdns,at32ap7000-macb" },
{ .compatible = "cdns,at91sam9260-macb", .data = &at91sam9260_config }, { .compatible = "cdns,at91sam9260-macb", .data = &at91sam9260_config },
...@@ -4794,6 +4804,7 @@ static const struct of_device_id macb_dt_ids[] = { ...@@ -4794,6 +4804,7 @@ static const struct of_device_id macb_dt_ids[] = {
{ .compatible = "microchip,mpfs-macb", .data = &mpfs_config }, { .compatible = "microchip,mpfs-macb", .data = &mpfs_config },
{ .compatible = "microchip,sama7g5-gem", .data = &sama7g5_gem_config }, { .compatible = "microchip,sama7g5-gem", .data = &sama7g5_gem_config },
{ .compatible = "microchip,sama7g5-emac", .data = &sama7g5_emac_config }, { .compatible = "microchip,sama7g5-emac", .data = &sama7g5_emac_config },
{ .compatible = "cdns,versal-gem", .data = &versal_config},
{ /* sentinel */ } { /* sentinel */ }
}; };
MODULE_DEVICE_TABLE(of, macb_dt_ids); MODULE_DEVICE_TABLE(of, macb_dt_ids);
...@@ -5203,7 +5214,7 @@ static int __maybe_unused macb_runtime_suspend(struct device *dev) ...@@ -5203,7 +5214,7 @@ static int __maybe_unused macb_runtime_suspend(struct device *dev)
if (!(device_may_wakeup(dev))) if (!(device_may_wakeup(dev)))
macb_clks_disable(bp->pclk, bp->hclk, bp->tx_clk, bp->rx_clk, bp->tsu_clk); macb_clks_disable(bp->pclk, bp->hclk, bp->tx_clk, bp->rx_clk, bp->tsu_clk);
else else if (!(bp->caps & MACB_CAPS_NEED_TSUCLK))
macb_clks_disable(NULL, NULL, NULL, NULL, bp->tsu_clk); macb_clks_disable(NULL, NULL, NULL, NULL, bp->tsu_clk);
return 0; return 0;
...@@ -5219,8 +5230,10 @@ static int __maybe_unused macb_runtime_resume(struct device *dev) ...@@ -5219,8 +5230,10 @@ static int __maybe_unused macb_runtime_resume(struct device *dev)
clk_prepare_enable(bp->hclk); clk_prepare_enable(bp->hclk);
clk_prepare_enable(bp->tx_clk); clk_prepare_enable(bp->tx_clk);
clk_prepare_enable(bp->rx_clk); clk_prepare_enable(bp->rx_clk);
clk_prepare_enable(bp->tsu_clk);
} else if (!(bp->caps & MACB_CAPS_NEED_TSUCLK)) {
clk_prepare_enable(bp->tsu_clk);
} }
clk_prepare_enable(bp->tsu_clk);
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment