Re: [PATCH v5 2/7] clk: meson: aoclk: refactor common code into dedicated file

2018-04-17 Thread Jerome Brunet
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

2018-04-17 Thread Jerome Brunet
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

2018-04-17 Thread Yixun Lan
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

2018-04-17 Thread Yixun Lan
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

2018-04-17 Thread Yixun Lan
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

2018-04-17 Thread Yixun Lan
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

2018-04-16 Thread Jerome Brunet
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

2018-04-16 Thread Jerome Brunet
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

2018-04-16 Thread Jerome Brunet
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

2018-04-16 Thread Jerome Brunet
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

2018-04-09 Thread Yixun Lan
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;
-   

[PATCH v5 2/7] clk: meson: aoclk: refactor common code into dedicated file

2018-04-09 Thread Yixun Lan
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;
-