mirror of
https://github.com/FEX-Emu/linux.git
synced 2024-12-15 05:11:32 +00:00
A mix of small fixes affecting mostly ARM platforms as well as a
discrete clock expander chip. Most fixes are corrections to lousy clock data of one form or another. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.12 (GNU/Linux) iQIcBAABAgAGBQJRqQxiAAoJEDqPOy9afJhJ4V0P/104NigppoGWKrLi7LJ0gJCq Ikcz9FNCD8/upJvT1QdmIenZXBxEQX7FJFvuCWM08lYdHUVEYJ+9g/7JzYjCIuAt IQ+qCEW9JxjvlBkK7B3TBIeackJkBIN9ByTHhJA8eIUdjShLWHa9cIUDekuwppdw 2gSc08Yb6xXubudj7T74gRybwn0gJHWmy23qkzWY7sxuESkSPPEWyzsBNVXHsTOM L5LF/BedkjxEfYonbnEEr/5p6CL0gvm15clFVbXetmLcW6GporBxpu+yS3bwou7w Ix9wyZH8Mql9s6vBgfnQzSB5s7eX2XpXWDSYCxzutzLruAE9yvM4jidQ4o1xdcJ7 h8jF0ncXErgsiwJJhf410rPn9dZGzvH661/Bc4FG9WxcM2FGTOQsR2LDWQyk2CCF +DcjQyaziGhHcQFew0u0jQiJ8yWIkeEo0gWBtZmCsALtId0bLQ45hhcKzklLDLvu kq/qxIa0NpavOTZ4yaXbQtDewlcJOtgLttHSAstl1uC/UVAxmqUNUbvm2lxvTi+g GQ4O69dKQ8vsAmyrYJMfyWhM1iFFsHQ844yVsJ1E69m/TNAZeewovBn3rGbT3XKy eBPb7pjKMj8PKhmu4St2Yk+OwbWS5PZfuBvi4r1IV8cjYS+24HMtVuEJjtLLri3E 6IYCkpyDIEerz7a9mT1L =OuqZ -----END PGP SIGNATURE----- Merge tag 'clk-fixes-for-linus' of git://git.linaro.org/people/mturquette/linux Pull clock subsystem fixes from Mike Turquette: "A mix of small fixes affecting mostly ARM platforms as well as a discrete clock expander chip. Most fixes are corrections to lousy clock data of one form or another." * tag 'clk-fixes-for-linus' of git://git.linaro.org/people/mturquette/linux: clk: mxs: Include clk mxs header file clk: vt8500: Fix unbalanced spinlock in vt8500_dclk_set_rate() clk: si5351: Set initial clkout rate when defined in platform data. clk: si5351: Fix clkout rate computation. clk: samsung: Add CLK_IGNORE_UNUSED flag for the sysreg clocks clk: ux500: clk-sysctrl: handle clocks with no parents clk: ux500: Provide device enumeration number suffix for SMSC911x
This commit is contained in:
commit
0f7dafd44e
@ -932,7 +932,7 @@ static unsigned long si5351_clkout_recalc_rate(struct clk_hw *hw,
|
||||
unsigned char reg;
|
||||
unsigned char rdiv;
|
||||
|
||||
if (hwdata->num > 5)
|
||||
if (hwdata->num <= 5)
|
||||
reg = si5351_msynth_params_address(hwdata->num) + 2;
|
||||
else
|
||||
reg = SI5351_CLK6_7_OUTPUT_DIVIDER;
|
||||
@ -1477,6 +1477,16 @@ static int si5351_i2c_probe(struct i2c_client *client,
|
||||
return -EINVAL;
|
||||
}
|
||||
drvdata->onecell.clks[n] = clk;
|
||||
|
||||
/* set initial clkout rate */
|
||||
if (pdata->clkout[n].rate != 0) {
|
||||
int ret;
|
||||
ret = clk_set_rate(clk, pdata->clkout[n].rate);
|
||||
if (ret != 0) {
|
||||
dev_err(&client->dev, "Cannot set rate : %d\n",
|
||||
ret);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ret = of_clk_add_provider(client->dev.of_node, of_clk_src_onecell_get,
|
||||
|
@ -183,7 +183,7 @@ static int vt8500_dclk_set_rate(struct clk_hw *hw, unsigned long rate,
|
||||
writel(divisor, cdev->div_reg);
|
||||
vt8500_pmc_wait_busy();
|
||||
|
||||
spin_lock_irqsave(cdev->lock, flags);
|
||||
spin_unlock_irqrestore(cdev->lock, flags);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -10,6 +10,7 @@
|
||||
*/
|
||||
|
||||
#include <linux/clk.h>
|
||||
#include <linux/clk/mxs.h>
|
||||
#include <linux/clkdev.h>
|
||||
#include <linux/err.h>
|
||||
#include <linux/init.h>
|
||||
|
@ -791,7 +791,8 @@ struct samsung_gate_clock exynos4210_gate_clks[] __initdata = {
|
||||
GATE(smmu_pcie, "smmu_pcie", "aclk133", GATE_IP_FSYS, 18, 0, 0),
|
||||
GATE(modemif, "modemif", "aclk100", GATE_IP_PERIL, 28, 0, 0),
|
||||
GATE(chipid, "chipid", "aclk100", E4210_GATE_IP_PERIR, 0, 0, 0),
|
||||
GATE(sysreg, "sysreg", "aclk100", E4210_GATE_IP_PERIR, 0, 0, 0),
|
||||
GATE(sysreg, "sysreg", "aclk100", E4210_GATE_IP_PERIR, 0,
|
||||
CLK_IGNORE_UNUSED, 0),
|
||||
GATE(hdmi_cec, "hdmi_cec", "aclk100", E4210_GATE_IP_PERIR, 11, 0, 0),
|
||||
GATE(smmu_rotator, "smmu_rotator", "aclk200",
|
||||
E4210_GATE_IP_IMAGE, 4, 0, 0),
|
||||
@ -819,7 +820,8 @@ struct samsung_gate_clock exynos4x12_gate_clks[] __initdata = {
|
||||
GATE(smmu_mdma, "smmu_mdma", "aclk200", E4X12_GATE_IP_IMAGE, 5, 0, 0),
|
||||
GATE(mipi_hsi, "mipi_hsi", "aclk133", GATE_IP_FSYS, 10, 0, 0),
|
||||
GATE(chipid, "chipid", "aclk100", E4X12_GATE_IP_PERIR, 0, 0, 0),
|
||||
GATE(sysreg, "sysreg", "aclk100", E4X12_GATE_IP_PERIR, 1, 0, 0),
|
||||
GATE(sysreg, "sysreg", "aclk100", E4X12_GATE_IP_PERIR, 1,
|
||||
CLK_IGNORE_UNUSED, 0),
|
||||
GATE(hdmi_cec, "hdmi_cec", "aclk100", E4X12_GATE_IP_PERIR, 11, 0, 0),
|
||||
GATE(sclk_mdnie0, "sclk_mdnie0", "div_mdnie0",
|
||||
SRC_MASK_LCD0, 4, CLK_SET_RATE_PARENT, 0),
|
||||
|
@ -145,7 +145,13 @@ static struct clk *clk_reg_sysctrl(struct device *dev,
|
||||
return ERR_PTR(-ENOMEM);
|
||||
}
|
||||
|
||||
for (i = 0; i < num_parents; i++) {
|
||||
/* set main clock registers */
|
||||
clk->reg_sel[0] = reg_sel[0];
|
||||
clk->reg_bits[0] = reg_bits[0];
|
||||
clk->reg_mask[0] = reg_mask[0];
|
||||
|
||||
/* handle clocks with more than one parent */
|
||||
for (i = 1; i < num_parents; i++) {
|
||||
clk->reg_sel[i] = reg_sel[i];
|
||||
clk->reg_bits[i] = reg_bits[i];
|
||||
clk->reg_mask[i] = reg_mask[i];
|
||||
|
@ -325,7 +325,7 @@ void u8500_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base,
|
||||
clk = clk_reg_prcc_pclk("p3_pclk0", "per3clk", clkrst3_base,
|
||||
BIT(0), 0);
|
||||
clk_register_clkdev(clk, "fsmc", NULL);
|
||||
clk_register_clkdev(clk, NULL, "smsc911x");
|
||||
clk_register_clkdev(clk, NULL, "smsc911x.0");
|
||||
|
||||
clk = clk_reg_prcc_pclk("p3_pclk1", "per3clk", clkrst3_base,
|
||||
BIT(1), 0);
|
||||
|
Loading…
Reference in New Issue
Block a user