root/drivers/clk/sunxi-ng/ccu_nk.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. hw_to_ccu_nk

   1 /* SPDX-License-Identifier: GPL-2.0-only */
   2 /*
   3  * Copyright (c) 2016 Maxime Ripard. All rights reserved.
   4  */
   5 
   6 #ifndef _CCU_NK_H_
   7 #define _CCU_NK_H_
   8 
   9 #include <linux/clk-provider.h>
  10 
  11 #include "ccu_common.h"
  12 #include "ccu_div.h"
  13 #include "ccu_mult.h"
  14 
  15 /*
  16  * struct ccu_nk - Definition of an N-K clock
  17  *
  18  * Clocks based on the formula parent * N * K
  19  */
  20 struct ccu_nk {
  21         u16                     reg;
  22         u32                     enable;
  23         u32                     lock;
  24 
  25         struct ccu_mult_internal        n;
  26         struct ccu_mult_internal        k;
  27 
  28         unsigned int            fixed_post_div;
  29 
  30         struct ccu_common       common;
  31 };
  32 
  33 #define SUNXI_CCU_NK_WITH_GATE_LOCK_POSTDIV(_struct, _name, _parent, _reg, \
  34                                             _nshift, _nwidth,           \
  35                                             _kshift, _kwidth,           \
  36                                             _gate, _lock, _postdiv,     \
  37                                             _flags)                     \
  38         struct ccu_nk _struct = {                                       \
  39                 .enable         = _gate,                                \
  40                 .lock           = _lock,                                \
  41                 .k              = _SUNXI_CCU_MULT(_kshift, _kwidth),    \
  42                 .n              = _SUNXI_CCU_MULT(_nshift, _nwidth),    \
  43                 .fixed_post_div = _postdiv,                             \
  44                 .common         = {                                     \
  45                         .reg            = _reg,                         \
  46                         .features       = CCU_FEATURE_FIXED_POSTDIV,    \
  47                         .hw.init        = CLK_HW_INIT(_name,            \
  48                                                       _parent,          \
  49                                                       &ccu_nk_ops,      \
  50                                                       _flags),          \
  51                 },                                                      \
  52         }
  53 
  54 static inline struct ccu_nk *hw_to_ccu_nk(struct clk_hw *hw)
  55 {
  56         struct ccu_common *common = hw_to_ccu_common(hw);
  57 
  58         return container_of(common, struct ccu_nk, common);
  59 }
  60 
  61 extern const struct clk_ops ccu_nk_ops;
  62 
  63 #endif /* _CCU_NK_H_ */

/* [<][>][^][v][top][bottom][index][help] */