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

Quelle  netup-init.c   Sprache: C

 
// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * netup-init.c
 *
 * NetUP Dual DVB-S2 CI driver
 *
 * Copyright (C) 2009 NetUP Inc.
 * Copyright (C) 2009 Igor M. Liplianin <liplianin@netup.ru>
 * Copyright (C) 2009 Abylay Ospan <aospan@netup.ru>
 */


#include "cx23885.h"
#include "netup-init.h"

static void i2c_av_write(struct i2c_adapter *i2c, u16 reg, u8 val)
{
 int ret;
 u8 buf[3];
 struct i2c_msg msg = {
  .addr = 0x88 >> 1,
  .flags = 0,
  .buf = buf,
  .len = 3
 };

 buf[0] = reg >> 8;
 buf[1] = reg & 0xff;
 buf[2] = val;

 ret = i2c_transfer(i2c, &msg, 1);

 if (ret != 1)
  pr_err("%s: i2c write error!\n", __func__);
}

static void i2c_av_write4(struct i2c_adapter *i2c, u16 reg, u32 val)
{
 int ret;
 u8 buf[6];
 struct i2c_msg msg = {
  .addr = 0x88 >> 1,
  .flags = 0,
  .buf = buf,
  .len = 6
 };

 buf[0] = reg >> 8;
 buf[1] = reg & 0xff;
 buf[2] = val & 0xff;
 buf[3] = (val >> 8) & 0xff;
 buf[4] = (val >> 16) & 0xff;
 buf[5] = val >> 24;

 ret = i2c_transfer(i2c, &msg, 1);

 if (ret != 1)
  pr_err("%s: i2c write error!\n", __func__);
}

static u8 i2c_av_read(struct i2c_adapter *i2c, u16 reg)
{
 int ret;
 u8 buf[2];
 struct i2c_msg msg = {
  .addr = 0x88 >> 1,
  .flags = 0,
  .buf = buf,
  .len = 2
 };

 buf[0] = reg >> 8;
 buf[1] = reg & 0xff;

 ret = i2c_transfer(i2c, &msg, 1);

 if (ret != 1)
  pr_err("%s: i2c write error!\n", __func__);

 msg.flags = I2C_M_RD;
 msg.len = 1;

 ret = i2c_transfer(i2c, &msg, 1);

 if (ret != 1)
  pr_err("%s: i2c read error!\n", __func__);

 return buf[0];
}

static void i2c_av_and_or(struct i2c_adapter *i2c, u16 reg, unsigned and_mask,
        u8 or_value)
{
 i2c_av_write(i2c, reg, (i2c_av_read(i2c, reg) & and_mask) | or_value);
}
/* set 27MHz on AUX_CLK */
void netup_initialize(struct cx23885_dev *dev)
{
 struct cx23885_i2c *i2c_bus = &dev->i2c_bus[2];
 struct i2c_adapter *i2c = &i2c_bus->i2c_adap;

 /* Stop microcontroller */
 i2c_av_and_or(i2c, 0x803, ~0x10, 0x00);

 /* Aux PLL frac for 27 MHz */
 i2c_av_write4(i2c, 0x114, 0xea0eb3);

 /* Aux PLL int for 27 MHz */
 i2c_av_write4(i2c, 0x110, 0x090319);

 /* start microcontroller */
 i2c_av_and_or(i2c, 0x803, ~0x10, 0x10);
}

Messung V0.5
C=93 H=94 G=93

¤ Dauer der Verarbeitung: 0.2 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.