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

Quelle  clk-regmap.c   Sprache: C

 
// SPDX-License-Identifier: GPL-2.0
/*
 * Copyright (c) 2014, The Linux Foundation. All rights reserved.
 */


#include <linux/device.h>
#include <linux/clk-provider.h>
#include <linux/regmap.h>
#include <linux/export.h>

#include "clk-regmap.h"

/**
 * clk_is_enabled_regmap - standard is_enabled() for regmap users
 *
 * @hw: clk to operate on
 *
 * Clocks that use regmap for their register I/O can set the
 * enable_reg and enable_mask fields in their struct clk_regmap and then use
 * this as their is_enabled operation, saving some code.
 */

int clk_is_enabled_regmap(struct clk_hw *hw)
{
 struct clk_regmap *rclk = to_clk_regmap(hw);
 unsigned int val;
 int ret;

 ret = regmap_read(rclk->regmap, rclk->enable_reg, &val);
 if (ret != 0)
  return ret;

 if (rclk->enable_is_inverted)
  return (val & rclk->enable_mask) == 0;
 else
  return (val & rclk->enable_mask) != 0;
}
EXPORT_SYMBOL_GPL(clk_is_enabled_regmap);

/**
 * clk_enable_regmap - standard enable() for regmap users
 *
 * @hw: clk to operate on
 *
 * Clocks that use regmap for their register I/O can set the
 * enable_reg and enable_mask fields in their struct clk_regmap and then use
 * this as their enable() operation, saving some code.
 */

int clk_enable_regmap(struct clk_hw *hw)
{
 struct clk_regmap *rclk = to_clk_regmap(hw);
 unsigned int val;

 if (rclk->enable_is_inverted)
  val = 0;
 else
  val = rclk->enable_mask;

 return regmap_update_bits(rclk->regmap, rclk->enable_reg,
      rclk->enable_mask, val);
}
EXPORT_SYMBOL_GPL(clk_enable_regmap);

/**
 * clk_disable_regmap - standard disable() for regmap users
 *
 * @hw: clk to operate on
 *
 * Clocks that use regmap for their register I/O can set the
 * enable_reg and enable_mask fields in their struct clk_regmap and then use
 * this as their disable() operation, saving some code.
 */

void clk_disable_regmap(struct clk_hw *hw)
{
 struct clk_regmap *rclk = to_clk_regmap(hw);
 unsigned int val;

 if (rclk->enable_is_inverted)
  val = rclk->enable_mask;
 else
  val = 0;

 regmap_update_bits(rclk->regmap, rclk->enable_reg, rclk->enable_mask,
      val);
}
EXPORT_SYMBOL_GPL(clk_disable_regmap);

/**
 * devm_clk_register_regmap - register a clk_regmap clock
 *
 * @dev: reference to the caller's device
 * @rclk: clk to operate on
 *
 * Clocks that use regmap for their register I/O should register their
 * clk_regmap struct via this function so that the regmap is initialized
 * and so that the clock is registered with the common clock framework.
 */

int devm_clk_register_regmap(struct device *dev, struct clk_regmap *rclk)
{
 if (dev && dev_get_regmap(dev, NULL))
  rclk->regmap = dev_get_regmap(dev, NULL);
 else if (dev && dev->parent)
  rclk->regmap = dev_get_regmap(dev->parent, NULL);

 return devm_clk_hw_register(dev, &rclk->hw);
}
EXPORT_SYMBOL_GPL(devm_clk_register_regmap);

Messung V0.5
C=94 H=86 G=89

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