// SPDX-License-Identifier: GPL-2.0-only
/*
* Copyright (c) 2025 SpacemiT Technology Co. Ltd
*/
#include <linux/array_size.h>
#include <linux/clk-provider.h>
#include <linux/module.h>
#include <soc/spacemit/k3-syscon.h>
#include "ccu_common.h"
#include "ccu_pll.h"
#include "ccu_mix.h"
#include "ccu_ddn.h"
#include <dt-bindings/clock/spacemit,k3-clocks.h>
/* APBS clocks start, APBS region contains and only contains all PLL clocks */
/*
* PLL{1,2} must run at fixed frequencies to provide clocks in correct rates for
* peripherals.
*/
static const struct ccu_pll_rate_tbl pll1_rate_tbl[] = {
CCU_PLLA_RATE(2457600000UL, 0x0b330ccc, 0x0000cd00, 0xa0558989),
};
static const struct ccu_pll_rate_tbl pll2_rate_tbl[] = {
CCU_PLLA_RATE(3000000000UL, 0x0b3e2000, 0x00000000, 0xa0558c8c),
};
static const struct ccu_pll_rate_tbl pll3_rate_tbl[] = {
CCU_PLLA_RATE(2200000000UL, 0x0b2d3555, 0x00005500, 0xa0558787),
};
static const struct ccu_pll_rate_tbl pll4_rate_tbl[] = {