2019-05-27 08:55:21 +02:00
/* SPDX-License-Identifier: GPL-2.0-only */
2015-05-13 17:58:36 +03:00
/*
* clk - dfll . h - prototypes and macros for the Tegra DFLL clocksource driver
2019-01-04 11:06:48 +08:00
* Copyright ( C ) 2013 - 2019 NVIDIA Corporation . All rights reserved .
2015-05-13 17:58:36 +03:00
*
* Aleksandr Frid < afrid @ nvidia . com >
* Paul Walmsley < pwalmsley @ nvidia . com >
*/
# ifndef __DRIVERS_CLK_TEGRA_CLK_DFLL_H
# define __DRIVERS_CLK_TEGRA_CLK_DFLL_H
# include <linux/platform_device.h>
# include <linux/reset.h>
# include <linux/types.h>
2019-01-04 11:06:48 +08:00
# include "cvb.h"
2015-05-13 17:58:36 +03:00
/**
* struct tegra_dfll_soc_data - SoC - specific hooks / integration for the DFLL driver
2016-04-08 14:57:09 +02:00
* @ dev : struct device * that holds the OPP table for the DFLL
2016-04-08 15:16:28 +02:00
* @ max_freq : maximum frequency supported on this SoC
2016-04-08 15:02:06 +02:00
* @ cvb : CPU frequency table for this SoC
2019-01-04 11:06:48 +08:00
* @ alignment : parameters of the regulator step and offset
2016-04-08 14:57:09 +02:00
* @ init_clock_trimmers : callback to initialize clock trimmers
* @ set_clock_trimmers_high : callback to tune clock trimmers for high voltage
* @ set_clock_trimmers_low : callback to tune clock trimmers for low voltage
2015-05-13 17:58:36 +03:00
*/
struct tegra_dfll_soc_data {
2015-05-13 17:58:41 +03:00
struct device * dev ;
2016-04-08 15:16:28 +02:00
unsigned long max_freq ;
2016-04-08 15:02:06 +02:00
const struct cvb_table * cvb ;
2019-01-04 11:06:48 +08:00
struct rail_alignment alignment ;
2016-04-08 14:57:09 +02:00
2015-05-13 17:58:36 +03:00
void ( * init_clock_trimmers ) ( void ) ;
void ( * set_clock_trimmers_high ) ( void ) ;
void ( * set_clock_trimmers_low ) ( void ) ;
} ;
int tegra_dfll_register ( struct platform_device * pdev ,
struct tegra_dfll_soc_data * soc ) ;
2017-10-12 16:09:59 -07:00
struct tegra_dfll_soc_data * tegra_dfll_unregister ( struct platform_device * pdev ) ;
2015-05-13 17:58:36 +03:00
int tegra_dfll_runtime_suspend ( struct device * dev ) ;
int tegra_dfll_runtime_resume ( struct device * dev ) ;
2019-08-16 12:41:56 -07:00
int tegra_dfll_suspend ( struct device * dev ) ;
int tegra_dfll_resume ( struct device * dev ) ;
2015-05-13 17:58:36 +03:00
# endif /* __DRIVERS_CLK_TEGRA_CLK_DFLL_H */