mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 13:20:52 +07:00
Merge branches 'clk-qoriq-t1023', 'clk-protected-binding', 'clk-define-show-macro' and 'clk-static' into clk-next
- NXP QorIQ T1023 SoC support - Introduce a 'protected-clocks' binding for firmware protected clks - Shrink code some with DEFINE_SHOW_ATTRIBUTE() * clk-qoriq-t1023: clk: qoriq: add more chips support * clk-protected-binding: clk: qcom: Support 'protected-clocks' property dt-bindings: clk: Introduce 'protected-clocks' property * clk-define-show-macro: clk: tegra: Change to use DEFINE_SHOW_ATTRIBUTE macro clk: nomadik: Change to use DEFINE_SHOW_ATTRIBUTE macro * clk-static: clk: stm32mp1: drop pointless static qualifier in stm32_register_hw_clk()
This commit is contained in:
commit
aab184d23b
@ -168,3 +168,19 @@ a shared clock is forbidden.
|
||||
|
||||
Configuration of common clocks, which affect multiple consumer devices can
|
||||
be similarly specified in the clock provider node.
|
||||
|
||||
==Protected clocks==
|
||||
|
||||
Some platforms or firmwares may not fully expose all the clocks to the OS, such
|
||||
as in situations where those clks are used by drivers running in ARM secure
|
||||
execution levels. Such a configuration can be specified in device tree with the
|
||||
protected-clocks property in the form of a clock specifier list. This property should
|
||||
only be specified in the node that is providing the clocks being protected:
|
||||
|
||||
clock-controller@a000f000 {
|
||||
compatible = "vendor,clk95;
|
||||
reg = <0xa000f000 0x1000>
|
||||
#clocks-cells = <1>;
|
||||
...
|
||||
protected-clocks = <UART3_CLK>, <SPI5_CLK>;
|
||||
};
|
||||
|
@ -455,7 +455,7 @@ static const char * const src_clk_names[] = {
|
||||
"RNGCCLK ",
|
||||
};
|
||||
|
||||
static int nomadik_src_clk_show(struct seq_file *s, void *what)
|
||||
static int nomadik_src_clk_debugfs_show(struct seq_file *s, void *what)
|
||||
{
|
||||
int i;
|
||||
u32 src_pcksr0 = readl(src_base + SRC_PCKSR0);
|
||||
@ -479,17 +479,7 @@ static int nomadik_src_clk_show(struct seq_file *s, void *what)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int nomadik_src_clk_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, nomadik_src_clk_show, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations nomadik_src_clk_debugfs_ops = {
|
||||
.open = nomadik_src_clk_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
DEFINE_SHOW_ATTRIBUTE(nomadik_src_clk_debugfs);
|
||||
|
||||
static int __init nomadik_src_clk_init_debugfs(void)
|
||||
{
|
||||
@ -499,7 +489,7 @@ static int __init nomadik_src_clk_init_debugfs(void)
|
||||
src_pcksr0_boot = readl(src_base + SRC_PCKSR0);
|
||||
src_pcksr1_boot = readl(src_base + SRC_PCKSR1);
|
||||
debugfs_create_file("nomadik-src-clk", S_IFREG | S_IRUGO,
|
||||
NULL, NULL, &nomadik_src_clk_debugfs_ops);
|
||||
NULL, NULL, &nomadik_src_clk_debugfs_fops);
|
||||
return 0;
|
||||
}
|
||||
device_initcall(nomadik_src_clk_init_debugfs);
|
||||
|
@ -1418,12 +1418,23 @@ static void __init clockgen_init(struct device_node *np)
|
||||
|
||||
CLK_OF_DECLARE(qoriq_clockgen_1, "fsl,qoriq-clockgen-1.0", clockgen_init);
|
||||
CLK_OF_DECLARE(qoriq_clockgen_2, "fsl,qoriq-clockgen-2.0", clockgen_init);
|
||||
CLK_OF_DECLARE(qoriq_clockgen_b4420, "fsl,b4420-clockgen", clockgen_init);
|
||||
CLK_OF_DECLARE(qoriq_clockgen_b4860, "fsl,b4860-clockgen", clockgen_init);
|
||||
CLK_OF_DECLARE(qoriq_clockgen_ls1012a, "fsl,ls1012a-clockgen", clockgen_init);
|
||||
CLK_OF_DECLARE(qoriq_clockgen_ls1021a, "fsl,ls1021a-clockgen", clockgen_init);
|
||||
CLK_OF_DECLARE(qoriq_clockgen_ls1043a, "fsl,ls1043a-clockgen", clockgen_init);
|
||||
CLK_OF_DECLARE(qoriq_clockgen_ls1046a, "fsl,ls1046a-clockgen", clockgen_init);
|
||||
CLK_OF_DECLARE(qoriq_clockgen_ls1088a, "fsl,ls1088a-clockgen", clockgen_init);
|
||||
CLK_OF_DECLARE(qoriq_clockgen_ls2080a, "fsl,ls2080a-clockgen", clockgen_init);
|
||||
CLK_OF_DECLARE(qoriq_clockgen_p2041, "fsl,p2041-clockgen", clockgen_init);
|
||||
CLK_OF_DECLARE(qoriq_clockgen_p3041, "fsl,p3041-clockgen", clockgen_init);
|
||||
CLK_OF_DECLARE(qoriq_clockgen_p4080, "fsl,p4080-clockgen", clockgen_init);
|
||||
CLK_OF_DECLARE(qoriq_clockgen_p5020, "fsl,p5020-clockgen", clockgen_init);
|
||||
CLK_OF_DECLARE(qoriq_clockgen_p5040, "fsl,p5040-clockgen", clockgen_init);
|
||||
CLK_OF_DECLARE(qoriq_clockgen_t1023, "fsl,t1023-clockgen", clockgen_init);
|
||||
CLK_OF_DECLARE(qoriq_clockgen_t1040, "fsl,t1040-clockgen", clockgen_init);
|
||||
CLK_OF_DECLARE(qoriq_clockgen_t2080, "fsl,t2080-clockgen", clockgen_init);
|
||||
CLK_OF_DECLARE(qoriq_clockgen_t4240, "fsl,t4240-clockgen", clockgen_init);
|
||||
|
||||
/* Legacy nodes */
|
||||
CLK_OF_DECLARE(qoriq_sysclk_1, "fsl,qoriq-sysclk-1.0", sysclk_init);
|
||||
|
@ -2015,7 +2015,7 @@ static int stm32_register_hw_clk(struct device *dev,
|
||||
void __iomem *base, spinlock_t *lock,
|
||||
const struct clock_config *cfg)
|
||||
{
|
||||
static struct clk_hw **hws;
|
||||
struct clk_hw **hws;
|
||||
struct clk_hw *hw = ERR_PTR(-ENOENT);
|
||||
|
||||
hws = clk_data->hws;
|
||||
|
@ -191,6 +191,22 @@ int qcom_cc_register_sleep_clk(struct device *dev)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(qcom_cc_register_sleep_clk);
|
||||
|
||||
/* Drop 'protected-clocks' from the list of clocks to register */
|
||||
static void qcom_cc_drop_protected(struct device *dev, struct qcom_cc *cc)
|
||||
{
|
||||
struct device_node *np = dev->of_node;
|
||||
struct property *prop;
|
||||
const __be32 *p;
|
||||
u32 i;
|
||||
|
||||
of_property_for_each_u32(np, "protected-clocks", prop, p, i) {
|
||||
if (i >= cc->num_rclks)
|
||||
continue;
|
||||
|
||||
cc->rclks[i] = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static struct clk_hw *qcom_cc_clk_hw_get(struct of_phandle_args *clkspec,
|
||||
void *data)
|
||||
{
|
||||
@ -251,6 +267,8 @@ int qcom_cc_really_probe(struct platform_device *pdev,
|
||||
cc->rclks = rclks;
|
||||
cc->num_rclks = num_clks;
|
||||
|
||||
qcom_cc_drop_protected(dev, cc);
|
||||
|
||||
for (i = 0; i < num_clks; i++) {
|
||||
if (!rclks[i])
|
||||
continue;
|
||||
|
@ -1184,17 +1184,7 @@ static int attr_registers_show(struct seq_file *s, void *data)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int attr_registers_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, attr_registers_show, inode->i_private);
|
||||
}
|
||||
|
||||
static const struct file_operations attr_registers_fops = {
|
||||
.open = attr_registers_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
DEFINE_SHOW_ATTRIBUTE(attr_registers);
|
||||
|
||||
static void dfll_debug_init(struct tegra_dfll *td)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user