Marvell MV88E61XX Switch Driver support

Chips supported:-
1. 88E6161 6 port gbe swtich with 5 integrated PHYs
2. 88E6165 6 port gbe swtich with 5 integrated PHYs
2. 88E6132 3 port gbe swtich with 2 integrated PHYs
Platform specific configuration supported for:-
default or router port vlan configuration
led_init configuration
mdip/n polarity reversal configuration

Note: This driver is supported and tested against
kirkwood egiga interface

Contributors:
Yotam Admon <yotam@marvell.com>
Michael Blostein <michaelbl@marvell.com

Reviewed by: Ronen Shitrit <rshitrit@marvell.com>
Signed-off-by: Prafulla Wadaskar <prafulla@marvell.com>
Signed-off-by: Ben Warren <biggerbadderben@gmail.com>
diff --git a/include/netdev.h b/include/netdev.h
index 63cf730..4f2b23a 100644
--- a/include/netdev.h
+++ b/include/netdev.h
@@ -116,4 +116,51 @@
 	return num;
 }
 
+/*
+ * Boards with mv88e61xx switch can use this by defining
+ * CONFIG_MV88E61XX_SWITCH in respective board configheader file
+ * the stuct and enums here are used to specify switch configuration params
+ */
+#if defined(CONFIG_MV88E61XX_SWITCH)
+enum mv88e61xx_cfg_vlan {
+	MV88E61XX_VLANCFG_DEFAULT,
+	MV88E61XX_VLANCFG_ROUTER
+};
+
+enum mv88e61xx_cfg_mdip {
+	MV88E61XX_MDIP_NOCHANGE,
+	MV88E61XX_MDIP_REVERSE
+};
+
+enum mv88e61xx_cfg_ledinit {
+	MV88E61XX_LED_INIT_DIS,
+	MV88E61XX_LED_INIT_EN
+};
+
+enum mv88e61xx_cfg_rgmiid {
+	MV88E61XX_RGMII_DELAY_DIS,
+	MV88E61XX_RGMII_DELAY_EN
+};
+
+enum mv88e61xx_cfg_prtstt {
+	MV88E61XX_PORTSTT_DISABLED,
+	MV88E61XX_PORTSTT_BLOCKING,
+	MV88E61XX_PORTSTT_LEARNING,
+	MV88E61XX_PORTSTT_FORWARDING
+};
+
+struct mv88e61xx_config {
+	char *name;
+	enum mv88e61xx_cfg_vlan vlancfg;
+	enum mv88e61xx_cfg_rgmiid rgmii_delay;
+	enum mv88e61xx_cfg_prtstt portstate;
+	enum mv88e61xx_cfg_ledinit led_init;
+	enum mv88e61xx_cfg_mdip mdip;
+	u32 ports_enabled;
+	u8 cpuport;
+};
+
+int mv88e61xx_switch_initialize(struct mv88e61xx_config *swconfig);
+#endif /* CONFIG_MV88E61XX_SWITCH */
+
 #endif /* _NETDEV_H_ */