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

Quelle  leds-tps6105x.c   Sprache: C

 
// SPDX-License-Identifier: GPL-2.0-only
/*
 * Copyright (C) 2019 Sven Van Asbroeck
 */


#include <linux/leds.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/mfd/tps6105x.h>
#include <linux/regmap.h>

struct tps6105x_priv {
 struct regmap *regmap;
 struct led_classdev cdev;
 struct fwnode_handle *fwnode;
};

static void tps6105x_handle_put(void *data)
{
 struct tps6105x_priv *priv = data;

 fwnode_handle_put(priv->fwnode);
}

static int tps6105x_brightness_set(struct led_classdev *cdev,
      enum led_brightness brightness)
{
 struct tps6105x_priv *priv = container_of(cdev, struct tps6105x_priv,
       cdev);

 return regmap_update_bits(priv->regmap, TPS6105X_REG_0,
      TPS6105X_REG0_TORCHC_MASK,
      brightness << TPS6105X_REG0_TORCHC_SHIFT);
}

static int tps6105x_led_probe(struct platform_device *pdev)
{
 struct tps6105x *tps6105x = dev_get_platdata(&pdev->dev);
 struct tps6105x_platform_data *pdata = tps6105x->pdata;
 struct led_init_data init_data = { };
 struct tps6105x_priv *priv;
 int ret;

 /* This instance is not set for torch mode so bail out */
 if (pdata->mode != TPS6105X_MODE_TORCH) {
  dev_info(&pdev->dev,
   "chip not in torch mode, exit probe");
  return -EINVAL;
 }

 priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL);
 if (!priv)
  return -ENOMEM;
 /* fwnode/devicetree is optional. NULL is allowed for priv->fwnode */
 priv->fwnode = device_get_next_child_node(pdev->dev.parent, NULL);
 ret = devm_add_action_or_reset(&pdev->dev, tps6105x_handle_put, priv);
 if (ret)
  return ret;
 priv->regmap = tps6105x->regmap;
 priv->cdev.brightness_set_blocking = tps6105x_brightness_set;
 priv->cdev.max_brightness = 7;
 init_data.devicename = "tps6105x";
 init_data.default_label = ":torch";
 init_data.fwnode = priv->fwnode;

 ret = regmap_update_bits(tps6105x->regmap, TPS6105X_REG_0,
     TPS6105X_REG0_MODE_MASK |
     TPS6105X_REG0_TORCHC_MASK,
     TPS6105X_REG0_MODE_TORCH <<
     TPS6105X_REG0_MODE_SHIFT);
 if (ret)
  return ret;

 return devm_led_classdev_register_ext(&pdev->dev, &priv->cdev,
           &init_data);
}

static struct platform_driver led_driver = {
 .probe = tps6105x_led_probe,
 .driver = {
  .name = "tps6105x-leds",
 },
};

module_platform_driver(led_driver);

MODULE_DESCRIPTION("TPS6105x LED driver");
MODULE_AUTHOR("Sven Van Asbroeck ");
MODULE_LICENSE("GPL v2");

Messung V0.5
C=94 H=92 G=92

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