You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
1.8 KiB
70 lines
1.8 KiB
/* STELLARIS Ethernet Controller |
|
* |
|
* Copyright (c) 2018 Zilogic Systems |
|
* |
|
* SPDX-License-Identifier: Apache-2.0 |
|
*/ |
|
|
|
#ifndef ETH_STELLARIS_PRIV_H_ |
|
#define ETH_STELLARIS_PRIV_H_ |
|
|
|
#define REG_BASE(dev) \ |
|
((const struct eth_stellaris_config *const)(dev)->config)->mac_base |
|
/* |
|
* Register mapping |
|
*/ |
|
/* Registers for ethernet system, mac_base + offset */ |
|
#define REG_MACRIS (REG_BASE(dev) + 0x000) |
|
#define REG_MACIM (REG_BASE(dev) + 0x004) |
|
#define REG_MACRCTL (REG_BASE(dev) + 0x008) |
|
#define REG_MACTCTL (REG_BASE(dev) + 0x00C) |
|
#define REG_MACDATA (REG_BASE(dev) + 0x010) |
|
#define REG_MACIA0 (REG_BASE(dev) + 0x014) |
|
#define REG_MACIA1 (REG_BASE(dev) + 0x018) |
|
#define REG_MACNP (REG_BASE(dev) + 0x034) |
|
#define REG_MACTR (REG_BASE(dev) + 0x038) |
|
|
|
/* ETH MAC Receive Control bit fields set value */ |
|
#define BIT_MACRCTL_RSTFIFO 0x10 |
|
#define BIT_MACRCTL_BADCRC 0x8 |
|
#define BIT_MACRCTL_RXEN 0x1 |
|
#define BIT_MACRCTL_PRMS 0x4 |
|
|
|
/* ETH MAC Transmit Control bit fields set value */ |
|
#define BIT_MACTCTL_DUPLEX 0x10 |
|
#define BIT_MACTCTL_CRC 0x4 |
|
#define BIT_MACTCTL_PADEN 0x2 |
|
#define BIT_MACTCTL_TXEN 0x1 |
|
|
|
/* ETH MAC Txn req bit fields set value */ |
|
#define BIT_MACTR_NEWTX 0x1 |
|
|
|
/* Ethernet MAC RAW Interrupt Status/Ack bit set values */ |
|
#define BIT_MACRIS_RXINT 0x1 |
|
#define BIT_MACRIS_TXER 0x2 |
|
#define BIT_MACRIS_TXEMP 0x4 |
|
#define BIT_MACRIS_FOV 0x8 |
|
#define BIT_MACRIS_RXER 0x10 |
|
|
|
struct eth_stellaris_runtime { |
|
struct net_if *iface; |
|
uint8_t mac_addr[6]; |
|
struct k_sem tx_sem; |
|
bool tx_err; |
|
uint32_t tx_word; |
|
int tx_pos; |
|
#if defined(CONFIG_NET_STATISTICS_ETHERNET) |
|
struct net_stats_eth stats; |
|
#endif |
|
}; |
|
|
|
typedef void (*eth_stellaris_config_irq_t)(const struct device *dev); |
|
|
|
struct eth_stellaris_config { |
|
uint32_t mac_base; |
|
uint32_t sys_ctrl_base; |
|
uint32_t irq_num; |
|
eth_stellaris_config_irq_t config_func; |
|
}; |
|
|
|
#endif /* ETH_STELLARIS_PRIV_H_ */
|
|
|