1*83d290c5STom Rini /* SPDX-License-Identifier: GPL-2.0+ */ 2cf4c3448SCalvin Johnson /* 3cf4c3448SCalvin Johnson * Copyright 2015-2016 Freescale Semiconductor, Inc. 4cf4c3448SCalvin Johnson * Copyright 2017 NXP 5cf4c3448SCalvin Johnson */ 6cf4c3448SCalvin Johnson 7cf4c3448SCalvin Johnson #ifndef __PFE_DRIVER_H__ 8cf4c3448SCalvin Johnson #define __PFE_DRIVER_H__ 9cf4c3448SCalvin Johnson 10cf4c3448SCalvin Johnson #include <net/pfe_eth/pfe/pfe_hw.h> 11cf4c3448SCalvin Johnson #include <dm/platform_data/pfe_dm_eth.h> 12cf4c3448SCalvin Johnson 13cf4c3448SCalvin Johnson #define HIF_RX_DESC_NT 64 14cf4c3448SCalvin Johnson #define HIF_TX_DESC_NT 64 15cf4c3448SCalvin Johnson 16cf4c3448SCalvin Johnson #define RX_BD_BASEADDR (HIF_DESC_BASEADDR) 17cf4c3448SCalvin Johnson #define TX_BD_BASEADDR (HIF_DESC_BASEADDR + HIF_TX_DESC_SIZE) 18cf4c3448SCalvin Johnson 19cf4c3448SCalvin Johnson #define MIN_PKT_SIZE 56 20cf4c3448SCalvin Johnson #define MAX_FRAME_SIZE 2048 21cf4c3448SCalvin Johnson 22cf4c3448SCalvin Johnson struct __packed hif_header_s { 23cf4c3448SCalvin Johnson u8 port_no; /* Carries input port no for host rx packets and 24cf4c3448SCalvin Johnson * output port no for tx pkts 25cf4c3448SCalvin Johnson */ 26cf4c3448SCalvin Johnson u8 reserved0; 27cf4c3448SCalvin Johnson u32 reserved2; 28cf4c3448SCalvin Johnson }; 29cf4c3448SCalvin Johnson 30cf4c3448SCalvin Johnson struct __packed buf_desc { 31cf4c3448SCalvin Johnson u32 ctrl; 32cf4c3448SCalvin Johnson u32 status; 33cf4c3448SCalvin Johnson u32 data; 34cf4c3448SCalvin Johnson u32 next; 35cf4c3448SCalvin Johnson }; 36cf4c3448SCalvin Johnson 37cf4c3448SCalvin Johnson struct rx_desc_s { 38cf4c3448SCalvin Johnson struct buf_desc *rx_base; 39cf4c3448SCalvin Johnson unsigned int rx_base_pa; 40cf4c3448SCalvin Johnson int rx_to_read; 41cf4c3448SCalvin Johnson int rx_ring_size; 42cf4c3448SCalvin Johnson }; 43cf4c3448SCalvin Johnson 44cf4c3448SCalvin Johnson struct tx_desc_s { 45cf4c3448SCalvin Johnson struct buf_desc *tx_base; 46cf4c3448SCalvin Johnson unsigned int tx_base_pa; 47cf4c3448SCalvin Johnson int tx_to_send; 48cf4c3448SCalvin Johnson int tx_ring_size; 49cf4c3448SCalvin Johnson }; 50cf4c3448SCalvin Johnson 51cf4c3448SCalvin Johnson int pfe_send(int phy_port, void *data, int length); 52cf4c3448SCalvin Johnson int pfe_recv(uchar **pkt_ptr, int *phy_port); 53cf4c3448SCalvin Johnson int pfe_tx_done(void); 54cf4c3448SCalvin Johnson int pfe_eth_free_pkt(struct udevice *dev, uchar *packet, int length); 55cf4c3448SCalvin Johnson int pfe_drv_init(struct pfe_ddr_address *pfe_addr); 56cf4c3448SCalvin Johnson int pfe_eth_remove(struct udevice *dev); 57cf4c3448SCalvin Johnson 58cf4c3448SCalvin Johnson #endif 59