This can be used by device driver to restore ALE context.
The data produced by cpsw_ale_dump() can be passed to
cpsw_ale_restore().
This is required as on certain platforms the ALE context
is lost on low power suspend/resume.
Signed-off-by: Roger Quadros <rogerq@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
        }
 }
 
+void cpsw_ale_restore(struct cpsw_ale *ale, u32 *data)
+{
+       int i;
+
+       for (i = 0; i < ale->params.ale_entries; i++) {
+               cpsw_ale_write(ale, i, data);
+               data += ALE_ENTRY_WORDS;
+       }
+}
+
 u32 cpsw_ale_get_num_entries(struct cpsw_ale *ale)
 {
        return ale ? ale->params.ale_entries : 0;
 
 int cpsw_ale_control_set(struct cpsw_ale *ale, int port,
                         int control, int value);
 void cpsw_ale_dump(struct cpsw_ale *ale, u32 *data);
+void cpsw_ale_restore(struct cpsw_ale *ale, u32 *data);
 u32 cpsw_ale_get_num_entries(struct cpsw_ale *ale);
 
 static inline int cpsw_ale_get_vlan_p0_untag(struct cpsw_ale *ale, u16 vid)