Re: [PATCH v5 2/7] clk: meson: aoclk: refactor common code into dedicated file
On Tue, 2018-04-17 at 16:16 +0800, Yixun Lan wrote: > Hi Jerome > > On 04/16/18 18:38, Jerome Brunet wrote: > > > + */ > > > + for (clkid = 0; clkid < data->num_clks; clkid++) { > > > + data->clks[clkid]->map = regmap; > > > + > > > + ret = devm_clk_hw_register(dev, data->hw_data->hws[clkid]); > > > + if (ret) > > > + return ret; > > > + } > > > + > > > + return devm_of_clk_add_hw_provider(dev, of_clk_hw_onecell_get, > > > + (void *) data->hw_data); > > > +} > > > > Missing new line here. Please run checkpatch and pay attention to git > > warnings > > about whitespace errors. > > > Google this if you want, As far as I know the C language requires it and makes things nice when I cat the file. Anyway, I don't make those rules, It is just how it is. > > I think we actually need to avoid this extra new line, or what's the > benefits with new line? > > and besides, I didn't see any complaint from checkpatch.pl .. > > ./scripts/checkpatch.pl > 0002-clk-meson-aoclk-refactor-common-code-into-dedicated-.patch > WARNING: added, moved or deleted file(s), does MAINTAINERS need updating? > #235: > new file mode 100644 > > total: 0 errors, 1 warnings, 302 lines checked > > NOTE: For some of the reported defects, checkpatch may be able to > mechanically convert to the typical style using --fix or > --fix-inplace. > > 0002-clk-meson-aoclk-refactor-common-code-into-dedicated-.patch has > style problems, please review. > > NOTE: If any of the errors are false positives, please report > them to the maintainer, see CHECKPATCH in MAINTAINERS. > > > Yixun
Re: [PATCH v5 2/7] clk: meson: aoclk: refactor common code into dedicated file
On Tue, 2018-04-17 at 16:16 +0800, Yixun Lan wrote: > Hi Jerome > > On 04/16/18 18:38, Jerome Brunet wrote: > > > + */ > > > + for (clkid = 0; clkid < data->num_clks; clkid++) { > > > + data->clks[clkid]->map = regmap; > > > + > > > + ret = devm_clk_hw_register(dev, data->hw_data->hws[clkid]); > > > + if (ret) > > > + return ret; > > > + } > > > + > > > + return devm_of_clk_add_hw_provider(dev, of_clk_hw_onecell_get, > > > + (void *) data->hw_data); > > > +} > > > > Missing new line here. Please run checkpatch and pay attention to git > > warnings > > about whitespace errors. > > > Google this if you want, As far as I know the C language requires it and makes things nice when I cat the file. Anyway, I don't make those rules, It is just how it is. > > I think we actually need to avoid this extra new line, or what's the > benefits with new line? > > and besides, I didn't see any complaint from checkpatch.pl .. > > ./scripts/checkpatch.pl > 0002-clk-meson-aoclk-refactor-common-code-into-dedicated-.patch > WARNING: added, moved or deleted file(s), does MAINTAINERS need updating? > #235: > new file mode 100644 > > total: 0 errors, 1 warnings, 302 lines checked > > NOTE: For some of the reported defects, checkpatch may be able to > mechanically convert to the typical style using --fix or > --fix-inplace. > > 0002-clk-meson-aoclk-refactor-common-code-into-dedicated-.patch has > style problems, please review. > > NOTE: If any of the errors are false positives, please report > them to the maintainer, see CHECKPATCH in MAINTAINERS. > > > Yixun
Re: [PATCH v5 2/7] clk: meson: aoclk: refactor common code into dedicated file
Hi jerome On 04/16/18 19:34, Jerome Brunet wrote: > On Mon, 2018-04-09 at 22:37 +0800, Yixun Lan wrote: >> We try to refactor the common code into one dedicated file, >> while preparing to add new Meson-AXG aoclk driver, this would >> help us to better share the code by all aoclk drivers. >> >> Suggested-by: Jerome Brunet>> Signed-off-by: Yixun Lan >> --- >> drivers/clk/meson/Kconfig | 7 >> drivers/clk/meson/Makefile | 1 + >> drivers/clk/meson/gxbb-aoclk.c | 91 >> ++--- >> drivers/clk/meson/gxbb-aoclk.h | 7 >> drivers/clk/meson/meson-aoclk.c | 82 + >> drivers/clk/meson/meson-aoclk.h | 35 >> 6 files changed, 163 insertions(+), 60 deletions(-) >> create mode 100644 drivers/clk/meson/meson-aoclk.c >> create mode 100644 drivers/clk/meson/meson-aoclk.h >> >> diff --git a/drivers/clk/meson/Kconfig b/drivers/clk/meson/Kconfig >> index d5cbec522aec..fddc7ec7b820 100644 >> --- a/drivers/clk/meson/Kconfig >> +++ b/drivers/clk/meson/Kconfig >> @@ -3,6 +3,12 @@ config COMMON_CLK_AMLOGIC >> depends on OF >> depends on ARCH_MESON || COMPILE_TEST >> >> +config COMMON_CLK_MESON_AO >> +bool >> +depends on OF >> +depends on ARCH_MESON || COMPILE_TEST >> +select COMMON_CLK_REGMAP_MESON >> + >> config COMMON_CLK_REGMAP_MESON >> bool >> select REGMAP >> @@ -21,6 +27,7 @@ config COMMON_CLK_GXBB >> bool >> depends on COMMON_CLK_AMLOGIC >> select RESET_CONTROLLER >> +select COMMON_CLK_MESON_AO >> select COMMON_CLK_REGMAP_MESON >> select MFD_SYSCON >> help >> diff --git a/drivers/clk/meson/Makefile b/drivers/clk/meson/Makefile >> index ffee82e60b7a..0a8df284f4e7 100644 >> --- a/drivers/clk/meson/Makefile >> +++ b/drivers/clk/meson/Makefile >> @@ -3,6 +3,7 @@ >> # >> >> obj-$(CONFIG_COMMON_CLK_AMLOGIC) += clk-pll.o clk-mpll.o clk-audio-divider.o >> +obj-$(CONFIG_COMMON_CLK_MESON_AO) += meson-aoclk.o >> obj-$(CONFIG_COMMON_CLK_MESON8B) += meson8b.o >> obj-$(CONFIG_COMMON_CLK_GXBB)+= gxbb.o gxbb-aoclk.o gxbb-aoclk-32k.o >> obj-$(CONFIG_COMMON_CLK_AXG) += axg.o >> diff --git a/drivers/clk/meson/gxbb-aoclk.c b/drivers/clk/meson/gxbb-aoclk.c >> index eebb580b9e0f..f2e0640a7f74 100644 >> --- a/drivers/clk/meson/gxbb-aoclk.c >> +++ b/drivers/clk/meson/gxbb-aoclk.c >> @@ -52,39 +52,13 @@ >> * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE >> * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. >> */ >> -#include >> -#include >> #include > >> #include > Not required anymore > will remove >> #include >> -#include >> #include > Not required > will remove >> -#include > >> -#include >> -#include > Please keep these 2 here > see comments below >> #include "clk-regmap.h" >> #include "gxbb-aoclk.h" >> >> -struct gxbb_aoclk_reset_controller { >> -struct reset_controller_dev reset; >> -unsigned int *data; >> -struct regmap *regmap; >> -}; >> - >> -static int gxbb_aoclk_do_reset(struct reset_controller_dev *rcdev, >> - unsigned long id) >> -{ >> -struct gxbb_aoclk_reset_controller *reset = >> -container_of(rcdev, struct gxbb_aoclk_reset_controller, reset); >> - >> -return regmap_write(reset->regmap, AO_RTI_GEN_CNTL_REG0, >> -BIT(reset->data[id])); >> -} >> - >> -static const struct reset_control_ops gxbb_aoclk_reset_ops = { >> -.reset = gxbb_aoclk_do_reset, >> -}; >> - >> #define GXBB_AO_GATE(_name, _bit) \ >> static struct clk_regmap _name##_ao = { >> \ >> .data = &(struct clk_regmap_gate_data) {\ >> @@ -117,7 +91,7 @@ static struct aoclk_cec_32k cec_32k_ao = { >> }, >> }; >> >> -static unsigned int gxbb_aoclk_reset[] = { >> +static const unsigned int gxbb_aoclk_reset[] = { >> [RESET_AO_REMOTE] = 16, >> [RESET_AO_I2C_MASTER] = 18, >> [RESET_AO_I2C_SLAVE] = 19, >> @@ -135,7 +109,7 @@ static struct clk_regmap *gxbb_aoclk_gate[] = { >> [CLKID_AO_IR_BLASTER] = _blaster_ao, >> }; >> >> -static struct clk_hw_onecell_data gxbb_aoclk_onecell_data = { >> +static const struct clk_hw_onecell_data gxbb_aoclk_onecell_data = { >> .hws = { >> [CLKID_AO_REMOTE] = _ao.hw, >> [CLKID_AO_I2C_MASTER] = _master_ao.hw, >> @@ -145,58 +119,55 @@ static struct clk_hw_onecell_data >> gxbb_aoclk_onecell_data = { >> [CLKID_AO_IR_BLASTER] = _blaster_ao.hw, >> [CLKID_AO_CEC_32K] = _32k_ao.hw, >> }, >> -.num = 7, >> +.num = NR_CLKS, >> }; >> >> -static int gxbb_aoclkc_probe(struct platform_device *pdev) >> +static int gxbb_register_cec_ao_32k(struct platform_device *pdev) >> { >> -struct gxbb_aoclk_reset_controller *rstc; >> struct device *dev =
Re: [PATCH v5 2/7] clk: meson: aoclk: refactor common code into dedicated file
Hi jerome On 04/16/18 19:34, Jerome Brunet wrote: > On Mon, 2018-04-09 at 22:37 +0800, Yixun Lan wrote: >> We try to refactor the common code into one dedicated file, >> while preparing to add new Meson-AXG aoclk driver, this would >> help us to better share the code by all aoclk drivers. >> >> Suggested-by: Jerome Brunet >> Signed-off-by: Yixun Lan >> --- >> drivers/clk/meson/Kconfig | 7 >> drivers/clk/meson/Makefile | 1 + >> drivers/clk/meson/gxbb-aoclk.c | 91 >> ++--- >> drivers/clk/meson/gxbb-aoclk.h | 7 >> drivers/clk/meson/meson-aoclk.c | 82 + >> drivers/clk/meson/meson-aoclk.h | 35 >> 6 files changed, 163 insertions(+), 60 deletions(-) >> create mode 100644 drivers/clk/meson/meson-aoclk.c >> create mode 100644 drivers/clk/meson/meson-aoclk.h >> >> diff --git a/drivers/clk/meson/Kconfig b/drivers/clk/meson/Kconfig >> index d5cbec522aec..fddc7ec7b820 100644 >> --- a/drivers/clk/meson/Kconfig >> +++ b/drivers/clk/meson/Kconfig >> @@ -3,6 +3,12 @@ config COMMON_CLK_AMLOGIC >> depends on OF >> depends on ARCH_MESON || COMPILE_TEST >> >> +config COMMON_CLK_MESON_AO >> +bool >> +depends on OF >> +depends on ARCH_MESON || COMPILE_TEST >> +select COMMON_CLK_REGMAP_MESON >> + >> config COMMON_CLK_REGMAP_MESON >> bool >> select REGMAP >> @@ -21,6 +27,7 @@ config COMMON_CLK_GXBB >> bool >> depends on COMMON_CLK_AMLOGIC >> select RESET_CONTROLLER >> +select COMMON_CLK_MESON_AO >> select COMMON_CLK_REGMAP_MESON >> select MFD_SYSCON >> help >> diff --git a/drivers/clk/meson/Makefile b/drivers/clk/meson/Makefile >> index ffee82e60b7a..0a8df284f4e7 100644 >> --- a/drivers/clk/meson/Makefile >> +++ b/drivers/clk/meson/Makefile >> @@ -3,6 +3,7 @@ >> # >> >> obj-$(CONFIG_COMMON_CLK_AMLOGIC) += clk-pll.o clk-mpll.o clk-audio-divider.o >> +obj-$(CONFIG_COMMON_CLK_MESON_AO) += meson-aoclk.o >> obj-$(CONFIG_COMMON_CLK_MESON8B) += meson8b.o >> obj-$(CONFIG_COMMON_CLK_GXBB)+= gxbb.o gxbb-aoclk.o gxbb-aoclk-32k.o >> obj-$(CONFIG_COMMON_CLK_AXG) += axg.o >> diff --git a/drivers/clk/meson/gxbb-aoclk.c b/drivers/clk/meson/gxbb-aoclk.c >> index eebb580b9e0f..f2e0640a7f74 100644 >> --- a/drivers/clk/meson/gxbb-aoclk.c >> +++ b/drivers/clk/meson/gxbb-aoclk.c >> @@ -52,39 +52,13 @@ >> * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE >> * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. >> */ >> -#include >> -#include >> #include > >> #include > Not required anymore > will remove >> #include >> -#include >> #include > Not required > will remove >> -#include > >> -#include >> -#include > Please keep these 2 here > see comments below >> #include "clk-regmap.h" >> #include "gxbb-aoclk.h" >> >> -struct gxbb_aoclk_reset_controller { >> -struct reset_controller_dev reset; >> -unsigned int *data; >> -struct regmap *regmap; >> -}; >> - >> -static int gxbb_aoclk_do_reset(struct reset_controller_dev *rcdev, >> - unsigned long id) >> -{ >> -struct gxbb_aoclk_reset_controller *reset = >> -container_of(rcdev, struct gxbb_aoclk_reset_controller, reset); >> - >> -return regmap_write(reset->regmap, AO_RTI_GEN_CNTL_REG0, >> -BIT(reset->data[id])); >> -} >> - >> -static const struct reset_control_ops gxbb_aoclk_reset_ops = { >> -.reset = gxbb_aoclk_do_reset, >> -}; >> - >> #define GXBB_AO_GATE(_name, _bit) \ >> static struct clk_regmap _name##_ao = { >> \ >> .data = &(struct clk_regmap_gate_data) {\ >> @@ -117,7 +91,7 @@ static struct aoclk_cec_32k cec_32k_ao = { >> }, >> }; >> >> -static unsigned int gxbb_aoclk_reset[] = { >> +static const unsigned int gxbb_aoclk_reset[] = { >> [RESET_AO_REMOTE] = 16, >> [RESET_AO_I2C_MASTER] = 18, >> [RESET_AO_I2C_SLAVE] = 19, >> @@ -135,7 +109,7 @@ static struct clk_regmap *gxbb_aoclk_gate[] = { >> [CLKID_AO_IR_BLASTER] = _blaster_ao, >> }; >> >> -static struct clk_hw_onecell_data gxbb_aoclk_onecell_data = { >> +static const struct clk_hw_onecell_data gxbb_aoclk_onecell_data = { >> .hws = { >> [CLKID_AO_REMOTE] = _ao.hw, >> [CLKID_AO_I2C_MASTER] = _master_ao.hw, >> @@ -145,58 +119,55 @@ static struct clk_hw_onecell_data >> gxbb_aoclk_onecell_data = { >> [CLKID_AO_IR_BLASTER] = _blaster_ao.hw, >> [CLKID_AO_CEC_32K] = _32k_ao.hw, >> }, >> -.num = 7, >> +.num = NR_CLKS, >> }; >> >> -static int gxbb_aoclkc_probe(struct platform_device *pdev) >> +static int gxbb_register_cec_ao_32k(struct platform_device *pdev) >> { >> -struct gxbb_aoclk_reset_controller *rstc; >> struct device *dev = >dev; >> struct regmap *regmap; >> -
Re: [PATCH v5 2/7] clk: meson: aoclk: refactor common code into dedicated file
Hi Jerome On 04/16/18 18:38, Jerome Brunet wrote: >> + */ >> +for (clkid = 0; clkid < data->num_clks; clkid++) { >> +data->clks[clkid]->map = regmap; >> + >> +ret = devm_clk_hw_register(dev, data->hw_data->hws[clkid]); >> +if (ret) >> +return ret; >> +} >> + >> +return devm_of_clk_add_hw_provider(dev, of_clk_hw_onecell_get, >> +(void *) data->hw_data); >> +} > Missing new line here. Please run checkpatch and pay attention to git warnings > about whitespace errors. > I think we actually need to avoid this extra new line, or what's the benefits with new line? and besides, I didn't see any complaint from checkpatch.pl .. ./scripts/checkpatch.pl 0002-clk-meson-aoclk-refactor-common-code-into-dedicated-.patch WARNING: added, moved or deleted file(s), does MAINTAINERS need updating? #235: new file mode 100644 total: 0 errors, 1 warnings, 302 lines checked NOTE: For some of the reported defects, checkpatch may be able to mechanically convert to the typical style using --fix or --fix-inplace. 0002-clk-meson-aoclk-refactor-common-code-into-dedicated-.patch has style problems, please review. NOTE: If any of the errors are false positives, please report them to the maintainer, see CHECKPATCH in MAINTAINERS. Yixun
Re: [PATCH v5 2/7] clk: meson: aoclk: refactor common code into dedicated file
Hi Jerome On 04/16/18 18:38, Jerome Brunet wrote: >> + */ >> +for (clkid = 0; clkid < data->num_clks; clkid++) { >> +data->clks[clkid]->map = regmap; >> + >> +ret = devm_clk_hw_register(dev, data->hw_data->hws[clkid]); >> +if (ret) >> +return ret; >> +} >> + >> +return devm_of_clk_add_hw_provider(dev, of_clk_hw_onecell_get, >> +(void *) data->hw_data); >> +} > Missing new line here. Please run checkpatch and pay attention to git warnings > about whitespace errors. > I think we actually need to avoid this extra new line, or what's the benefits with new line? and besides, I didn't see any complaint from checkpatch.pl .. ./scripts/checkpatch.pl 0002-clk-meson-aoclk-refactor-common-code-into-dedicated-.patch WARNING: added, moved or deleted file(s), does MAINTAINERS need updating? #235: new file mode 100644 total: 0 errors, 1 warnings, 302 lines checked NOTE: For some of the reported defects, checkpatch may be able to mechanically convert to the typical style using --fix or --fix-inplace. 0002-clk-meson-aoclk-refactor-common-code-into-dedicated-.patch has style problems, please review. NOTE: If any of the errors are false positives, please report them to the maintainer, see CHECKPATCH in MAINTAINERS. Yixun
Re: [PATCH v5 2/7] clk: meson: aoclk: refactor common code into dedicated file
On Mon, 2018-04-09 at 22:37 +0800, Yixun Lan wrote: > We try to refactor the common code into one dedicated file, > while preparing to add new Meson-AXG aoclk driver, this would > help us to better share the code by all aoclk drivers. > > Suggested-by: Jerome Brunet> Signed-off-by: Yixun Lan > --- > drivers/clk/meson/Kconfig | 7 > drivers/clk/meson/Makefile | 1 + > drivers/clk/meson/gxbb-aoclk.c | 91 > ++--- > drivers/clk/meson/gxbb-aoclk.h | 7 > drivers/clk/meson/meson-aoclk.c | 82 + > drivers/clk/meson/meson-aoclk.h | 35 > 6 files changed, 163 insertions(+), 60 deletions(-) > create mode 100644 drivers/clk/meson/meson-aoclk.c > create mode 100644 drivers/clk/meson/meson-aoclk.h > > diff --git a/drivers/clk/meson/Kconfig b/drivers/clk/meson/Kconfig > index d5cbec522aec..fddc7ec7b820 100644 > --- a/drivers/clk/meson/Kconfig > +++ b/drivers/clk/meson/Kconfig > @@ -3,6 +3,12 @@ config COMMON_CLK_AMLOGIC > depends on OF > depends on ARCH_MESON || COMPILE_TEST > > +config COMMON_CLK_MESON_AO > + bool > + depends on OF > + depends on ARCH_MESON || COMPILE_TEST > + select COMMON_CLK_REGMAP_MESON > + > config COMMON_CLK_REGMAP_MESON > bool > select REGMAP > @@ -21,6 +27,7 @@ config COMMON_CLK_GXBB > bool > depends on COMMON_CLK_AMLOGIC > select RESET_CONTROLLER > + select COMMON_CLK_MESON_AO > select COMMON_CLK_REGMAP_MESON > select MFD_SYSCON > help > diff --git a/drivers/clk/meson/Makefile b/drivers/clk/meson/Makefile > index ffee82e60b7a..0a8df284f4e7 100644 > --- a/drivers/clk/meson/Makefile > +++ b/drivers/clk/meson/Makefile > @@ -3,6 +3,7 @@ > # > > obj-$(CONFIG_COMMON_CLK_AMLOGIC) += clk-pll.o clk-mpll.o clk-audio-divider.o > +obj-$(CONFIG_COMMON_CLK_MESON_AO) += meson-aoclk.o > obj-$(CONFIG_COMMON_CLK_MESON8B) += meson8b.o > obj-$(CONFIG_COMMON_CLK_GXBB) += gxbb.o gxbb-aoclk.o gxbb-aoclk-32k.o > obj-$(CONFIG_COMMON_CLK_AXG) += axg.o > diff --git a/drivers/clk/meson/gxbb-aoclk.c b/drivers/clk/meson/gxbb-aoclk.c > index eebb580b9e0f..f2e0640a7f74 100644 > --- a/drivers/clk/meson/gxbb-aoclk.c > +++ b/drivers/clk/meson/gxbb-aoclk.c > @@ -52,39 +52,13 @@ > * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE > * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. > */ > -#include > -#include > #include > #include Not required anymore > #include > -#include > #include Not required > -#include > -#include > -#include Please keep these 2 here > #include "clk-regmap.h" > #include "gxbb-aoclk.h" > > -struct gxbb_aoclk_reset_controller { > - struct reset_controller_dev reset; > - unsigned int *data; > - struct regmap *regmap; > -}; > - > -static int gxbb_aoclk_do_reset(struct reset_controller_dev *rcdev, > -unsigned long id) > -{ > - struct gxbb_aoclk_reset_controller *reset = > - container_of(rcdev, struct gxbb_aoclk_reset_controller, reset); > - > - return regmap_write(reset->regmap, AO_RTI_GEN_CNTL_REG0, > - BIT(reset->data[id])); > -} > - > -static const struct reset_control_ops gxbb_aoclk_reset_ops = { > - .reset = gxbb_aoclk_do_reset, > -}; > - > #define GXBB_AO_GATE(_name, _bit)\ > static struct clk_regmap _name##_ao = { > \ > .data = &(struct clk_regmap_gate_data) {\ > @@ -117,7 +91,7 @@ static struct aoclk_cec_32k cec_32k_ao = { > }, > }; > > -static unsigned int gxbb_aoclk_reset[] = { > +static const unsigned int gxbb_aoclk_reset[] = { > [RESET_AO_REMOTE] = 16, > [RESET_AO_I2C_MASTER] = 18, > [RESET_AO_I2C_SLAVE] = 19, > @@ -135,7 +109,7 @@ static struct clk_regmap *gxbb_aoclk_gate[] = { > [CLKID_AO_IR_BLASTER] = _blaster_ao, > }; > > -static struct clk_hw_onecell_data gxbb_aoclk_onecell_data = { > +static const struct clk_hw_onecell_data gxbb_aoclk_onecell_data = { > .hws = { > [CLKID_AO_REMOTE] = _ao.hw, > [CLKID_AO_I2C_MASTER] = _master_ao.hw, > @@ -145,58 +119,55 @@ static struct clk_hw_onecell_data > gxbb_aoclk_onecell_data = { > [CLKID_AO_IR_BLASTER] = _blaster_ao.hw, > [CLKID_AO_CEC_32K] = _32k_ao.hw, > }, > - .num = 7, > + .num = NR_CLKS, > }; > > -static int gxbb_aoclkc_probe(struct platform_device *pdev) > +static int gxbb_register_cec_ao_32k(struct platform_device *pdev) > { > - struct gxbb_aoclk_reset_controller *rstc; > struct device *dev = >dev; > struct regmap *regmap; > - int ret, clkid; > - > - rstc = devm_kzalloc(dev, sizeof(*rstc), GFP_KERNEL); > - if (!rstc) > - return -ENOMEM; > + int ret; > >
Re: [PATCH v5 2/7] clk: meson: aoclk: refactor common code into dedicated file
On Mon, 2018-04-09 at 22:37 +0800, Yixun Lan wrote: > We try to refactor the common code into one dedicated file, > while preparing to add new Meson-AXG aoclk driver, this would > help us to better share the code by all aoclk drivers. > > Suggested-by: Jerome Brunet > Signed-off-by: Yixun Lan > --- > drivers/clk/meson/Kconfig | 7 > drivers/clk/meson/Makefile | 1 + > drivers/clk/meson/gxbb-aoclk.c | 91 > ++--- > drivers/clk/meson/gxbb-aoclk.h | 7 > drivers/clk/meson/meson-aoclk.c | 82 + > drivers/clk/meson/meson-aoclk.h | 35 > 6 files changed, 163 insertions(+), 60 deletions(-) > create mode 100644 drivers/clk/meson/meson-aoclk.c > create mode 100644 drivers/clk/meson/meson-aoclk.h > > diff --git a/drivers/clk/meson/Kconfig b/drivers/clk/meson/Kconfig > index d5cbec522aec..fddc7ec7b820 100644 > --- a/drivers/clk/meson/Kconfig > +++ b/drivers/clk/meson/Kconfig > @@ -3,6 +3,12 @@ config COMMON_CLK_AMLOGIC > depends on OF > depends on ARCH_MESON || COMPILE_TEST > > +config COMMON_CLK_MESON_AO > + bool > + depends on OF > + depends on ARCH_MESON || COMPILE_TEST > + select COMMON_CLK_REGMAP_MESON > + > config COMMON_CLK_REGMAP_MESON > bool > select REGMAP > @@ -21,6 +27,7 @@ config COMMON_CLK_GXBB > bool > depends on COMMON_CLK_AMLOGIC > select RESET_CONTROLLER > + select COMMON_CLK_MESON_AO > select COMMON_CLK_REGMAP_MESON > select MFD_SYSCON > help > diff --git a/drivers/clk/meson/Makefile b/drivers/clk/meson/Makefile > index ffee82e60b7a..0a8df284f4e7 100644 > --- a/drivers/clk/meson/Makefile > +++ b/drivers/clk/meson/Makefile > @@ -3,6 +3,7 @@ > # > > obj-$(CONFIG_COMMON_CLK_AMLOGIC) += clk-pll.o clk-mpll.o clk-audio-divider.o > +obj-$(CONFIG_COMMON_CLK_MESON_AO) += meson-aoclk.o > obj-$(CONFIG_COMMON_CLK_MESON8B) += meson8b.o > obj-$(CONFIG_COMMON_CLK_GXBB) += gxbb.o gxbb-aoclk.o gxbb-aoclk-32k.o > obj-$(CONFIG_COMMON_CLK_AXG) += axg.o > diff --git a/drivers/clk/meson/gxbb-aoclk.c b/drivers/clk/meson/gxbb-aoclk.c > index eebb580b9e0f..f2e0640a7f74 100644 > --- a/drivers/clk/meson/gxbb-aoclk.c > +++ b/drivers/clk/meson/gxbb-aoclk.c > @@ -52,39 +52,13 @@ > * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE > * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. > */ > -#include > -#include > #include > #include Not required anymore > #include > -#include > #include Not required > -#include > -#include > -#include Please keep these 2 here > #include "clk-regmap.h" > #include "gxbb-aoclk.h" > > -struct gxbb_aoclk_reset_controller { > - struct reset_controller_dev reset; > - unsigned int *data; > - struct regmap *regmap; > -}; > - > -static int gxbb_aoclk_do_reset(struct reset_controller_dev *rcdev, > -unsigned long id) > -{ > - struct gxbb_aoclk_reset_controller *reset = > - container_of(rcdev, struct gxbb_aoclk_reset_controller, reset); > - > - return regmap_write(reset->regmap, AO_RTI_GEN_CNTL_REG0, > - BIT(reset->data[id])); > -} > - > -static const struct reset_control_ops gxbb_aoclk_reset_ops = { > - .reset = gxbb_aoclk_do_reset, > -}; > - > #define GXBB_AO_GATE(_name, _bit)\ > static struct clk_regmap _name##_ao = { > \ > .data = &(struct clk_regmap_gate_data) {\ > @@ -117,7 +91,7 @@ static struct aoclk_cec_32k cec_32k_ao = { > }, > }; > > -static unsigned int gxbb_aoclk_reset[] = { > +static const unsigned int gxbb_aoclk_reset[] = { > [RESET_AO_REMOTE] = 16, > [RESET_AO_I2C_MASTER] = 18, > [RESET_AO_I2C_SLAVE] = 19, > @@ -135,7 +109,7 @@ static struct clk_regmap *gxbb_aoclk_gate[] = { > [CLKID_AO_IR_BLASTER] = _blaster_ao, > }; > > -static struct clk_hw_onecell_data gxbb_aoclk_onecell_data = { > +static const struct clk_hw_onecell_data gxbb_aoclk_onecell_data = { > .hws = { > [CLKID_AO_REMOTE] = _ao.hw, > [CLKID_AO_I2C_MASTER] = _master_ao.hw, > @@ -145,58 +119,55 @@ static struct clk_hw_onecell_data > gxbb_aoclk_onecell_data = { > [CLKID_AO_IR_BLASTER] = _blaster_ao.hw, > [CLKID_AO_CEC_32K] = _32k_ao.hw, > }, > - .num = 7, > + .num = NR_CLKS, > }; > > -static int gxbb_aoclkc_probe(struct platform_device *pdev) > +static int gxbb_register_cec_ao_32k(struct platform_device *pdev) > { > - struct gxbb_aoclk_reset_controller *rstc; > struct device *dev = >dev; > struct regmap *regmap; > - int ret, clkid; > - > - rstc = devm_kzalloc(dev, sizeof(*rstc), GFP_KERNEL); > - if (!rstc) > - return -ENOMEM; > + int ret; > > regmap =
Re: [PATCH v5 2/7] clk: meson: aoclk: refactor common code into dedicated file
On Mon, 2018-04-09 at 22:37 +0800, Yixun Lan wrote: > We try to refactor the common code into one dedicated file, > while preparing to add new Meson-AXG aoclk driver, this would > help us to better share the code by all aoclk drivers. > > Suggested-by: Jerome Brunet> Signed-off-by: Yixun Lan > --- > drivers/clk/meson/Kconfig | 7 > drivers/clk/meson/Makefile | 1 + > drivers/clk/meson/gxbb-aoclk.c | 91 > ++--- > drivers/clk/meson/gxbb-aoclk.h | 7 > drivers/clk/meson/meson-aoclk.c | 82 + > drivers/clk/meson/meson-aoclk.h | 35 > 6 files changed, 163 insertions(+), 60 deletions(-) > create mode 100644 drivers/clk/meson/meson-aoclk.c > create mode 100644 drivers/clk/meson/meson-aoclk.h > > diff --git a/drivers/clk/meson/Kconfig b/drivers/clk/meson/Kconfig > index d5cbec522aec..fddc7ec7b820 100644 > --- a/drivers/clk/meson/Kconfig > +++ b/drivers/clk/meson/Kconfig > @@ -3,6 +3,12 @@ config COMMON_CLK_AMLOGIC > depends on OF > depends on ARCH_MESON || COMPILE_TEST > > +config COMMON_CLK_MESON_AO > + bool > + depends on OF > + depends on ARCH_MESON || COMPILE_TEST > + select COMMON_CLK_REGMAP_MESON > + > config COMMON_CLK_REGMAP_MESON > bool > select REGMAP > @@ -21,6 +27,7 @@ config COMMON_CLK_GXBB > bool > depends on COMMON_CLK_AMLOGIC > select RESET_CONTROLLER > + select COMMON_CLK_MESON_AO > select COMMON_CLK_REGMAP_MESON > select MFD_SYSCON > help > diff --git a/drivers/clk/meson/Makefile b/drivers/clk/meson/Makefile > index ffee82e60b7a..0a8df284f4e7 100644 > --- a/drivers/clk/meson/Makefile > +++ b/drivers/clk/meson/Makefile > @@ -3,6 +3,7 @@ > # > > obj-$(CONFIG_COMMON_CLK_AMLOGIC) += clk-pll.o clk-mpll.o clk-audio-divider.o > +obj-$(CONFIG_COMMON_CLK_MESON_AO) += meson-aoclk.o > obj-$(CONFIG_COMMON_CLK_MESON8B) += meson8b.o > obj-$(CONFIG_COMMON_CLK_GXBB) += gxbb.o gxbb-aoclk.o gxbb-aoclk-32k.o > obj-$(CONFIG_COMMON_CLK_AXG) += axg.o > diff --git a/drivers/clk/meson/gxbb-aoclk.c b/drivers/clk/meson/gxbb-aoclk.c > index eebb580b9e0f..f2e0640a7f74 100644 > --- a/drivers/clk/meson/gxbb-aoclk.c > +++ b/drivers/clk/meson/gxbb-aoclk.c > @@ -52,39 +52,13 @@ > * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE > * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. > */ > -#include > -#include > #include > #include > #include > -#include > #include > -#include > -#include > -#include > #include "clk-regmap.h" > #include "gxbb-aoclk.h" > > -struct gxbb_aoclk_reset_controller { > - struct reset_controller_dev reset; > - unsigned int *data; > - struct regmap *regmap; > -}; > - > -static int gxbb_aoclk_do_reset(struct reset_controller_dev *rcdev, > -unsigned long id) > -{ > - struct gxbb_aoclk_reset_controller *reset = > - container_of(rcdev, struct gxbb_aoclk_reset_controller, reset); > - > - return regmap_write(reset->regmap, AO_RTI_GEN_CNTL_REG0, > - BIT(reset->data[id])); > -} > - > -static const struct reset_control_ops gxbb_aoclk_reset_ops = { > - .reset = gxbb_aoclk_do_reset, > -}; > - > #define GXBB_AO_GATE(_name, _bit)\ > static struct clk_regmap _name##_ao = { > \ > .data = &(struct clk_regmap_gate_data) {\ > @@ -117,7 +91,7 @@ static struct aoclk_cec_32k cec_32k_ao = { > }, > }; > > -static unsigned int gxbb_aoclk_reset[] = { > +static const unsigned int gxbb_aoclk_reset[] = { > [RESET_AO_REMOTE] = 16, > [RESET_AO_I2C_MASTER] = 18, > [RESET_AO_I2C_SLAVE] = 19, > @@ -135,7 +109,7 @@ static struct clk_regmap *gxbb_aoclk_gate[] = { > [CLKID_AO_IR_BLASTER] = _blaster_ao, > }; > > -static struct clk_hw_onecell_data gxbb_aoclk_onecell_data = { > +static const struct clk_hw_onecell_data gxbb_aoclk_onecell_data = { > .hws = { > [CLKID_AO_REMOTE] = _ao.hw, > [CLKID_AO_I2C_MASTER] = _master_ao.hw, > @@ -145,58 +119,55 @@ static struct clk_hw_onecell_data > gxbb_aoclk_onecell_data = { > [CLKID_AO_IR_BLASTER] = _blaster_ao.hw, > [CLKID_AO_CEC_32K] = _32k_ao.hw, > }, > - .num = 7, > + .num = NR_CLKS, > }; > > -static int gxbb_aoclkc_probe(struct platform_device *pdev) > +static int gxbb_register_cec_ao_32k(struct platform_device *pdev) > { > - struct gxbb_aoclk_reset_controller *rstc; > struct device *dev = >dev; > struct regmap *regmap; > - int ret, clkid; > - > - rstc = devm_kzalloc(dev, sizeof(*rstc), GFP_KERNEL); > - if (!rstc) > - return -ENOMEM; > + int ret; > > regmap = syscon_node_to_regmap(of_get_parent(dev->of_node)); >
Re: [PATCH v5 2/7] clk: meson: aoclk: refactor common code into dedicated file
On Mon, 2018-04-09 at 22:37 +0800, Yixun Lan wrote: > We try to refactor the common code into one dedicated file, > while preparing to add new Meson-AXG aoclk driver, this would > help us to better share the code by all aoclk drivers. > > Suggested-by: Jerome Brunet > Signed-off-by: Yixun Lan > --- > drivers/clk/meson/Kconfig | 7 > drivers/clk/meson/Makefile | 1 + > drivers/clk/meson/gxbb-aoclk.c | 91 > ++--- > drivers/clk/meson/gxbb-aoclk.h | 7 > drivers/clk/meson/meson-aoclk.c | 82 + > drivers/clk/meson/meson-aoclk.h | 35 > 6 files changed, 163 insertions(+), 60 deletions(-) > create mode 100644 drivers/clk/meson/meson-aoclk.c > create mode 100644 drivers/clk/meson/meson-aoclk.h > > diff --git a/drivers/clk/meson/Kconfig b/drivers/clk/meson/Kconfig > index d5cbec522aec..fddc7ec7b820 100644 > --- a/drivers/clk/meson/Kconfig > +++ b/drivers/clk/meson/Kconfig > @@ -3,6 +3,12 @@ config COMMON_CLK_AMLOGIC > depends on OF > depends on ARCH_MESON || COMPILE_TEST > > +config COMMON_CLK_MESON_AO > + bool > + depends on OF > + depends on ARCH_MESON || COMPILE_TEST > + select COMMON_CLK_REGMAP_MESON > + > config COMMON_CLK_REGMAP_MESON > bool > select REGMAP > @@ -21,6 +27,7 @@ config COMMON_CLK_GXBB > bool > depends on COMMON_CLK_AMLOGIC > select RESET_CONTROLLER > + select COMMON_CLK_MESON_AO > select COMMON_CLK_REGMAP_MESON > select MFD_SYSCON > help > diff --git a/drivers/clk/meson/Makefile b/drivers/clk/meson/Makefile > index ffee82e60b7a..0a8df284f4e7 100644 > --- a/drivers/clk/meson/Makefile > +++ b/drivers/clk/meson/Makefile > @@ -3,6 +3,7 @@ > # > > obj-$(CONFIG_COMMON_CLK_AMLOGIC) += clk-pll.o clk-mpll.o clk-audio-divider.o > +obj-$(CONFIG_COMMON_CLK_MESON_AO) += meson-aoclk.o > obj-$(CONFIG_COMMON_CLK_MESON8B) += meson8b.o > obj-$(CONFIG_COMMON_CLK_GXBB) += gxbb.o gxbb-aoclk.o gxbb-aoclk-32k.o > obj-$(CONFIG_COMMON_CLK_AXG) += axg.o > diff --git a/drivers/clk/meson/gxbb-aoclk.c b/drivers/clk/meson/gxbb-aoclk.c > index eebb580b9e0f..f2e0640a7f74 100644 > --- a/drivers/clk/meson/gxbb-aoclk.c > +++ b/drivers/clk/meson/gxbb-aoclk.c > @@ -52,39 +52,13 @@ > * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE > * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. > */ > -#include > -#include > #include > #include > #include > -#include > #include > -#include > -#include > -#include > #include "clk-regmap.h" > #include "gxbb-aoclk.h" > > -struct gxbb_aoclk_reset_controller { > - struct reset_controller_dev reset; > - unsigned int *data; > - struct regmap *regmap; > -}; > - > -static int gxbb_aoclk_do_reset(struct reset_controller_dev *rcdev, > -unsigned long id) > -{ > - struct gxbb_aoclk_reset_controller *reset = > - container_of(rcdev, struct gxbb_aoclk_reset_controller, reset); > - > - return regmap_write(reset->regmap, AO_RTI_GEN_CNTL_REG0, > - BIT(reset->data[id])); > -} > - > -static const struct reset_control_ops gxbb_aoclk_reset_ops = { > - .reset = gxbb_aoclk_do_reset, > -}; > - > #define GXBB_AO_GATE(_name, _bit)\ > static struct clk_regmap _name##_ao = { > \ > .data = &(struct clk_regmap_gate_data) {\ > @@ -117,7 +91,7 @@ static struct aoclk_cec_32k cec_32k_ao = { > }, > }; > > -static unsigned int gxbb_aoclk_reset[] = { > +static const unsigned int gxbb_aoclk_reset[] = { > [RESET_AO_REMOTE] = 16, > [RESET_AO_I2C_MASTER] = 18, > [RESET_AO_I2C_SLAVE] = 19, > @@ -135,7 +109,7 @@ static struct clk_regmap *gxbb_aoclk_gate[] = { > [CLKID_AO_IR_BLASTER] = _blaster_ao, > }; > > -static struct clk_hw_onecell_data gxbb_aoclk_onecell_data = { > +static const struct clk_hw_onecell_data gxbb_aoclk_onecell_data = { > .hws = { > [CLKID_AO_REMOTE] = _ao.hw, > [CLKID_AO_I2C_MASTER] = _master_ao.hw, > @@ -145,58 +119,55 @@ static struct clk_hw_onecell_data > gxbb_aoclk_onecell_data = { > [CLKID_AO_IR_BLASTER] = _blaster_ao.hw, > [CLKID_AO_CEC_32K] = _32k_ao.hw, > }, > - .num = 7, > + .num = NR_CLKS, > }; > > -static int gxbb_aoclkc_probe(struct platform_device *pdev) > +static int gxbb_register_cec_ao_32k(struct platform_device *pdev) > { > - struct gxbb_aoclk_reset_controller *rstc; > struct device *dev = >dev; > struct regmap *regmap; > - int ret, clkid; > - > - rstc = devm_kzalloc(dev, sizeof(*rstc), GFP_KERNEL); > - if (!rstc) > - return -ENOMEM; > + int ret; > > regmap = syscon_node_to_regmap(of_get_parent(dev->of_node)); > if (IS_ERR(regmap)) { >
[PATCH v5 2/7] clk: meson: aoclk: refactor common code into dedicated file
We try to refactor the common code into one dedicated file, while preparing to add new Meson-AXG aoclk driver, this would help us to better share the code by all aoclk drivers. Suggested-by: Jerome BrunetSigned-off-by: Yixun Lan --- drivers/clk/meson/Kconfig | 7 drivers/clk/meson/Makefile | 1 + drivers/clk/meson/gxbb-aoclk.c | 91 ++--- drivers/clk/meson/gxbb-aoclk.h | 7 drivers/clk/meson/meson-aoclk.c | 82 + drivers/clk/meson/meson-aoclk.h | 35 6 files changed, 163 insertions(+), 60 deletions(-) create mode 100644 drivers/clk/meson/meson-aoclk.c create mode 100644 drivers/clk/meson/meson-aoclk.h diff --git a/drivers/clk/meson/Kconfig b/drivers/clk/meson/Kconfig index d5cbec522aec..fddc7ec7b820 100644 --- a/drivers/clk/meson/Kconfig +++ b/drivers/clk/meson/Kconfig @@ -3,6 +3,12 @@ config COMMON_CLK_AMLOGIC depends on OF depends on ARCH_MESON || COMPILE_TEST +config COMMON_CLK_MESON_AO + bool + depends on OF + depends on ARCH_MESON || COMPILE_TEST + select COMMON_CLK_REGMAP_MESON + config COMMON_CLK_REGMAP_MESON bool select REGMAP @@ -21,6 +27,7 @@ config COMMON_CLK_GXBB bool depends on COMMON_CLK_AMLOGIC select RESET_CONTROLLER + select COMMON_CLK_MESON_AO select COMMON_CLK_REGMAP_MESON select MFD_SYSCON help diff --git a/drivers/clk/meson/Makefile b/drivers/clk/meson/Makefile index ffee82e60b7a..0a8df284f4e7 100644 --- a/drivers/clk/meson/Makefile +++ b/drivers/clk/meson/Makefile @@ -3,6 +3,7 @@ # obj-$(CONFIG_COMMON_CLK_AMLOGIC) += clk-pll.o clk-mpll.o clk-audio-divider.o +obj-$(CONFIG_COMMON_CLK_MESON_AO) += meson-aoclk.o obj-$(CONFIG_COMMON_CLK_MESON8B) += meson8b.o obj-$(CONFIG_COMMON_CLK_GXBB) += gxbb.o gxbb-aoclk.o gxbb-aoclk-32k.o obj-$(CONFIG_COMMON_CLK_AXG)+= axg.o diff --git a/drivers/clk/meson/gxbb-aoclk.c b/drivers/clk/meson/gxbb-aoclk.c index eebb580b9e0f..f2e0640a7f74 100644 --- a/drivers/clk/meson/gxbb-aoclk.c +++ b/drivers/clk/meson/gxbb-aoclk.c @@ -52,39 +52,13 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include -#include #include #include #include -#include #include -#include -#include -#include #include "clk-regmap.h" #include "gxbb-aoclk.h" -struct gxbb_aoclk_reset_controller { - struct reset_controller_dev reset; - unsigned int *data; - struct regmap *regmap; -}; - -static int gxbb_aoclk_do_reset(struct reset_controller_dev *rcdev, - unsigned long id) -{ - struct gxbb_aoclk_reset_controller *reset = - container_of(rcdev, struct gxbb_aoclk_reset_controller, reset); - - return regmap_write(reset->regmap, AO_RTI_GEN_CNTL_REG0, - BIT(reset->data[id])); -} - -static const struct reset_control_ops gxbb_aoclk_reset_ops = { - .reset = gxbb_aoclk_do_reset, -}; - #define GXBB_AO_GATE(_name, _bit) \ static struct clk_regmap _name##_ao = { \ .data = &(struct clk_regmap_gate_data) {\ @@ -117,7 +91,7 @@ static struct aoclk_cec_32k cec_32k_ao = { }, }; -static unsigned int gxbb_aoclk_reset[] = { +static const unsigned int gxbb_aoclk_reset[] = { [RESET_AO_REMOTE] = 16, [RESET_AO_I2C_MASTER] = 18, [RESET_AO_I2C_SLAVE] = 19, @@ -135,7 +109,7 @@ static struct clk_regmap *gxbb_aoclk_gate[] = { [CLKID_AO_IR_BLASTER] = _blaster_ao, }; -static struct clk_hw_onecell_data gxbb_aoclk_onecell_data = { +static const struct clk_hw_onecell_data gxbb_aoclk_onecell_data = { .hws = { [CLKID_AO_REMOTE] = _ao.hw, [CLKID_AO_I2C_MASTER] = _master_ao.hw, @@ -145,58 +119,55 @@ static struct clk_hw_onecell_data gxbb_aoclk_onecell_data = { [CLKID_AO_IR_BLASTER] = _blaster_ao.hw, [CLKID_AO_CEC_32K] = _32k_ao.hw, }, - .num = 7, + .num = NR_CLKS, }; -static int gxbb_aoclkc_probe(struct platform_device *pdev) +static int gxbb_register_cec_ao_32k(struct platform_device *pdev) { - struct gxbb_aoclk_reset_controller *rstc; struct device *dev = >dev; struct regmap *regmap; - int ret, clkid; - - rstc = devm_kzalloc(dev, sizeof(*rstc), GFP_KERNEL); - if (!rstc) - return -ENOMEM; + int ret; regmap = syscon_node_to_regmap(of_get_parent(dev->of_node)); if (IS_ERR(regmap)) { dev_err(dev, "failed to get regmap\n"); - return -ENODEV; - } - - /* Reset Controller */ - rstc->regmap = regmap; - rstc->data = gxbb_aoclk_reset; -
[PATCH v5 2/7] clk: meson: aoclk: refactor common code into dedicated file
We try to refactor the common code into one dedicated file, while preparing to add new Meson-AXG aoclk driver, this would help us to better share the code by all aoclk drivers. Suggested-by: Jerome Brunet Signed-off-by: Yixun Lan --- drivers/clk/meson/Kconfig | 7 drivers/clk/meson/Makefile | 1 + drivers/clk/meson/gxbb-aoclk.c | 91 ++--- drivers/clk/meson/gxbb-aoclk.h | 7 drivers/clk/meson/meson-aoclk.c | 82 + drivers/clk/meson/meson-aoclk.h | 35 6 files changed, 163 insertions(+), 60 deletions(-) create mode 100644 drivers/clk/meson/meson-aoclk.c create mode 100644 drivers/clk/meson/meson-aoclk.h diff --git a/drivers/clk/meson/Kconfig b/drivers/clk/meson/Kconfig index d5cbec522aec..fddc7ec7b820 100644 --- a/drivers/clk/meson/Kconfig +++ b/drivers/clk/meson/Kconfig @@ -3,6 +3,12 @@ config COMMON_CLK_AMLOGIC depends on OF depends on ARCH_MESON || COMPILE_TEST +config COMMON_CLK_MESON_AO + bool + depends on OF + depends on ARCH_MESON || COMPILE_TEST + select COMMON_CLK_REGMAP_MESON + config COMMON_CLK_REGMAP_MESON bool select REGMAP @@ -21,6 +27,7 @@ config COMMON_CLK_GXBB bool depends on COMMON_CLK_AMLOGIC select RESET_CONTROLLER + select COMMON_CLK_MESON_AO select COMMON_CLK_REGMAP_MESON select MFD_SYSCON help diff --git a/drivers/clk/meson/Makefile b/drivers/clk/meson/Makefile index ffee82e60b7a..0a8df284f4e7 100644 --- a/drivers/clk/meson/Makefile +++ b/drivers/clk/meson/Makefile @@ -3,6 +3,7 @@ # obj-$(CONFIG_COMMON_CLK_AMLOGIC) += clk-pll.o clk-mpll.o clk-audio-divider.o +obj-$(CONFIG_COMMON_CLK_MESON_AO) += meson-aoclk.o obj-$(CONFIG_COMMON_CLK_MESON8B) += meson8b.o obj-$(CONFIG_COMMON_CLK_GXBB) += gxbb.o gxbb-aoclk.o gxbb-aoclk-32k.o obj-$(CONFIG_COMMON_CLK_AXG)+= axg.o diff --git a/drivers/clk/meson/gxbb-aoclk.c b/drivers/clk/meson/gxbb-aoclk.c index eebb580b9e0f..f2e0640a7f74 100644 --- a/drivers/clk/meson/gxbb-aoclk.c +++ b/drivers/clk/meson/gxbb-aoclk.c @@ -52,39 +52,13 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include -#include #include #include #include -#include #include -#include -#include -#include #include "clk-regmap.h" #include "gxbb-aoclk.h" -struct gxbb_aoclk_reset_controller { - struct reset_controller_dev reset; - unsigned int *data; - struct regmap *regmap; -}; - -static int gxbb_aoclk_do_reset(struct reset_controller_dev *rcdev, - unsigned long id) -{ - struct gxbb_aoclk_reset_controller *reset = - container_of(rcdev, struct gxbb_aoclk_reset_controller, reset); - - return regmap_write(reset->regmap, AO_RTI_GEN_CNTL_REG0, - BIT(reset->data[id])); -} - -static const struct reset_control_ops gxbb_aoclk_reset_ops = { - .reset = gxbb_aoclk_do_reset, -}; - #define GXBB_AO_GATE(_name, _bit) \ static struct clk_regmap _name##_ao = { \ .data = &(struct clk_regmap_gate_data) {\ @@ -117,7 +91,7 @@ static struct aoclk_cec_32k cec_32k_ao = { }, }; -static unsigned int gxbb_aoclk_reset[] = { +static const unsigned int gxbb_aoclk_reset[] = { [RESET_AO_REMOTE] = 16, [RESET_AO_I2C_MASTER] = 18, [RESET_AO_I2C_SLAVE] = 19, @@ -135,7 +109,7 @@ static struct clk_regmap *gxbb_aoclk_gate[] = { [CLKID_AO_IR_BLASTER] = _blaster_ao, }; -static struct clk_hw_onecell_data gxbb_aoclk_onecell_data = { +static const struct clk_hw_onecell_data gxbb_aoclk_onecell_data = { .hws = { [CLKID_AO_REMOTE] = _ao.hw, [CLKID_AO_I2C_MASTER] = _master_ao.hw, @@ -145,58 +119,55 @@ static struct clk_hw_onecell_data gxbb_aoclk_onecell_data = { [CLKID_AO_IR_BLASTER] = _blaster_ao.hw, [CLKID_AO_CEC_32K] = _32k_ao.hw, }, - .num = 7, + .num = NR_CLKS, }; -static int gxbb_aoclkc_probe(struct platform_device *pdev) +static int gxbb_register_cec_ao_32k(struct platform_device *pdev) { - struct gxbb_aoclk_reset_controller *rstc; struct device *dev = >dev; struct regmap *regmap; - int ret, clkid; - - rstc = devm_kzalloc(dev, sizeof(*rstc), GFP_KERNEL); - if (!rstc) - return -ENOMEM; + int ret; regmap = syscon_node_to_regmap(of_get_parent(dev->of_node)); if (IS_ERR(regmap)) { dev_err(dev, "failed to get regmap\n"); - return -ENODEV; - } - - /* Reset Controller */ - rstc->regmap = regmap; - rstc->data = gxbb_aoclk_reset; - rstc->reset.ops = _aoclk_reset_ops; -