[linux-sunxi] Re: [PATCH 3/6] mfd: axp20x: Add support for RSB based AXP223 PMIC

2015-10-14 Thread kbuild test robot
Hi Chen-Yu,

[auto build test ERROR on next-20151013 -- if it's inappropriate base, please 
suggest rules for selecting the more suitable base]

url:
https://github.com/0day-ci/linux/commits/Chen-Yu-Tsai/mfd-axp20x-Add-support-for-RSB-based-AXP223/20151015-004334
config: i386-randconfig-s1-201541 (attached as .config)
reproduce:
# save the attached .config to linux build tree
make ARCH=i386 

All error/warnings (new ones prefixed by >>):

warning: (MFD_AXP20X) selects MFD_AXP20X_RSB which has unmet direct 
dependencies (HAS_IOMEM && SUNXI_RSB)
   drivers/built-in.o: In function `axp20x_sunxi_rsb_probe':
>> axp20x-rsb.c:(.text+0xe00d7): undefined reference to 
>> `__devm_regmap_init_sunxi_rsb'
   drivers/built-in.o: In function `axp20x_sunxi_rsb_driver_init':
>> axp20x-rsb.c:(.init.text+0x81ce): undefined reference to 
>> `sunxi_rsb_driver_register'

---
0-DAY kernel test infrastructureOpen Source Technology Center
https://lists.01.org/pipermail/kbuild-all   Intel Corporation

-- 
You received this message because you are subscribed to the Google Groups 
"linux-sunxi" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to linux-sunxi+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


.config.gz
Description: Binary data


[linux-sunxi] Re: [PATCH 3/6] mfd: axp20x: Add support for RSB based AXP223 PMIC

2015-10-14 Thread kbuild test robot
Hi Chen-Yu,

[auto build test ERROR on next-20151013 -- if it's inappropriate base, please 
suggest rules for selecting the more suitable base]

url:
https://github.com/0day-ci/linux/commits/Chen-Yu-Tsai/mfd-axp20x-Add-support-for-RSB-based-AXP223/20151015-004334
config: x86_64-allmodconfig (attached as .config)
reproduce:
# save the attached .config to linux build tree
make ARCH=x86_64 

All errors (new ones prefixed by >>):

   drivers/built-in.o: In function `axp20x_i2c_remove':
   axp20x-i2c.c:(.text+0x22810b): undefined reference to `axp20x_device_remove'
   drivers/built-in.o: In function `axp20x_i2c_probe':
   axp20x-i2c.c:(.text+0x22827d): undefined reference to `axp20x_match_device'
   axp20x-i2c.c:(.text+0x2282ff): undefined reference to 
`__devm_regmap_init_i2c'
   axp20x-i2c.c:(.text+0x22834c): undefined reference to `axp20x_device_probe'
   drivers/built-in.o: In function `axp20x_sunxi_rsb_remove':
>> axp20x-rsb.c:(.text+0x228388): undefined reference to `axp20x_device_remove'
   drivers/built-in.o: In function `axp20x_sunxi_rsb_probe':
>> axp20x-rsb.c:(.text+0x22844d): undefined reference to `axp20x_match_device'
   axp20x-rsb.c:(.text+0x2284cb): undefined reference to 
`__devm_regmap_init_sunxi_rsb'
>> axp20x-rsb.c:(.text+0x228518): undefined reference to `axp20x_device_probe'
   drivers/built-in.o: In function `axp20x_i2c_driver_init':
   axp20x-i2c.c:(.init.text+0x1a8c9): undefined reference to 
`i2c_register_driver'
   drivers/built-in.o: In function `axp20x_sunxi_rsb_driver_init':
   axp20x-rsb.c:(.init.text+0x1a8e9): undefined reference to 
`sunxi_rsb_driver_register'
   drivers/built-in.o: In function `axp20x_i2c_driver_exit':
   axp20x-i2c.c:(.exit.text+0x683): undefined reference to `i2c_del_driver'

---
0-DAY kernel test infrastructureOpen Source Technology Center
https://lists.01.org/pipermail/kbuild-all   Intel Corporation

-- 
You received this message because you are subscribed to the Google Groups 
"linux-sunxi" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to linux-sunxi+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


.config.gz
Description: Binary data


[linux-sunxi] Re: [PATCH 3/6] mfd: axp20x: Add support for RSB based AXP223 PMIC

