dpdk-fm10k/drivers/net/fm10k/switch/fm10k_sbus.h
Xiaojun Liu 475c6a430a net/fm10k: add basic functions for switch management
Add I2C to control the inside LED and PHY.
All the operations of I2C are using fm10k I2C register.
Add SBUS to communicate with spico(micro code in serdes)
by using fm10k SBUS register. This is like I2C operations.
Add registers defination, which include all the registers
will be used in the driver. Add switch management log API.
Add switch management structures. Modify Makefile to add
new files building. Add CONFIG_RTE_FM10K_MANAGEMENT=n
in config/common_linux.

Signed-off-by: Xiaojun Liu <xiaojun.liu@silicom.co.il>
2020-10-13 00:21:14 +02:00

39 lines
947 B
C

/* SPDX-License-Identifier: BSD-3-Clause
* Copyright 2019 Silicom Ltd. Connectivity Solutions
*/
#ifndef _FM10K_SW_SBUS_H_
#define _FM10K_SW_SBUS_H_
#include <pthread.h>
struct fm10k_sbus {
struct fm10k_switch *sw;
const char *name;
pthread_mutex_t lock;
unsigned int cfg_reg;
unsigned int cmd_reg;
unsigned int req_reg;
unsigned int resp_reg;
};
#define FM10K_SW_SBUS_LOCK(sb_) pthread_mutex_lock(&((sb_)->lock))
#define FM10K_SW_SBUS_UNLOCK(sb_) pthread_mutex_unlock(&((sb_)->lock))
struct fm10k_sbus_req {
uint8_t op;
uint8_t dev;
uint8_t reg;
uint32_t data;
};
struct fm10k_sbus *fm10k_sbus_attach(struct fm10k_switch *sw,
const char *name, unsigned int cfg_reg);
void fm10k_sbus_detach(struct fm10k_sbus *sb);
int fm10k_sbus_read(struct fm10k_sbus *sb,
uint8_t dev, uint8_t reg, uint32_t *data);
int fm10k_sbus_write(struct fm10k_sbus *sb,
uint8_t dev, uint8_t reg, uint32_t data);
#endif /* _FM10K_SW_SBUS_H_ */