diff -r 2f3078ec9ffb -r 720172a7563f devices/ccat/module.h --- a/devices/ccat/module.h Thu Jun 05 16:14:13 2014 +0200 +++ b/devices/ccat/module.h Thu Jun 05 16:30:22 2014 +0200 @@ -25,7 +25,6 @@ #include #include #include -#include "CCatDefinitions.h" #include "../ecdev.h" #define DRV_EXTRAVERSION "-ec" @@ -36,6 +35,17 @@ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt /** + * CCAT function type identifiers (u16) + */ +enum ccat_info_t { + CCATINFO_NOTUSED = 0, + CCATINFO_EPCS_PROM = 0xf, + CCATINFO_ETHERCAT_MASTER_DMA = 0x14, + CCATINFO_COPY_BLOCK = 0x17, + CCATINFO_MAX +}; + +/** * struct ccat_bar - CCAT PCI Base Address Register(BAR) configuration * @start: start address of this BAR * @end: end address of this BAR @@ -90,6 +100,7 @@ u32 reserved4:31; u64 timestamp; u8 data[0x800 - 3 * sizeof(u64)]; +#define CCAT_ETH_FRAME_HEAD_LEN offsetof(struct ccat_eth_frame, data) }; /** @@ -145,6 +156,21 @@ struct ccat_bar bar[3]; //TODO optimize this }; +struct ccat_info_block +{ + u16 type; + u16 rev; + union { + u32 config; + struct { + u8 tx_dma_chan; + u8 rx_dma_chan; + }; + }; + u32 addr; + u32 size; +}; + /** * struct ccat_eth_priv - CCAT Ethernet/EtherCAT Master function (netdev) * @ccatdev: pointer to the parent struct ccat_device @@ -164,7 +190,7 @@ const struct ccat_device *ccatdev; struct net_device *netdev; const struct ccat_eth_frame *next_tx_frame; - CCatInfoBlock info; + struct ccat_info_block info; struct ccat_eth_register reg; struct ccat_eth_dma_fifo rx_fifo; struct ccat_eth_dma_fifo tx_fifo; @@ -186,6 +212,47 @@ }; /** + * same as: typedef struct _CCatInfoBlockOffs from CCatDefinitions.h + * TODO add some checking facility outside of the linux tree + */ +struct ccat_mac_infoblock { + u32 reserved; + u32 mii; + u32 tx_fifo; + u32 mac; + u32 rx_mem; + u32 tx_mem; + u32 misc; +}; + +struct ccat_mac_register +{ + /** MAC error register @+0x0 */ + u8 frame_len_err; + u8 rx_err; + u8 crc_err; + u8 link_lost_err; + u32 reserved1; + /** Buffer overflow errors @+0x8 */ + u8 rx_mem_full; + u8 reserved2[7]; + /** MAC frame counter @+0x10 */ + u32 tx_frames; + u32 rx_frames; + u64 reserved3; + /** MAC fifo level @+0x20 */ + u8 tx_fifo_level : 7; + u8 reserved4 : 1; + u8 reserved5[7]; + /** TX memory full error @+0x28 */ + u8 tx_mem_full; + u8 reserved6[7]; + u64 reserved8[9]; + /** Connection @+0x78 */ + u8 mii_connected; +}; + +/** * struct ccat_update - CCAT Update function (update) * @ccatdev: pointer to the parent struct ccat_device * @ioaddr: PCI base address of the CCAT Update function @@ -200,6 +267,6 @@ dev_t dev; struct cdev cdev; struct class *class; - CCatInfoBlock info; + struct ccat_info_block info; }; #endif /* #ifndef _CCAT_H_ */