Eine aufbereitete Darstellung der Quelle

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

Benutzer

Quelle  mux.h   Sprache: unbekannt

 
/* SPDX-License-Identifier: GPL-2.0 */
//
// Spreadtrum multiplexer clock driver
//
// Copyright (C) 2017 Spreadtrum, Inc.
// Author: Chunyan Zhang <chunyan.zhang@spreadtrum.com>

#ifndef _SPRD_MUX_H_
#define _SPRD_MUX_H_

#include "common.h"

/**
 * struct sprd_mux_ssel - Mux clock's source select bits in its register
 * @shift: Bit offset of the divider in its register
 * @width: Width of the divider field in its register
 * @table: For some mux clocks, not all sources are used on some special
 *    chips, this matches the value of mux clock's register and the
 *    sources which are used for this mux clock
 */

struct sprd_mux_ssel {
 u8  shift;
 u8  width;
 const u8 *table;
};

struct sprd_mux {
 struct sprd_mux_ssel mux;
 struct sprd_clk_common common;
};

#define _SPRD_MUX_CLK(_shift, _width, _table)  \
 {      \
  .shift = _shift,   \
  .width = _width,   \
  .table = _table,   \
 }

#define SPRD_MUX_CLK_HW_INIT_FN(_struct, _name, _parents, _table, \
    _reg, _shift, _width, _flags, _fn) \
 struct sprd_mux _struct = {     \
  .mux = _SPRD_MUX_CLK(_shift, _width, _table), \
  .common = {      \
   .regmap  = NULL,    \
   .reg  = _reg,    \
   .hw.init = _fn(_name, _parents,   \
           &sprd_mux_ops, _flags),  \
  }       \
 }

#define SPRD_MUX_CLK_TABLE(_struct, _name, _parents, _table,  \
      _reg, _shift, _width, _flags)  \
 SPRD_MUX_CLK_HW_INIT_FN(_struct, _name, _parents, _table, \
    _reg, _shift, _width, _flags,  \
    CLK_HW_INIT_PARENTS)

#define SPRD_MUX_CLK(_struct, _name, _parents, _reg,  \
       _shift, _width, _flags)   \
 SPRD_MUX_CLK_TABLE(_struct, _name, _parents, NULL, \
      _reg, _shift, _width, _flags)

#define SPRD_MUX_CLK_DATA_TABLE(_struct, _name, _parents, _table, \
    _reg, _shift, _width, _flags)  \
 SPRD_MUX_CLK_HW_INIT_FN(_struct, _name, _parents, _table, \
    _reg, _shift, _width, _flags,  \
    CLK_HW_INIT_PARENTS_DATA)

#define SPRD_MUX_CLK_DATA(_struct, _name, _parents, _reg,  \
     _shift, _width, _flags)   \
 SPRD_MUX_CLK_DATA_TABLE(_struct, _name, _parents, NULL,  \
    _reg, _shift, _width, _flags)

static inline struct sprd_mux *hw_to_sprd_mux(const struct clk_hw *hw)
{
 struct sprd_clk_common *common = hw_to_sprd_clk_common(hw);

 return container_of(common, struct sprd_mux, common);
}

extern const struct clk_ops sprd_mux_ops;

u8 sprd_mux_helper_get_parent(const struct sprd_clk_common *common,
         const struct sprd_mux_ssel *mux);
int sprd_mux_helper_set_parent(const struct sprd_clk_common *common,
          const struct sprd_mux_ssel *mux,
          u8 index);

#endif /* _SPRD_MUX_H_ */

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

[Dauer der Verarbeitung: 0.12 Sekunden, vorverarbeitet 2026-06-08]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Statistik
#Sources=277311
#Domains=752002