/* include/net/ax88796.h
 *
 * Copyright 2005 Simtec Electronics
 *	Ben Dooks <ben@simtec.co.uk>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 *
*/

#ifndef __NET_AX88796_PLAT_H
#define __NET_AX88796_PLAT_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 by caused by
	 * the ax88786. Handles all interrupts if set to NULL
	 */
	int (*check_irq)(struct platform_device *pdev);
};

#endif /* __NET_AX88796_PLAT_H */
