/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
* Structures used by ASPEED clock drivers
*
* Copyright 2019 IBM Corp .
*/
#include <linux/clk-provider.h>
#include <linux/kernel.h>
#include <linux/reset-controller.h>
#include <linux/spinlock.h>
struct clk_div_table;
struct regmap;
/**
* struct aspeed_gate_data - Aspeed gated clocks
* @ clock_idx : bit used to gate this clock in the clock register
* @ reset_idx : bit used to reset this IP in the reset register . - 1 if no
* reset is required when enabling the clock
* @ name : the clock name
* @ parent_name : the name of the parent clock
* @ flags : standard clock framework flags
*/
struct aspeed_gate_data {
u8 clock_idx;
s8 reset_idx;
const char *name;
const char *parent_name;
unsigned long flags;
};
/**
* struct aspeed_clk_gate - Aspeed specific clk_gate structure
* @ hw : handle between common and hardware - specific interfaces
* @ reg : register controlling gate
* @ clock_idx : bit used to gate this clock in the clock register
* @ reset_idx : bit used to reset this IP in the reset register . - 1 if no
* reset is required when enabling the clock
* @ flags : hardware - specific flags
* @ lock : register lock
*
* Some of the clocks in the Aspeed SoC must be put in reset before enabling .
* This modified version of clk_gate allows an optional reset bit to be
* specified .
*/
struct aspeed_clk_gate {
struct clk_hw hw;
struct regmap *map;
u8 clock_idx;
s8 reset_idx;
u8 flags;
spinlock_t *lock;
};
#define to_aspeed_clk_gate(_hw) container_of(_hw, struct aspeed_clk_gate, hw)
/**
* struct aspeed_reset - Aspeed reset controller
* @ map : regmap to access the containing system controller
* @ rcdev : reset controller device
*/
struct aspeed_reset {
struct regmap *map;
struct reset_controller_dev rcdev;
};
#define to_aspeed_reset(p) container_of((p), struct aspeed_reset, rcdev)
/**
* struct aspeed_clk_soc_data - Aspeed SoC specific divisor information
* @ div_table : Common divider lookup table
* @ eclk_div_table : Divider lookup table for ECLK
* @ mac_div_table : Divider lookup table for MAC ( Ethernet ) clocks
* @ calc_pll : Callback to maculate common PLL settings
*/
struct aspeed_clk_soc_data {
const struct clk_div_table *div_table;
const struct clk_div_table *eclk_div_table;
const struct clk_div_table *mac_div_table;
struct clk_hw *(*calc_pll)(const char *name, u32 val);
};
Messung V0.5 in Prozent C=90 H=98 G=94
¤ Dauer der Verarbeitung: 0.9 Sekunden
(vorverarbeitet am 2026-09-28)
¤
*© Formatika GbR, Deutschland