/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
 * Ethernet driver for the WIZnet W5100 chip.
 *
 * Copyright (C) 2006-2008 WIZnet Co.,Ltd.
 * Copyright (C) 2012 Mike Sinkovsky <msink@permonline.ru>
 */

enum {
	W5100,
	W5200,
	W5500,
};

struct w5100_ops {
	bool may_sleep;
	int chip_id;
	int (*read)(struct net_device *ndev, u32 addr);
	int (*write)(struct net_device *ndev, u32 addr, u8 data);
	int (*read16)(struct net_device *ndev, u32 addr);
	int (*write16)(struct net_device *ndev, u32 addr, u16 data);
	int (*readbulk)(struct net_device *ndev, u32 addr, u8 *buf, int len);
	int (*writebulk)(struct net_device *ndev, u32 addr, const u8 *buf,
			 int len);
	int (*reset)(struct net_device *ndev);
	int (*init)(struct net_device *ndev);
};

void *w5100_ops_priv(const struct net_device *ndev);

int w5100_probe(struct device *dev, const struct w5100_ops *ops,
		int sizeof_ops_priv, const void *mac_addr, int irq,
		int link_gpio);
void w5100_remove(struct device *dev);

extern const struct dev_pm_ops w5100_pm_ops;
