X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/c5552ad03973839d83d32d7108f20c00f192633b..d59f0a0930a70de5c9f25102ae7ea9419e1e3566:/target/linux/generic/files/drivers/net/phy/rtl8366_smi.h diff --git a/target/linux/generic/files/drivers/net/phy/rtl8366_smi.h b/target/linux/generic/files/drivers/net/phy/rtl8366_smi.h index 1afee9b73..863955301 100644 --- a/target/linux/generic/files/drivers/net/phy/rtl8366_smi.h +++ b/target/linux/generic/files/drivers/net/phy/rtl8366_smi.h @@ -14,6 +14,7 @@ #include struct rtl8366_smi_ops; +struct rtl8366_vlan_ops; struct mii_bus; struct rtl8366_smi { @@ -24,14 +25,13 @@ struct rtl8366_smi { struct mii_bus *mii_bus; int mii_irq[PHY_MAX_ADDR]; - struct rtl8366_smi_ops *ops; -}; + unsigned int cpu_port; + unsigned int num_ports; + unsigned int num_vlan_mc; -struct rtl8366_smi_ops { - int (*detect)(struct rtl8366_smi *smi); + struct rtl8366_smi_ops *ops; - int (*mii_read)(struct mii_bus *bus, int addr, int reg); - int (*mii_write)(struct mii_bus *bus, int addr, int reg, u16 val); + char buf[4096]; }; struct rtl8366_vlan_mc { @@ -49,10 +49,34 @@ struct rtl8366_vlan_4k { u8 fid; }; +struct rtl8366_smi_ops { + int (*detect)(struct rtl8366_smi *smi); + + int (*mii_read)(struct mii_bus *bus, int addr, int reg); + int (*mii_write)(struct mii_bus *bus, int addr, int reg, u16 val); + + int (*get_vlan_mc)(struct rtl8366_smi *smi, u32 index, + struct rtl8366_vlan_mc *vlanmc); + int (*set_vlan_mc)(struct rtl8366_smi *smi, u32 index, + const struct rtl8366_vlan_mc *vlanmc); + int (*get_vlan_4k)(struct rtl8366_smi *smi, u32 vid, + struct rtl8366_vlan_4k *vlan4k); + int (*set_vlan_4k)(struct rtl8366_smi *smi, + const struct rtl8366_vlan_4k *vlan4k); + int (*get_mc_index)(struct rtl8366_smi *smi, int port, int *val); + int (*set_mc_index)(struct rtl8366_smi *smi, int port, int index); +}; + int rtl8366_smi_init(struct rtl8366_smi *smi); void rtl8366_smi_cleanup(struct rtl8366_smi *smi); int rtl8366_smi_write_reg(struct rtl8366_smi *smi, u32 addr, u32 data); int rtl8366_smi_read_reg(struct rtl8366_smi *smi, u32 addr, u32 *data); int rtl8366_smi_rmwr(struct rtl8366_smi *smi, u32 addr, u32 mask, u32 data); +int rtl8366_set_vlan(struct rtl8366_smi *smi, int vid, u32 member, u32 untag, + u32 fid); +int rtl8366_reset_vlan(struct rtl8366_smi *smi); +int rtl8366_get_pvid(struct rtl8366_smi *smi, int port, int *val); +int rtl8366_set_pvid(struct rtl8366_smi *smi, unsigned port, unsigned vid); + #endif /* _RTL8366_SMI_H */