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

Quelle  kmb_drv.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0-only
 *
 * Copyright © 2018-2020 Intel Corporation
 */


#ifndef __KMB_DRV_H__
#define __KMB_DRV_H__

#include <drm/drm_device.h>

#include "kmb_plane.h"
#include "kmb_regs.h"

#define KMB_MAX_WIDTH   1920 /*Max width in pixels */
#define KMB_MAX_HEIGHT   1080 /*Max height in pixels */
#define KMB_MIN_WIDTH                   1920 /*Max width in pixels */
#define KMB_MIN_HEIGHT                  1080 /*Max height in pixels */

#define DRIVER_MAJOR   1
#define DRIVER_MINOR   1

/* Platform definitions */
#define KMB_CRTC_MIN_VFP  4
#define KMB_CRTC_MAX_WIDTH  1920 /* max width in pixels */
#define KMB_CRTC_MAX_HEIGHT  1080 /* max height in pixels */
#define KMB_CRTC_MIN_WIDTH  1920
#define KMB_CRTC_MIN_HEIGHT  1080
#define KMB_FB_MAX_WIDTH  1920
#define KMB_FB_MAX_HEIGHT  1080
#define KMB_FB_MIN_WIDTH  1
#define KMB_FB_MIN_HEIGHT  1
#define KMB_MIN_VREFRESH  59    /*vertical refresh in Hz */
#define KMB_MAX_VREFRESH  60    /*vertical refresh in Hz */
#define KMB_LCD_DEFAULT_CLK  200000000
#define KMB_SYS_CLK_MHZ   500

#define ICAM_MMIO  0x3b100000
#define ICAM_LCD_OFFSET  0x1080
#define ICAM_MMIO_SIZE  0x2000

struct kmb_dsi;

struct kmb_clock {
 struct clk *clk_lcd;
 struct clk *clk_pll0;
};

struct kmb_drm_private {
 struct drm_device  drm;
 struct kmb_dsi   *kmb_dsi;
 void __iomem   *lcd_mmio;
 struct kmb_clock  kmb_clk;
 struct drm_crtc   crtc;
 struct kmb_plane  *plane;
 struct drm_atomic_state  *state;
 spinlock_t   irq_lock;
 int    irq_lcd;
 int    sys_clk_mhz;
 struct disp_cfg   init_disp_cfg[KMB_MAX_PLANES];
 struct layer_status  plane_status[KMB_MAX_PLANES];
 int    kmb_under_flow;
 int    kmb_flush_done;
 int    layer_no;
};

static inline struct kmb_drm_private *to_kmb(const struct drm_device *dev)
{
 return container_of(dev, struct kmb_drm_private, drm);
}

static inline struct kmb_drm_private *crtc_to_kmb_priv(const struct drm_crtc *x)
{
 return container_of(x, struct kmb_drm_private, crtc);
}

static inline void kmb_write_lcd(struct kmb_drm_private *dev_p,
     unsigned int reg, u32 value)
{
 writel(value, (dev_p->lcd_mmio + reg));
}

static inline u32 kmb_read_lcd(struct kmb_drm_private *dev_p, unsigned int reg)
{
 return readl(dev_p->lcd_mmio + reg);
}

static inline void kmb_set_bitmask_lcd(struct kmb_drm_private *dev_p,
           unsigned int reg, u32 mask)
{
 u32 reg_val = kmb_read_lcd(dev_p, reg);

 kmb_write_lcd(dev_p, reg, (reg_val | mask));
}

static inline void kmb_clr_bitmask_lcd(struct kmb_drm_private *dev_p,
           unsigned int reg, u32 mask)
{
 u32 reg_val = kmb_read_lcd(dev_p, reg);

 kmb_write_lcd(dev_p, reg, (reg_val & (~mask)));
}

int kmb_setup_crtc(struct drm_device *dev);
void kmb_set_scanout(struct kmb_drm_private *lcd);
#endif /* __KMB_DRV_H__ */

Messung V0.5
C=96 H=87 G=91

¤ 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.