Thread (14 messages) read the whole thread 14 messages, 3 authors, 2015-11-24

[PATCH v4 2/6] mfd: axp20x: Split the driver into core and i2c bits

From: Chen-Yu Tsai <hidden>
Date: 2015-11-24 15:09:37
Also in: linux-devicetree, lkml

On Tue, Nov 24, 2015 at 8:35 PM, Andy Shevchenko
[off-list ref] wrote:
On Tue, Nov 24, 2015 at 1:28 PM, Chen-Yu Tsai [off-list ref] wrote:
quoted
Hi,

On Tue, Nov 24, 2015 at 5:37 PM, Andy Shevchenko
[off-list ref] wrote:
quoted
On Tue, Nov 24, 2015 at 5:48 AM, Chen-Yu Tsai [off-list ref] wrote:
quoted
The axp20x driver assumes the device is i2c based. This is not the
case with later chips, which use a proprietary 2 wire serial bus
by Allwinner called "Reduced Serial Bus".

This patch follows the example of mfd/wm831x and splits it into
an interface independent core, and an i2c specific glue layer.
MFD_AXP20X and the new MFD_AXP20X_I2C are changed to tristate
symbols, allowing the driver to be built as modules.

Included but unused header files are removed as well.
So?
quoted
quoted
quoted
+       if (dev->of_node) {
What about

if (?of_node) {
      const struct of_device_id *id;
?
} else if ACPI_COMPANION(?) {
This should be has_acpi_companion().
I don't think the "else if" is necessary. There's only 2 possible ways
the device gets probed, either device tree or ACPI.
quoted
quoted
      const struct acpi_device_id *id;
?
} else {
 return -ENODEV;
}
I really don't want to change code that I'm just moving around.
Same goes for the other comments about this patch. I can do another
patch on top of this to fix the style issues if it really bothers
people.
Fair enough.
My comments mostly about unnecessity of second parameter in the functions.

So,  you already did some clean up in this patch (above), what about
to do another? I also prefer separate patch *before* you do a split.
Sure. I'll do a patch or 2 before the split. Would you mind if I add your
Suggested-by tag?


Regards
ChenYu
quoted
quoted
quoted
+       axp20x = devm_kzalloc(&i2c->dev, sizeof(*axp20x), GFP_KERNEL);
+       if (!axp20x)
+               return -ENOMEM;
+
+       ret = axp20x_i2c_match_device(axp20x, &i2c->dev);
+       if (ret)
+               return ret;
+
+       axp20x->dev = &i2c->dev;
+       axp20x->irq = i2c->irq;
If you move _match_device() here you will be able to drop away struct
device * parameter.
--
With Best Regards,
Andy Shevchenko
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help