1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-or-later */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * Ethernet driver for the WIZnet W5100 chip. 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Copyright (C) 2006-2008 WIZnet Co.,Ltd. 6*4882a593Smuzhiyun * Copyright (C) 2012 Mike Sinkovsky <msink@permonline.ru> 7*4882a593Smuzhiyun */ 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun enum { 10*4882a593Smuzhiyun W5100, 11*4882a593Smuzhiyun W5200, 12*4882a593Smuzhiyun W5500, 13*4882a593Smuzhiyun }; 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun struct w5100_ops { 16*4882a593Smuzhiyun bool may_sleep; 17*4882a593Smuzhiyun int chip_id; 18*4882a593Smuzhiyun int (*read)(struct net_device *ndev, u32 addr); 19*4882a593Smuzhiyun int (*write)(struct net_device *ndev, u32 addr, u8 data); 20*4882a593Smuzhiyun int (*read16)(struct net_device *ndev, u32 addr); 21*4882a593Smuzhiyun int (*write16)(struct net_device *ndev, u32 addr, u16 data); 22*4882a593Smuzhiyun int (*readbulk)(struct net_device *ndev, u32 addr, u8 *buf, int len); 23*4882a593Smuzhiyun int (*writebulk)(struct net_device *ndev, u32 addr, const u8 *buf, 24*4882a593Smuzhiyun int len); 25*4882a593Smuzhiyun int (*reset)(struct net_device *ndev); 26*4882a593Smuzhiyun int (*init)(struct net_device *ndev); 27*4882a593Smuzhiyun }; 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun void *w5100_ops_priv(const struct net_device *ndev); 30*4882a593Smuzhiyun 31*4882a593Smuzhiyun int w5100_probe(struct device *dev, const struct w5100_ops *ops, 32*4882a593Smuzhiyun int sizeof_ops_priv, const void *mac_addr, int irq, 33*4882a593Smuzhiyun int link_gpio); 34*4882a593Smuzhiyun int w5100_remove(struct device *dev); 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun extern const struct dev_pm_ops w5100_pm_ops; 37