30 lines
		
	
	
		
			707 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			707 B
		
	
	
	
		
			C
		
	
	
	
	
	
| /* 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);
 | |
| int vsc73xx_remove(struct vsc73xx *vsc);
 |