162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Abilis Systems Single DVB-T Receiver 462306a36Sopenharmony_ci * Copyright (C) 2008 Pierrick Hascoet <pierrick.hascoet@abilis.com> 562306a36Sopenharmony_ci */ 662306a36Sopenharmony_ci#ifndef _AS10X_CMD_H_ 762306a36Sopenharmony_ci#define _AS10X_CMD_H_ 862306a36Sopenharmony_ci 962306a36Sopenharmony_ci#include <linux/kernel.h> 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ci#include "as102_fe_types.h" 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ci/*********************************/ 1462306a36Sopenharmony_ci/* MACRO DEFINITIONS */ 1562306a36Sopenharmony_ci/*********************************/ 1662306a36Sopenharmony_ci#define AS10X_CMD_ERROR -1 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_ci#define SERVICE_PROG_ID 0x0002 1962306a36Sopenharmony_ci#define SERVICE_PROG_VERSION 0x0001 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_ci#define HIER_NONE 0x00 2262306a36Sopenharmony_ci#define HIER_LOW_PRIORITY 0x01 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ci#define HEADER_SIZE (sizeof(struct as10x_cmd_header_t)) 2562306a36Sopenharmony_ci 2662306a36Sopenharmony_ci/* context request types */ 2762306a36Sopenharmony_ci#define GET_CONTEXT_DATA 1 2862306a36Sopenharmony_ci#define SET_CONTEXT_DATA 2 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_ci/* ODSP suspend modes */ 3162306a36Sopenharmony_ci#define CFG_MODE_ODSP_RESUME 0 3262306a36Sopenharmony_ci#define CFG_MODE_ODSP_SUSPEND 1 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_ci/* Dump memory size */ 3562306a36Sopenharmony_ci#define DUMP_BLOCK_SIZE_MAX 0x20 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_ci/*********************************/ 3862306a36Sopenharmony_ci/* TYPE DEFINITION */ 3962306a36Sopenharmony_ci/*********************************/ 4062306a36Sopenharmony_cienum control_proc { 4162306a36Sopenharmony_ci CONTROL_PROC_TURNON = 0x0001, 4262306a36Sopenharmony_ci CONTROL_PROC_TURNON_RSP = 0x0100, 4362306a36Sopenharmony_ci CONTROL_PROC_SET_REGISTER = 0x0002, 4462306a36Sopenharmony_ci CONTROL_PROC_SET_REGISTER_RSP = 0x0200, 4562306a36Sopenharmony_ci CONTROL_PROC_GET_REGISTER = 0x0003, 4662306a36Sopenharmony_ci CONTROL_PROC_GET_REGISTER_RSP = 0x0300, 4762306a36Sopenharmony_ci CONTROL_PROC_SETTUNE = 0x000A, 4862306a36Sopenharmony_ci CONTROL_PROC_SETTUNE_RSP = 0x0A00, 4962306a36Sopenharmony_ci CONTROL_PROC_GETTUNESTAT = 0x000B, 5062306a36Sopenharmony_ci CONTROL_PROC_GETTUNESTAT_RSP = 0x0B00, 5162306a36Sopenharmony_ci CONTROL_PROC_GETTPS = 0x000D, 5262306a36Sopenharmony_ci CONTROL_PROC_GETTPS_RSP = 0x0D00, 5362306a36Sopenharmony_ci CONTROL_PROC_SETFILTER = 0x000E, 5462306a36Sopenharmony_ci CONTROL_PROC_SETFILTER_RSP = 0x0E00, 5562306a36Sopenharmony_ci CONTROL_PROC_REMOVEFILTER = 0x000F, 5662306a36Sopenharmony_ci CONTROL_PROC_REMOVEFILTER_RSP = 0x0F00, 5762306a36Sopenharmony_ci CONTROL_PROC_GET_IMPULSE_RESP = 0x0012, 5862306a36Sopenharmony_ci CONTROL_PROC_GET_IMPULSE_RESP_RSP = 0x1200, 5962306a36Sopenharmony_ci CONTROL_PROC_START_STREAMING = 0x0013, 6062306a36Sopenharmony_ci CONTROL_PROC_START_STREAMING_RSP = 0x1300, 6162306a36Sopenharmony_ci CONTROL_PROC_STOP_STREAMING = 0x0014, 6262306a36Sopenharmony_ci CONTROL_PROC_STOP_STREAMING_RSP = 0x1400, 6362306a36Sopenharmony_ci CONTROL_PROC_GET_DEMOD_STATS = 0x0015, 6462306a36Sopenharmony_ci CONTROL_PROC_GET_DEMOD_STATS_RSP = 0x1500, 6562306a36Sopenharmony_ci CONTROL_PROC_ELNA_CHANGE_MODE = 0x0016, 6662306a36Sopenharmony_ci CONTROL_PROC_ELNA_CHANGE_MODE_RSP = 0x1600, 6762306a36Sopenharmony_ci CONTROL_PROC_ODSP_CHANGE_MODE = 0x0017, 6862306a36Sopenharmony_ci CONTROL_PROC_ODSP_CHANGE_MODE_RSP = 0x1700, 6962306a36Sopenharmony_ci CONTROL_PROC_AGC_CHANGE_MODE = 0x0018, 7062306a36Sopenharmony_ci CONTROL_PROC_AGC_CHANGE_MODE_RSP = 0x1800, 7162306a36Sopenharmony_ci 7262306a36Sopenharmony_ci CONTROL_PROC_CONTEXT = 0x00FC, 7362306a36Sopenharmony_ci CONTROL_PROC_CONTEXT_RSP = 0xFC00, 7462306a36Sopenharmony_ci CONTROL_PROC_DUMP_MEMORY = 0x00FD, 7562306a36Sopenharmony_ci CONTROL_PROC_DUMP_MEMORY_RSP = 0xFD00, 7662306a36Sopenharmony_ci CONTROL_PROC_DUMPLOG_MEMORY = 0x00FE, 7762306a36Sopenharmony_ci CONTROL_PROC_DUMPLOG_MEMORY_RSP = 0xFE00, 7862306a36Sopenharmony_ci CONTROL_PROC_TURNOFF = 0x00FF, 7962306a36Sopenharmony_ci CONTROL_PROC_TURNOFF_RSP = 0xFF00 8062306a36Sopenharmony_ci}; 8162306a36Sopenharmony_ci 8262306a36Sopenharmony_ciunion as10x_turn_on { 8362306a36Sopenharmony_ci /* request */ 8462306a36Sopenharmony_ci struct { 8562306a36Sopenharmony_ci /* request identifier */ 8662306a36Sopenharmony_ci __le16 proc_id; 8762306a36Sopenharmony_ci } __packed req; 8862306a36Sopenharmony_ci /* response */ 8962306a36Sopenharmony_ci struct { 9062306a36Sopenharmony_ci /* response identifier */ 9162306a36Sopenharmony_ci __le16 proc_id; 9262306a36Sopenharmony_ci /* error */ 9362306a36Sopenharmony_ci uint8_t error; 9462306a36Sopenharmony_ci } __packed rsp; 9562306a36Sopenharmony_ci} __packed; 9662306a36Sopenharmony_ci 9762306a36Sopenharmony_ciunion as10x_turn_off { 9862306a36Sopenharmony_ci /* request */ 9962306a36Sopenharmony_ci struct { 10062306a36Sopenharmony_ci /* request identifier */ 10162306a36Sopenharmony_ci __le16 proc_id; 10262306a36Sopenharmony_ci } __packed req; 10362306a36Sopenharmony_ci /* response */ 10462306a36Sopenharmony_ci struct { 10562306a36Sopenharmony_ci /* response identifier */ 10662306a36Sopenharmony_ci __le16 proc_id; 10762306a36Sopenharmony_ci /* error */ 10862306a36Sopenharmony_ci uint8_t err; 10962306a36Sopenharmony_ci } __packed rsp; 11062306a36Sopenharmony_ci} __packed; 11162306a36Sopenharmony_ci 11262306a36Sopenharmony_ciunion as10x_set_tune { 11362306a36Sopenharmony_ci /* request */ 11462306a36Sopenharmony_ci struct { 11562306a36Sopenharmony_ci /* request identifier */ 11662306a36Sopenharmony_ci __le16 proc_id; 11762306a36Sopenharmony_ci /* tune params */ 11862306a36Sopenharmony_ci struct as10x_tune_args args; 11962306a36Sopenharmony_ci } __packed req; 12062306a36Sopenharmony_ci /* response */ 12162306a36Sopenharmony_ci struct { 12262306a36Sopenharmony_ci /* response identifier */ 12362306a36Sopenharmony_ci __le16 proc_id; 12462306a36Sopenharmony_ci /* response error */ 12562306a36Sopenharmony_ci uint8_t error; 12662306a36Sopenharmony_ci } __packed rsp; 12762306a36Sopenharmony_ci} __packed; 12862306a36Sopenharmony_ci 12962306a36Sopenharmony_ciunion as10x_get_tune_status { 13062306a36Sopenharmony_ci /* request */ 13162306a36Sopenharmony_ci struct { 13262306a36Sopenharmony_ci /* request identifier */ 13362306a36Sopenharmony_ci __le16 proc_id; 13462306a36Sopenharmony_ci } __packed req; 13562306a36Sopenharmony_ci /* response */ 13662306a36Sopenharmony_ci struct { 13762306a36Sopenharmony_ci /* response identifier */ 13862306a36Sopenharmony_ci __le16 proc_id; 13962306a36Sopenharmony_ci /* response error */ 14062306a36Sopenharmony_ci uint8_t error; 14162306a36Sopenharmony_ci /* tune status */ 14262306a36Sopenharmony_ci struct as10x_tune_status sts; 14362306a36Sopenharmony_ci } __packed rsp; 14462306a36Sopenharmony_ci} __packed; 14562306a36Sopenharmony_ci 14662306a36Sopenharmony_ciunion as10x_get_tps { 14762306a36Sopenharmony_ci /* request */ 14862306a36Sopenharmony_ci struct { 14962306a36Sopenharmony_ci /* request identifier */ 15062306a36Sopenharmony_ci __le16 proc_id; 15162306a36Sopenharmony_ci } __packed req; 15262306a36Sopenharmony_ci /* response */ 15362306a36Sopenharmony_ci struct { 15462306a36Sopenharmony_ci /* response identifier */ 15562306a36Sopenharmony_ci __le16 proc_id; 15662306a36Sopenharmony_ci /* response error */ 15762306a36Sopenharmony_ci uint8_t error; 15862306a36Sopenharmony_ci /* tps details */ 15962306a36Sopenharmony_ci struct as10x_tps tps; 16062306a36Sopenharmony_ci } __packed rsp; 16162306a36Sopenharmony_ci} __packed; 16262306a36Sopenharmony_ci 16362306a36Sopenharmony_ciunion as10x_common { 16462306a36Sopenharmony_ci /* request */ 16562306a36Sopenharmony_ci struct { 16662306a36Sopenharmony_ci /* request identifier */ 16762306a36Sopenharmony_ci __le16 proc_id; 16862306a36Sopenharmony_ci } __packed req; 16962306a36Sopenharmony_ci /* response */ 17062306a36Sopenharmony_ci struct { 17162306a36Sopenharmony_ci /* response identifier */ 17262306a36Sopenharmony_ci __le16 proc_id; 17362306a36Sopenharmony_ci /* response error */ 17462306a36Sopenharmony_ci uint8_t error; 17562306a36Sopenharmony_ci } __packed rsp; 17662306a36Sopenharmony_ci} __packed; 17762306a36Sopenharmony_ci 17862306a36Sopenharmony_ciunion as10x_add_pid_filter { 17962306a36Sopenharmony_ci /* request */ 18062306a36Sopenharmony_ci struct { 18162306a36Sopenharmony_ci /* request identifier */ 18262306a36Sopenharmony_ci __le16 proc_id; 18362306a36Sopenharmony_ci /* PID to filter */ 18462306a36Sopenharmony_ci __le16 pid; 18562306a36Sopenharmony_ci /* stream type (MPE, PSI/SI or PES )*/ 18662306a36Sopenharmony_ci uint8_t stream_type; 18762306a36Sopenharmony_ci /* PID index in filter table */ 18862306a36Sopenharmony_ci uint8_t idx; 18962306a36Sopenharmony_ci } __packed req; 19062306a36Sopenharmony_ci /* response */ 19162306a36Sopenharmony_ci struct { 19262306a36Sopenharmony_ci /* response identifier */ 19362306a36Sopenharmony_ci __le16 proc_id; 19462306a36Sopenharmony_ci /* response error */ 19562306a36Sopenharmony_ci uint8_t error; 19662306a36Sopenharmony_ci /* Filter id */ 19762306a36Sopenharmony_ci uint8_t filter_id; 19862306a36Sopenharmony_ci } __packed rsp; 19962306a36Sopenharmony_ci} __packed; 20062306a36Sopenharmony_ci 20162306a36Sopenharmony_ciunion as10x_del_pid_filter { 20262306a36Sopenharmony_ci /* request */ 20362306a36Sopenharmony_ci struct { 20462306a36Sopenharmony_ci /* request identifier */ 20562306a36Sopenharmony_ci __le16 proc_id; 20662306a36Sopenharmony_ci /* PID to remove */ 20762306a36Sopenharmony_ci __le16 pid; 20862306a36Sopenharmony_ci } __packed req; 20962306a36Sopenharmony_ci /* response */ 21062306a36Sopenharmony_ci struct { 21162306a36Sopenharmony_ci /* response identifier */ 21262306a36Sopenharmony_ci __le16 proc_id; 21362306a36Sopenharmony_ci /* response error */ 21462306a36Sopenharmony_ci uint8_t error; 21562306a36Sopenharmony_ci } __packed rsp; 21662306a36Sopenharmony_ci} __packed; 21762306a36Sopenharmony_ci 21862306a36Sopenharmony_ciunion as10x_start_streaming { 21962306a36Sopenharmony_ci /* request */ 22062306a36Sopenharmony_ci struct { 22162306a36Sopenharmony_ci /* request identifier */ 22262306a36Sopenharmony_ci __le16 proc_id; 22362306a36Sopenharmony_ci } __packed req; 22462306a36Sopenharmony_ci /* response */ 22562306a36Sopenharmony_ci struct { 22662306a36Sopenharmony_ci /* response identifier */ 22762306a36Sopenharmony_ci __le16 proc_id; 22862306a36Sopenharmony_ci /* error */ 22962306a36Sopenharmony_ci uint8_t error; 23062306a36Sopenharmony_ci } __packed rsp; 23162306a36Sopenharmony_ci} __packed; 23262306a36Sopenharmony_ci 23362306a36Sopenharmony_ciunion as10x_stop_streaming { 23462306a36Sopenharmony_ci /* request */ 23562306a36Sopenharmony_ci struct { 23662306a36Sopenharmony_ci /* request identifier */ 23762306a36Sopenharmony_ci __le16 proc_id; 23862306a36Sopenharmony_ci } __packed req; 23962306a36Sopenharmony_ci /* response */ 24062306a36Sopenharmony_ci struct { 24162306a36Sopenharmony_ci /* response identifier */ 24262306a36Sopenharmony_ci __le16 proc_id; 24362306a36Sopenharmony_ci /* error */ 24462306a36Sopenharmony_ci uint8_t error; 24562306a36Sopenharmony_ci } __packed rsp; 24662306a36Sopenharmony_ci} __packed; 24762306a36Sopenharmony_ci 24862306a36Sopenharmony_ciunion as10x_get_demod_stats { 24962306a36Sopenharmony_ci /* request */ 25062306a36Sopenharmony_ci struct { 25162306a36Sopenharmony_ci /* request identifier */ 25262306a36Sopenharmony_ci __le16 proc_id; 25362306a36Sopenharmony_ci } __packed req; 25462306a36Sopenharmony_ci /* response */ 25562306a36Sopenharmony_ci struct { 25662306a36Sopenharmony_ci /* response identifier */ 25762306a36Sopenharmony_ci __le16 proc_id; 25862306a36Sopenharmony_ci /* error */ 25962306a36Sopenharmony_ci uint8_t error; 26062306a36Sopenharmony_ci /* demod stats */ 26162306a36Sopenharmony_ci struct as10x_demod_stats stats; 26262306a36Sopenharmony_ci } __packed rsp; 26362306a36Sopenharmony_ci} __packed; 26462306a36Sopenharmony_ci 26562306a36Sopenharmony_ciunion as10x_get_impulse_resp { 26662306a36Sopenharmony_ci /* request */ 26762306a36Sopenharmony_ci struct { 26862306a36Sopenharmony_ci /* request identifier */ 26962306a36Sopenharmony_ci __le16 proc_id; 27062306a36Sopenharmony_ci } __packed req; 27162306a36Sopenharmony_ci /* response */ 27262306a36Sopenharmony_ci struct { 27362306a36Sopenharmony_ci /* response identifier */ 27462306a36Sopenharmony_ci __le16 proc_id; 27562306a36Sopenharmony_ci /* error */ 27662306a36Sopenharmony_ci uint8_t error; 27762306a36Sopenharmony_ci /* impulse response ready */ 27862306a36Sopenharmony_ci uint8_t is_ready; 27962306a36Sopenharmony_ci } __packed rsp; 28062306a36Sopenharmony_ci} __packed; 28162306a36Sopenharmony_ci 28262306a36Sopenharmony_ciunion as10x_fw_context { 28362306a36Sopenharmony_ci /* request */ 28462306a36Sopenharmony_ci struct { 28562306a36Sopenharmony_ci /* request identifier */ 28662306a36Sopenharmony_ci __le16 proc_id; 28762306a36Sopenharmony_ci /* value to write (for set context)*/ 28862306a36Sopenharmony_ci struct as10x_register_value reg_val; 28962306a36Sopenharmony_ci /* context tag */ 29062306a36Sopenharmony_ci __le16 tag; 29162306a36Sopenharmony_ci /* context request type */ 29262306a36Sopenharmony_ci __le16 type; 29362306a36Sopenharmony_ci } __packed req; 29462306a36Sopenharmony_ci /* response */ 29562306a36Sopenharmony_ci struct { 29662306a36Sopenharmony_ci /* response identifier */ 29762306a36Sopenharmony_ci __le16 proc_id; 29862306a36Sopenharmony_ci /* value read (for get context) */ 29962306a36Sopenharmony_ci struct as10x_register_value reg_val; 30062306a36Sopenharmony_ci /* context request type */ 30162306a36Sopenharmony_ci __le16 type; 30262306a36Sopenharmony_ci /* error */ 30362306a36Sopenharmony_ci uint8_t error; 30462306a36Sopenharmony_ci } __packed rsp; 30562306a36Sopenharmony_ci} __packed; 30662306a36Sopenharmony_ci 30762306a36Sopenharmony_ciunion as10x_set_register { 30862306a36Sopenharmony_ci /* request */ 30962306a36Sopenharmony_ci struct { 31062306a36Sopenharmony_ci /* response identifier */ 31162306a36Sopenharmony_ci __le16 proc_id; 31262306a36Sopenharmony_ci /* register description */ 31362306a36Sopenharmony_ci struct as10x_register_addr reg_addr; 31462306a36Sopenharmony_ci /* register content */ 31562306a36Sopenharmony_ci struct as10x_register_value reg_val; 31662306a36Sopenharmony_ci } __packed req; 31762306a36Sopenharmony_ci /* response */ 31862306a36Sopenharmony_ci struct { 31962306a36Sopenharmony_ci /* response identifier */ 32062306a36Sopenharmony_ci __le16 proc_id; 32162306a36Sopenharmony_ci /* error */ 32262306a36Sopenharmony_ci uint8_t error; 32362306a36Sopenharmony_ci } __packed rsp; 32462306a36Sopenharmony_ci} __packed; 32562306a36Sopenharmony_ci 32662306a36Sopenharmony_ciunion as10x_get_register { 32762306a36Sopenharmony_ci /* request */ 32862306a36Sopenharmony_ci struct { 32962306a36Sopenharmony_ci /* response identifier */ 33062306a36Sopenharmony_ci __le16 proc_id; 33162306a36Sopenharmony_ci /* register description */ 33262306a36Sopenharmony_ci struct as10x_register_addr reg_addr; 33362306a36Sopenharmony_ci } __packed req; 33462306a36Sopenharmony_ci /* response */ 33562306a36Sopenharmony_ci struct { 33662306a36Sopenharmony_ci /* response identifier */ 33762306a36Sopenharmony_ci __le16 proc_id; 33862306a36Sopenharmony_ci /* error */ 33962306a36Sopenharmony_ci uint8_t error; 34062306a36Sopenharmony_ci /* register content */ 34162306a36Sopenharmony_ci struct as10x_register_value reg_val; 34262306a36Sopenharmony_ci } __packed rsp; 34362306a36Sopenharmony_ci} __packed; 34462306a36Sopenharmony_ci 34562306a36Sopenharmony_ciunion as10x_cfg_change_mode { 34662306a36Sopenharmony_ci /* request */ 34762306a36Sopenharmony_ci struct { 34862306a36Sopenharmony_ci /* request identifier */ 34962306a36Sopenharmony_ci __le16 proc_id; 35062306a36Sopenharmony_ci /* mode */ 35162306a36Sopenharmony_ci uint8_t mode; 35262306a36Sopenharmony_ci } __packed req; 35362306a36Sopenharmony_ci /* response */ 35462306a36Sopenharmony_ci struct { 35562306a36Sopenharmony_ci /* response identifier */ 35662306a36Sopenharmony_ci __le16 proc_id; 35762306a36Sopenharmony_ci /* error */ 35862306a36Sopenharmony_ci uint8_t error; 35962306a36Sopenharmony_ci } __packed rsp; 36062306a36Sopenharmony_ci} __packed; 36162306a36Sopenharmony_ci 36262306a36Sopenharmony_cistruct as10x_cmd_header_t { 36362306a36Sopenharmony_ci __le16 req_id; 36462306a36Sopenharmony_ci __le16 prog; 36562306a36Sopenharmony_ci __le16 version; 36662306a36Sopenharmony_ci __le16 data_len; 36762306a36Sopenharmony_ci} __packed; 36862306a36Sopenharmony_ci 36962306a36Sopenharmony_ci#define DUMP_BLOCK_SIZE 16 37062306a36Sopenharmony_ci 37162306a36Sopenharmony_ciunion as10x_dump_memory { 37262306a36Sopenharmony_ci /* request */ 37362306a36Sopenharmony_ci struct { 37462306a36Sopenharmony_ci /* request identifier */ 37562306a36Sopenharmony_ci __le16 proc_id; 37662306a36Sopenharmony_ci /* dump memory type request */ 37762306a36Sopenharmony_ci uint8_t dump_req; 37862306a36Sopenharmony_ci /* register description */ 37962306a36Sopenharmony_ci struct as10x_register_addr reg_addr; 38062306a36Sopenharmony_ci /* nb blocks to read */ 38162306a36Sopenharmony_ci __le16 num_blocks; 38262306a36Sopenharmony_ci } __packed req; 38362306a36Sopenharmony_ci /* response */ 38462306a36Sopenharmony_ci struct { 38562306a36Sopenharmony_ci /* response identifier */ 38662306a36Sopenharmony_ci __le16 proc_id; 38762306a36Sopenharmony_ci /* error */ 38862306a36Sopenharmony_ci uint8_t error; 38962306a36Sopenharmony_ci /* dump response */ 39062306a36Sopenharmony_ci uint8_t dump_rsp; 39162306a36Sopenharmony_ci /* data */ 39262306a36Sopenharmony_ci union { 39362306a36Sopenharmony_ci uint8_t data8[DUMP_BLOCK_SIZE]; 39462306a36Sopenharmony_ci __le16 data16[DUMP_BLOCK_SIZE / sizeof(__le16)]; 39562306a36Sopenharmony_ci __le32 data32[DUMP_BLOCK_SIZE / sizeof(__le32)]; 39662306a36Sopenharmony_ci } __packed u; 39762306a36Sopenharmony_ci } __packed rsp; 39862306a36Sopenharmony_ci} __packed; 39962306a36Sopenharmony_ci 40062306a36Sopenharmony_ciunion as10x_dumplog_memory { 40162306a36Sopenharmony_ci struct { 40262306a36Sopenharmony_ci /* request identifier */ 40362306a36Sopenharmony_ci __le16 proc_id; 40462306a36Sopenharmony_ci /* dump memory type request */ 40562306a36Sopenharmony_ci uint8_t dump_req; 40662306a36Sopenharmony_ci } __packed req; 40762306a36Sopenharmony_ci struct { 40862306a36Sopenharmony_ci /* request identifier */ 40962306a36Sopenharmony_ci __le16 proc_id; 41062306a36Sopenharmony_ci /* error */ 41162306a36Sopenharmony_ci uint8_t error; 41262306a36Sopenharmony_ci /* dump response */ 41362306a36Sopenharmony_ci uint8_t dump_rsp; 41462306a36Sopenharmony_ci /* dump data */ 41562306a36Sopenharmony_ci uint8_t data[DUMP_BLOCK_SIZE]; 41662306a36Sopenharmony_ci } __packed rsp; 41762306a36Sopenharmony_ci} __packed; 41862306a36Sopenharmony_ci 41962306a36Sopenharmony_ciunion as10x_raw_data { 42062306a36Sopenharmony_ci /* request */ 42162306a36Sopenharmony_ci struct { 42262306a36Sopenharmony_ci __le16 proc_id; 42362306a36Sopenharmony_ci uint8_t data[64 - sizeof(struct as10x_cmd_header_t) 42462306a36Sopenharmony_ci - 2 /* proc_id */]; 42562306a36Sopenharmony_ci } __packed req; 42662306a36Sopenharmony_ci /* response */ 42762306a36Sopenharmony_ci struct { 42862306a36Sopenharmony_ci __le16 proc_id; 42962306a36Sopenharmony_ci uint8_t error; 43062306a36Sopenharmony_ci uint8_t data[64 - sizeof(struct as10x_cmd_header_t) 43162306a36Sopenharmony_ci - 2 /* proc_id */ - 1 /* rc */]; 43262306a36Sopenharmony_ci } __packed rsp; 43362306a36Sopenharmony_ci} __packed; 43462306a36Sopenharmony_ci 43562306a36Sopenharmony_cistruct as10x_cmd_t { 43662306a36Sopenharmony_ci struct as10x_cmd_header_t header; 43762306a36Sopenharmony_ci union { 43862306a36Sopenharmony_ci union as10x_turn_on turn_on; 43962306a36Sopenharmony_ci union as10x_turn_off turn_off; 44062306a36Sopenharmony_ci union as10x_set_tune set_tune; 44162306a36Sopenharmony_ci union as10x_get_tune_status get_tune_status; 44262306a36Sopenharmony_ci union as10x_get_tps get_tps; 44362306a36Sopenharmony_ci union as10x_common common; 44462306a36Sopenharmony_ci union as10x_add_pid_filter add_pid_filter; 44562306a36Sopenharmony_ci union as10x_del_pid_filter del_pid_filter; 44662306a36Sopenharmony_ci union as10x_start_streaming start_streaming; 44762306a36Sopenharmony_ci union as10x_stop_streaming stop_streaming; 44862306a36Sopenharmony_ci union as10x_get_demod_stats get_demod_stats; 44962306a36Sopenharmony_ci union as10x_get_impulse_resp get_impulse_rsp; 45062306a36Sopenharmony_ci union as10x_fw_context context; 45162306a36Sopenharmony_ci union as10x_set_register set_register; 45262306a36Sopenharmony_ci union as10x_get_register get_register; 45362306a36Sopenharmony_ci union as10x_cfg_change_mode cfg_change_mode; 45462306a36Sopenharmony_ci union as10x_dump_memory dump_memory; 45562306a36Sopenharmony_ci union as10x_dumplog_memory dumplog_memory; 45662306a36Sopenharmony_ci union as10x_raw_data raw_data; 45762306a36Sopenharmony_ci } __packed body; 45862306a36Sopenharmony_ci} __packed; 45962306a36Sopenharmony_ci 46062306a36Sopenharmony_cistruct as10x_token_cmd_t { 46162306a36Sopenharmony_ci /* token cmd */ 46262306a36Sopenharmony_ci struct as10x_cmd_t c; 46362306a36Sopenharmony_ci /* token response */ 46462306a36Sopenharmony_ci struct as10x_cmd_t r; 46562306a36Sopenharmony_ci} __packed; 46662306a36Sopenharmony_ci 46762306a36Sopenharmony_ci 46862306a36Sopenharmony_ci/**************************/ 46962306a36Sopenharmony_ci/* FUNCTION DECLARATION */ 47062306a36Sopenharmony_ci/**************************/ 47162306a36Sopenharmony_ci 47262306a36Sopenharmony_civoid as10x_cmd_build(struct as10x_cmd_t *pcmd, uint16_t proc_id, 47362306a36Sopenharmony_ci uint16_t cmd_len); 47462306a36Sopenharmony_ciint as10x_rsp_parse(struct as10x_cmd_t *r, uint16_t proc_id); 47562306a36Sopenharmony_ci 47662306a36Sopenharmony_ci/* as10x cmd */ 47762306a36Sopenharmony_ciint as10x_cmd_turn_on(struct as10x_bus_adapter_t *adap); 47862306a36Sopenharmony_ciint as10x_cmd_turn_off(struct as10x_bus_adapter_t *adap); 47962306a36Sopenharmony_ci 48062306a36Sopenharmony_ciint as10x_cmd_set_tune(struct as10x_bus_adapter_t *adap, 48162306a36Sopenharmony_ci struct as10x_tune_args *ptune); 48262306a36Sopenharmony_ci 48362306a36Sopenharmony_ciint as10x_cmd_get_tune_status(struct as10x_bus_adapter_t *adap, 48462306a36Sopenharmony_ci struct as10x_tune_status *pstatus); 48562306a36Sopenharmony_ci 48662306a36Sopenharmony_ciint as10x_cmd_get_tps(struct as10x_bus_adapter_t *adap, 48762306a36Sopenharmony_ci struct as10x_tps *ptps); 48862306a36Sopenharmony_ci 48962306a36Sopenharmony_ciint as10x_cmd_get_demod_stats(struct as10x_bus_adapter_t *adap, 49062306a36Sopenharmony_ci struct as10x_demod_stats *pdemod_stats); 49162306a36Sopenharmony_ci 49262306a36Sopenharmony_ciint as10x_cmd_get_impulse_resp(struct as10x_bus_adapter_t *adap, 49362306a36Sopenharmony_ci uint8_t *is_ready); 49462306a36Sopenharmony_ci 49562306a36Sopenharmony_ci/* as10x cmd stream */ 49662306a36Sopenharmony_ciint as10x_cmd_add_PID_filter(struct as10x_bus_adapter_t *adap, 49762306a36Sopenharmony_ci struct as10x_ts_filter *filter); 49862306a36Sopenharmony_ciint as10x_cmd_del_PID_filter(struct as10x_bus_adapter_t *adap, 49962306a36Sopenharmony_ci uint16_t pid_value); 50062306a36Sopenharmony_ci 50162306a36Sopenharmony_ciint as10x_cmd_start_streaming(struct as10x_bus_adapter_t *adap); 50262306a36Sopenharmony_ciint as10x_cmd_stop_streaming(struct as10x_bus_adapter_t *adap); 50362306a36Sopenharmony_ci 50462306a36Sopenharmony_ci/* as10x cmd cfg */ 50562306a36Sopenharmony_ciint as10x_cmd_set_context(struct as10x_bus_adapter_t *adap, 50662306a36Sopenharmony_ci uint16_t tag, 50762306a36Sopenharmony_ci uint32_t value); 50862306a36Sopenharmony_ciint as10x_cmd_get_context(struct as10x_bus_adapter_t *adap, 50962306a36Sopenharmony_ci uint16_t tag, 51062306a36Sopenharmony_ci uint32_t *pvalue); 51162306a36Sopenharmony_ci 51262306a36Sopenharmony_ciint as10x_cmd_eLNA_change_mode(struct as10x_bus_adapter_t *adap, uint8_t mode); 51362306a36Sopenharmony_ciint as10x_context_rsp_parse(struct as10x_cmd_t *prsp, uint16_t proc_id); 51462306a36Sopenharmony_ci#endif 515