2ed23a3686029a539a6959a85345dc787afc808d
[linux-2.6-microblaze.git] / include / net / ax88796.h
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /* include/net/ax88796.h
3  *
4  * Copyright 2005 Simtec Electronics
5  *      Ben Dooks <ben@simtec.co.uk>
6 */
7
8 #ifndef __NET_AX88796_PLAT_H
9 #define __NET_AX88796_PLAT_H
10
11 struct sk_buff;
12 struct net_device;
13 struct platform_device;
14
15 #define AXFLG_HAS_EEPROM                (1<<0)
16 #define AXFLG_MAC_FROMDEV               (1<<1)  /* device already has MAC */
17 #define AXFLG_HAS_93CX6                 (1<<2)  /* use eeprom_93cx6 driver */
18 #define AXFLG_MAC_FROMPLATFORM          (1<<3)  /* MAC given by platform data */
19
20 struct ax_plat_data {
21         unsigned int     flags;
22         unsigned char    wordlength;    /* 1 or 2 */
23         unsigned char    dcr_val;       /* default value for DCR */
24         unsigned char    rcr_val;       /* default value for RCR */
25         unsigned char    gpoc_val;      /* default value for GPOC */
26         u32             *reg_offsets;   /* register offsets */
27         u8              *mac_addr;      /* MAC addr (only used when
28                                            AXFLG_MAC_FROMPLATFORM is used */
29
30         /* uses default ax88796 buffer if set to NULL */
31         void (*block_output)(struct net_device *dev, int count,
32                         const unsigned char *buf, int star_page);
33         void (*block_input)(struct net_device *dev, int count,
34                         struct sk_buff *skb, int ring_offset);
35         /* returns nonzero if a pending interrupt request might by caused by
36          * the ax88786. Handles all interrupts if set to NULL
37          */
38         int (*check_irq)(struct platform_device *pdev);
39 };
40
41 /* exported from ax88796.c for xsurf100.c  */
42 extern void ax_NS8390_reinit(struct net_device *dev);
43
44 #endif /* __NET_AX88796_PLAT_H */