/*
 * Copyright (C) 2016 Socionext Inc.
 *   Author: Masahiro Yamada <yamada.masahiro@socionext.com>
 *
 * SPDX-License-Identifier:	GPL-2.0+
 */

#ifndef __CLK_UNIPHIER_H__
#define __CLK_UNIPHIER_H__

#include <linux/kernel.h>

#define UNIPHIER_CLK_MAX_NR_MUXS	8

struct uniphier_clk_gate_data {
	unsigned int id;
	unsigned int reg;
	unsigned int bit;
};

struct uniphier_clk_mux_data {
	unsigned int id;
	unsigned int nr_muxs;
	unsigned int reg;
	unsigned int masks[UNIPHIER_CLK_MAX_NR_MUXS];
	unsigned int vals[UNIPHIER_CLK_MAX_NR_MUXS];
	unsigned long rates[UNIPHIER_CLK_MAX_NR_MUXS];
};

struct uniphier_clk_data {
	const struct uniphier_clk_gate_data *gate;
	const struct uniphier_clk_mux_data *mux;
};

#define UNIPHIER_CLK_ID_END		(unsigned int)(-1)

#define UNIPHIER_CLK_END				\
	{ .id = UNIPHIER_CLK_ID_END }

#define UNIPHIER_CLK_GATE(_id, _reg, _bit)		\
	{						\
		.id = (_id),				\
		.reg = (_reg),				\
		.bit = (_bit),				\
	}

#define UNIPHIER_CLK_FIXED_RATE(_id, _rate)		\
	{						\
		.id = (_id),				\
		.rates = {(_reg),},			\
	}

extern const struct uniphier_clk_data uniphier_mio_clk_data;

#endif /* __CLK_UNIPHIER_H__ */
