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

Quelle  panel-summit.c   Sprache: C

 
// SPDX-License-Identifier: GPL-2.0-only

#include <linux/backlight.h>
#include <drm/drm_device.h>
#include <drm/drm_mipi_dsi.h>
#include <drm/drm_mode.h>
#include <drm/drm_modes.h>
#include <drm/drm_panel.h>
#include <drm/drm_probe_helper.h>
#include <video/mipi_display.h>

struct summit_data {
 struct mipi_dsi_device *dsi;
 struct backlight_device *bl;
 struct drm_panel panel;
};

static int summit_set_brightness(struct device *dev)
{
 struct summit_data *s_data = dev_get_drvdata(dev);
 int level = backlight_get_brightness(s_data->bl);

 return mipi_dsi_dcs_set_display_brightness(s_data->dsi, level);
}

static int summit_bl_update_status(struct backlight_device *dev)
{
 return summit_set_brightness(&dev->dev);
}

static const struct backlight_ops summit_bl_ops = {
 .update_status = summit_bl_update_status,
};

static struct drm_display_mode summit_mode = {
 .vdisplay = 2008,
 .hdisplay = 60,
 .hsync_start = 60 + 8,
 .hsync_end = 60 + 8 + 80,
 .htotal = 60 + 8 + 80 + 40,
 .vsync_start = 2008 + 1,
 .vsync_end = 2008 + 1 + 15,
 .vtotal = 2008 + 1 + 15 + 6,
 .clock = ((60 + 8 + 80 + 40) * (2008 + 1 + 15 + 6) * 60) / 1000,
 .type = DRM_MODE_TYPE_DRIVER,
 .flags = DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC,
};

static int summit_get_modes(struct drm_panel *panel,
       struct drm_connector *connector)
{
 connector->display_info.non_desktop = true;
 drm_object_property_set_value(&connector->base,
          connector->dev->mode_config.non_desktop_property,
          connector->display_info.non_desktop);

 return drm_connector_helper_get_modes_fixed(connector, &summit_mode);
}

static const struct drm_panel_funcs summit_panel_funcs = {
 .get_modes = summit_get_modes,
};

static int summit_probe(struct mipi_dsi_device *dsi)
{
 struct backlight_properties props = { 0 };
 struct device *dev = &dsi->dev;
 struct summit_data *s_data;
 int ret;

 s_data = devm_drm_panel_alloc(dev, struct summit_data, panel,
          &summit_panel_funcs,
          DRM_MODE_CONNECTOR_DSI);
 if (IS_ERR(s_data))
  return PTR_ERR(s_data);

 mipi_dsi_set_drvdata(dsi, s_data);
 s_data->dsi = dsi;

 ret = device_property_read_u32(dev, "max-brightness", &props.max_brightness);
 if (ret)
  return ret;
 props.type = BACKLIGHT_RAW;

 s_data->bl = devm_backlight_device_register(dev, dev_name(dev),
          dev, s_data, &summit_bl_ops, &props);
 if (IS_ERR(s_data->bl))
  return PTR_ERR(s_data->bl);

 drm_panel_add(&s_data->panel);

 return mipi_dsi_attach(dsi);
}

static void summit_remove(struct mipi_dsi_device *dsi)
{
 struct summit_data *s_data = mipi_dsi_get_drvdata(dsi);

 mipi_dsi_detach(dsi);
 drm_panel_remove(&s_data->panel);
}

static int summit_suspend(struct device *dev)
{
 struct summit_data *s_data = dev_get_drvdata(dev);

 return mipi_dsi_dcs_set_display_brightness(s_data->dsi, 0);
}

static DEFINE_SIMPLE_DEV_PM_OPS(summit_pm_ops, summit_suspend,
    summit_set_brightness);

static const struct of_device_id summit_of_match[] = {
 { .compatible = "apple,summit" },
 {},
};

MODULE_DEVICE_TABLE(of, summit_of_match);

static struct mipi_dsi_driver summit_driver = {
 .probe = summit_probe,
 .remove = summit_remove,
 .driver = {
  .name = "panel-summit",
  .of_match_table = summit_of_match,
  .pm = pm_sleep_ptr(&summit_pm_ops),
 },
};
module_mipi_dsi_driver(summit_driver);

MODULE_DESCRIPTION("Summit Display Panel Driver");
MODULE_LICENSE("GPL");

Messung V0.5
C=95 H=88 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.