Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- fFrom b56f56d1569be98fc3f8e4a298e8101ce791c98c Mon Sep 17 00:00:00 2001
- From: root <aneox.inbox@gmail.com>
- Date: Wed, 28 Dec 2016 03:18:14 +0600
- Subject: [PATCH 1/2] apb1 clock can be changed in script.bin
- ---
- arch/arm/mach-sun7i/clock/clock.c | 22 ++++++++++++++++++++++
- arch/arm/mach-sun7i/clock/sys_clk.c | 2 ++
- drivers/tty/serial/8250/8250_sunxi.c | 4 ++--
- 3 files changed, 26 insertions(+), 2 deletions(-)
- diff --git a/arch/arm/mach-sun7i/clock/clock.c b/arch/arm/mach-sun7i/clock/clock.c
- index 26fe462..9fd2ab9 100644
- --- a/arch/arm/mach-sun7i/clock/clock.c
- +++ b/arch/arm/mach-sun7i/clock/clock.c
- @@ -126,6 +126,28 @@ int clk_init(void)
- }
- }
- + if (script_parser_fetch("clock", "apb1", &val, sizeof(int)) == 0) {
- + struct clk *tmpClk;
- + __u32 tmpRate, min, max;
- + CCU_INF("script config apb1 to %dMHz\n", val);
- + clk = &aw_clock[AW_SYS_CLK_APB1];
- + tmpClk = &aw_clock[AW_SYS_CLK_PLL62];
- + CCU_INF("apb1 0 clock was %lu\n", clk_get_rate(clk));
- + clk_set_parent(clk, tmpClk);
- + tmpRate = clk_get_rate(tmpClk) / 1000000;
- + CCU_INF("apb1 new parent clock is %lu\n", clk_get_rate(clk_get_parent(clk)));
- + min = (tmpRate / (8 * 32));
- + max = tmpRate;
- + if (val >= min && val <= max) {
- + clk_enable(clk);
- + clk_set_rate(clk, val * 1000000);
- + CCU_INF("apb1 new clock is %lu\n", clk_get_rate(clk));
- + } else {
- + CCU_ERR(" invalid apb1 value, must in %dMHz ~ %dGHz\n", min, max);
- + }
- + }
- +
- +
- return 0;
- }
- arch_initcall(clk_init);
- diff --git a/arch/arm/mach-sun7i/clock/sys_clk.c b/arch/arm/mach-sun7i/clock/sys_clk.c
- index 0928935..8658a30 100644
- --- a/arch/arm/mach-sun7i/clock/sys_clk.c
- +++ b/arch/arm/mach-sun7i/clock/sys_clk.c
- @@ -903,6 +903,8 @@ static int sys_clk_set_rate(__aw_ccu_clk_id_e id, __u64 rate)
- aw_ccu_reg->Apb1ClkDiv.PreDiv = tmpDivP;
- aw_ccu_reg->Apb1ClkDiv.ClkDiv = tmpDivM;
- + CCU_INF("apb1 new config preDiv %d ClkDiv %d\n", tmpDivP, tmpDivM);
- +
- return 0;
- }
- default: {
- diff --git a/drivers/tty/serial/8250/8250_sunxi.c b/drivers/tty/serial/8250/8250_sunxi.c
- index 25fdcff..17560d3 100644
- --- a/drivers/tty/serial/8250/8250_sunxi.c
- +++ b/drivers/tty/serial/8250/8250_sunxi.c
- @@ -212,8 +212,8 @@ static int __devinit sw_serial_probe(struct platform_device *dev)
- port.serial_out = sw_serial_out32;
- port.handle_irq = sw_serial_handle_irq;
- - pr_info("serial probe %d irq %d mapbase 0x%08x\n", dev->id,
- - sport->irq, sport->mmres->start);
- + pr_info("serial probe %d irq %d mapbase 0x%08x uartclk %u\n", dev->id,
- + sport->irq, sport->mmres->start, port.uartclk);
- ret = serial8250_register_port(&port);
- if (ret < 0)
- goto free_dev;
- --
- 2.1.4
- From d3da6a98f8e299caa4dacfd82307f693babbc1a7 Mon Sep 17 00:00:00 2001
- From: AneoX <aneox.inbox@gmail.com>
- Date: Sun, 8 Jan 2017 06:35:04 +0600
- Subject: [PATCH 2/2] apb1 pll6 parent fix
- ---
- arch/arm/mach-sun7i/clock/clock.c | 2 +-
- arch/arm/mach-sun7i/clock/sys_clk.c | 6 +++---
- 2 files changed, 4 insertions(+), 4 deletions(-)
- diff --git a/arch/arm/mach-sun7i/clock/clock.c b/arch/arm/mach-sun7i/clock/clock.c
- index 9fd2ab9..9e07969 100644
- --- a/arch/arm/mach-sun7i/clock/clock.c
- +++ b/arch/arm/mach-sun7i/clock/clock.c
- @@ -131,7 +131,7 @@ int clk_init(void)
- __u32 tmpRate, min, max;
- CCU_INF("script config apb1 to %dMHz\n", val);
- clk = &aw_clock[AW_SYS_CLK_APB1];
- - tmpClk = &aw_clock[AW_SYS_CLK_PLL62];
- + tmpClk = &aw_clock[AW_SYS_CLK_PLL6];
- CCU_INF("apb1 0 clock was %lu\n", clk_get_rate(clk));
- clk_set_parent(clk, tmpClk);
- tmpRate = clk_get_rate(tmpClk) / 1000000;
- diff --git a/arch/arm/mach-sun7i/clock/sys_clk.c b/arch/arm/mach-sun7i/clock/sys_clk.c
- index 8658a30..e055c03 100644
- --- a/arch/arm/mach-sun7i/clock/sys_clk.c
- +++ b/arch/arm/mach-sun7i/clock/sys_clk.c
- @@ -84,7 +84,7 @@ static __aw_ccu_clk_id_e sys_clk_get_parent(__aw_ccu_clk_id_e id)
- case 0:
- return AW_SYS_CLK_HOSC;
- case 1:
- - return AW_SYS_CLK_PLL62;
- + return AW_SYS_CLK_PLL6;
- case 2:
- return AW_SYS_CLK_LOSC;
- case 3:
- @@ -313,7 +313,7 @@ static __u64 sys_clk_get_rate(__aw_ccu_clk_id_e id)
- tmpApb1Rate = 24000000;
- break;
- case 1:
- - tmpApb1Rate = sys_clk_get_rate(AW_SYS_CLK_PLL62);
- + tmpApb1Rate = sys_clk_get_rate(AW_SYS_CLK_PLL6);
- break;
- case 2:
- tmpApb1Rate = 32768;
- @@ -403,7 +403,7 @@ static __s32 sys_clk_set_parent(__aw_ccu_clk_id_e id, __aw_ccu_clk_id_e parent)
- case AW_SYS_CLK_HOSC:
- aw_ccu_reg->Apb1ClkDiv.ClkSrc = 0;
- break;
- - case AW_SYS_CLK_PLL62:
- + case AW_SYS_CLK_PLL6:
- aw_ccu_reg->Apb1ClkDiv.ClkSrc = 1;
- break;
- default:
- --
- 2.1.4
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement