cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

clk-factors.h (1384B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2#ifndef __MACH_SUNXI_CLK_FACTORS_H
      3#define __MACH_SUNXI_CLK_FACTORS_H
      4
      5#include <linux/clk-provider.h>
      6#include <linux/spinlock.h>
      7
      8#define SUNXI_FACTORS_NOT_APPLICABLE	(0)
      9
     10struct clk_factors_config {
     11	u8 nshift;
     12	u8 nwidth;
     13	u8 kshift;
     14	u8 kwidth;
     15	u8 mshift;
     16	u8 mwidth;
     17	u8 pshift;
     18	u8 pwidth;
     19	u8 n_start;
     20};
     21
     22struct factors_request {
     23	unsigned long rate;
     24	unsigned long parent_rate;
     25	u8 parent_index;
     26	u8 n;
     27	u8 k;
     28	u8 m;
     29	u8 p;
     30};
     31
     32struct factors_data {
     33	int enable;
     34	int mux;
     35	int muxmask;
     36	const struct clk_factors_config *table;
     37	void (*getter)(struct factors_request *req);
     38	void (*recalc)(struct factors_request *req);
     39	const char *name;
     40};
     41
     42struct clk_factors {
     43	struct clk_hw hw;
     44	void __iomem *reg;
     45	const struct clk_factors_config *config;
     46	void (*get_factors)(struct factors_request *req);
     47	void (*recalc)(struct factors_request *req);
     48	spinlock_t *lock;
     49	/* for cleanup */
     50	struct clk_mux *mux;
     51	struct clk_gate *gate;
     52};
     53
     54struct clk *sunxi_factors_register(struct device_node *node,
     55				   const struct factors_data *data,
     56				   spinlock_t *lock,
     57				   void __iomem *reg);
     58struct clk *sunxi_factors_register_critical(struct device_node *node,
     59					    const struct factors_data *data,
     60					    spinlock_t *lock,
     61					    void __iomem *reg);
     62
     63void sunxi_factors_unregister(struct device_node *node, struct clk *clk);
     64
     65#endif