1 // SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB
2 /* Copyright (c) 2019 Mellanox Technologies */
9 static int mlx5_devlink_flash_update(struct devlink
*devlink
,
10 const char *file_name
,
11 const char *component
,
12 struct netlink_ext_ack
*extack
)
14 struct mlx5_core_dev
*dev
= devlink_priv(devlink
);
15 const struct firmware
*fw
;
21 err
= request_firmware_direct(&fw
, file_name
, &dev
->pdev
->dev
);
25 return mlx5_firmware_flash(dev
, fw
, extack
);
28 static const struct devlink_ops mlx5_devlink_ops
= {
29 #ifdef CONFIG_MLX5_ESWITCH
30 .eswitch_mode_set
= mlx5_devlink_eswitch_mode_set
,
31 .eswitch_mode_get
= mlx5_devlink_eswitch_mode_get
,
32 .eswitch_inline_mode_set
= mlx5_devlink_eswitch_inline_mode_set
,
33 .eswitch_inline_mode_get
= mlx5_devlink_eswitch_inline_mode_get
,
34 .eswitch_encap_mode_set
= mlx5_devlink_eswitch_encap_mode_set
,
35 .eswitch_encap_mode_get
= mlx5_devlink_eswitch_encap_mode_get
,
37 .flash_update
= mlx5_devlink_flash_update
,
40 struct devlink
*mlx5_devlink_alloc()
42 return devlink_alloc(&mlx5_devlink_ops
, sizeof(struct mlx5_core_dev
));
45 void mlx5_devlink_free(struct devlink
*devlink
)
47 devlink_free(devlink
);
50 int mlx5_devlink_register(struct devlink
*devlink
, struct device
*dev
)
52 return devlink_register(devlink
, dev
);
55 void mlx5_devlink_unregister(struct devlink
*devlink
)
57 devlink_unregister(devlink
);