2015-10-15 Thread Maxime Ripard
On Thu, Oct 15, 2015 at 12:32:19AM +0800, Chen-Yu Tsai wrote:
> The AXP223 is a new PMIC commonly paired with Allwinner A23/A33 SoCs.
> It is functionally identical to AXP221; only the regulator default
> voltage/status and the external host interface are different.
> 
> Signed-off-by: Chen-Yu Tsai 
> ---
>  drivers/mfd/Kconfig| 12 ++
>  drivers/mfd/Makefile   |  1 +
>  drivers/mfd/axp20x-core.c  |  2 +
>  drivers/mfd/axp20x-rsb.c   | 93 
> ++
>  include/linux/mfd/axp20x.h |  1 +
>  5 files changed, 109 insertions(+)
>  create mode 100644 drivers/mfd/axp20x-rsb.c
> 
> diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
> index 9ba3feb3f2fc..6e5edb61d42e 100644
> --- a/drivers/mfd/Kconfig
> +++ b/drivers/mfd/Kconfig
> @@ -84,6 +84,7 @@ config MFD_BCM590XX
>  config MFD_AXP20X
>   bool "X-Powers AXP series PMICs"
>   select MFD_AXP20X_I2C
> + select MFD_AXP20X_RSB
>  
>  config MFD_AXP20X_CORE
>   bool
> @@ -102,6 +103,17 @@ config MFD_AXP20X_I2C
> components like regulators or the PEK (Power Enable Key) under the
> corresponding menus.
>  
> +config MFD_AXP20X_RSB
> + bool "X-Powers AXP series RSB PMICs"
> + select MFD_AXP20X_CORE
> + depends on SUNXI_RSB=y

Do we need that? Even if the bus is compiled as a module, the driver
will not be probed before that, will it?

