OpenBIC
OpenSource Bridge-IC
shell_clock.c File Reference
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <zephyr.h>
#include <logging/log.h>
#include <sys/slist.h>
#include "libutil.h"
#include "plat_i2c.h"
#include <shell/shell.h>
Include dependency graph for shell_clock.c:

Classes

struct  clock_compnt_mapping
 
struct  _clock_default_info
 

Macros

#define CLK_BUF_U85_ADDR   (0xCE >> 1)
 
#define CLK_BUF_U87_ADDR   (0xD8 >> 1)
 
#define CLK_BUF_U88_ADDR   (0xDE >> 1)
 
#define CLK_GEN_100M_U86_ADDR   0x9
 
#define CLK_BUF_100M_WRITE_LOCK_CLEAR_LOS_EVENT_OFFSET   0x27
 
#define CLK_GEN_LOSMON_EVENT_OFFSET   0x5a
 
#define CLK_BUF_100M_BYTE_COUNT   0x7
 
#define CLK_DEFAULT_BYTE_VALUE   0x00
 
#define REGISTER_BYTE_MAX   4
 

Typedefs

typedef struct clock_compnt_mapping clock_compnt_mapping
 
typedef struct _clock_default_info clock_default_info
 

Enumerations

enum  CLOCK_COMPONENT {
  CLKGEN_312M , AEGIS_CLKBUF_100M_U471 , AEGIS_CLKBUF_100M_U519 , CLKGEN_100M ,
  CLK_COMPONENT_MAX , CLK_BUF_100M_U85 , CLK_BUF_100M_U87 , CLK_BUF_100M_U88 ,
  CLK_GEN_100M_U86 , CLK_COMPONENT_MAX
}
 

Functions

 LOG_MODULE_REGISTER (clock_shell)
 
bool clock_name_get (uint8_t index, uint8_t **name)
 
int find_clock_address_and_bus_by_clock_name_index (uint8_t clock_index, uint8_t *addr, uint8_t *bus)
 
bool clock_enum_get (uint8_t *name, uint8_t *num)
 
void cmd_set_clock (const struct shell *shell, size_t argc, char **argv)
 
void cmd_get_clock (const struct shell *shell, size_t argc, char **argv)
 
void handle_single_clock_status (const struct shell *shell, enum CLOCK_COMPONENT clock_index)
 
void cmd_get_clock_status (const struct shell *shell, size_t argc, char **argv)
 
void cmd_clear_clock_status (const struct shell *shell, size_t argc, char **argv)
 
 SHELL_DYNAMIC_CMD_CREATE (clock_name, dynamic_clock_name_get)
 
 SHELL_DYNAMIC_CMD_CREATE (all_clock_name, all_dynamic_clock_name_get)
 
 SHELL_STATIC_SUBCMD_SET_CREATE (sub_clock_cmds, SHELL_CMD_ARG(set, &clock_name, "set <clock> <reg-offset> <value>|default", cmd_set_clock, 4, 3), SHELL_CMD_ARG(get, &clock_name, "get <clock> <reg-offset> <read_length>", cmd_get_clock, 4, 0), SHELL_SUBCMD_SET_END)
 
 SHELL_CMD_REGISTER (clock, &sub_clock_cmds, "Clock commands for AG", NULL)
 
 SHELL_STATIC_SUBCMD_SET_CREATE (sub_clock_status_cmds, SHELL_CMD_ARG(get, &all_clock_name, "get <clock>", cmd_get_clock_status, 2, 0), SHELL_CMD_ARG(clear, &clock_name, "clear <clock>", cmd_clear_clock_status, 2, 0), SHELL_SUBCMD_SET_END)
 
 SHELL_CMD_REGISTER (clock_status, &sub_clock_status_cmds, "Clock status commands for AG", NULL)
 

Variables

clock_compnt_mapping clock_compnt_mapping_table []
 

Macro Definition Documentation

◆ CLK_BUF_100M_BYTE_COUNT

#define CLK_BUF_100M_BYTE_COUNT   0x7

◆ CLK_BUF_100M_WRITE_LOCK_CLEAR_LOS_EVENT_OFFSET

#define CLK_BUF_100M_WRITE_LOCK_CLEAR_LOS_EVENT_OFFSET   0x27

◆ CLK_BUF_U85_ADDR

#define CLK_BUF_U85_ADDR   (0xCE >> 1)

◆ CLK_BUF_U87_ADDR

#define CLK_BUF_U87_ADDR   (0xD8 >> 1)

◆ CLK_BUF_U88_ADDR

#define CLK_BUF_U88_ADDR   (0xDE >> 1)

◆ CLK_DEFAULT_BYTE_VALUE

#define CLK_DEFAULT_BYTE_VALUE   0x00

◆ CLK_GEN_100M_U86_ADDR

#define CLK_GEN_100M_U86_ADDR   0x9

◆ CLK_GEN_LOSMON_EVENT_OFFSET

#define CLK_GEN_LOSMON_EVENT_OFFSET   0x5a

◆ REGISTER_BYTE_MAX

#define REGISTER_BYTE_MAX   4

Typedef Documentation

◆ clock_compnt_mapping

◆ clock_default_info

