* [PATCH 0/3] Refactor Loongson1 clock
@ 2016-08-12 10:51 Keguang Zhang
2016-08-12 10:51 ` [PATCH 1/3] clk: Loongson1: " Keguang Zhang
` (2 more replies)
0 siblings, 3 replies; 9+ messages in thread
From: Keguang Zhang @ 2016-08-12 10:51 UTC (permalink / raw)
To: linux-clk, linux-mips, linux-kernel
Cc: Michael Turquette, Stephen Boyd, Keguang Zhang
From: Keguang Zhang <keguang.zhang@spreadtrum.com>
This patchset is to refactor Loongson1 clock,
and update Loongson1B clocks.
This applies on top of clk-next.
Thanks!
Kelvin Cheung (3):
clk: Loongson1: Refactor Loongson1 clock
clk: Loongson1: Update clocks of Loongson1B
clk: Loongson1: Make use of GENMASK
drivers/clk/Makefile | 2 +-
drivers/clk/loongson1/Makefile | 2 +
.../clk/{clk-ls1x.c => loongson1/clk-loongson1b.c} | 71 ++++++----------------
drivers/clk/loongson1/clk.c | 52 ++++++++++++++++
drivers/clk/loongson1/clk.h | 21 +++++++
5 files changed, 93 insertions(+), 55 deletions(-)
create mode 100644 drivers/clk/loongson1/Makefile
rename drivers/clk/{clk-ls1x.c => loongson1/clk-loongson1b.c} (68%)
create mode 100644 drivers/clk/loongson1/clk.c
create mode 100644 drivers/clk/loongson1/clk.h
--
1.9.1
^ permalink raw reply [flat|nested] 9+ messages in thread* [PATCH 1/3] clk: Loongson1: Refactor Loongson1 clock 2016-08-12 10:51 [PATCH 0/3] Refactor Loongson1 clock Keguang Zhang @ 2016-08-12 10:51 ` Keguang Zhang 2016-08-19 0:02 ` Stephen Boyd 2016-08-12 10:51 ` [PATCH 2/3] clk: Loongson1: Update clocks of Loongson1B Keguang Zhang 2016-08-12 10:51 ` [PATCH 3/3] clk: Loongson1: Make use of GENMASK Keguang Zhang 2 siblings, 1 reply; 9+ messages in thread From: Keguang Zhang @ 2016-08-12 10:51 UTC (permalink / raw) To: linux-clk, linux-mips, linux-kernel Cc: Michael Turquette, Stephen Boyd, Kelvin Cheung From: Kelvin Cheung <keguang.zhang@gmail.com> Factor out the common functions into loongson1/clk.c to support both Loongson1B and Loongson1C. And, put the rest into loongson1/clk-loongson1b.c. Signed-off-by: Kelvin Cheung <keguang.zhang@gmail.com> --- drivers/clk/Makefile | 2 +- drivers/clk/loongson1/Makefile | 2 + .../clk/{clk-ls1x.c => loongson1/clk-loongson1b.c} | 48 ++------------------ drivers/clk/loongson1/clk.c | 52 ++++++++++++++++++++++ drivers/clk/loongson1/clk.h | 21 +++++++++ 5 files changed, 80 insertions(+), 45 deletions(-) create mode 100644 drivers/clk/loongson1/Makefile rename drivers/clk/{clk-ls1x.c => loongson1/clk-loongson1b.c} (80%) create mode 100644 drivers/clk/loongson1/clk.c create mode 100644 drivers/clk/loongson1/clk.h diff --git a/drivers/clk/Makefile b/drivers/clk/Makefile index 3b6f9cf..a508375 100644 --- a/drivers/clk/Makefile +++ b/drivers/clk/Makefile @@ -26,7 +26,6 @@ obj-$(CONFIG_ARCH_CLPS711X) += clk-clps711x.o obj-$(CONFIG_COMMON_CLK_CS2000_CP) += clk-cs2000-cp.o obj-$(CONFIG_ARCH_EFM32) += clk-efm32gg.o obj-$(CONFIG_ARCH_HIGHBANK) += clk-highbank.o -obj-$(CONFIG_MACH_LOONGSON32) += clk-ls1x.o obj-$(CONFIG_COMMON_CLK_MAX_GEN) += clk-max-gen.o obj-$(CONFIG_COMMON_CLK_MAX77686) += clk-max77686.o obj-$(CONFIG_COMMON_CLK_MAX77802) += clk-max77802.o @@ -91,3 +90,4 @@ obj-$(CONFIG_COMMON_CLK_VERSATILE) += versatile/ obj-$(CONFIG_X86) += x86/ obj-$(CONFIG_ARCH_ZX) += zte/ obj-$(CONFIG_ARCH_ZYNQ) += zynq/ +obj-$(CONFIG_MACH_LOONGSON32) += loongson1/ diff --git a/drivers/clk/loongson1/Makefile b/drivers/clk/loongson1/Makefile new file mode 100644 index 0000000..5a162a1 --- /dev/null +++ b/drivers/clk/loongson1/Makefile @@ -0,0 +1,2 @@ +obj-y += clk.o +obj-$(CONFIG_LOONGSON1_LS1B) += clk-loongson1b.o diff --git a/drivers/clk/clk-ls1x.c b/drivers/clk/loongson1/clk-loongson1b.c similarity index 80% rename from drivers/clk/clk-ls1x.c rename to drivers/clk/loongson1/clk-loongson1b.c index 5097831..336ff95 100644 --- a/drivers/clk/clk-ls1x.c +++ b/drivers/clk/loongson1/clk-loongson1b.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012 Zhang, Keguang <keguang.zhang@gmail.com> + * Copyright (c) 2012-2016 Zhang, Keguang <keguang.zhang@gmail.com> * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the @@ -10,25 +10,16 @@ #include <linux/clkdev.h> #include <linux/clk-provider.h> #include <linux/io.h> -#include <linux/slab.h> #include <linux/err.h> #include <loongson1.h> +#include "clk.h" #define OSC (33 * 1000000) #define DIV_APB 2 static DEFINE_SPINLOCK(_lock); -static int ls1x_pll_clk_enable(struct clk_hw *hw) -{ - return 0; -} - -static void ls1x_pll_clk_disable(struct clk_hw *hw) -{ -} - static unsigned long ls1x_pll_recalc_rate(struct clk_hw *hw, unsigned long parent_rate) { @@ -48,38 +39,6 @@ static const struct clk_ops ls1x_pll_clk_ops = { .recalc_rate = ls1x_pll_recalc_rate, }; -static struct clk *__init clk_register_pll(struct device *dev, - const char *name, - const char *parent_name, - unsigned long flags) -{ - struct clk_hw *hw; - struct clk *clk; - struct clk_init_data init; - - /* allocate the divider */ - hw = kzalloc(sizeof(struct clk_hw), GFP_KERNEL); - if (!hw) { - pr_err("%s: could not allocate clk_hw\n", __func__); - return ERR_PTR(-ENOMEM); - } - - init.name = name; - init.ops = &ls1x_pll_clk_ops; - init.flags = flags | CLK_IS_BASIC; - init.parent_names = (parent_name ? &parent_name : NULL); - init.num_parents = (parent_name ? 1 : 0); - hw->init = &init; - - /* register the clock */ - clk = clk_register(dev, hw); - - if (IS_ERR(clk)) - kfree(hw); - - return clk; -} - static const char * const cpu_parents[] = { "cpu_clk_div", "osc_33m_clk", }; static const char * const ahb_parents[] = { "ahb_clk_div", "osc_33m_clk", }; static const char * const dc_parents[] = { "dc_clk_div", "osc_33m_clk", }; @@ -92,7 +51,8 @@ void __init ls1x_clk_init(void) clk_register_clkdev(clk, "osc_33m_clk", NULL); /* clock derived from 33 MHz OSC clk */ - clk = clk_register_pll(NULL, "pll_clk", "osc_33m_clk", 0); + clk = clk_register_pll(NULL, "pll_clk", "osc_33m_clk", + &ls1x_pll_clk_ops, 0); clk_register_clkdev(clk, "pll_clk", NULL); /* clock derived from PLL clk */ diff --git a/drivers/clk/loongson1/clk.c b/drivers/clk/loongson1/clk.c new file mode 100644 index 0000000..367b84a --- /dev/null +++ b/drivers/clk/loongson1/clk.c @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2012-2016 Zhang, Keguang <keguang.zhang@gmail.com> + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + */ + +#include <linux/clk-provider.h> +#include <linux/slab.h> + +int ls1x_pll_clk_enable(struct clk_hw *hw) +{ + return 0; +} + +void ls1x_pll_clk_disable(struct clk_hw *hw) +{ +} + +struct clk *__init clk_register_pll(struct device *dev, + const char *name, + const char *parent_name, + const struct clk_ops *ops, + unsigned long flags) +{ + struct clk_hw *hw; + struct clk *clk; + struct clk_init_data init; + + /* allocate the divider */ + hw = kzalloc(sizeof(*hw), GFP_KERNEL); + if (!hw) + return ERR_PTR(-ENOMEM); + + init.name = name; + init.ops = ops; + init.flags = flags | CLK_IS_BASIC; + init.parent_names = (parent_name ? &parent_name : NULL); + init.num_parents = (parent_name ? 1 : 0); + hw->init = &init; + + /* register the clock */ + clk = clk_register(dev, hw); + + if (IS_ERR(clk)) + kfree(hw); + + return clk; +} + diff --git a/drivers/clk/loongson1/clk.h b/drivers/clk/loongson1/clk.h new file mode 100644 index 0000000..aa880e6 --- /dev/null +++ b/drivers/clk/loongson1/clk.h @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2012-2016 Zhang, Keguang <keguang.zhang@gmail.com> + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + */ + +#ifndef __LOONGSON1_CLK_H +#define __LOONGSON1_CLK_H + +int ls1x_pll_clk_enable(struct clk_hw *hw); +void ls1x_pll_clk_disable(struct clk_hw *hw); +struct clk *__init clk_register_pll(struct device *dev, + const char *name, + const char *parent_name, + const struct clk_ops *ops, + unsigned long flags); + +#endif /* __LOONGSON1_CLK_H */ -- 1.9.1 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 1/3] clk: Loongson1: Refactor Loongson1 clock 2016-08-12 10:51 ` [PATCH 1/3] clk: Loongson1: " Keguang Zhang @ 2016-08-19 0:02 ` Stephen Boyd 2016-09-18 10:56 ` Kelvin Cheung 0 siblings, 1 reply; 9+ messages in thread From: Stephen Boyd @ 2016-08-19 0:02 UTC (permalink / raw) To: Keguang Zhang; +Cc: linux-clk, linux-mips, linux-kernel, Michael Turquette On 08/12, Keguang Zhang wrote: > @@ -91,3 +90,4 @@ obj-$(CONFIG_COMMON_CLK_VERSATILE) += versatile/ > obj-$(CONFIG_X86) += x86/ > obj-$(CONFIG_ARCH_ZX) += zte/ > obj-$(CONFIG_ARCH_ZYNQ) += zynq/ > +obj-$(CONFIG_MACH_LOONGSON32) += loongson1/ Please keep this sorted alphabetically. > diff --git a/drivers/clk/loongson1/clk.c b/drivers/clk/loongson1/clk.c > new file mode 100644 > index 0000000..367b84a > --- /dev/null > +++ b/drivers/clk/loongson1/clk.c > @@ -0,0 +1,52 @@ > +/* > + * Copyright (c) 2012-2016 Zhang, Keguang <keguang.zhang@gmail.com> > + * > + * This program is free software; you can redistribute it and/or modify it > + * under the terms of the GNU General Public License as published by the > + * Free Software Foundation; either version 2 of the License, or (at your > + * option) any later version. > + */ > + > +#include <linux/clk-provider.h> > +#include <linux/slab.h> > + > +int ls1x_pll_clk_enable(struct clk_hw *hw) > +{ > + return 0; > +} > + > +void ls1x_pll_clk_disable(struct clk_hw *hw) > +{ > +} Why do we need empty functions? > + > +struct clk *__init clk_register_pll(struct device *dev, > + const char *name, > + const char *parent_name, > + const struct clk_ops *ops, > + unsigned long flags) > +{ > + struct clk_hw *hw; > + struct clk *clk; > + struct clk_init_data init; > + > + /* allocate the divider */ > + hw = kzalloc(sizeof(*hw), GFP_KERNEL); > + if (!hw) > + return ERR_PTR(-ENOMEM); > + > + init.name = name; > + init.ops = ops; > + init.flags = flags | CLK_IS_BASIC; > + init.parent_names = (parent_name ? &parent_name : NULL); > + init.num_parents = (parent_name ? 1 : 0); > + hw->init = &init; > + > + /* register the clock */ > + clk = clk_register(dev, hw); Please rebase this on clk: ls1x: Migrate to clk_hw based OF and registration APIs. I've put that into clk-next. > + > + if (IS_ERR(clk)) > + kfree(hw); > + > + return clk; > +} > + > diff --git a/drivers/clk/loongson1/clk.h b/drivers/clk/loongson1/clk.h > new file mode 100644 > index 0000000..aa880e6 > --- /dev/null > +++ b/drivers/clk/loongson1/clk.h > @@ -0,0 +1,21 @@ > +/* > + * Copyright (c) 2012-2016 Zhang, Keguang <keguang.zhang@gmail.com> > + * > + * This program is free software; you can redistribute it and/or modify it > + * under the terms of the GNU General Public License as published by the > + * Free Software Foundation; either version 2 of the License, or (at your > + * option) any later version. > + */ > + > +#ifndef __LOONGSON1_CLK_H > +#define __LOONGSON1_CLK_H Forward declare struct clk_hw, struct device, struct clk_ops here. > + > +int ls1x_pll_clk_enable(struct clk_hw *hw); > +void ls1x_pll_clk_disable(struct clk_hw *hw); > +struct clk *__init clk_register_pll(struct device *dev, __init is unnecessary in header files. -- Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/3] clk: Loongson1: Refactor Loongson1 clock 2016-08-19 0:02 ` Stephen Boyd @ 2016-09-18 10:56 ` Kelvin Cheung 0 siblings, 0 replies; 9+ messages in thread From: Kelvin Cheung @ 2016-09-18 10:56 UTC (permalink / raw) To: Stephen Boyd; +Cc: linux-clk, linux-mips, linux-kernel, Michael Turquette [-- Attachment #1: Type: text/plain, Size: 3565 bytes --] 2016-08-19 8:02 GMT+08:00 Stephen Boyd <sboyd@codeaurora.org>: > On 08/12, Keguang Zhang wrote: > > @@ -91,3 +90,4 @@ obj-$(CONFIG_COMMON_CLK_VERSATILE) += versatile/ > > obj-$(CONFIG_X86) += x86/ > > obj-$(CONFIG_ARCH_ZX) += zte/ > > obj-$(CONFIG_ARCH_ZYNQ) += zynq/ > > +obj-$(CONFIG_MACH_LOONGSON32) += loongson1/ > > Please keep this sorted alphabetically. > will do. > > > diff --git a/drivers/clk/loongson1/clk.c b/drivers/clk/loongson1/clk.c > > new file mode 100644 > > index 0000000..367b84a > > --- /dev/null > > +++ b/drivers/clk/loongson1/clk.c > > @@ -0,0 +1,52 @@ > > +/* > > + * Copyright (c) 2012-2016 Zhang, Keguang <keguang.zhang@gmail.com> > > + * > > + * This program is free software; you can redistribute it and/or > modify it > > + * under the terms of the GNU General Public License as published by > the > > + * Free Software Foundation; either version 2 of the License, or (at > your > > + * option) any later version. > > + */ > > + > > +#include <linux/clk-provider.h> > > +#include <linux/slab.h> > > + > > +int ls1x_pll_clk_enable(struct clk_hw *hw) > > +{ > > + return 0; > > +} > > + > > +void ls1x_pll_clk_disable(struct clk_hw *hw) > > +{ > > +} > > Why do we need empty functions? > will do. > > + > > +struct clk *__init clk_register_pll(struct device *dev, > > + const char *name, > > + const char *parent_name, > > + const struct clk_ops *ops, > > + unsigned long flags) > > +{ > > + struct clk_hw *hw; > > + struct clk *clk; > > + struct clk_init_data init; > > + > > + /* allocate the divider */ > > + hw = kzalloc(sizeof(*hw), GFP_KERNEL); > > + if (!hw) > > + return ERR_PTR(-ENOMEM); > > + > > + init.name = name; > > + init.ops = ops; > > + init.flags = flags | CLK_IS_BASIC; > > + init.parent_names = (parent_name ? &parent_name : NULL); > > + init.num_parents = (parent_name ? 1 : 0); > > + hw->init = &init; > > + > > + /* register the clock */ > > + clk = clk_register(dev, hw); > > Please rebase this on clk: ls1x: Migrate to clk_hw based OF and > registration APIs. I've put that into clk-next. > will do. > > + > > + if (IS_ERR(clk)) > > + kfree(hw); > > + > > + return clk; > > +} > > + > > diff --git a/drivers/clk/loongson1/clk.h b/drivers/clk/loongson1/clk.h > > new file mode 100644 > > index 0000000..aa880e6 > > --- /dev/null > > +++ b/drivers/clk/loongson1/clk.h > > @@ -0,0 +1,21 @@ > > +/* > > + * Copyright (c) 2012-2016 Zhang, Keguang <keguang.zhang@gmail.com> > > + * > > + * This program is free software; you can redistribute it and/or > modify it > > + * under the terms of the GNU General Public License as published by > the > > + * Free Software Foundation; either version 2 of the License, or (at > your > > + * option) any later version. > > + */ > > + > > +#ifndef __LOONGSON1_CLK_H > > +#define __LOONGSON1_CLK_H > > Forward declare struct clk_hw, struct device, struct clk_ops > here. > > > + > > +int ls1x_pll_clk_enable(struct clk_hw *hw); > > +void ls1x_pll_clk_disable(struct clk_hw *hw); > > +struct clk *__init clk_register_pll(struct device *dev, > > __init is unnecessary in header files. > will do. > -- > Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, > a Linux Foundation Collaborative Project > -- Best regards, Kelvin Cheung [-- Attachment #2: Type: text/html, Size: 5888 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 2/3] clk: Loongson1: Update clocks of Loongson1B 2016-08-12 10:51 [PATCH 0/3] Refactor Loongson1 clock Keguang Zhang 2016-08-12 10:51 ` [PATCH 1/3] clk: Loongson1: " Keguang Zhang @ 2016-08-12 10:51 ` Keguang Zhang 2016-08-19 0:03 ` Stephen Boyd 2016-08-12 10:51 ` [PATCH 3/3] clk: Loongson1: Make use of GENMASK Keguang Zhang 2 siblings, 1 reply; 9+ messages in thread From: Keguang Zhang @ 2016-08-12 10:51 UTC (permalink / raw) To: linux-clk, linux-mips, linux-kernel Cc: Michael Turquette, Stephen Boyd, Kelvin Cheung From: Kelvin Cheung <keguang.zhang@gmail.com> This patch updates some clock names of Loongson1B, and adds AC97, DMA and NAND clock. Signed-off-by: Kelvin Cheung <keguang.zhang@gmail.com> --- drivers/clk/loongson1/clk-loongson1b.c | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/drivers/clk/loongson1/clk-loongson1b.c b/drivers/clk/loongson1/clk-loongson1b.c index 336ff95..2302ee5 100644 --- a/drivers/clk/loongson1/clk-loongson1b.c +++ b/drivers/clk/loongson1/clk-loongson1b.c @@ -39,19 +39,19 @@ static const struct clk_ops ls1x_pll_clk_ops = { .recalc_rate = ls1x_pll_recalc_rate, }; -static const char * const cpu_parents[] = { "cpu_clk_div", "osc_33m_clk", }; -static const char * const ahb_parents[] = { "ahb_clk_div", "osc_33m_clk", }; -static const char * const dc_parents[] = { "dc_clk_div", "osc_33m_clk", }; +static const char *const cpu_parents[] = { "cpu_clk_div", "osc_clk", }; +static const char *const ahb_parents[] = { "ahb_clk_div", "osc_clk", }; +static const char *const dc_parents[] = { "dc_clk_div", "osc_clk", }; void __init ls1x_clk_init(void) { struct clk *clk; - clk = clk_register_fixed_rate(NULL, "osc_33m_clk", NULL, 0, OSC); - clk_register_clkdev(clk, "osc_33m_clk", NULL); + clk = clk_register_fixed_rate(NULL, "osc_clk", NULL, 0, OSC); + clk_register_clkdev(clk, "osc_clk", NULL); /* clock derived from 33 MHz OSC clk */ - clk = clk_register_pll(NULL, "pll_clk", "osc_33m_clk", + clk = clk_register_pll(NULL, "pll_clk", "osc_clk", &ls1x_pll_clk_ops, 0); clk_register_clkdev(clk, "pll_clk", NULL); @@ -106,6 +106,7 @@ void __init ls1x_clk_init(void) CLK_SET_RATE_NO_REPARENT, LS1X_CLK_PLL_DIV, BYPASS_DDR_SHIFT, BYPASS_DDR_WIDTH, 0, &_lock); clk_register_clkdev(clk, "ahb_clk", NULL); + clk_register_clkdev(clk, "ls1x-dma", NULL); clk_register_clkdev(clk, "stmmaceth", NULL); /* clock derived from AHB clk */ @@ -113,9 +114,11 @@ void __init ls1x_clk_init(void) clk = clk_register_fixed_factor(NULL, "apb_clk", "ahb_clk", 0, 1, DIV_APB); clk_register_clkdev(clk, "apb_clk", NULL); - clk_register_clkdev(clk, "ls1x_i2c", NULL); - clk_register_clkdev(clk, "ls1x_pwmtimer", NULL); - clk_register_clkdev(clk, "ls1x_spi", NULL); - clk_register_clkdev(clk, "ls1x_wdt", NULL); + clk_register_clkdev(clk, "ls1x-ac97", NULL); + clk_register_clkdev(clk, "ls1x-i2c", NULL); + clk_register_clkdev(clk, "ls1x-nand", NULL); + clk_register_clkdev(clk, "ls1x-pwmtimer", NULL); + clk_register_clkdev(clk, "ls1x-spi", NULL); + clk_register_clkdev(clk, "ls1x-wdt", NULL); clk_register_clkdev(clk, "serial8250", NULL); } -- 1.9.1 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 2/3] clk: Loongson1: Update clocks of Loongson1B 2016-08-12 10:51 ` [PATCH 2/3] clk: Loongson1: Update clocks of Loongson1B Keguang Zhang @ 2016-08-19 0:03 ` Stephen Boyd 0 siblings, 0 replies; 9+ messages in thread From: Stephen Boyd @ 2016-08-19 0:03 UTC (permalink / raw) To: Keguang Zhang; +Cc: linux-clk, linux-mips, linux-kernel, Michael Turquette On 08/12, Keguang Zhang wrote: > From: Kelvin Cheung <keguang.zhang@gmail.com> > > This patch updates some clock names of Loongson1B, > and adds AC97, DMA and NAND clock. > > Signed-off-by: Kelvin Cheung <keguang.zhang@gmail.com> Ah here's the rewrite of the name. We should squash the other patch into this one so that we don't break bisection. -- Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 3/3] clk: Loongson1: Make use of GENMASK 2016-08-12 10:51 [PATCH 0/3] Refactor Loongson1 clock Keguang Zhang 2016-08-12 10:51 ` [PATCH 1/3] clk: Loongson1: " Keguang Zhang 2016-08-12 10:51 ` [PATCH 2/3] clk: Loongson1: Update clocks of Loongson1B Keguang Zhang @ 2016-08-12 10:51 ` Keguang Zhang 2016-08-19 0:04 ` Stephen Boyd 2 siblings, 1 reply; 9+ messages in thread From: Keguang Zhang @ 2016-08-12 10:51 UTC (permalink / raw) To: linux-clk, linux-mips, linux-kernel Cc: Michael Turquette, Stephen Boyd, Kelvin Cheung From: Kelvin Cheung <keguang.zhang@gmail.com> Make use of GENMASK instead of open coding the equivalent operation, and update the PLL formula. Signed-off-by: Kelvin Cheung <keguang.zhang@gmail.com> --- drivers/clk/loongson1/clk-loongson1b.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/clk/loongson1/clk-loongson1b.c b/drivers/clk/loongson1/clk-loongson1b.c index 2302ee5..5cedb28 100644 --- a/drivers/clk/loongson1/clk-loongson1b.c +++ b/drivers/clk/loongson1/clk-loongson1b.c @@ -26,7 +26,7 @@ static unsigned long ls1x_pll_recalc_rate(struct clk_hw *hw, u32 pll, rate; pll = __raw_readl(LS1X_CLK_PLL_FREQ); - rate = 12 + (pll & 0x3f) + (((pll >> 8) & 0x3ff) >> 10); + rate = 12 + (pll & GENMASK(5, 0)); rate *= OSC; rate >>= 1; -- 1.9.1 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 3/3] clk: Loongson1: Make use of GENMASK 2016-08-12 10:51 ` [PATCH 3/3] clk: Loongson1: Make use of GENMASK Keguang Zhang @ 2016-08-19 0:04 ` Stephen Boyd 2016-09-18 11:00 ` Kelvin Cheung 0 siblings, 1 reply; 9+ messages in thread From: Stephen Boyd @ 2016-08-19 0:04 UTC (permalink / raw) To: Keguang Zhang; +Cc: linux-clk, linux-mips, linux-kernel, Michael Turquette On 08/12, Keguang Zhang wrote: > From: Kelvin Cheung <keguang.zhang@gmail.com> > > Make use of GENMASK instead of open coding the equivalent operation, > and update the PLL formula. Was the old formula broken? I would expect a bug fix like this to be first in the series and be backported to any affected stable trees. -- Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 3/3] clk: Loongson1: Make use of GENMASK 2016-08-19 0:04 ` Stephen Boyd @ 2016-09-18 11:00 ` Kelvin Cheung 0 siblings, 0 replies; 9+ messages in thread From: Kelvin Cheung @ 2016-09-18 11:00 UTC (permalink / raw) To: Stephen Boyd; +Cc: linux-clk, linux-mips, linux-kernel, Michael Turquette [-- Attachment #1: Type: text/plain, Size: 639 bytes --] 2016-08-19 8:04 GMT+08:00 Stephen Boyd <sboyd@codeaurora.org>: > On 08/12, Keguang Zhang wrote: > > From: Kelvin Cheung <keguang.zhang@gmail.com> > > > > Make use of GENMASK instead of open coding the equivalent operation, > > and update the PLL formula. > > Was the old formula broken? I would expect a bug fix like this to > be first in the series and be backported to any affected stable > trees. > > It was not broken. I remove the rest of the fomula due to it is always zero. > -- > Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, > a Linux Foundation Collaborative Project > -- Best regards, Kelvin Cheung [-- Attachment #2: Type: text/html, Size: 1572 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2016-09-18 11:00 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2016-08-12 10:51 [PATCH 0/3] Refactor Loongson1 clock Keguang Zhang 2016-08-12 10:51 ` [PATCH 1/3] clk: Loongson1: " Keguang Zhang 2016-08-19 0:02 ` Stephen Boyd 2016-09-18 10:56 ` Kelvin Cheung 2016-08-12 10:51 ` [PATCH 2/3] clk: Loongson1: Update clocks of Loongson1B Keguang Zhang 2016-08-19 0:03 ` Stephen Boyd 2016-08-12 10:51 ` [PATCH 3/3] clk: Loongson1: Make use of GENMASK Keguang Zhang 2016-08-19 0:04 ` Stephen Boyd 2016-09-18 11:00 ` Kelvin Cheung
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).