diff options
Diffstat (limited to 'drivers/infiniband/hw/hfi1/platform.h')
| -rw-r--r-- | drivers/infiniband/hw/hfi1/platform.h | 127 | 
1 files changed, 117 insertions, 10 deletions
diff --git a/drivers/infiniband/hw/hfi1/platform.h b/drivers/infiniband/hw/hfi1/platform.h index e2c21613c326..eed0aa9124fa 100644 --- a/drivers/infiniband/hw/hfi1/platform.h +++ b/drivers/infiniband/hw/hfi1/platform.h @@ -168,16 +168,6 @@ struct platform_config_cache {  	struct platform_config_data config_tables[PLATFORM_CONFIG_TABLE_MAX];  }; -static const u32 platform_config_table_limits[PLATFORM_CONFIG_TABLE_MAX] = { -	0, -	SYSTEM_TABLE_MAX, -	PORT_TABLE_MAX, -	RX_PRESET_TABLE_MAX, -	TX_PRESET_TABLE_MAX, -	QSFP_ATTEN_TABLE_MAX, -	VARIABLE_SETTINGS_TABLE_MAX -}; -  /* This section defines default values and encodings for the   * fields defined for each table above   */ @@ -295,6 +285,123 @@ enum link_tuning_encoding {  	OPA_UNKNOWN_TUNING  }; +/* + * Shifts and masks for the link SI tuning values stuffed into the ASIC scratch + * registers for integrated platforms + */ +#define PORT0_PORT_TYPE_SHIFT		0 +#define PORT0_LOCAL_ATTEN_SHIFT		4 +#define PORT0_REMOTE_ATTEN_SHIFT	10 +#define PORT0_DEFAULT_ATTEN_SHIFT	32 + +#define PORT1_PORT_TYPE_SHIFT		16 +#define PORT1_LOCAL_ATTEN_SHIFT		20 +#define PORT1_REMOTE_ATTEN_SHIFT	26 +#define PORT1_DEFAULT_ATTEN_SHIFT	40 + +#define PORT0_PORT_TYPE_MASK		0xFUL +#define PORT0_LOCAL_ATTEN_MASK		0x3FUL +#define PORT0_REMOTE_ATTEN_MASK		0x3FUL +#define PORT0_DEFAULT_ATTEN_MASK	0xFFUL + +#define PORT1_PORT_TYPE_MASK		0xFUL +#define PORT1_LOCAL_ATTEN_MASK		0x3FUL +#define PORT1_REMOTE_ATTEN_MASK		0x3FUL +#define PORT1_DEFAULT_ATTEN_MASK	0xFFUL + +#define PORT0_PORT_TYPE_SMASK		(PORT0_PORT_TYPE_MASK << \ +					 PORT0_PORT_TYPE_SHIFT) +#define PORT0_LOCAL_ATTEN_SMASK		(PORT0_LOCAL_ATTEN_MASK << \ +					 PORT0_LOCAL_ATTEN_SHIFT) +#define PORT0_REMOTE_ATTEN_SMASK	(PORT0_REMOTE_ATTEN_MASK << \ +					 PORT0_REMOTE_ATTEN_SHIFT) +#define PORT0_DEFAULT_ATTEN_SMASK	(PORT0_DEFAULT_ATTEN_MASK << \ +					 PORT0_DEFAULT_ATTEN_SHIFT) + +#define PORT1_PORT_TYPE_SMASK		(PORT1_PORT_TYPE_MASK << \ +					 PORT1_PORT_TYPE_SHIFT) +#define PORT1_LOCAL_ATTEN_SMASK		(PORT1_LOCAL_ATTEN_MASK << \ +					 PORT1_LOCAL_ATTEN_SHIFT) +#define PORT1_REMOTE_ATTEN_SMASK	(PORT1_REMOTE_ATTEN_MASK << \ +					 PORT1_REMOTE_ATTEN_SHIFT) +#define PORT1_DEFAULT_ATTEN_SMASK	(PORT1_DEFAULT_ATTEN_MASK << \ +					 PORT1_DEFAULT_ATTEN_SHIFT) + +#define QSFP_MAX_POWER_SHIFT		0 +#define TX_NO_EQ_SHIFT			4 +#define TX_EQ_SHIFT			25 +#define RX_SHIFT			46 + +#define QSFP_MAX_POWER_MASK		0xFUL +#define TX_NO_EQ_MASK			0x1FFFFFUL +#define TX_EQ_MASK			0x1FFFFFUL +#define RX_MASK				0xFFFFUL + +#define QSFP_MAX_POWER_SMASK		(QSFP_MAX_POWER_MASK << \ +					 QSFP_MAX_POWER_SHIFT) +#define TX_NO_EQ_SMASK			(TX_NO_EQ_MASK << TX_NO_EQ_SHIFT) +#define TX_EQ_SMASK			(TX_EQ_MASK << TX_EQ_SHIFT) +#define RX_SMASK			(RX_MASK << RX_SHIFT) + +#define TX_PRECUR_SHIFT			0 +#define TX_ATTN_SHIFT			4 +#define QSFP_TX_CDR_APPLY_SHIFT		9 +#define QSFP_TX_EQ_APPLY_SHIFT		10 +#define QSFP_TX_CDR_SHIFT		11 +#define QSFP_TX_EQ_SHIFT		12 +#define TX_POSTCUR_SHIFT		16 + +#define TX_PRECUR_MASK			0xFUL +#define TX_ATTN_MASK			0x1FUL +#define QSFP_TX_CDR_APPLY_MASK		0x1UL +#define QSFP_TX_EQ_APPLY_MASK		0x1UL +#define QSFP_TX_CDR_MASK		0x1UL +#define QSFP_TX_EQ_MASK			0xFUL +#define TX_POSTCUR_MASK			0x1FUL + +#define TX_PRECUR_SMASK			(TX_PRECUR_MASK << TX_PRECUR_SHIFT) +#define TX_ATTN_SMASK			(TX_ATTN_MASK << TX_ATTN_SHIFT) +#define QSFP_TX_CDR_APPLY_SMASK		(QSFP_TX_CDR_APPLY_MASK << \ +					 QSFP_TX_CDR_APPLY_SHIFT) +#define QSFP_TX_EQ_APPLY_SMASK		(QSFP_TX_EQ_APPLY_MASK << \ +					 QSFP_TX_EQ_APPLY_SHIFT) +#define QSFP_TX_CDR_SMASK		(QSFP_TX_CDR_MASK << QSFP_TX_CDR_SHIFT) +#define QSFP_TX_EQ_SMASK		(QSFP_TX_EQ_MASK << QSFP_TX_EQ_SHIFT) +#define TX_POSTCUR_SMASK		(TX_POSTCUR_MASK << TX_POSTCUR_SHIFT) + +#define QSFP_RX_CDR_APPLY_SHIFT		0 +#define QSFP_RX_EMP_APPLY_SHIFT		1 +#define QSFP_RX_AMP_APPLY_SHIFT		2 +#define QSFP_RX_CDR_SHIFT		3 +#define QSFP_RX_EMP_SHIFT		4 +#define QSFP_RX_AMP_SHIFT		8 + +#define QSFP_RX_CDR_APPLY_MASK		0x1UL +#define QSFP_RX_EMP_APPLY_MASK		0x1UL +#define QSFP_RX_AMP_APPLY_MASK		0x1UL +#define QSFP_RX_CDR_MASK		0x1UL +#define QSFP_RX_EMP_MASK		0xFUL +#define QSFP_RX_AMP_MASK		0x3UL + +#define QSFP_RX_CDR_APPLY_SMASK		(QSFP_RX_CDR_APPLY_MASK << \ +					 QSFP_RX_CDR_APPLY_SHIFT) +#define QSFP_RX_EMP_APPLY_SMASK		(QSFP_RX_EMP_APPLY_MASK << \ +					 QSFP_RX_EMP_APPLY_SHIFT) +#define QSFP_RX_AMP_APPLY_SMASK		(QSFP_RX_AMP_APPLY_MASK << \ +					 QSFP_RX_AMP_APPLY_SHIFT) +#define QSFP_RX_CDR_SMASK		(QSFP_RX_CDR_MASK << QSFP_RX_CDR_SHIFT) +#define QSFP_RX_EMP_SMASK		(QSFP_RX_EMP_MASK << QSFP_RX_EMP_SHIFT) +#define QSFP_RX_AMP_SMASK		(QSFP_RX_AMP_MASK << QSFP_RX_AMP_SHIFT) + +#define BITMAP_VERSION			1 +#define BITMAP_VERSION_SHIFT		44 +#define BITMAP_VERSION_MASK		0xFUL +#define BITMAP_VERSION_SMASK		(BITMAP_VERSION_MASK << \ +					 BITMAP_VERSION_SHIFT) +#define CHECKSUM_SHIFT			48 +#define CHECKSUM_MASK			0xFFFFUL +#define CHECKSUM_SMASK			(CHECKSUM_MASK << CHECKSUM_SHIFT) +  /* platform.c */  void get_platform_config(struct hfi1_devdata *dd);  void free_platform_config(struct hfi1_devdata *dd);  |