cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

m88ds3103_priv.h (6770B)


      1/* SPDX-License-Identifier: GPL-2.0-or-later */
      2/*
      3 * Montage Technology M88DS3103/M88RS6000 demodulator driver
      4 *
      5 * Copyright (C) 2013 Antti Palosaari <crope@iki.fi>
      6 */
      7
      8#ifndef M88DS3103_PRIV_H
      9#define M88DS3103_PRIV_H
     10
     11#include <media/dvb_frontend.h>
     12#include "m88ds3103.h"
     13#include <media/dvb_math.h>
     14#include <linux/firmware.h>
     15#include <linux/i2c-mux.h>
     16#include <linux/regmap.h>
     17#include <linux/math64.h>
     18
     19#define M88DS3103B_FIRMWARE "dvb-demod-m88ds3103b.fw"
     20#define M88DS3103_FIRMWARE  "dvb-demod-m88ds3103.fw"
     21#define M88RS6000_FIRMWARE  "dvb-demod-m88rs6000.fw"
     22
     23#define M88RS6000_CHIP_ID 0x74
     24#define M88DS3103_CHIP_ID 0x70
     25
     26#define M88DS3103_CHIPTYPE_3103   0
     27#define M88DS3103_CHIPTYPE_RS6000 1
     28#define M88DS3103_CHIPTYPE_3103B  2
     29
     30struct m88ds3103_dev {
     31	struct i2c_client *client;
     32	struct i2c_client *dt_client;
     33	struct regmap_config regmap_config;
     34	struct regmap *regmap;
     35	struct m88ds3103_config config;
     36	const struct m88ds3103_config *cfg;
     37	struct dvb_frontend fe;
     38	enum fe_delivery_system delivery_system;
     39	enum fe_status fe_status;
     40	u32 dvbv3_ber; /* for old DVBv3 API read_ber */
     41	bool warm; /* FW running */
     42	struct i2c_mux_core *muxc;
     43	/* auto detect chip id to do different config */
     44	u8 chip_id;
     45	/* chip type to differentiate m88rs6000 from m88ds3103b */
     46	u8 chiptype;
     47	/* main mclk is calculated for M88RS6000 dynamically */
     48	s32 mclk;
     49	u64 post_bit_error;
     50	u64 post_bit_count;
     51	u8 dt_addr;
     52};
     53
     54struct m88ds3103_reg_val {
     55	u8 reg;
     56	u8 val;
     57};
     58
     59static const struct m88ds3103_reg_val m88ds3103_dvbs_init_reg_vals[] = {
     60	{0x23, 0x07},
     61	{0x08, 0x03},
     62	{0x0c, 0x02},
     63	{0x21, 0x54},
     64	{0x25, 0x8a},
     65	{0x27, 0x31},
     66	{0x30, 0x08},
     67	{0x31, 0x40},
     68	{0x32, 0x32},
     69	{0x35, 0xff},
     70	{0x3a, 0x00},
     71	{0x37, 0x10},
     72	{0x38, 0x10},
     73	{0x39, 0x02},
     74	{0x42, 0x60},
     75	{0x4a, 0x80},
     76	{0x4b, 0x04},
     77	{0x4d, 0x91},
     78	{0x5d, 0xc8},
     79	{0x50, 0x36},
     80	{0x51, 0x36},
     81	{0x52, 0x36},
     82	{0x53, 0x36},
     83	{0x56, 0x01},
     84	{0x63, 0x0f},
     85	{0x64, 0x30},
     86	{0x65, 0x40},
     87	{0x68, 0x26},
     88	{0x69, 0x4c},
     89	{0x70, 0x20},
     90	{0x71, 0x70},
     91	{0x72, 0x04},
     92	{0x73, 0x00},
     93	{0x70, 0x40},
     94	{0x71, 0x70},
     95	{0x72, 0x04},
     96	{0x73, 0x00},
     97	{0x70, 0x60},
     98	{0x71, 0x70},
     99	{0x72, 0x04},
    100	{0x73, 0x00},
    101	{0x70, 0x80},
    102	{0x71, 0x70},
    103	{0x72, 0x04},
    104	{0x73, 0x00},
    105	{0x70, 0xa0},
    106	{0x71, 0x70},
    107	{0x72, 0x04},
    108	{0x73, 0x00},
    109	{0x70, 0x1f},
    110	{0x76, 0x38},
    111	{0x77, 0xa6},
    112	{0x78, 0x0c},
    113	{0x79, 0x80},
    114	{0x7f, 0x14},
    115	{0x7c, 0x00},
    116	{0xae, 0x82},
    117	{0x80, 0x64},
    118	{0x81, 0x66},
    119	{0x82, 0x44},
    120	{0x85, 0x04},
    121	{0xcd, 0xf4},
    122	{0x90, 0x33},
    123	{0xa0, 0x44},
    124	{0xc0, 0x08},
    125	{0xc3, 0x10},
    126	{0xc4, 0x08},
    127	{0xc5, 0xf0},
    128	{0xc6, 0xff},
    129	{0xc7, 0x00},
    130	{0xc8, 0x1a},
    131	{0xc9, 0x80},
    132	{0xe0, 0xf8},
    133	{0xe6, 0x8b},
    134	{0xd0, 0x40},
    135	{0xf8, 0x20},
    136	{0xfa, 0x0f},
    137	{0x00, 0x00},
    138	{0xbd, 0x01},
    139	{0xb8, 0x00},
    140};
    141
    142static const struct m88ds3103_reg_val m88ds3103_dvbs2_init_reg_vals[] = {
    143	{0x23, 0x07},
    144	{0x08, 0x07},
    145	{0x0c, 0x02},
    146	{0x21, 0x54},
    147	{0x25, 0x8a},
    148	{0x27, 0x31},
    149	{0x30, 0x08},
    150	{0x32, 0x32},
    151	{0x35, 0xff},
    152	{0x3a, 0x00},
    153	{0x37, 0x10},
    154	{0x38, 0x10},
    155	{0x39, 0x02},
    156	{0x42, 0x60},
    157	{0x4a, 0x80},
    158	{0x4b, 0x04},
    159	{0x4d, 0x91},
    160	{0x5d, 0xc8},
    161	{0x50, 0x36},
    162	{0x51, 0x36},
    163	{0x52, 0x36},
    164	{0x53, 0x36},
    165	{0x56, 0x01},
    166	{0x63, 0x0f},
    167	{0x64, 0x10},
    168	{0x65, 0x20},
    169	{0x68, 0x46},
    170	{0x69, 0xcd},
    171	{0x70, 0x20},
    172	{0x71, 0x70},
    173	{0x72, 0x04},
    174	{0x73, 0x00},
    175	{0x70, 0x40},
    176	{0x71, 0x70},
    177	{0x72, 0x04},
    178	{0x73, 0x00},
    179	{0x70, 0x60},
    180	{0x71, 0x70},
    181	{0x72, 0x04},
    182	{0x73, 0x00},
    183	{0x70, 0x80},
    184	{0x71, 0x70},
    185	{0x72, 0x04},
    186	{0x73, 0x00},
    187	{0x70, 0xa0},
    188	{0x71, 0x70},
    189	{0x72, 0x04},
    190	{0x73, 0x00},
    191	{0x70, 0x1f},
    192	{0x76, 0x38},
    193	{0x77, 0xa6},
    194	{0x78, 0x0c},
    195	{0x79, 0x80},
    196	{0x7f, 0x14},
    197	{0x85, 0x08},
    198	{0xcd, 0xf4},
    199	{0x90, 0x33},
    200	{0x86, 0x00},
    201	{0x87, 0x0f},
    202	{0x89, 0x00},
    203	{0x8b, 0x44},
    204	{0x8c, 0x66},
    205	{0x9d, 0xc1},
    206	{0x8a, 0x10},
    207	{0xad, 0x40},
    208	{0xa0, 0x44},
    209	{0xc0, 0x08},
    210	{0xc1, 0x10},
    211	{0xc2, 0x08},
    212	{0xc3, 0x10},
    213	{0xc4, 0x08},
    214	{0xc5, 0xf0},
    215	{0xc6, 0xff},
    216	{0xc7, 0x00},
    217	{0xc8, 0x1a},
    218	{0xc9, 0x80},
    219	{0xca, 0x23},
    220	{0xcb, 0x24},
    221	{0xcc, 0xf4},
    222	{0xce, 0x74},
    223	{0x00, 0x00},
    224	{0xbd, 0x01},
    225	{0xb8, 0x00},
    226};
    227
    228static const struct m88ds3103_reg_val m88rs6000_dvbs_init_reg_vals[] = {
    229	{0x23, 0x07},
    230	{0x08, 0x03},
    231	{0x0c, 0x02},
    232	{0x20, 0x00},
    233	{0x21, 0x54},
    234	{0x25, 0x82},
    235	{0x27, 0x31},
    236	{0x30, 0x08},
    237	{0x31, 0x40},
    238	{0x32, 0x32},
    239	{0x33, 0x35},
    240	{0x35, 0xff},
    241	{0x3a, 0x00},
    242	{0x37, 0x10},
    243	{0x38, 0x10},
    244	{0x39, 0x02},
    245	{0x42, 0x60},
    246	{0x4a, 0x80},
    247	{0x4b, 0x04},
    248	{0x4d, 0x91},
    249	{0x5d, 0xc8},
    250	{0x50, 0x36},
    251	{0x51, 0x36},
    252	{0x52, 0x36},
    253	{0x53, 0x36},
    254	{0x63, 0x0f},
    255	{0x64, 0x30},
    256	{0x65, 0x40},
    257	{0x68, 0x26},
    258	{0x69, 0x4c},
    259	{0x70, 0x20},
    260	{0x71, 0x70},
    261	{0x72, 0x04},
    262	{0x73, 0x00},
    263	{0x70, 0x40},
    264	{0x71, 0x70},
    265	{0x72, 0x04},
    266	{0x73, 0x00},
    267	{0x70, 0x60},
    268	{0x71, 0x70},
    269	{0x72, 0x04},
    270	{0x73, 0x00},
    271	{0x70, 0x80},
    272	{0x71, 0x70},
    273	{0x72, 0x04},
    274	{0x73, 0x00},
    275	{0x70, 0xa0},
    276	{0x71, 0x70},
    277	{0x72, 0x04},
    278	{0x73, 0x00},
    279	{0x70, 0x1f},
    280	{0x76, 0x38},
    281	{0x77, 0xa6},
    282	{0x78, 0x0c},
    283	{0x79, 0x80},
    284	{0x7f, 0x14},
    285	{0x7c, 0x00},
    286	{0xae, 0x82},
    287	{0x80, 0x64},
    288	{0x81, 0x66},
    289	{0x82, 0x44},
    290	{0x85, 0x04},
    291	{0xcd, 0xf4},
    292	{0x90, 0x33},
    293	{0xa0, 0x44},
    294	{0xbe, 0x00},
    295	{0xc0, 0x08},
    296	{0xc3, 0x10},
    297	{0xc4, 0x08},
    298	{0xc5, 0xf0},
    299	{0xc6, 0xff},
    300	{0xc7, 0x00},
    301	{0xc8, 0x1a},
    302	{0xc9, 0x80},
    303	{0xe0, 0xf8},
    304	{0xe6, 0x8b},
    305	{0xd0, 0x40},
    306	{0xf8, 0x20},
    307	{0xfa, 0x0f},
    308	{0x00, 0x00},
    309	{0xbd, 0x01},
    310	{0xb8, 0x00},
    311	{0x29, 0x11},
    312};
    313
    314static const struct m88ds3103_reg_val m88rs6000_dvbs2_init_reg_vals[] = {
    315	{0x23, 0x07},
    316	{0x08, 0x07},
    317	{0x0c, 0x02},
    318	{0x20, 0x00},
    319	{0x21, 0x54},
    320	{0x25, 0x82},
    321	{0x27, 0x31},
    322	{0x30, 0x08},
    323	{0x32, 0x32},
    324	{0x33, 0x35},
    325	{0x35, 0xff},
    326	{0x3a, 0x00},
    327	{0x37, 0x10},
    328	{0x38, 0x10},
    329	{0x39, 0x02},
    330	{0x42, 0x60},
    331	{0x4a, 0x80},
    332	{0x4b, 0x04},
    333	{0x4d, 0x91},
    334	{0x5d, 0xc8},
    335	{0x50, 0x36},
    336	{0x51, 0x36},
    337	{0x52, 0x36},
    338	{0x53, 0x36},
    339	{0x63, 0x0f},
    340	{0x64, 0x10},
    341	{0x65, 0x20},
    342	{0x68, 0x46},
    343	{0x69, 0xcd},
    344	{0x70, 0x20},
    345	{0x71, 0x70},
    346	{0x72, 0x04},
    347	{0x73, 0x00},
    348	{0x70, 0x40},
    349	{0x71, 0x70},
    350	{0x72, 0x04},
    351	{0x73, 0x00},
    352	{0x70, 0x60},
    353	{0x71, 0x70},
    354	{0x72, 0x04},
    355	{0x73, 0x00},
    356	{0x70, 0x80},
    357	{0x71, 0x70},
    358	{0x72, 0x04},
    359	{0x73, 0x00},
    360	{0x70, 0xa0},
    361	{0x71, 0x70},
    362	{0x72, 0x04},
    363	{0x73, 0x00},
    364	{0x70, 0x1f},
    365	{0x76, 0x38},
    366	{0x77, 0xa6},
    367	{0x78, 0x0c},
    368	{0x79, 0x80},
    369	{0x7f, 0x14},
    370	{0x85, 0x08},
    371	{0xcd, 0xf4},
    372	{0x90, 0x33},
    373	{0x86, 0x00},
    374	{0x87, 0x0f},
    375	{0x89, 0x00},
    376	{0x8b, 0x44},
    377	{0x8c, 0x66},
    378	{0x9d, 0xc1},
    379	{0x8a, 0x10},
    380	{0xad, 0x40},
    381	{0xa0, 0x44},
    382	{0xbe, 0x00},
    383	{0xc0, 0x08},
    384	{0xc1, 0x10},
    385	{0xc2, 0x08},
    386	{0xc3, 0x10},
    387	{0xc4, 0x08},
    388	{0xc5, 0xf0},
    389	{0xc6, 0xff},
    390	{0xc7, 0x00},
    391	{0xc8, 0x1a},
    392	{0xc9, 0x80},
    393	{0xca, 0x23},
    394	{0xcb, 0x24},
    395	{0xcc, 0xf4},
    396	{0xce, 0x74},
    397	{0x00, 0x00},
    398	{0xbd, 0x01},
    399	{0xb8, 0x00},
    400	{0x29, 0x01},
    401};
    402#endif