mirror of
https://github.com/torvalds/linux.git
synced 2024-11-23 12:42:02 +00:00
mlxsw: reg: Add Management General Peripheral Information Register
Add MGPIR - Management General Peripheral Information Register, which allows software to query the hardware and firmware general information of peripheral entities as Gearboxes etc. Signed-off-by: Vadim Pasternak <vadimp@mellanox.com> Acked-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: Ido Schimmel <idosch@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
ae57467836
commit
7e9561ed0b
@ -9044,6 +9044,57 @@ static inline void mlxsw_reg_mprs_pack(char *payload, u16 parsing_depth,
|
||||
mlxsw_reg_mprs_vxlan_udp_dport_set(payload, vxlan_udp_dport);
|
||||
}
|
||||
|
||||
/* MGPIR - Management General Peripheral Information Register
|
||||
* ----------------------------------------------------------
|
||||
* MGPIR register allows software to query the hardware and
|
||||
* firmware general information of peripheral entities.
|
||||
*/
|
||||
#define MLXSW_REG_MGPIR_ID 0x9100
|
||||
#define MLXSW_REG_MGPIR_LEN 0xA0
|
||||
|
||||
MLXSW_REG_DEFINE(mgpir, MLXSW_REG_MGPIR_ID, MLXSW_REG_MGPIR_LEN);
|
||||
|
||||
enum mlxsw_reg_mgpir_device_type {
|
||||
MLXSW_REG_MGPIR_DEVICE_TYPE_NONE,
|
||||
MLXSW_REG_MGPIR_DEVICE_TYPE_GEARBOX_DIE,
|
||||
};
|
||||
|
||||
/* device_type
|
||||
* Access: RO
|
||||
*/
|
||||
MLXSW_ITEM32(reg, mgpir, device_type, 0x00, 24, 4);
|
||||
|
||||
/* devices_per_flash
|
||||
* Number of devices of device_type per flash (can be shared by few devices).
|
||||
* Access: RO
|
||||
*/
|
||||
MLXSW_ITEM32(reg, mgpir, devices_per_flash, 0x00, 16, 8);
|
||||
|
||||
/* num_of_devices
|
||||
* Number of devices of device_type.
|
||||
* Access: RO
|
||||
*/
|
||||
MLXSW_ITEM32(reg, mgpir, num_of_devices, 0x00, 0, 8);
|
||||
|
||||
static inline void mlxsw_reg_mgpir_pack(char *payload)
|
||||
{
|
||||
MLXSW_REG_ZERO(mgpir, payload);
|
||||
}
|
||||
|
||||
static inline void
|
||||
mlxsw_reg_mgpir_unpack(char *payload, u8 *num_of_devices,
|
||||
enum mlxsw_reg_mgpir_device_type *device_type,
|
||||
u8 *devices_per_flash)
|
||||
{
|
||||
if (num_of_devices)
|
||||
*num_of_devices = mlxsw_reg_mgpir_num_of_devices_get(payload);
|
||||
if (device_type)
|
||||
*device_type = mlxsw_reg_mgpir_device_type_get(payload);
|
||||
if (devices_per_flash)
|
||||
*devices_per_flash =
|
||||
mlxsw_reg_mgpir_devices_per_flash_get(payload);
|
||||
}
|
||||
|
||||
/* TNGCR - Tunneling NVE General Configuration Register
|
||||
* ----------------------------------------------------
|
||||
* The TNGCR register is used for setting up the NVE Tunneling configuration.
|
||||
@ -10059,6 +10110,7 @@ static const struct mlxsw_reg_info *mlxsw_reg_infos[] = {
|
||||
MLXSW_REG(mcda),
|
||||
MLXSW_REG(mgpc),
|
||||
MLXSW_REG(mprs),
|
||||
MLXSW_REG(mgpir),
|
||||
MLXSW_REG(tngcr),
|
||||
MLXSW_REG(tnumt),
|
||||
MLXSW_REG(tnqcr),
|
||||
|
Loading…
Reference in New Issue
Block a user