mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-22 22:51:37 +00: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
6 changed files with 50 additions and 25 deletions
|
@ -168,3 +168,19 @@ a shared clock is forbidden.
|
||||||
|
|
||||||
Configuration of common clocks, which affect multiple consumer devices can
|
Configuration of common clocks, which affect multiple consumer devices can
|
||||||
be similarly specified in the clock provider node.
|
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 ",
|
"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;
|
int i;
|
||||||
u32 src_pcksr0 = readl(src_base + SRC_PCKSR0);
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int nomadik_src_clk_open(struct inode *inode, struct file *file)
|
DEFINE_SHOW_ATTRIBUTE(nomadik_src_clk_debugfs);
|
||||||
{
|
|
||||||
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,
|
|
||||||
};
|
|
||||||
|
|
||||||
static int __init nomadik_src_clk_init_debugfs(void)
|
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_pcksr0_boot = readl(src_base + SRC_PCKSR0);
|
||||||
src_pcksr1_boot = readl(src_base + SRC_PCKSR1);
|
src_pcksr1_boot = readl(src_base + SRC_PCKSR1);
|
||||||
debugfs_create_file("nomadik-src-clk", S_IFREG | S_IRUGO,
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
device_initcall(nomadik_src_clk_init_debugfs);
|
device_initcall(nomadik_src_clk_init_debugfs);
|
||||||
|
|
|
@ -1418,12 +1418,23 @@ err:
|
||||||
|
|
||||||
CLK_OF_DECLARE(qoriq_clockgen_1, "fsl,qoriq-clockgen-1.0", clockgen_init);
|
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_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_ls1012a, "fsl,ls1012a-clockgen", clockgen_init);
|
||||||
CLK_OF_DECLARE(qoriq_clockgen_ls1021a, "fsl,ls1021a-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_ls1043a, "fsl,ls1043a-clockgen", clockgen_init);
|
||||||
CLK_OF_DECLARE(qoriq_clockgen_ls1046a, "fsl,ls1046a-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_ls1088a, "fsl,ls1088a-clockgen", clockgen_init);
|
||||||
CLK_OF_DECLARE(qoriq_clockgen_ls2080a, "fsl,ls2080a-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 */
|
/* Legacy nodes */
|
||||||
CLK_OF_DECLARE(qoriq_sysclk_1, "fsl,qoriq-sysclk-1.0", sysclk_init);
|
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,
|
void __iomem *base, spinlock_t *lock,
|
||||||
const struct clock_config *cfg)
|
const struct clock_config *cfg)
|
||||||
{
|
{
|
||||||
static struct clk_hw **hws;
|
struct clk_hw **hws;
|
||||||
struct clk_hw *hw = ERR_PTR(-ENOENT);
|
struct clk_hw *hw = ERR_PTR(-ENOENT);
|
||||||
|
|
||||||
hws = clk_data->hws;
|
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);
|
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,
|
static struct clk_hw *qcom_cc_clk_hw_get(struct of_phandle_args *clkspec,
|
||||||
void *data)
|
void *data)
|
||||||
{
|
{
|
||||||
|
@ -251,6 +267,8 @@ int qcom_cc_really_probe(struct platform_device *pdev,
|
||||||
cc->rclks = rclks;
|
cc->rclks = rclks;
|
||||||
cc->num_rclks = num_clks;
|
cc->num_rclks = num_clks;
|
||||||
|
|
||||||
|
qcom_cc_drop_protected(dev, cc);
|
||||||
|
|
||||||
for (i = 0; i < num_clks; i++) {
|
for (i = 0; i < num_clks; i++) {
|
||||||
if (!rclks[i])
|
if (!rclks[i])
|
||||||
continue;
|
continue;
|
||||||
|
|
|
@ -1184,17 +1184,7 @@ static int attr_registers_show(struct seq_file *s, void *data)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int attr_registers_open(struct inode *inode, struct file *file)
|
DEFINE_SHOW_ATTRIBUTE(attr_registers);
|
||||||
{
|
|
||||||
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,
|
|
||||||
};
|
|
||||||
|
|
||||||
static void dfll_debug_init(struct tegra_dfll *td)
|
static void dfll_debug_init(struct tegra_dfll *td)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue