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

Quelle  omap1_bl.c   Sprache: C

 
// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Backlight driver for OMAP based boards.
 *
 * Copyright (c) 2006 Andrzej Zaborowski  <balrog@zabor.org>
 */


#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/platform_device.h>
#include <linux/backlight.h>
#include <linux/slab.h>
#include <linux/platform_data/omap1_bl.h>

#include <linux/soc/ti/omap1-io.h>
#include <linux/soc/ti/omap1-mux.h>

#define OMAPBL_MAX_INTENSITY  0xff

struct omap_backlight {
 bool enabled;
 int current_intensity;

 struct device *dev;
 struct omap_backlight_config *pdata;
};

static inline void omapbl_send_intensity(int intensity)
{
 omap_writeb(intensity, OMAP_PWL_ENABLE);
}

static inline void omapbl_send_enable(int enable)
{
 omap_writeb(enable, OMAP_PWL_CLK_ENABLE);
}

static void omapbl_enable(struct omap_backlight *bl, bool enable)
{
 if (enable) {
  omapbl_send_intensity(bl->current_intensity);
  omapbl_send_enable(1);
 } else {
  omapbl_send_intensity(0);
  omapbl_send_enable(0);
 }
}

#ifdef CONFIG_PM_SLEEP
static int omapbl_suspend(struct device *dev)
{
 struct backlight_device *bl_dev = dev_get_drvdata(dev);
 struct omap_backlight *bl = bl_get_data(bl_dev);

 omapbl_enable(bl, false);
 return 0;
}

static int omapbl_resume(struct device *dev)
{
 struct backlight_device *bl_dev = dev_get_drvdata(dev);
 struct omap_backlight *bl = bl_get_data(bl_dev);

 omapbl_enable(bl, bl->enabled);
 return 0;
}
#endif

static void omapbl_set_enabled(struct backlight_device *dev, bool enable)
{
 struct omap_backlight *bl = bl_get_data(dev);

 omapbl_enable(bl, enable);
 bl->enabled = enable;
}

static int omapbl_update_status(struct backlight_device *dev)
{
 struct omap_backlight *bl = bl_get_data(dev);
 bool enable;

 if (bl->current_intensity != dev->props.brightness) {
  if (bl->enabled)
   omapbl_send_intensity(dev->props.brightness);
  bl->current_intensity = dev->props.brightness;
 }

 enable = !backlight_is_blank(dev);

 if (enable != bl->enabled)
  omapbl_set_enabled(dev, enable);

 return 0;
}

static int omapbl_get_intensity(struct backlight_device *dev)
{
 struct omap_backlight *bl = bl_get_data(dev);

 return bl->current_intensity;
}

static const struct backlight_ops omapbl_ops = {
 .get_brightness = omapbl_get_intensity,
 .update_status  = omapbl_update_status,
};

static int omapbl_probe(struct platform_device *pdev)
{
 struct backlight_properties props;
 struct backlight_device *dev;
 struct omap_backlight *bl;
 struct omap_backlight_config *pdata = dev_get_platdata(&pdev->dev);

 if (!pdata)
  return -ENXIO;

 bl = devm_kzalloc(&pdev->dev, sizeof(struct omap_backlight),
     GFP_KERNEL);
 if (unlikely(!bl))
  return -ENOMEM;

 memset(&props, 0, sizeof(struct backlight_properties));
 props.type = BACKLIGHT_RAW;
 props.max_brightness = OMAPBL_MAX_INTENSITY;
 dev = devm_backlight_device_register(&pdev->dev, "omap-bl", &pdev->dev,
     bl, &omapbl_ops, &props);
 if (IS_ERR(dev))
  return PTR_ERR(dev);

 bl->enabled = false;
 bl->current_intensity = 0;

 bl->pdata = pdata;
 bl->dev = &pdev->dev;

 platform_set_drvdata(pdev, dev);

 omap_cfg_reg(PWL); /* Conflicts with UART3 */

 dev->props.brightness = pdata->default_intensity;
 omapbl_update_status(dev);

 dev_info(&pdev->dev, "OMAP LCD backlight initialised\n");

 return 0;
}

static SIMPLE_DEV_PM_OPS(omapbl_pm_ops, omapbl_suspend, omapbl_resume);

static struct platform_driver omapbl_driver = {
 .probe  = omapbl_probe,
 .driver  = {
  .name = "omap-bl",
  .pm = &omapbl_pm_ops,
 },
};

module_platform_driver(omapbl_driver);

MODULE_AUTHOR("Andrzej Zaborowski ");
MODULE_DESCRIPTION("OMAP LCD Backlight driver");
MODULE_LICENSE("GPL");

Messung V0.5
C=94 H=90 G=91

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