Enumeration Type Documentation

◆ CLOCK_COMPONENT

Enumerator
CLKGEN_312M 
AEGIS_CLKBUF_100M_U471 
AEGIS_CLKBUF_100M_U519 
CLKGEN_100M 
CLK_COMPONENT_MAX 
CLK_BUF_100M_U85 
CLK_BUF_100M_U87 
CLK_BUF_100M_U88 
CLK_GEN_100M_U86 
CLK_COMPONENT_MAX 

Function Documentation

◆ clock_enum_get()

bool clock_enum_get ( uint8_t *  name,
uint8_t *  num 
)

◆ clock_name_get()

bool clock_name_get ( uint8_t  index,
uint8_t **  name 
)

◆ cmd_clear_clock_status()

void cmd_clear_clock_status ( const struct shell *  shell,
size_t  argc,
char **  argv 
)
Here is the call graph for this function:

◆ cmd_get_clock()

void cmd_get_clock ( const struct shell *  shell,
size_t  argc,
char **  argv 
)
Here is the call graph for this function:

◆ cmd_get_clock_status()

void cmd_get_clock_status ( const struct shell *  shell,
size_t  argc,
char **  argv 
)
Here is the call graph for this function:

◆ cmd_set_clock()

void cmd_set_clock ( const struct shell *  shell,
size_t  argc,
char **  argv 
)
Here is the call graph for this function:

◆ find_clock_address_and_bus_by_clock_name_index()

int find_clock_address_and_bus_by_clock_name_index ( uint8_t  clock_index,
uint8_t *  addr,
uint8_t *  bus 
)

◆ handle_single_clock_status()

void handle_single_clock_status ( const struct shell *  shell,
enum CLOCK_COMPONENT  clock_index 
)
Here is the call graph for this function:

◆ LOG_MODULE_REGISTER()

LOG_MODULE_REGISTER ( clock_shell  )

◆ SHELL_CMD_REGISTER() [1/2]

SHELL_CMD_REGISTER ( clock  ,
sub_clock_cmds,
"Clock commands for AG"  ,
NULL   
)

◆ SHELL_CMD_REGISTER() [2/2]

SHELL_CMD_REGISTER ( clock_status  ,
sub_clock_status_cmds,
"Clock status commands for AG"  ,
NULL   
)

◆ SHELL_DYNAMIC_CMD_CREATE() [1/2]

SHELL_DYNAMIC_CMD_CREATE ( all_clock_name  ,
all_dynamic_clock_name_get   
)

◆ SHELL_DYNAMIC_CMD_CREATE() [2/2]

SHELL_DYNAMIC_CMD_CREATE ( clock_name  ,
dynamic_clock_name_get   
)

◆ SHELL_STATIC_SUBCMD_SET_CREATE() [1/2]

SHELL_STATIC_SUBCMD_SET_CREATE ( sub_clock_cmds  ,
SHELL_CMD_ARG(set, &clock_name, "set <clock> <reg-offset> <value>|default", cmd_set_clock, 4, 3)  ,
SHELL_CMD_ARG(get, &clock_name, "get <clock> <reg-offset> <read_length>", cmd_get_clock, 4, 0)  ,
SHELL_SUBCMD_SET_END   
)

◆ SHELL_STATIC_SUBCMD_SET_CREATE() [2/2]

SHELL_STATIC_SUBCMD_SET_CREATE ( sub_clock_status_cmds  ,
SHELL_CMD_ARG(get, &all_clock_name, "get <clock>", cmd_get_clock_status, 2, 0)  ,
SHELL_CMD_ARG(clear, &clock_name, "clear <clock>", cmd_clear_clock_status, 2, 0)  ,
SHELL_SUBCMD_SET_END   
)

Variable Documentation

◆ clock_compnt_mapping_table

clock_compnt_mapping clock_compnt_mapping_table[]
Initial value:
= {
{ CLK_BUF_100M_U85, CLK_BUF_U85_ADDR, I2C_BUS1, "CLK_BUF_100M_U85" },
{ CLK_BUF_100M_U87, CLK_BUF_U87_ADDR, I2C_BUS1, "CLK_BUF_100M_U87" },
{ CLK_BUF_100M_U88, CLK_BUF_U88_ADDR, I2C_BUS3, "CLK_BUF_100M_U88" },
{ CLK_GEN_100M_U86, CLK_GEN_100M_U86_ADDR, I2C_BUS3, "CLK_GEN_100M_U86" },
}
#define I2C_BUS3
Definition: plat_i2c.h:26
#define I2C_BUS1
Definition: plat_i2c.h:24
#define CLK_BUF_U87_ADDR
Definition: shell_clock.c:31
#define CLK_BUF_U85_ADDR
Definition: shell_clock.c:30
#define CLK_GEN_100M_U86_ADDR
Definition: shell_clock.c:33
#define CLK_BUF_U88_ADDR
Definition: shell_clock.c:32
@ CLK_BUF_100M_U88
Definition: shell_clock.c:44
@ CLK_BUF_100M_U87
Definition: shell_clock.c:43
@ CLK_BUF_100M_U85
Definition: shell_clock.c:42
@ CLK_GEN_100M_U86
Definition: shell_clock.c:45