Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  int3402_thermal.c

  Sprache: C
 

// SPDX-License-Identifier: GPL-2.0-only
/*
 * INT3402 thermal driver for memory temperature reporting
 *
 * Copyright (C) 2014, Intel Corporation
 * Authors: Aaron Lu <aaron.lu@intel.com>
 */


#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/acpi.h>
#include <linux/thermal.h>
#include "int340x_thermal_zone.h"

#define INT3402_PERF_CHANGED_EVENT 0x80
#define INT3402_THERMAL_EVENT  0x90

struct int3402_thermal_data {
 acpi_handle *handle;
 struct int34x_thermal_zone *int340x_zone;
};

static void int3402_notify(acpi_handle handle, u32 event, void *data)
{
 struct int3402_thermal_data *priv = data;

 if (!priv)
  return;

 switch (event) {
 case INT3402_PERF_CHANGED_EVENT:
  break;
 case INT3402_THERMAL_EVENT:
  int340x_thermal_zone_device_update(priv->int340x_zone,
         THERMAL_TRIP_VIOLATED);
  break;
 default:
  break;
 }
}

static int int3402_thermal_probe(struct platform_device *pdev)
{
 struct acpi_device *adev = ACPI_COMPANION(&pdev->dev);
 struct int3402_thermal_data *d;
 int ret;

 if (!adev)
  return -ENODEV;

 if (!acpi_has_method(adev->handle, "_TMP"))
  return -ENODEV;

 d = devm_kzalloc(&pdev->dev, sizeof(*d), GFP_KERNEL);
 if (!d)
  return -ENOMEM;

 d->int340x_zone = int340x_thermal_zone_add(adev, NULL);
 if (IS_ERR(d->int340x_zone))
  return PTR_ERR(d->int340x_zone);

 ret = acpi_install_notify_handler(adev->handle,
       ACPI_DEVICE_NOTIFY,
       int3402_notify,
       d);
 if (ret) {
  int340x_thermal_zone_remove(d->int340x_zone);
  return ret;
 }

 d->handle = adev->handle;
 platform_set_drvdata(pdev, d);

 return 0;
}

static void int3402_thermal_remove(struct platform_device *pdev)
{
 struct int3402_thermal_data *d = platform_get_drvdata(pdev);

 acpi_remove_notify_handler(d->handle,
       ACPI_DEVICE_NOTIFY, int3402_notify);
 int340x_thermal_zone_remove(d->int340x_zone);
}

static const struct acpi_device_id int3402_thermal_match[] = {
 {"INT3402"0},
 {}
};

MODULE_DEVICE_TABLE(acpi, int3402_thermal_match);

static struct platform_driver int3402_thermal_driver = {
 .probe = int3402_thermal_probe,
 .remove = int3402_thermal_remove,
 .driver = {
     .name = "int3402 thermal",
     .acpi_match_table = int3402_thermal_match,
     },
};

module_platform_driver(int3402_thermal_driver);

MODULE_DESCRIPTION("INT3402 Thermal driver");
MODULE_LICENSE("GPL");

Messung V0.5 in Prozent
C=95 H=93 G=93

¤ Dauer der Verarbeitung: 0.17 Sekunden  (vorverarbeitet am  2026-06-07) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

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.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Statistik
#Sources=277311
#Domains=655579