root/include/net/ax88796.h
/* SPDX-License-Identifier: GPL-2.0-only */
/* include/net/ax88796.h
 *
 * Copyright 2005 Simtec Electronics
 *      Ben Dooks <ben@simtec.co.uk>
*/

#ifndef __NET_AX88796_PLAT_H
#define __NET_AX88796_PLAT_H

#include <linux/types.h>

struct sk_buff;
struct net_device;
struct platform_device;

#define AXFLG_HAS_EEPROM                (1<<0)
#define AXFLG_MAC_FROMDEV               (1<<1)  /* device already has MAC */
#define AXFLG_HAS_93CX6                 (1<<2)  /* use eeprom_93cx6 driver */
#define AXFLG_MAC_FROMPLATFORM          (1<<3)  /* MAC given by platform data */

struct ax_plat_data {
        unsigned int     flags;
        unsigned char    wordlength;    /* 1 or 2 */
        unsigned char    dcr_val;       /* default value for DCR */
        unsigned char    rcr_val;       /* default value for RCR */
        unsigned char    gpoc_val;      /* default value for GPOC */
        u32             *reg_offsets;   /* register offsets */
        u8              *mac_addr;      /* MAC addr (only used when
                                           AXFLG_MAC_FROMPLATFORM is used */

        /* uses default ax88796 buffer if set to NULL */
        void (*block_output)(struct net_device *dev, int count,
                        const unsigned char *buf, int star_page);
        void (*block_input)(struct net_device *dev, int count,
                        struct sk_buff *skb, int ring_offset);
        /* returns nonzero if a pending interrupt request might be caused by
         * the ax88796. Handles all interrupts if set to NULL
         */
        int (*check_irq)(struct platform_device *pdev);
};

/* exported from ax88796.c for xsurf100.c  */
extern void ax_NS8390_reinit(struct net_device *dev);

#endif /* __NET_AX88796_PLAT_H */