| /* SPDX-License-Identifier: GPL-2.0 */ |
| #include <linux/device.h> |
| #include <linux/etherdevice.h> |
| #include <linux/gpio/driver.h> |
| |
| /** |
| * struct vsc73xx - VSC73xx state container |
| */ |
| struct vsc73xx { |
| struct device *dev; |
| struct gpio_desc *reset; |
| struct dsa_switch *ds; |
| struct gpio_chip gc; |
| u16 chipid; |
| u8 addr[ETH_ALEN]; |
| const struct vsc73xx_ops *ops; |
| void *priv; |
| }; |
| |
| struct vsc73xx_ops { |
| int (*read)(struct vsc73xx *vsc, u8 block, u8 subblock, u8 reg, |
| u32 *val); |
| int (*write)(struct vsc73xx *vsc, u8 block, u8 subblock, u8 reg, |
| u32 val); |
| }; |
| |
| int vsc73xx_is_addr_valid(u8 block, u8 subblock); |
| int vsc73xx_probe(struct vsc73xx *vsc); |
| void vsc73xx_remove(struct vsc73xx *vsc); |
| void vsc73xx_shutdown(struct vsc73xx *vsc); |