126 lines
3.5 KiB
C
126 lines
3.5 KiB
C
/*
|
|
* Copyright (c) 2019 Intel Corporation
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
#ifndef MIPI_SYST_PLATFORM_INCLUDED
|
|
#define MIPI_SYST_PLATFORM_INCLUDED
|
|
|
|
#include <zephyr/logging/log_output.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#define MIPI_SYST_PCFG_PRINTF_ARGBUF_SIZE CONFIG_LOG_MIPI_SYST_ARGS_BUFFER_SIZE
|
|
|
|
#if defined(CONFIG_MIPI_SYST_STP)
|
|
/*
|
|
* Structure generating STP protocol data
|
|
*/
|
|
struct stp_writer_data {
|
|
mipi_syst_u8 byteDone;
|
|
mipi_syst_u8 current;
|
|
mipi_syst_u16 master;
|
|
mipi_syst_u16 channel;
|
|
mipi_syst_u64 recordCount;
|
|
mipi_syst_u64 timestamp;
|
|
};
|
|
#endif
|
|
|
|
#if defined(MIPI_SYST_PCFG_ENABLE_PLATFORM_STATE_DATA)
|
|
/*
|
|
* Platform specific SyS-T global state extension
|
|
*/
|
|
struct mipi_syst_platform_state {
|
|
#if defined(CONFIG_MIPI_SYST_STP)
|
|
struct stp_writer_data *stpWriter;
|
|
#endif
|
|
|
|
void (*write_d8)(struct mipi_syst_handle *systh, mipi_syst_u8 v);
|
|
void (*write_d16)(struct mipi_syst_handle *systh, mipi_syst_u16 v);
|
|
void (*write_d32)(struct mipi_syst_handle *systh, mipi_syst_u32 v);
|
|
#if defined(MIPI_SYST_PCFG_ENABLE_64BIT_IO)
|
|
void (*write_d64)(struct mipi_syst_handle *systh, mipi_syst_u64 v);
|
|
#endif
|
|
void (*write_d32ts)(struct mipi_syst_handle *systh, mipi_syst_u32 v);
|
|
void (*write_d32mts)(struct mipi_syst_handle *systh, mipi_syst_u32 v);
|
|
void (*write_d64mts)(struct mipi_syst_handle *systh, mipi_syst_u64 v);
|
|
void (*write_flag)(struct mipi_syst_handle *systh);
|
|
};
|
|
|
|
/*
|
|
* Platform specific SyS-T handle state extension
|
|
*/
|
|
struct mipi_syst_platform_handle {
|
|
mipi_syst_u32 flag;
|
|
#if defined(CONFIG_MIPI_SYST_STP)
|
|
mipi_syst_u32 master;
|
|
mipi_syst_u32 channel;
|
|
#endif
|
|
struct log_output *log_output;
|
|
};
|
|
|
|
/*
|
|
* IO output routine mapping
|
|
* Call the function pointers in the global state
|
|
*/
|
|
#define MIPI_SYST_OUTPUT_D8(syst_handle, data) \
|
|
((syst_handle)->systh_header-> \
|
|
systh_platform.write_d8((syst_handle), (data)))
|
|
#define MIPI_SYST_OUTPUT_D16(syst_handle, data) \
|
|
((syst_handle)->systh_header-> \
|
|
systh_platform.write_d16((syst_handle), (data)))
|
|
#define MIPI_SYST_OUTPUT_D32(syst_handle, data) \
|
|
((syst_handle)->systh_header-> \
|
|
systh_platform.write_d32((syst_handle), (data)))
|
|
#if defined(MIPI_SYST_PCFG_ENABLE_64BIT_IO)
|
|
#define MIPI_SYST_OUTPUT_D64(syst_handle, data) \
|
|
((syst_handle)->systh_header-> \
|
|
systh_platform.write_d64((syst_handle), (data)))
|
|
#endif
|
|
#define MIPI_SYST_OUTPUT_D32TS(syst_handle, data) \
|
|
((syst_handle)->systh_header-> \
|
|
systh_platform.write_d32ts((syst_handle), (data)))
|
|
#define MIPI_SYST_OUTPUT_D32MTS(syst_handle, data) \
|
|
((syst_handle)->systh_header-> \
|
|
systh_platform.write_d32mts((syst_handle), (data)))
|
|
#define MIPI_SYST_OUTPUT_D64MTS(syst_handle, data) \
|
|
((syst_handle)->systh_header-> \
|
|
systh_platform.write_d64mts((syst_handle), (data)))
|
|
#define MIPI_SYST_OUTPUT_FLAG(syst_handle) \
|
|
((syst_handle)->systh_header-> \
|
|
systh_platform.write_flag((syst_handle)))
|
|
|
|
#else
|
|
|
|
#define MIPI_SYST_OUTPUT_D8(syst_handle, data)
|
|
#define MIPI_SYST_OUTPUT_D16(syst_handle, data)
|
|
#define MIPI_SYST_OUTPUT_D32(syst_handle, data)
|
|
#if defined(MIPI_SYST_PCFG_ENABLE_64BIT_IO)
|
|
#define MIPI_SYST_OUTPUT_D64(syst_handle, data)
|
|
#endif
|
|
#define MIPI_SYST_OUTPUT_D32TS(syst_handle, data)
|
|
#define MIPI_SYST_OUTPUT_FLAG(syst_handle)
|
|
|
|
#endif
|
|
|
|
#if defined(MIPI_SYST_PCFG_ENABLE_HEAP_MEMORY)
|
|
#define MIPI_SYST_HEAP_MALLOC(s)
|
|
#define MIPI_SYST_HEAP_FREE(p)
|
|
#endif
|
|
|
|
#if defined(MIPI_SYST_PCFG_ENABLE_TIMESTAMP)
|
|
#define MIPI_SYST_PLATFORM_CLOCK() mipi_syst_get_epoch()
|
|
#define MIPI_SYST_PLATFORM_FREQ() CONFIG_SYS_CLOCK_TICKS_PER_SEC
|
|
|
|
mipi_syst_u64 mipi_syst_get_epoch(void);
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|