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

clkc.h (1701B)


      1/* SPDX-License-Identifier: GPL-2.0-only */
      2/*
      3 * Toshiba Visconti clock controller
      4 *
      5 * Copyright (c) 2021 TOSHIBA CORPORATION
      6 * Copyright (c) 2021 Toshiba Electronic Devices & Storage Corporation
      7 *
      8 * Nobuhiro Iwamatsu <nobuhiro1.iwamatsu@toshiba.co.jp>
      9 */
     10
     11#ifndef _VISCONTI_CLKC_H_
     12#define _VISCONTI_CLKC_H_
     13
     14#include <linux/mfd/syscon.h>
     15#include <linux/clk-provider.h>
     16#include <linux/of.h>
     17#include <linux/of_address.h>
     18#include <linux/delay.h>
     19#include <linux/regmap.h>
     20#include <linux/slab.h>
     21#include <linux/string.h>
     22#include <linux/io.h>
     23#include <linux/spinlock.h>
     24
     25#include "reset.h"
     26
     27struct visconti_clk_provider {
     28	struct device		*dev;
     29	struct regmap		*regmap;
     30	struct clk_hw_onecell_data clk_data;
     31};
     32
     33struct visconti_clk_gate_table {
     34	unsigned int	id;
     35	const char	*name;
     36	const struct clk_parent_data *parent_data;
     37	u8		num_parents;
     38	u8		flags;
     39	u32		ckon_offset;
     40	u32		ckoff_offset;
     41	u8		ck_idx;
     42	unsigned int	div;
     43	u8		rs_id;
     44};
     45
     46struct visconti_fixed_clk {
     47	unsigned int	id;
     48	const char	*name;
     49	const char	*parent;
     50	unsigned long	flag;
     51	unsigned int	mult;
     52	unsigned int	div;
     53};
     54
     55struct visconti_clk_gate {
     56	struct clk_hw	hw;
     57	struct regmap	*regmap;
     58	u32		ckon_offset;
     59	u32		ckoff_offset;
     60	u8		ck_idx;
     61	u8		flags;
     62	u32		rson_offset;
     63	u32		rsoff_offset;
     64	u8		rs_idx;
     65	spinlock_t	*lock;
     66};
     67
     68struct visconti_clk_provider *visconti_init_clk(struct device *dev,
     69						struct regmap *regmap,
     70						unsigned long nr_clks);
     71int visconti_clk_register_gates(struct visconti_clk_provider *data,
     72				 const struct visconti_clk_gate_table *clks,
     73				 int num_gate,
     74				 const struct visconti_reset_data *reset,
     75				 spinlock_t *lock);
     76
     77#define NO_RESET 0xFF
     78
     79#endif /* _VISCONTI_CLKC_H_ */