Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  ccs-quirk.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * drivers/media/i2c/ccs/ccs-quirk.h
 *
 * Generic driver for MIPI CCS/SMIA/SMIA++ compliant camera sensors
 *
 * Copyright (C) 2020 Intel Corporation
 * Copyright (C) 2011--2012 Nokia Corporation
 * Contact: Sakari Ailus <sakari.ailus@linux.intel.com>
 */


#ifndef __CCS_QUIRK__
#define __CCS_QUIRK__

struct ccs_sensor;

/**
 * struct ccs_quirk - quirks for sensors that deviate from SMIA++ standard
 *
 * @limits: Replace sensor->limits with values which can't be read from
 *     sensor registers. Called the first time the sensor is powered up.
 * @post_poweron: Called always after the sensor has been fully powered on.
 * @pre_streamon: Called just before streaming is enabled.
 * @post_streamoff: Called right after stopping streaming.
 * @pll_flags: Return flags for the PLL calculator.
 * @init: Quirk initialisation, called the last in probe(). This is
 *   also appropriate for adding sensor specific controls, for instance.
 * @reg_access: Register access quirk. The quirk may divert the access
 * to another register, or no register at all.
 *
 * -write: Is this read (false) or write (true) access?
 * -reg:   Pointer to the register to access
 * -val:   Register value, set by the caller on write, or
 * by the quirk on read
 * -return: 0 on success, -ENOIOCTLCMD if no register
 *  access may be done by the caller (default read
 *  value is zero), else negative error code on error
 * @flags: Quirk flags
 */

struct ccs_quirk {
 int (*limits)(struct ccs_sensor *sensor);
 int (*post_poweron)(struct ccs_sensor *sensor);
 int (*pre_streamon)(struct ccs_sensor *sensor);
 int (*post_streamoff)(struct ccs_sensor *sensor);
 unsigned long (*pll_flags)(struct ccs_sensor *sensor);
 int (*init)(struct ccs_sensor *sensor);
 int (*reg_access)(struct ccs_sensor *sensor, bool write, u32 *reg,
     u32 *val);
 unsigned long flags;
};

#define CCS_QUIRK_FLAG_8BIT_READ_ONLY   (1 << 0)

struct ccs_reg_8 {
 u16 reg;
 u8 val;
};

#define CCS_MK_QUIRK_REG_8(_reg, _val) \
 {    \
  .reg = (u16)_reg, \
  .val = _val,  \
 }

#define ccs_call_quirk(sensor, _quirk, ...)    \
 ((sensor)->minfo.quirk &&     \
  (sensor)->minfo.quirk->_quirk ?    \
  (sensor)->minfo.quirk->_quirk(sensor, ##__VA_ARGS__) : 0)

#define ccs_needs_quirk(sensor, _quirk)  \
 ((sensor)->minfo.quirk ?   \
  (sensor)->minfo.quirk->flags & _quirk : 0)

extern const struct ccs_quirk smiapp_jt8ev1_quirk;
extern const struct ccs_quirk smiapp_imx125es_quirk;
extern const struct ccs_quirk smiapp_jt8ew9_quirk;
extern const struct ccs_quirk smiapp_tcm8500md_quirk;

#endif /* __CCS_QUIRK__ */

Messung V0.5
C=96 H=100 G=97

¤ Dauer der Verarbeitung: 0.15 Sekunden  (vorverarbeitet)  ¤

*© 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.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge