Path: blob/main/sys/arm64/qoriq/clk/qoriq_clkgen.h
39536 views
/*-1* SPDX-License-Identifier: BSD-2-Clause2*3* Copyright (c) 2020 Alstom Group.4* Copyright (c) 2020 Semihalf.5*6* Redistribution and use in source and binary forms, with or without7* modification, are permitted provided that the following conditions8* are met:9* 1. Redistributions of source code must retain the above copyright10* notice, this list of conditions and the following disclaimer.11* 2. Redistributions in binary form must reproduce the above copyright12* notice, this list of conditions and the following disclaimer in the13* documentation and/or other materials provided with the distribution.14*15* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND16* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE17* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE18* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE19* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL20* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS21* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)22* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT23* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY24* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF25* SUCH DAMAGE.26*27*/2829#ifndef _QORIQ_CLKGEN_H_30#define _QORIQ_CLKGEN_H_3132#include <dev/clk/clk.h>33#include <dev/clk/clk_mux.h>3435#include <arm64/qoriq/clk/qoriq_clk_pll.h>3637#define QORIQ_CLK_NAME_MAX_LEN 323839#define QORIQ_LITTLE_ENDIAN 0x014041#define QORIQ_TYPE_SYSCLK 042#define QORIQ_TYPE_CMUX 143#define QORIQ_TYPE_HWACCEL 244#define QORIQ_TYPE_FMAN 345#define QORIQ_TYPE_PLATFORM_PLL 446#define QORIQ_TYPE_CORECLK 547#define QORIQ_TYPE_INTERNAL 64849#define PLL_DIV1 050#define PLL_DIV2 151#define PLL_DIV3 252#define PLL_DIV4 353#define PLL_DIV5 454#define PLL_DIV6 555#define PLL_DIV7 656#define PLL_DIV8 757#define PLL_DIV9 858#define PLL_DIV10 959#define PLL_DIV11 1060#define PLL_DIV12 1161#define PLL_DIV13 1262#define PLL_DIV14 1363#define PLL_DIV15 1464#define PLL_DIV16 156566#define QORIQ_CLK_ID(_type, _index) ((_type << 8) + _index)6768#define QORIQ_SYSCLK_NAME "clockgen_sysclk"69#define QORIQ_CORECLK_NAME "clockgen_coreclk"7071typedef int (*qoriq_init_func_t)(device_t);7273struct qoriq_clkgen_softc {74device_t dev;75struct resource *res;76struct clkdom *clkdom;77struct mtx mtx;78struct qoriq_clk_pll_def *pltfrm_pll_def;79struct qoriq_clk_pll_def **cga_pll;80int cga_pll_num;81struct clk_mux_def **mux;82int mux_num;83qoriq_init_func_t init_func;84uint32_t flags;85bool has_coreclk;86};8788MALLOC_DECLARE(M_QORIQ_CLKGEN);89DECLARE_CLASS(qoriq_clkgen_driver);9091int qoriq_clkgen_attach(device_t);9293#endif /* _QORIQ_CLKGEN_H_ */949596