Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/drivers/media/dvb-frontends/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 3 kB image not shown  

Quelle  tda1004x.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0-or-later */
  /*
     Driver for Philips tda1004xh OFDM Frontend

     (c) 2004 Andrew de Quincey


   */


#ifndef TDA1004X_H
#define TDA1004X_H

#include <linux/dvb/frontend.h>
#include <linux/firmware.h>

enum tda10046_xtal {
 TDA10046_XTAL_4M,
 TDA10046_XTAL_16M,
};

enum tda10046_agc {
 TDA10046_AGC_DEFAULT,  /* original configuration */
 TDA10046_AGC_IFO_AUTO_NEG, /* IF AGC only, automatic, negative */
 TDA10046_AGC_IFO_AUTO_POS, /* IF AGC only, automatic, positive */
 TDA10046_AGC_TDA827X,  /* IF AGC only, special setup for tda827x */
};

/* Many (hybrid) boards use GPIO 1 and 3
GPIO1 analog - dvb switch
GPIO3 firmware eeprom address switch
*/

enum tda10046_gpio {
 TDA10046_GPTRI  = 0x00,  /* All GPIOs tristate */
 TDA10046_GP00   = 0x40,  /* GPIO3=0, GPIO1=0 */
 TDA10046_GP01   = 0x42,  /* GPIO3=0, GPIO1=1 */
 TDA10046_GP10   = 0x48,  /* GPIO3=1, GPIO1=0 */
 TDA10046_GP11   = 0x4a,  /* GPIO3=1, GPIO1=1 */
 TDA10046_GP00_I = 0x80,  /* GPIO3=0, GPIO1=0, invert in sleep mode*/
 TDA10046_GP01_I = 0x82,  /* GPIO3=0, GPIO1=1, invert in sleep mode */
 TDA10046_GP10_I = 0x88,  /* GPIO3=1, GPIO1=0, invert in sleep mode */
 TDA10046_GP11_I = 0x8a,  /* GPIO3=1, GPIO1=1, invert in sleep mode */
};

enum tda10046_if {
 TDA10046_FREQ_3617,  /* original config, 36,166 MHZ */
 TDA10046_FREQ_3613,  /* 36,13 MHZ */
 TDA10046_FREQ_045,  /* low IF, 4.0, 4.5, or 5.0 MHZ */
 TDA10046_FREQ_052,  /* low IF, 5.1667 MHZ for tda9889 */
};

enum tda10046_tsout {
 TDA10046_TS_PARALLEL  = 0x00, /* parallel transport stream, default */
 TDA10046_TS_SERIAL    = 0x01, /* serial transport stream */
};

struct tda1004x_config
{
 /* the demodulator's i2c address */
 u8 demod_address;

 /* does the "inversion" need inverted? */
 u8 invert;

 /* Does the OCLK signal need inverted? */
 u8 invert_oclk;

 /* parallel or serial transport stream */
 enum tda10046_tsout ts_mode;

 /* Xtal frequency, 4 or 16MHz*/
 enum tda10046_xtal xtal_freq;

 /* IF frequency */
 enum tda10046_if if_freq;

 /* AGC configuration */
 enum tda10046_agc agc_config;

 /* setting of GPIO1 and 3 */
 enum tda10046_gpio gpio_config;

 /* slave address and configuration of the tuner */
 u8 tuner_address;
 u8 antenna_switch;

 /* if the board uses another I2c Bridge (tda8290), its address */
 u8 i2c_gate;

 /* request firmware for device */
 int (*request_firmware)(struct dvb_frontend* fe, const struct firmware **fw, char* name);
};

enum tda1004x_demod {
 TDA1004X_DEMOD_TDA10045,
 TDA1004X_DEMOD_TDA10046,
};

struct tda1004x_state {
 struct i2c_adapter* i2c;
 const struct tda1004x_config* config;
 struct dvb_frontend frontend;

 /* private demod data */
 enum tda1004x_demod demod_type;
};

#if IS_REACHABLE(CONFIG_DVB_TDA1004X)
extern struct dvb_frontend* tda10045_attach(const struct tda1004x_config* config,
         struct i2c_adapter* i2c);

extern struct dvb_frontend* tda10046_attach(const struct tda1004x_config* config,
         struct i2c_adapter* i2c);
#else
static inline struct dvb_frontend* tda10045_attach(const struct tda1004x_config* config,
         struct i2c_adapter* i2c)
{
 printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
 return NULL;
}
static inline struct dvb_frontend* tda10046_attach(const struct tda1004x_config* config,
         struct i2c_adapter* i2c)
{
 printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
 return NULL;
}
#endif // CONFIG_DVB_TDA1004X

static inline int tda1004x_writereg(struct dvb_frontend *fe, u8 reg, u8 val) {
 int r = 0;
 u8 buf[] = {reg, val};
 if (fe->ops.write)
  r = fe->ops.write(fe, buf, 2);
 return r;
}

#endif // TDA1004X_H

Messung V0.5
C=74 H=100 G=87

¤ Dauer der Verarbeitung: 0.3 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.