1*95711cd5SPawel Dembicki /* SPDX-License-Identifier: GPL-2.0 */ 2*95711cd5SPawel Dembicki #include <linux/device.h> 3*95711cd5SPawel Dembicki #include <linux/etherdevice.h> 4*95711cd5SPawel Dembicki #include <linux/gpio/driver.h> 5*95711cd5SPawel Dembicki 6*95711cd5SPawel Dembicki /** 7*95711cd5SPawel Dembicki * struct vsc73xx - VSC73xx state container 8*95711cd5SPawel Dembicki */ 9*95711cd5SPawel Dembicki struct vsc73xx { 10*95711cd5SPawel Dembicki struct device *dev; 11*95711cd5SPawel Dembicki struct gpio_desc *reset; 12*95711cd5SPawel Dembicki struct dsa_switch *ds; 13*95711cd5SPawel Dembicki struct gpio_chip gc; 14*95711cd5SPawel Dembicki u16 chipid; 15*95711cd5SPawel Dembicki u8 addr[ETH_ALEN]; 16*95711cd5SPawel Dembicki const struct vsc73xx_ops *ops; 17*95711cd5SPawel Dembicki void *priv; 18*95711cd5SPawel Dembicki }; 19*95711cd5SPawel Dembicki 20*95711cd5SPawel Dembicki struct vsc73xx_ops { 21*95711cd5SPawel Dembicki int (*read)(struct vsc73xx *vsc, u8 block, u8 subblock, u8 reg, 22*95711cd5SPawel Dembicki u32 *val); 23*95711cd5SPawel Dembicki int (*write)(struct vsc73xx *vsc, u8 block, u8 subblock, u8 reg, 24*95711cd5SPawel Dembicki u32 val); 25*95711cd5SPawel Dembicki }; 26*95711cd5SPawel Dembicki 27*95711cd5SPawel Dembicki int vsc73xx_is_addr_valid(u8 block, u8 subblock); 28*95711cd5SPawel Dembicki int vsc73xx_probe(struct vsc73xx *vsc); 29*95711cd5SPawel Dembicki int vsc73xx_remove(struct vsc73xx *vsc); 30