1*cb0e45cbSPavan Nikhilesh
2*cb0e45cbSPavan Nikhilesh /* SPDX-License-Identifier: BSD-3-Clause
3*cb0e45cbSPavan Nikhilesh * Copyright(C) 2021 Marvell.
4*cb0e45cbSPavan Nikhilesh */
5*cb0e45cbSPavan Nikhilesh
6*cb0e45cbSPavan Nikhilesh #include <unistd.h>
7*cb0e45cbSPavan Nikhilesh
8*cb0e45cbSPavan Nikhilesh #include "cnxk_telemetry.h"
9*cb0e45cbSPavan Nikhilesh #include "roc_api.h"
10*cb0e45cbSPavan Nikhilesh #include "roc_priv.h"
11*cb0e45cbSPavan Nikhilesh
12*cb0e45cbSPavan Nikhilesh static int
cnxk_tel_sso(struct plt_tel_data * d)13*cb0e45cbSPavan Nikhilesh cnxk_tel_sso(struct plt_tel_data *d)
14*cb0e45cbSPavan Nikhilesh {
15*cb0e45cbSPavan Nikhilesh struct roc_sso *roc_sso;
16*cb0e45cbSPavan Nikhilesh struct sso *sso;
17*cb0e45cbSPavan Nikhilesh
18*cb0e45cbSPavan Nikhilesh roc_sso = idev_sso_get();
19*cb0e45cbSPavan Nikhilesh if (roc_sso == NULL)
20*cb0e45cbSPavan Nikhilesh return SSO_ERR_DEVICE_NOT_BOUNDED;
21*cb0e45cbSPavan Nikhilesh
22*cb0e45cbSPavan Nikhilesh sso = roc_sso_to_sso_priv(roc_sso);
23*cb0e45cbSPavan Nikhilesh plt_tel_data_add_dict_ptr(d, "roc_sso", roc_sso);
24*cb0e45cbSPavan Nikhilesh plt_tel_data_add_dict_ptr(d, "sso", sso);
25*cb0e45cbSPavan Nikhilesh plt_tel_data_add_dict_int(d, "max_hws", roc_sso->max_hws);
26*cb0e45cbSPavan Nikhilesh plt_tel_data_add_dict_int(d, "max_hwgrp", roc_sso->max_hwgrp);
27*cb0e45cbSPavan Nikhilesh plt_tel_data_add_dict_int(d, "nb_hws", roc_sso->nb_hws);
28*cb0e45cbSPavan Nikhilesh plt_tel_data_add_dict_int(d, "nb_hwgrp", roc_sso->nb_hwgrp);
29*cb0e45cbSPavan Nikhilesh plt_tel_data_add_dict_int(d, "pf_func", sso->dev.pf_func);
30*cb0e45cbSPavan Nikhilesh plt_tel_data_add_dict_int(d, "pid", getpid());
31*cb0e45cbSPavan Nikhilesh
32*cb0e45cbSPavan Nikhilesh return 0;
33*cb0e45cbSPavan Nikhilesh }
34*cb0e45cbSPavan Nikhilesh
35*cb0e45cbSPavan Nikhilesh static int
cnxk_sso_tel_handle_info(const char * cmd __plt_unused,const char * params __plt_unused,struct plt_tel_data * d)36*cb0e45cbSPavan Nikhilesh cnxk_sso_tel_handle_info(const char *cmd __plt_unused,
37*cb0e45cbSPavan Nikhilesh const char *params __plt_unused,
38*cb0e45cbSPavan Nikhilesh struct plt_tel_data *d)
39*cb0e45cbSPavan Nikhilesh {
40*cb0e45cbSPavan Nikhilesh plt_tel_data_start_dict(d);
41*cb0e45cbSPavan Nikhilesh cnxk_tel_sso(d);
42*cb0e45cbSPavan Nikhilesh return 0;
43*cb0e45cbSPavan Nikhilesh }
44*cb0e45cbSPavan Nikhilesh
PLT_INIT(cnxk_telemetry_sso_init)45*cb0e45cbSPavan Nikhilesh PLT_INIT(cnxk_telemetry_sso_init)
46*cb0e45cbSPavan Nikhilesh {
47*cb0e45cbSPavan Nikhilesh plt_telemetry_register_cmd(
48*cb0e45cbSPavan Nikhilesh "/cnxk/sso/info", cnxk_sso_tel_handle_info,
49*cb0e45cbSPavan Nikhilesh "Returns sso information. Takes no parameters");
50*cb0e45cbSPavan Nikhilesh }
51