linux/drivers/media/common/siano/smscoreapi.h

/* SPDX-License-Identifier: GPL-2.0-or-later */
/****************************************************************

Siano Mobile Silicon, Inc.
MDTV receiver kernel modules.
Copyright (C) 2006-2008, Uri Shkolnik, Anatoly Greenblat


****************************************************************/

#ifndef __SMS_CORE_API_H__
#define __SMS_CORE_API_H__

#define pr_fmt(fmt)

#include <linux/device.h>
#include <linux/list.h>
#include <linux/mm.h>
#include <linux/scatterlist.h>
#include <linux/types.h>
#include <linux/mutex.h>
#include <linux/wait.h>
#include <linux/timer.h>

#include <media/media-device.h>

#include <asm/page.h>

#include "smsir.h"

/*
 * Define the firmware names used by the driver.
 * Those should match what's used at smscoreapi.c and sms-cards.c
 * including the MODULE_FIRMWARE() macros at the end of smscoreapi.c
 */
#define SMS_FW_ATSC_DENVER
#define SMS_FW_CMMB_MING_APP
#define SMS_FW_CMMB_VEGA_12MHZ
#define SMS_FW_CMMB_VENICE_12MHZ
#define SMS_FW_DVBH_RIO
#define SMS_FW_DVB_NOVA_12MHZ_B0
#define SMS_FW_DVB_NOVA_12MHZ
#define SMS_FW_DVB_RIO
#define SMS_FW_FM_RADIO
#define SMS_FW_FM_RADIO_RIO
#define SMS_FW_DVBT_HCW_55XXX
#define SMS_FW_ISDBT_HCW_55XXX
#define SMS_FW_ISDBT_NOVA_12MHZ_B0
#define SMS_FW_ISDBT_NOVA_12MHZ
#define SMS_FW_ISDBT_PELE
#define SMS_FW_ISDBT_RIO
#define SMS_FW_DVBT_NOVA_A
#define SMS_FW_DVBT_NOVA_B
#define SMS_FW_DVBT_STELLAR
#define SMS_FW_TDMB_DENVER
#define SMS_FW_TDMB_NOVA_12MHZ_B0
#define SMS_FW_TDMB_NOVA_12MHZ

#define SMS_PROTOCOL_MAX_RAOUNDTRIP_MS
#define SMS_ALLOC_ALIGNMENT
#define SMS_DMA_ALIGNMENT
#define SMS_ALIGN_ADDRESS(addr)

#define SMS_DEVICE_FAMILY1
#define SMS_DEVICE_FAMILY2
#define SMS_ROM_NO_RESPONSE
#define SMS_DEVICE_NOT_READY

enum sms_device_type_st {};

enum sms_power_mode_st {};

struct smscore_device_t;
struct smscore_client_t;
struct smscore_buffer_t;

hotplug_t;

setmode_t;
detectmode_t;
sendrequest_t;
preload_t;
postload_t;

onresponse_t;
onremove_t;

struct smscore_buffer_t {};

struct smsdevice_params_t {};

struct smsclient_params_t {};

struct smscore_device_t {};

/* GPIO definitions for antenna frequency domain control (SMS8021) */
#define SMS_ANTENNA_GPIO_0
#define SMS_ANTENNA_GPIO_1

enum sms_bandwidth_mode {};


#define MSG_HDR_FLAG_SPLIT_MSG

#define MAX_GPIO_PIN_NUMBER

#define HIF_TASK
#define HIF_TASK_SLAVE
#define HIF_TASK_SLAVE2
#define HIF_TASK_SLAVE3
#define SMS_HOST_LIB
#define DVBT_BDA_CONTROL_MSG_ID

#define SMS_MAX_PAYLOAD_SIZE
#define SMS_TUNE_TIMEOUT

enum msg_types {};

#define SMS_INIT_MSG_EX(ptr, type, src, dst, len)

#define SMS_INIT_MSG(ptr, type, len)

enum SMS_DVB3_EVENTS {};

enum SMS_DEVICE_MODE {};

struct sms_msg_hdr {};

struct sms_msg_data {};

struct sms_msg_data2 {};

struct sms_msg_data5 {};

struct sms_data_download {};

struct sms_version_res {};

struct sms_firmware {};

/* statistics information returned as response for
 * SmsHostApiGetstatistics_Req */
struct sms_stats {};

struct sms_msg_statistics_info {};

struct sms_isdbt_layer_stats {};

struct sms_isdbt_stats {};

struct sms_isdbt_stats_ex {};


struct sms_pid_stats_data {};

struct sms_pid_data {};

#define CORRECT_STAT_RSSI(_stat)
#define CORRECT_STAT_BANDWIDTH(_stat)
#define CORRECT_STAT_TRANSMISSON_MODE(_stat)

struct sms_tx_stats {};

struct sms_rx_stats {};

struct sms_rx_stats_ex {};

#define SRVM_MAX_PID_FILTERS

/* statistics information returned as response for
 * SmsHostApiGetstatisticsEx_Req for DVB applications, SMS1100 and up */
struct sms_stats_dvb {};

/* statistics information returned as response for
 * SmsHostApiGetstatisticsEx_Req for DVB applications, SMS1100 and up */
struct sms_stats_dvb_ex {};

struct sms_srvm_signal_status {};

struct smscore_config_gpio {};

char *smscore_translate_msg(enum msg_types msgtype);

extern int smscore_registry_getmode(char *devpath);

extern int smscore_register_hotplug(hotplug_t hotplug);
extern void smscore_unregister_hotplug(hotplug_t hotplug);

extern int smscore_register_device(struct smsdevice_params_t *params,
				   struct smscore_device_t **coredev,
				   gfp_t gfp_buf_flags,
				   void *mdev);
extern void smscore_unregister_device(struct smscore_device_t *coredev);

extern int smscore_start_device(struct smscore_device_t *coredev);

extern int smscore_set_device_mode(struct smscore_device_t *coredev, int mode);
extern int smscore_get_device_mode(struct smscore_device_t *coredev);

extern int smscore_register_client(struct smscore_device_t *coredev,
				    struct smsclient_params_t *params,
				    struct smscore_client_t **client);
extern void smscore_unregister_client(struct smscore_client_t *client);

extern int smsclient_sendrequest(struct smscore_client_t *client,
				 void *buffer, size_t size);
extern void smscore_onresponse(struct smscore_device_t *coredev,
			       struct smscore_buffer_t *cb);

extern
struct smscore_buffer_t *smscore_getbuffer(struct smscore_device_t *coredev);
extern void smscore_putbuffer(struct smscore_device_t *coredev,
			      struct smscore_buffer_t *cb);

/* old GPIO management */
int smscore_configure_gpio(struct smscore_device_t *coredev, u32 pin,
			   struct smscore_config_gpio *pinconfig);
int smscore_set_gpio(struct smscore_device_t *coredev, u32 pin, int level);

/* new GPIO management */
extern int smscore_gpio_configure(struct smscore_device_t *coredev, u8 pin_num,
		struct smscore_config_gpio *p_gpio_config);
extern int smscore_gpio_set_level(struct smscore_device_t *coredev, u8 pin_num,
		u8 new_level);
extern int smscore_gpio_get_level(struct smscore_device_t *coredev, u8 pin_num,
		u8 *level);

void smscore_set_board_id(struct smscore_device_t *core, int id);
int smscore_get_board_id(struct smscore_device_t *core);

int smscore_led_state(struct smscore_device_t *core, int led);


/* ------------------------------------------------------------------------ */

#endif /* __SMS_CORE_API_H__ */