Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/C/Linux/drivers/media/platform/nxp/imx8-isi/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 2 kB image not shown  

Quelle  imx8-isi-gasket.c   Sprache: C

 
// SPDX-License-Identifier: GPL-2.0
/*
 * Copyright 2019-2023 NXP
 */


#include <linux/regmap.h>

#include <media/mipi-csi2.h>

#include "imx8-isi-core.h"

/* -----------------------------------------------------------------------------
 * i.MX8MN and i.MX8MP gasket
 */


#define GASKET_BASE(n)    (0x0060 + (n) * 0x30)

#define GASKET_CTRL    0x0000
#define GASKET_CTRL_DATA_TYPE(dt)  ((dt) << 8)
#define GASKET_CTRL_DATA_TYPE_MASK  (0x3f << 8)
#define GASKET_CTRL_DUAL_COMP_ENABLE  BIT(1)
#define GASKET_CTRL_ENABLE   BIT(0)

#define GASKET_HSIZE    0x0004
#define GASKET_VSIZE    0x0008

static void mxc_imx8_gasket_enable(struct mxc_isi_dev *isi,
       const struct v4l2_mbus_frame_desc *fd,
       const struct v4l2_mbus_framefmt *fmt,
       const unsigned int port)
{
 u32 val;

 regmap_write(isi->gasket, GASKET_BASE(port) + GASKET_HSIZE, fmt->width);
 regmap_write(isi->gasket, GASKET_BASE(port) + GASKET_VSIZE, fmt->height);

 val = GASKET_CTRL_DATA_TYPE(fd->entry[0].bus.csi2.dt);
 if (fd->entry[0].bus.csi2.dt == MIPI_CSI2_DT_YUV422_8B)
  val |= GASKET_CTRL_DUAL_COMP_ENABLE;

 val |= GASKET_CTRL_ENABLE;
 regmap_write(isi->gasket, GASKET_BASE(port) + GASKET_CTRL, val);
}

static void mxc_imx8_gasket_disable(struct mxc_isi_dev *isi,
        const unsigned int port)
{
 regmap_write(isi->gasket, GASKET_BASE(port) + GASKET_CTRL, 0);
}

const struct mxc_gasket_ops mxc_imx8_gasket_ops = {
 .enable = mxc_imx8_gasket_enable,
 .disable = mxc_imx8_gasket_disable,
};

/* -----------------------------------------------------------------------------
 * i.MX93 gasket
 */


#define DISP_MIX_CAMERA_MUX                     0x30
#define DISP_MIX_CAMERA_MUX_DATA_TYPE(x)        (((x) & 0x3f) << 3)
#define DISP_MIX_CAMERA_MUX_GASKET_ENABLE       BIT(16)

static void mxc_imx93_gasket_enable(struct mxc_isi_dev *isi,
        const struct v4l2_mbus_frame_desc *fd,
        const struct v4l2_mbus_framefmt *fmt,
        const unsigned int port)
{
 u32 val;

 val = DISP_MIX_CAMERA_MUX_DATA_TYPE(fd->entry[0].bus.csi2.dt);
 val |= DISP_MIX_CAMERA_MUX_GASKET_ENABLE;
 regmap_write(isi->gasket, DISP_MIX_CAMERA_MUX, val);
}

static void mxc_imx93_gasket_disable(struct mxc_isi_dev *isi,
         unsigned int port)
{
 regmap_write(isi->gasket, DISP_MIX_CAMERA_MUX, 0);
}

const struct mxc_gasket_ops mxc_imx93_gasket_ops = {
 .enable = mxc_imx93_gasket_enable,
 .disable = mxc_imx93_gasket_disable,
};

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

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