Thread (29 messages) 29 messages, 6 authors, 2017-10-05

[PATCH v2 02/10] pinctrl: axp209: add pinctrl features

From: Quentin Schulz <hidden>
Date: 2017-09-26 13:37:55
Also in: linux-devicetree, linux-gpio, lkml

On 26/09/2017 15:27, Maxime Ripard wrote:
On Tue, Sep 26, 2017 at 01:08:21PM +0000, Quentin Schulz wrote:
quoted
Hi Maxime,

On 26/09/2017 15:00, Maxime Ripard wrote:
quoted
On Tue, Sep 26, 2017 at 12:17:12PM +0000, Quentin Schulz wrote:
quoted
+static const struct axp20x_desc_pin axp209_pins[] = {
+	AXP20X_PIN(AXP20X_PINCTRL_PIN(0, "GPIO0"),
+		   AXP20X_FUNCTION(0x0, "gpio_out"),
+		   AXP20X_FUNCTION(0x2, "gpio_in"),
+		   AXP20X_FUNCTION(0x3, "ldo"),
+		   AXP20X_FUNCTION(0x4, "adc")),
+	AXP20X_PIN(AXP20X_PINCTRL_PIN(1, "GPIO1"),
+		   AXP20X_FUNCTION(0x0, "gpio_out"),
+		   AXP20X_FUNCTION(0x2, "gpio_in"),
+		   AXP20X_FUNCTION(0x3, "ldo"),
+		   AXP20X_FUNCTION(0x4, "adc")),
+	AXP20X_PIN(AXP20X_PINCTRL_PIN(2, "GPIO2"),
+		   AXP20X_FUNCTION(0x0, "gpio_out"),
+		   AXP20X_FUNCTION(0x2, "gpio_in")),
+};
If all the functions are the same, and at the same offset, can't we
just hardcode it, instead of having (and duplicate) all the logic
below?
AXP20X_PIN(AXP20X_PINCTRL_PIN(0, "GPIO0"),
		AXP20X_GPIO_OUT,
		AXP20X_GPIO_IN,
		AXP20X_LDO,
		AXP20X_ADC))

That's what you mean?
What I mean is:

static int axp20x_get_func(char *func)
{
	if (!strcmp(func, "gpio_out"))
		return 0;

	if (!strcmp(func, "gpio_in"))
		return 2;
 
	if (!strcmp(func, "ldo"))
 		return 3;
 
	if (!strcmp(func, "adc"))
 		return 4;

	return -EINVAL;
}
GPIO2 on AXP209 does not support ldo nor adc.
GPIO1 on AXP813 does not support adc.

I find it more complex to handle those two cases in a function than by
hardcoding it in structures like above.

Moreover, nothing tells us that it would be the same offset for other PMICs.

Quentin
-- 
Quentin Schulz, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: OpenPGP digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20170926/ff97d032/attachment.sig>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help