forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-01-31 f70575805708cabdedea7498aaa3f710fde4d920
kernel/drivers/net/ethernet/cadence/macb.h
....@@ -1,16 +1,14 @@
1
+/* SPDX-License-Identifier: GPL-2.0-only */
12 /*
23 * Atmel MACB Ethernet Controller driver
34 *
45 * Copyright (C) 2004-2006 Atmel Corporation
5
- *
6
- * This program is free software; you can redistribute it and/or modify
7
- * it under the terms of the GNU General Public License version 2 as
8
- * published by the Free Software Foundation.
96 */
107 #ifndef _MACB_H
118 #define _MACB_H
129
13
-#include <linux/phy.h>
10
+#include <linux/clk.h>
11
+#include <linux/phylink.h>
1412 #include <linux/ptp_clock_kernel.h>
1513 #include <linux/net_tstamp.h>
1614 #include <linux/interrupt.h>
....@@ -93,6 +91,7 @@
9391 #define GEM_SA3T 0x009C /* Specific3 Top */
9492 #define GEM_SA4B 0x00A0 /* Specific4 Bottom */
9593 #define GEM_SA4T 0x00A4 /* Specific4 Top */
94
+#define GEM_WOL 0x00b8 /* Wake on LAN */
9695 #define GEM_EFTSH 0x00e8 /* PTP Event Frame Transmitted Seconds Register 47:32 */
9796 #define GEM_EFRSH 0x00ec /* PTP Event Frame Received Seconds Register 47:32 */
9897 #define GEM_PEFTSH 0x00f0 /* PTP Peer Event Frame Transmitted Seconds Register 47:32 */
....@@ -367,6 +366,8 @@
367366 #define MACB_ISR_RLE_SIZE 1
368367 #define MACB_TXERR_OFFSET 6 /* EN TX frame corrupt from error interrupt */
369368 #define MACB_TXERR_SIZE 1
369
+#define MACB_RM9200_TBRE_OFFSET 6 /* EN may send new frame interrupt (RM9200) */
370
+#define MACB_RM9200_TBRE_SIZE 1
370371 #define MACB_TCOMP_OFFSET 7 /* Enable transmit complete interrupt */
371372 #define MACB_TCOMP_SIZE 1
372373 #define MACB_ISR_LINK_OFFSET 9 /* Enable link change interrupt */
....@@ -399,6 +400,8 @@
399400 #define MACB_PDRSFT_SIZE 1
400401 #define MACB_SRI_OFFSET 26 /* TSU Seconds Register Increment */
401402 #define MACB_SRI_SIZE 1
403
+#define GEM_WOL_OFFSET 28 /* Enable wake-on-lan interrupt */
404
+#define GEM_WOL_SIZE 1
402405
403406 /* Timer increment fields */
404407 #define MACB_TI_CNS_OFFSET 0
....@@ -633,10 +636,17 @@
633636 #define GEM_CLK_DIV96 5
634637
635638 /* Constants for MAN register */
636
-#define MACB_MAN_SOF 1
637
-#define MACB_MAN_WRITE 1
638
-#define MACB_MAN_READ 2
639
-#define MACB_MAN_CODE 2
639
+#define MACB_MAN_C22_SOF 1
640
+#define MACB_MAN_C22_WRITE 1
641
+#define MACB_MAN_C22_READ 2
642
+#define MACB_MAN_C22_CODE 2
643
+
644
+#define MACB_MAN_C45_SOF 0
645
+#define MACB_MAN_C45_ADDR 0
646
+#define MACB_MAN_C45_WRITE 1
647
+#define MACB_MAN_C45_POST_READ_INCR 2
648
+#define MACB_MAN_C45_READ 3
649
+#define MACB_MAN_C45_CODE 2
640650
641651 /* Capability mask bits */
642652 #define MACB_CAPS_ISR_CLEAR_ON_WRITE 0x00000001
....@@ -648,6 +658,7 @@
648658 #define MACB_CAPS_GEM_HAS_PTP 0x00000040
649659 #define MACB_CAPS_BD_RD_PREFETCH 0x00000080
650660 #define MACB_CAPS_NEEDS_RSTONUBR 0x00000100
661
+#define MACB_CAPS_MACB_IS_EMAC 0x08000000
651662 #define MACB_CAPS_FIFO_MODE 0x10000000
652663 #define MACB_CAPS_GIGABIT_MODE_AVAILABLE 0x20000000
653664 #define MACB_CAPS_SG_DISABLED 0x40000000
....@@ -718,6 +729,8 @@
718729 __v = macb_readl((__bp), __reg); \
719730 __v; \
720731 })
732
+
733
+#define MACB_READ_NSR(bp) macb_readl(bp, NSR)
721734
722735 /* struct macb_dma_desc - Hardware DMA descriptor
723736 * @addr: DMA address of data buffer
....@@ -838,6 +851,9 @@
838851
839852 /* limit RX checksum offload to TCP and UDP packets */
840853 #define GEM_RX_CSUM_CHECKED_MASK 2
854
+
855
+/* Scaled PPM fraction */
856
+#define PPM_FRACTION 16
841857
842858 /* struct macb_tx_skb - data about an skb which is being transmitted
843859 * @skb: skb currently being transmitted, only set for the last buffer
....@@ -1065,7 +1081,8 @@
10651081 int (*mog_alloc_rx_buffers)(struct macb *bp);
10661082 void (*mog_free_rx_buffers)(struct macb *bp);
10671083 void (*mog_init_rings)(struct macb *bp);
1068
- int (*mog_rx)(struct macb_queue *queue, int budget);
1084
+ int (*mog_rx)(struct macb_queue *queue, struct napi_struct *napi,
1085
+ int budget);
10691086 };
10701087
10711088 /* MACB-PTP interface: adapt to platform needs. */
....@@ -1082,12 +1099,17 @@
10821099 struct ifreq *ifr, int cmd);
10831100 };
10841101
1102
+struct macb_pm_data {
1103
+ u32 scrt2;
1104
+ u32 usrio;
1105
+};
1106
+
10851107 struct macb_config {
10861108 u32 caps;
10871109 unsigned int dma_burst_length;
10881110 int (*clk_init)(struct platform_device *pdev, struct clk **pclk,
10891111 struct clk **hclk, struct clk **tx_clk,
1090
- struct clk **rx_clk);
1112
+ struct clk **rx_clk, struct clk **tsu_clk);
10911113 int (*init)(struct platform_device *pdev);
10921114 int jumbo_max_len;
10931115 };
....@@ -1167,6 +1189,7 @@
11671189 struct clk *hclk;
11681190 struct clk *tx_clk;
11691191 struct clk *rx_clk;
1192
+ struct clk *tsu_clk;
11701193 struct net_device *dev;
11711194 union {
11721195 struct macb_stats macb;
....@@ -1176,20 +1199,18 @@
11761199 struct macb_or_gem_ops macbgem_ops;
11771200
11781201 struct mii_bus *mii_bus;
1179
- struct device_node *phy_node;
1180
- int link;
1181
- int speed;
1182
- int duplex;
1202
+ struct phylink *phylink;
1203
+ struct phylink_config phylink_config;
11831204
11841205 u32 caps;
11851206 unsigned int dma_burst_length;
11861207
11871208 phy_interface_t phy_interface;
11881209
1189
- /* AT91RM9200 transmit */
1190
- struct sk_buff *skb; /* holds skb until xmit interrupt completes */
1191
- dma_addr_t skb_physaddr; /* phys addr from pci_map_single */
1192
- int skb_length; /* saved skb length for pci_unmap_single */
1210
+ /* AT91RM9200 transmit queue (1 on wire + 1 queued) */
1211
+ struct macb_tx_skb rm9200_txq[2];
1212
+ unsigned int rm9200_tx_tail;
1213
+ unsigned int rm9200_tx_len;
11931214 unsigned int max_tx_length;
11941215
11951216 u64 ethtool_stats[GEM_STATS_LEN + QUEUE_STATS_LEN * MACB_MAX_QUEUES];
....@@ -1221,6 +1242,8 @@
12211242 int tx_bd_rd_prefetch;
12221243
12231244 u32 rx_intr_mask;
1245
+
1246
+ struct macb_pm_data pm_data;
12241247 };
12251248
12261249 #ifdef CONFIG_MACB_USE_HWSTAMP
....@@ -1278,4 +1301,14 @@
12781301 return !!(bp->caps & MACB_CAPS_GEM_HAS_PTP);
12791302 }
12801303
1304
+/**
1305
+ * struct macb_platform_data - platform data for MACB Ethernet used for PCI registration
1306
+ * @pclk: platform clock
1307
+ * @hclk: AHB clock
1308
+ */
1309
+struct macb_platform_data {
1310
+ struct clk *pclk;
1311
+ struct clk *hclk;
1312
+};
1313
+
12811314 #endif /* _MACB_H */