162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Ethernet driver for the WIZnet W5100 chip.
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * Copyright (C) 2006-2008 WIZnet Co.,Ltd.
662306a36Sopenharmony_ci * Copyright (C) 2012 Mike Sinkovsky <msink@permonline.ru>
762306a36Sopenharmony_ci */
862306a36Sopenharmony_ci
962306a36Sopenharmony_cienum {
1062306a36Sopenharmony_ci	W5100,
1162306a36Sopenharmony_ci	W5200,
1262306a36Sopenharmony_ci	W5500,
1362306a36Sopenharmony_ci};
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_cistruct w5100_ops {
1662306a36Sopenharmony_ci	bool may_sleep;
1762306a36Sopenharmony_ci	int chip_id;
1862306a36Sopenharmony_ci	int (*read)(struct net_device *ndev, u32 addr);
1962306a36Sopenharmony_ci	int (*write)(struct net_device *ndev, u32 addr, u8 data);
2062306a36Sopenharmony_ci	int (*read16)(struct net_device *ndev, u32 addr);
2162306a36Sopenharmony_ci	int (*write16)(struct net_device *ndev, u32 addr, u16 data);
2262306a36Sopenharmony_ci	int (*readbulk)(struct net_device *ndev, u32 addr, u8 *buf, int len);
2362306a36Sopenharmony_ci	int (*writebulk)(struct net_device *ndev, u32 addr, const u8 *buf,
2462306a36Sopenharmony_ci			 int len);
2562306a36Sopenharmony_ci	int (*reset)(struct net_device *ndev);
2662306a36Sopenharmony_ci	int (*init)(struct net_device *ndev);
2762306a36Sopenharmony_ci};
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_civoid *w5100_ops_priv(const struct net_device *ndev);
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ciint w5100_probe(struct device *dev, const struct w5100_ops *ops,
3262306a36Sopenharmony_ci		int sizeof_ops_priv, const void *mac_addr, int irq,
3362306a36Sopenharmony_ci		int link_gpio);
3462306a36Sopenharmony_civoid w5100_remove(struct device *dev);
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ciextern const struct dev_pm_ops w5100_pm_ops;
37