net: dsa: sja1105: add static tables for virtual links
[linux-2.6-microblaze.git] / drivers / net / dsa / sja1105 / sja1105_static_config.h
index 8afafb6..1a8fcbb 100644 (file)
@@ -13,6 +13,9 @@
 #define SJA1105_SIZE_TABLE_HEADER                      12
 #define SJA1105_SIZE_SCHEDULE_ENTRY                    8
 #define SJA1105_SIZE_SCHEDULE_ENTRY_POINTS_ENTRY       4
+#define SJA1105_SIZE_VL_LOOKUP_ENTRY                   12
+#define SJA1105_SIZE_VL_POLICING_ENTRY                 8
+#define SJA1105_SIZE_VL_FORWARDING_ENTRY               4
 #define SJA1105_SIZE_L2_POLICING_ENTRY                 8
 #define SJA1105_SIZE_VLAN_LOOKUP_ENTRY                 8
 #define SJA1105_SIZE_L2_FORWARDING_ENTRY               8
@@ -20,6 +23,7 @@
 #define SJA1105_SIZE_XMII_PARAMS_ENTRY                 4
 #define SJA1105_SIZE_SCHEDULE_PARAMS_ENTRY             12
 #define SJA1105_SIZE_SCHEDULE_ENTRY_POINTS_PARAMS_ENTRY        4
+#define SJA1105_SIZE_VL_FORWARDING_PARAMS_ENTRY         12
 #define SJA1105ET_SIZE_L2_LOOKUP_ENTRY                 12
 #define SJA1105ET_SIZE_MAC_CONFIG_ENTRY                        28
 #define SJA1105ET_SIZE_L2_LOOKUP_PARAMS_ENTRY          4
@@ -35,6 +39,9 @@
 enum {
        BLKID_SCHEDULE                                  = 0x00,
        BLKID_SCHEDULE_ENTRY_POINTS                     = 0x01,
+       BLKID_VL_LOOKUP                                 = 0x02,
+       BLKID_VL_POLICING                               = 0x03,
+       BLKID_VL_FORWARDING                             = 0x04,
        BLKID_L2_LOOKUP                                 = 0x05,
        BLKID_L2_POLICING                               = 0x06,
        BLKID_VLAN_LOOKUP                               = 0x07,
@@ -42,6 +49,7 @@ enum {
        BLKID_MAC_CONFIG                                = 0x09,
        BLKID_SCHEDULE_PARAMS                           = 0x0A,
        BLKID_SCHEDULE_ENTRY_POINTS_PARAMS              = 0x0B,
+       BLKID_VL_FORWARDING_PARAMS                      = 0x0C,
        BLKID_L2_LOOKUP_PARAMS                          = 0x0D,
        BLKID_L2_FORWARDING_PARAMS                      = 0x0E,
        BLKID_AVB_PARAMS                                = 0x10,
@@ -52,6 +60,9 @@ enum {
 enum sja1105_blk_idx {
        BLK_IDX_SCHEDULE = 0,
        BLK_IDX_SCHEDULE_ENTRY_POINTS,
+       BLK_IDX_VL_LOOKUP,
+       BLK_IDX_VL_POLICING,
+       BLK_IDX_VL_FORWARDING,
        BLK_IDX_L2_LOOKUP,
        BLK_IDX_L2_POLICING,
        BLK_IDX_VLAN_LOOKUP,
@@ -59,6 +70,7 @@ enum sja1105_blk_idx {
        BLK_IDX_MAC_CONFIG,
        BLK_IDX_SCHEDULE_PARAMS,
        BLK_IDX_SCHEDULE_ENTRY_POINTS_PARAMS,
+       BLK_IDX_VL_FORWARDING_PARAMS,
        BLK_IDX_L2_LOOKUP_PARAMS,
        BLK_IDX_L2_FORWARDING_PARAMS,
        BLK_IDX_AVB_PARAMS,
@@ -73,6 +85,9 @@ enum sja1105_blk_idx {
 
 #define SJA1105_MAX_SCHEDULE_COUNT                     1024
 #define SJA1105_MAX_SCHEDULE_ENTRY_POINTS_COUNT                2048
+#define SJA1105_MAX_VL_LOOKUP_COUNT                    1024
+#define SJA1105_MAX_VL_POLICING_COUNT                  1024
+#define SJA1105_MAX_VL_FORWARDING_COUNT                        1024
 #define SJA1105_MAX_L2_LOOKUP_COUNT                    1024
 #define SJA1105_MAX_L2_POLICING_COUNT                  45
 #define SJA1105_MAX_VLAN_LOOKUP_COUNT                  4096
@@ -80,6 +95,7 @@ enum sja1105_blk_idx {
 #define SJA1105_MAX_MAC_CONFIG_COUNT                   5
 #define SJA1105_MAX_SCHEDULE_PARAMS_COUNT              1
 #define SJA1105_MAX_SCHEDULE_ENTRY_POINTS_PARAMS_COUNT 1
+#define SJA1105_MAX_VL_FORWARDING_PARAMS_COUNT         1
 #define SJA1105_MAX_L2_LOOKUP_PARAMS_COUNT             1
 #define SJA1105_MAX_L2_FORWARDING_PARAMS_COUNT         1
 #define SJA1105_MAX_GENERAL_PARAMS_COUNT               1
@@ -262,6 +278,52 @@ struct sja1105_xmii_params_entry {
        u64 xmii_mode[5];
 };
 
+enum {
+       SJA1105_VL_FORMAT_PSFP          = 0,
+       SJA1105_VL_FORMAT_ARINC664      = 1,
+};
+
+struct sja1105_vl_lookup_entry {
+       u64 format;
+       u64 port;
+       union {
+               /* SJA1105_VL_FORMAT_PSFP */
+               struct {
+                       u64 destports;
+                       u64 iscritical;
+                       u64 macaddr;
+                       u64 vlanid;
+                       u64 vlanprior;
+               };
+               /* SJA1105_VL_FORMAT_ARINC664 */
+               struct {
+                       u64 egrmirr;
+                       u64 ingrmirr;
+                       u64 vlid;
+               };
+       };
+};
+
+struct sja1105_vl_policing_entry {
+       u64 type;
+       u64 maxlen;
+       u64 sharindx;
+       u64 bag;
+       u64 jitter;
+};
+
+struct sja1105_vl_forwarding_entry {
+       u64 type;
+       u64 priority;
+       u64 partition;
+       u64 destports;
+};
+
+struct sja1105_vl_forwarding_params_entry {
+       u64 partspc[8];
+       u64 debugen;
+};
+
 struct sja1105_table_header {
        u64 block_id;
        u64 len;
@@ -303,6 +365,7 @@ typedef enum {
        SJA1105_CONFIG_OK = 0,
        SJA1105_TTETHERNET_NOT_SUPPORTED,
        SJA1105_INCORRECT_TTETHERNET_CONFIGURATION,
+       SJA1105_INCORRECT_VIRTUAL_LINK_CONFIGURATION,
        SJA1105_MISSING_L2_POLICING_TABLE,
        SJA1105_MISSING_L2_FORWARDING_TABLE,
        SJA1105_MISSING_L2_FORWARDING_PARAMS_TABLE,