> + help
> +   If you say Y here you get support for the X-Powers AXP series RSB
> +   based power management ICs (PMICs).
> +   This driver include only the core APIs. You have to select individual
> +   components like regulators or the PEK (Power Enable Key) under the
> +   corresponding menus.
> +
>  config MFD_CROS_EC
>   tristate "ChromeOS Embedded Controller"
>   select MFD_CORE
> diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile
> index ce3ad5fd4e2f..1eb278619dd6 100644
> --- a/drivers/mfd/Makefile
> +++ b/drivers/mfd/Makefile
> @@ -108,6 +108,7 @@ obj-$(CONFIG_MFD_DA9052_SPI)  += da9052-spi.o
>  obj-$(CONFIG_MFD_DA9052_I2C) += da9052-i2c.o
>  obj-$(CONFIG_MFD_AXP20X_CORE)+= axp20x-core.o
>  obj-$(CONFIG_MFD_AXP20X_I2C) += axp20x-i2c.o
> +obj-$(CONFIG_MFD_AXP20X_RSB) += axp20x-rsb.o
>  
>  obj-$(CONFIG_MFD_LP3943) += lp3943.o
>  obj-$(CONFIG_MFD_LP8788) += lp8788.o lp8788-irq.o
> diff --git a/drivers/mfd/axp20x-core.c b/drivers/mfd/axp20x-core.c
> index dd33548d93c4..baecccb6d400 100644
> --- a/drivers/mfd/axp20x-core.c
> +++ b/drivers/mfd/axp20x-core.c
> @@ -32,6 +32,7 @@ static const char * const axp20x_model_names[] = {
>   "AXP202",
>   "AXP209",
>   "AXP221",
> + "AXP223",
>   "AXP288",
>  };
>  
> @@ -575,6 +576,7 @@ int axp20x_match_device(struct axp20x_dev *axp20x, struct 
> device *dev)
>   axp20x->regmap_irq_chip = &axp20x_regmap_irq_chip;
>   break;
>   case AXP221_ID:
> + case AXP223_ID:
>   axp20x->nr_cells = ARRAY_SIZE(axp22x_cells);
>   axp20x->cells = axp22x_cells;
>   axp20x->regmap_cfg = &axp22x_regmap_config;
> diff --git a/drivers/mfd/axp20x-rsb.c b/drivers/mfd/axp20x-rsb.c
> new file mode 100644
> index ..5d053d177717
> --- /dev/null
> +++ b/drivers/mfd/axp20x-rsb.c
> @@ -0,0 +1,93 @@
> +/*
> + * axp20x-rsb.c - RSB driver for the X-Powers' Power Management ICs
> + *
> + * AXP20x typically comprises an adaptive USB-Compatible PWM charger, BUCK 
> DC-DC
> + * converters, LDOs, multiple 12-bit ADCs of voltage, current and temperature
> + * as well as configurable GPIOs.
> + *
> + * This driver supports the RSB variants.
> + *
> + * Author: Chen-Yu Tsai 
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation.
> + */
> +
> +#include 
> +#include 
> +#include 
> +#include 
> +#include 
> +#include 
> +#include 
> +#include 
> +
> +static const struct of_device_id axp20x_sunxi_rsb_of_match[] = {
> + { .compatible = "x-powers,axp223", .data = (void *) AXP223_ID },
> + { },
> +};
> +MODULE_DEVICE_TABLE(of, axp20x_sunxi_rsb_of_match);
> +
> +static int axp20x_sunxi_rsb_match_device(struct axp20x_dev *axp20x,
> +  struct device *dev)
> +{
> + const struct of_device_id *of_id;
> +
> + of_id = of_match_device(axp20x_sunxi_rsb_of_match, dev);
> + if (!of_id) {
> + dev_err(dev, "Unable to match OF ID\n");
> + return -ENODEV;
> + }
> + axp20x->variant = (long) of_id->data;
> +
> + return axp20x_match_device(axp20x, dev);
> +}
> +
> +static int axp20x_sunxi_rsb_probe(struct sunxi_rsb_device *rdev)
> +{
> + struct axp20x_dev *axp20x;
> + int ret;
> +
> + axp20x = devm_kzalloc(&rdev->dev, sizeof(*axp20x), GFP_KERNEL);
> + if (!axp20x)
> + return -ENOMEM;
> +
> + ret = axp20x_sunxi_rsb_match_device(axp20x, &rd

Re: [linux-sunxi] Re: [PATCH 3/6] mfd: axp20x: Add support for RSB based AXP223 PMIC

2015-10-15 Thread Chen-Yu Tsai
On Fri, Oct 16, 2015 at 2:41 PM, Maxime Ripard
 wrote:
> On Thu, Oct 15, 2015 at 12:32:19AM +0800, Chen-Yu Tsai wrote:
>> The AXP223 is a new PMIC commonly paired with Allwinner A23/A33 SoCs.
>> It is functionally identical to AXP221; only the regulator default
>> voltage/status and the external host interface are different.
>>
>> Signed-off-by: Chen-Yu Tsai 
>> ---
>>  drivers/mfd/Kconfig| 12 ++
>>  drivers/mfd/Makefile   |  1 +
>>  drivers/mfd/axp20x-core.c  |  2 +
>>  drivers/mfd/axp20x-rsb.c   | 93 
>> ++
>>  include/linux/mfd/axp20x.h |  1 +
>>  5 files changed, 109 insertions(+)
>>  create mode 100644 drivers/mfd/axp20x-rsb.c
>>
>> diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
>> index 9ba3feb3f2fc..6e5edb61d42e 100644
>> --- a/drivers/mfd/Kconfig
>> +++ b/drivers/mfd/Kconfig
>> @@ -84,6 +84,7 @@ config MFD_BCM590XX
>>  config MFD_AXP20X
>>   bool "X-Powers AXP series PMICs"
>>   select MFD_AXP20X_I2C
>> + select MFD_AXP20X_RSB
>>
>>  config MFD_AXP20X_CORE
>>   bool
>> @@ -102,6 +103,17 @@ config MFD_AXP20X_I2C
>> components like regulators or the PEK (Power Enable Key) under the
>> corresponding menus.
>>
>> +config MFD_AXP20X_RSB
>> + bool "X-Powers AXP series RSB PMICs"
>> + select MFD_AXP20X_CORE
>> + depends on SUNXI_RSB=y
>
> Do we need that? Even if the bus is compiled as a module, the driver
> will not be probed before that, will it?

There's a compile/link dependency on the __devm_regmap_init_sunxi_rsb().

And both drivers are bool, i.e. can't be compiled as a module. What we
don't want is enabling MFD_AXP20X_RSB without SUNXI_RSB.

AFAIK the same goes for the I2C version.

>> + help
>> +   If you say Y here you get support for the X-Powers AXP series RSB
>> +   based power management ICs (PMICs).
>> +   This driver include only the core APIs. You have to select individual
>> +   components like regulators or the PEK (Power Enable Key) under the
>> +   corresponding menus.
>> +
>>  config MFD_CROS_EC
>>   tristate "ChromeOS Embedded Controller"
>>   select MFD_CORE
>> diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile
>> index ce3ad5fd4e2f..1eb278619dd6 100644
>> --- a/drivers/mfd/Makefile
>> +++ b/drivers/mfd/Makefile
>> @@ -108,6 +108,7 @@ obj-$(CONFIG_MFD_DA9052_SPI)  += da9052-spi.o
>>  obj-$(CONFIG_MFD_DA9052_I2C) += da9052-i2c.o
>>  obj-$(CONFIG_MFD_AXP20X_CORE)+= axp20x-core.o
>>  obj-$(CONFIG_MFD_AXP20X_I2C) += axp20x-i2c.o
>> +obj-$(CONFIG_MFD_AXP20X_RSB) += axp20x-rsb.o
>>
>>  obj-$(CONFIG_MFD_LP3943) += lp3943.o
>>  obj-$(CONFIG_MFD_LP8788) += lp8788.o lp8788-irq.o
>> diff --git a/drivers/mfd/axp20x-core.c b/drivers/mfd/axp20x-core.c
>> index dd33548d93c4..baecccb6d400 100644
>> --- a/drivers/mfd/axp20x-core.c
>> +++ b/drivers/mfd/axp20x-core.c
>> @@ -32,6 +32,7 @@ static const char * const axp20x_model_names[] = {
>>   "AXP202",
>>   "AXP209",
>>   "AXP221",
>> + "AXP223",
>>   "AXP288",
>>  };
>>
>> @@ -575,6 +576,7 @@ int axp20x_match_device(struct axp20x_dev *axp20x, 
>> struct device *dev)
>>   axp20x->regmap_irq_chip = &axp20x_regmap_irq_chip;
>>   break;
>>   case AXP221_ID:
>> + case AXP223_ID:
>>   axp20x->nr_cells = ARRAY_SIZE(axp22x_cells);
>>   axp20x->cells = axp22x_cells;
>>   axp20x->regmap_cfg = &axp22x_regmap_config;
>> diff --git a/drivers/mfd/axp20x-rsb.c b/drivers/mfd/axp20x-rsb.c
>> new file mode 100644
>> index ..5d053d177717
>> --- /dev/null
>> +++ b/drivers/mfd/axp20x-rsb.c
>> @@ -0,0 +1,93 @@
>> +/*
>> + * axp20x-rsb.c - RSB driver for the X-Powers' Power Management ICs
>> + *
>> + * AXP20x typically comprises an adaptive USB-Compatible PWM charger, BUCK 
>> DC-DC
>> + * converters, LDOs, multiple 12-bit ADCs of voltage, current and 
>> temperature
>> + * as well as configurable GPIOs.
>> + *
>> + * This driver supports the RSB variants.
>> + *
>> + * Author: Chen-Yu Tsai 
>> + *
>> + * This program is free software; you can redistribute it and/or modify
>> + * it under the terms of the GNU General Public License version 2 as
>> + * published by the Free Software Foundation.
>> + */
>> +
>> +#include 
>> +#include 
>> +#include 
>> +#include 
>> +#include 
>> +#include 
>> +#include 
>> +#include 
>> +
>> +static const struct of_device_id axp20x_sunxi_rsb_of_match[] = {
>> + { .compatible = "x-powers,axp223", .data = (void *) AXP223_ID },
>> + { },
>> +};
>> +MODULE_DEVICE_TABLE(of, axp20x_sunxi_rsb_of_match);
>> +
>> +static int axp20x_sunxi_rsb_match_device(struct axp20x_dev *axp20x,
>> +  struct device *dev)
>> +{
>> + const struct of_device_id *of_id;
>> +
>> + of_id = of_match_device(axp20x_sunxi_rsb_of_match, dev);
>> + if (!of_id) {
>> + dev_err(dev, "Unable to match OF ID\n");
>> + return -ENODEV;
>> + 

Re: [linux-sunxi] Re: [PATCH 3/6] mfd: axp20x: Add support for RSB based AXP223 PMIC

2015-10-18 Thread Maxime Ripard
On Fri, Oct 16, 2015 at 02:46:23PM +0800, Chen-Yu Tsai wrote:
> On Fri, Oct 16, 2015 at 2:41 PM, Maxime Ripard
>  wrote:
> > On Thu, Oct 15, 2015 at 12:32:19AM +0800, Chen-Yu Tsai wrote:
> >> The AXP223 is a new PMIC commonly paired with Allwinner A23/A33 SoCs.
> >> It is functionally identical to AXP221; only the regulator default
> >> voltage/status and the external host interface are different.
> >>
> >> Signed-off-by: Chen-Yu Tsai 
> >> ---
> >>  drivers/mfd/Kconfig| 12 ++
> >>  drivers/mfd/Makefile   |  1 +
> >>  drivers/mfd/axp20x-core.c  |  2 +
> >>  drivers/mfd/axp20x-rsb.c   | 93 
> >> ++
> >>  include/linux/mfd/axp20x.h |  1 +
> >>  5 files changed, 109 insertions(+)
> >>  create mode 100644 drivers/mfd/axp20x-rsb.c
> >>
> >> diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
> >> index 9ba3feb3f2fc..6e5edb61d42e 100644
> >> --- a/drivers/mfd/Kconfig
> >> +++ b/drivers/mfd/Kconfig
> >> @@ -84,6 +84,7 @@ config MFD_BCM590XX
> >>  config MFD_AXP20X
> >>   bool "X-Powers AXP series PMICs"
> >>   select MFD_AXP20X_I2C
> >> + select MFD_AXP20X_RSB
> >>
> >>  config MFD_AXP20X_CORE
> >>   bool
> >> @@ -102,6 +103,17 @@ config MFD_AXP20X_I2C
> >> components like regulators or the PEK (Power Enable Key) under the
> >> corresponding menus.
> >>
> >> +config MFD_AXP20X_RSB
> >> + bool "X-Powers AXP series RSB PMICs"
> >> + select MFD_AXP20X_CORE
> >> + depends on SUNXI_RSB=y
> >
> > Do we need that? Even if the bus is compiled as a module, the driver
> > will not be probed before that, will it?
> 
> There's a compile/link dependency on the __devm_regmap_init_sunxi_rsb().

If it's exported, everything should be fine, no?

> And both drivers are bool, i.e. can't be compiled as a module. What we
> don't want is enabling MFD_AXP20X_RSB without SUNXI_RSB.

What would really be the issue here? The driver wouldn't be probed,
and that's it. Or am I missing something?

Maxime

> AFAIK the same goes for the I2C version.

-- 
Maxime Ripard, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

-- 
You received this message because you are subscribed to the Google Groups 
"linux-sunxi" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to linux-sunxi+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


signature.asc
Description: Digital signature


Re: [linux-sunxi] Re: [PATCH 3/6] mfd: axp20x: Add support for RSB based AXP223 PMIC

2015-10-18 Thread Chen-Yu Tsai
On Mon, Oct 19, 2015 at 2:02 PM, Maxime Ripard
 wrote:
> On Fri, Oct 16, 2015 at 02:46:23PM +0800, Chen-Yu Tsai wrote:
>> On Fri, Oct 16, 2015 at 2:41 PM, Maxime Ripard
>>  wrote:
>> > On Thu, Oct 15, 2015 at 12:32:19AM +0800, Chen-Yu Tsai wrote:
>> >> The AXP223 is a new PMIC commonly paired with Allwinner A23/A33 SoCs.
>> >> It is functionally identical to AXP221; only the regulator default
>> >> voltage/status and the external host interface are different.
>> >>
>> >> Signed-off-by: Chen-Yu Tsai 
>> >> ---
>> >>  drivers/mfd/Kconfig| 12 ++
>> >>  drivers/mfd/Makefile   |  1 +
>> >>  drivers/mfd/axp20x-core.c  |  2 +
>> >>  drivers/mfd/axp20x-rsb.c   | 93 
>> >> ++
>> >>  include/linux/mfd/axp20x.h |  1 +
>> >>  5 files changed, 109 insertions(+)
>> >>  create mode 100644 drivers/mfd/axp20x-rsb.c
>> >>
>> >> diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
>> >> index 9ba3feb3f2fc..6e5edb61d42e 100644
>> >> --- a/drivers/mfd/Kconfig
>> >> +++ b/drivers/mfd/Kconfig
>> >> @@ -84,6 +84,7 @@ config MFD_BCM590XX
>> >>  config MFD_AXP20X
>> >>   bool "X-Powers AXP series PMICs"
>> >>   select MFD_AXP20X_I2C
>> >> + select MFD_AXP20X_RSB
>> >>
>> >>  config MFD_AXP20X_CORE
>> >>   bool
>> >> @@ -102,6 +103,17 @@ config MFD_AXP20X_I2C
>> >> components like regulators or the PEK (Power Enable Key) under the
>> >> corresponding menus.
>> >>
>> >> +config MFD_AXP20X_RSB
>> >> + bool "X-Powers AXP series RSB PMICs"
>> >> + select MFD_AXP20X_CORE
>> >> + depends on SUNXI_RSB=y
>> >
>> > Do we need that? Even if the bus is compiled as a module, the driver
>> > will not be probed before that, will it?
>>
>> There's a compile/link dependency on the __devm_regmap_init_sunxi_rsb().
>
> If it's exported, everything should be fine, no?
>
>> And both drivers are bool, i.e. can't be compiled as a module. What we
>> don't want is enabling MFD_AXP20X_RSB without SUNXI_RSB.
>
> What would really be the issue here? The driver wouldn't be probed,
> and that's it. Or am I missing something?

The RSB bus / slave device functions have been merged into the RSB driver
itself. Enabling MFD_AXP20X_RSB without enabling SUNXI_RSB means that RSB
bus/device related functions are not compiled, i.e. link error:

drivers/built-in.o: In function `axp20x_rsb_probe':
/home/wens/sunxi/linux/drivers/mfd/axp20x-rsb.c:64: undefined
reference to `__devm_regmap_init_sunxi_rsb'
drivers/built-in.o: In function `axp20x_rsb_driver_init':
/home/wens/sunxi/linux/drivers/mfd/axp20x-rsb.c:89: undefined
reference to `sunxi_rsb_driver_register'
Makefile:927: recipe for target 'vmlinux' failed

The dependency is like "depends on I2C=y" for the I2C version.

If you're asking about why "=y", I guess it's because MFD_AXP20X_RSB is bool,
and if the depended on symbol is a tristate, which it actually is for I2c,
we'd want it to be compiled in, and not built as a module, or again we'd get
a undefined reference link error.

Would it make sense to have SUNXI_RSB as a tristate symbol, i.e. can be built
as a module? I'm nore sure. For multi-platform kernels, probably? Currently it
isn't.

Hope this clears it up.


Regards
ChenYu

-- 
You received this message because you are subscribed to the Google Groups 
"linux-sunxi" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to linux-sunxi+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [linux-sunxi] Re: [PATCH 3/6] mfd: axp20x: Add support for RSB based AXP223 PMIC

2015-10-19 Thread Maxime Ripard
On Mon, Oct 19, 2015 at 02:20:29PM +0800, Chen-Yu Tsai wrote:
> On Mon, Oct 19, 2015 at 2:02 PM, Maxime Ripard
>  wrote:
> > On Fri, Oct 16, 2015 at 02:46:23PM +0800, Chen-Yu Tsai wrote:
> >> On Fri, Oct 16, 2015 at 2:41 PM, Maxime Ripard
> >>  wrote:
> >> > On Thu, Oct 15, 2015 at 12:32:19AM +0800, Chen-Yu Tsai wrote:
> >> >> The AXP223 is a new PMIC commonly paired with Allwinner A23/A33 SoCs.
> >> >> It is functionally identical to AXP221; only the regulator default
> >> >> voltage/status and the external host interface are different.
> >> >>
> >> >> Signed-off-by: Chen-Yu Tsai 
> >> >> ---
> >> >>  drivers/mfd/Kconfig| 12 ++
> >> >>  drivers/mfd/Makefile   |  1 +
> >> >>  drivers/mfd/axp20x-core.c  |  2 +
> >> >>  drivers/mfd/axp20x-rsb.c   | 93 
> >> >> ++
> >> >>  include/linux/mfd/axp20x.h |  1 +
> >> >>  5 files changed, 109 insertions(+)
> >> >>  create mode 100644 drivers/mfd/axp20x-rsb.c
> >> >>
> >> >> diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
> >> >> index 9ba3feb3f2fc..6e5edb61d42e 100644
> >> >> --- a/drivers/mfd/Kconfig
> >> >> +++ b/drivers/mfd/Kconfig
> >> >> @@ -84,6 +84,7 @@ config MFD_BCM590XX
> >> >>  config MFD_AXP20X
> >> >>   bool "X-Powers AXP series PMICs"
> >> >>   select MFD_AXP20X_I2C
> >> >> + select MFD_AXP20X_RSB
> >> >>
> >> >>  config MFD_AXP20X_CORE
> >> >>   bool
> >> >> @@ -102,6 +103,17 @@ config MFD_AXP20X_I2C
> >> >> components like regulators or the PEK (Power Enable Key) under 
> >> >> the
> >> >> corresponding menus.
> >> >>
> >> >> +config MFD_AXP20X_RSB
> >> >> + bool "X-Powers AXP series RSB PMICs"
> >> >> + select MFD_AXP20X_CORE
> >> >> + depends on SUNXI_RSB=y
> >> >
> >> > Do we need that? Even if the bus is compiled as a module, the driver
> >> > will not be probed before that, will it?
> >>
> >> There's a compile/link dependency on the __devm_regmap_init_sunxi_rsb().
> >
> > If it's exported, everything should be fine, no?
> >
> >> And both drivers are bool, i.e. can't be compiled as a module. What we
> >> don't want is enabling MFD_AXP20X_RSB without SUNXI_RSB.
> >
> > What would really be the issue here? The driver wouldn't be probed,
> > and that's it. Or am I missing something?
> 
> The RSB bus / slave device functions have been merged into the RSB driver
> itself. Enabling MFD_AXP20X_RSB without enabling SUNXI_RSB means that RSB
> bus/device related functions are not compiled, i.e. link error:
> 
> drivers/built-in.o: In function `axp20x_rsb_probe':
> /home/wens/sunxi/linux/drivers/mfd/axp20x-rsb.c:64: undefined
> reference to `__devm_regmap_init_sunxi_rsb'
> drivers/built-in.o: In function `axp20x_rsb_driver_init':
> /home/wens/sunxi/linux/drivers/mfd/axp20x-rsb.c:89: undefined
> reference to `sunxi_rsb_driver_register'
> Makefile:927: recipe for target 'vmlinux' failed
>
> The dependency is like "depends on I2C=y" for the I2C version.
> 
> If you're asking about why "=y", I guess it's because MFD_AXP20X_RSB is bool,
> and if the depended on symbol is a tristate, which it actually is for I2c,
> we'd want it to be compiled in, and not built as a module, or again we'd get
> a undefined reference link error.

Yeah, but my point was more why not have both the RSB driver and MFD
as a module? The part where RSB is a module and the driver is
statically built doesn't make sense (and I don't think a depends on
allow that), but having both make sense.

> Would it make sense to have SUNXI_RSB as a tristate symbol, i.e. can be built
> as a module? I'm nore sure. For multi-platform kernels, probably? Currently it
> isn't.

Yes, it's better for multi-platform / distro kernels.

Maxime

-- 
Maxime Ripard, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

-- 
You received this message because you are subscribed to the Google Groups 
"linux-sunxi" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to linux-sunxi+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


signature.asc
Description: Digital signature


Re: [linux-sunxi] Re: [PATCH 3/6] mfd: axp20x: Add support for RSB based AXP223 PMIC

2015-10-19 Thread Chen-Yu Tsai
On Tue, Oct 20, 2015 at 2:48 AM, Maxime Ripard
 wrote:
> On Mon, Oct 19, 2015 at 02:20:29PM +0800, Chen-Yu Tsai wrote:
>> On Mon, Oct 19, 2015 at 2:02 PM, Maxime Ripard
>>  wrote:
>> > On Fri, Oct 16, 2015 at 02:46:23PM +0800, Chen-Yu Tsai wrote:
>> >> On Fri, Oct 16, 2015 at 2:41 PM, Maxime Ripard
>> >>  wrote:
>> >> > On Thu, Oct 15, 2015 at 12:32:19AM +0800, Chen-Yu Tsai wrote:
>> >> >> The AXP223 is a new PMIC commonly paired with Allwinner A23/A33 SoCs.
>> >> >> It is functionally identical to AXP221; only the regulator default
>> >> >> voltage/status and the external host interface are different.
>> >> >>
>> >> >> Signed-off-by: Chen-Yu Tsai 
>> >> >> ---
>> >> >>  drivers/mfd/Kconfig| 12 ++
>> >> >>  drivers/mfd/Makefile   |  1 +
>> >> >>  drivers/mfd/axp20x-core.c  |  2 +
>> >> >>  drivers/mfd/axp20x-rsb.c   | 93 
>> >> >> ++
>> >> >>  include/linux/mfd/axp20x.h |  1 +
>> >> >>  5 files changed, 109 insertions(+)
>> >> >>  create mode 100644 drivers/mfd/axp20x-rsb.c
>> >> >>
>> >> >> diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
>> >> >> index 9ba3feb3f2fc..6e5edb61d42e 100644
>> >> >> --- a/drivers/mfd/Kconfig
>> >> >> +++ b/drivers/mfd/Kconfig
>> >> >> @@ -84,6 +84,7 @@ config MFD_BCM590XX
>> >> >>  config MFD_AXP20X
>> >> >>   bool "X-Powers AXP series PMICs"
>> >> >>   select MFD_AXP20X_I2C
>> >> >> + select MFD_AXP20X_RSB
>> >> >>
>> >> >>  config MFD_AXP20X_CORE
>> >> >>   bool
>> >> >> @@ -102,6 +103,17 @@ config MFD_AXP20X_I2C
>> >> >> components like regulators or the PEK (Power Enable Key) under 
>> >> >> the
>> >> >> corresponding menus.
>> >> >>
>> >> >> +config MFD_AXP20X_RSB
>> >> >> + bool "X-Powers AXP series RSB PMICs"
>> >> >> + select MFD_AXP20X_CORE
>> >> >> + depends on SUNXI_RSB=y
>> >> >
>> >> > Do we need that? Even if the bus is compiled as a module, the driver
>> >> > will not be probed before that, will it?
>> >>
>> >> There's a compile/link dependency on the __devm_regmap_init_sunxi_rsb().
>> >
>> > If it's exported, everything should be fine, no?
>> >
>> >> And both drivers are bool, i.e. can't be compiled as a module. What we
>> >> don't want is enabling MFD_AXP20X_RSB without SUNXI_RSB.
>> >
>> > What would really be the issue here? The driver wouldn't be probed,
>> > and that's it. Or am I missing something?
>>
>> The RSB bus / slave device functions have been merged into the RSB driver
>> itself. Enabling MFD_AXP20X_RSB without enabling SUNXI_RSB means that RSB
>> bus/device related functions are not compiled, i.e. link error:
>>
>> drivers/built-in.o: In function `axp20x_rsb_probe':
>> /home/wens/sunxi/linux/drivers/mfd/axp20x-rsb.c:64: undefined
>> reference to `__devm_regmap_init_sunxi_rsb'
>> drivers/built-in.o: In function `axp20x_rsb_driver_init':
>> /home/wens/sunxi/linux/drivers/mfd/axp20x-rsb.c:89: undefined
>> reference to `sunxi_rsb_driver_register'
>> Makefile:927: recipe for target 'vmlinux' failed
>>
>> The dependency is like "depends on I2C=y" for the I2C version.
>>
>> If you're asking about why "=y", I guess it's because MFD_AXP20X_RSB is bool,
>> and if the depended on symbol is a tristate, which it actually is for I2c,
>> we'd want it to be compiled in, and not built as a module, or again we'd get
>> a undefined reference link error.
>
> Yeah, but my point was more why not have both the RSB driver and MFD
> as a module? The part where RSB is a module and the driver is
> statically built doesn't make sense (and I don't think a depends on
> allow that), but having both make sense.

Ok. I have no problem with building them as modules. I was just following
what the original driver did.

It seems half the mfd driver can be built as modules, while the other
half can only be built-in. I don't know what the criteria is here.

>> Would it make sense to have SUNXI_RSB as a tristate symbol, i.e. can be built
>> as a module? I'm nore sure. For multi-platform kernels, probably? Currently 
>> it
>> isn't.
>
> Yes, it's better for multi-platform / distro kernels.

I guess I'll do a follow up patch for sunxi-rsb?

Regards
ChenYu

-- 
You received this message because you are subscribed to the Google Groups 
"linux-sunxi" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to linux-sunxi+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.