Re: [PATCH v3] leds: implement OpenFirmare GPIO LED driver

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: Anton Vorontsov <avorontsov@...>
Cc: Grant Likely <grant.likely@...>, Richard Purdie <rpurdie@...>, Stephen Rothwell <sfr@...>, Kumar Gala <galak@...>, <linux-kernel@...>, <linuxppc-dev@...>
Date: Thursday, July 17, 2008 - 4:01 pm

On Thu, 17 Jul 2008, Anton Vorontsov wrote:

Your new driver was 194 lines, not counting docs or Kconfig.  My patch
added about 104 lines to the existing leds-gpio driver.  So yes, about half
the code.


I guess, in terms of compiled size, the combined platform + of_platform
driver is bigger than the of_platform only driver.  Though it's much
smaller than having both the platform only and of_platform only drivers. 
In terms of source code, there's less with the combined driver.

I don't see why the combined leds-gpio driver can't have an ifdef for the
platform part.  All the platform driver specific code is already in one
contiguous block.  In fact, I just did it and it works fine.  My LEDs from
the dts were created and the LED I have as a platform device wasn't, as
expected.  Here's the patch, pretty simple:

diff --git a/drivers/leds/leds-gpio.c b/drivers/leds/leds-gpio.c
--- a/drivers/leds/leds-gpio.c
+++ b/drivers/leds/leds-gpio.c
@@ -108,2 +108,3 @@ static int create_gpio_led(struct gpio_led *cur_led,

+#ifdef CONFIG_LEDS_GPIO_PLATFORM
  static int gpio_led_probe(struct platform_device *pdev)
@@ -222,2 +223,3 @@ module_init(gpio_led_init);
  module_exit(gpio_led_exit);
+#endif /* CONFIG_LEDS_GPIO_PLATFORM */



It creates a "thing" from a template passed a pointer to a struct.  This is
very common, there must be hundreds of functions in the kernel that work
this way.  The difference is instead of allocating and returning the
created thing, you pass it a blank pre-allocated thing to fill in and
register.  I know there is other code that works this way too.  It's
usually used, like it is here, so you can allocate a bunch of things at
once and then register them one at a time.


The struct gpio_led is just used to pass the stats to the led creation
function.  It doesn't stick around.  You could use local variables for the
gpio and name and pass them to the create led function.  Bundling them into
a struct is an tiny change that lets more code be shared.


Obviously the OF binding code should be conditional, selectable from
kconfig if the platform has OF support.  It's all in one contiguous block
and that shows where the ifdef would go.  I didn't think it was necessary
to include the obvious kconfig patch.
--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[PATCH] leds: implement OpenFirmare GPIO LED driver, Anton Vorontsov, (Mon Jul 14, 12:41 pm)
Re: [PATCH] leds: implement OpenFirmare GPIO LED driver, Segher Boessenkool, (Thu Jul 17, 1:59 am)
Re: [PATCH] leds: implement OpenFirmare GPIO LED driver, Anton Vorontsov, (Thu Jul 17, 7:07 am)
Re: [PATCH] leds: implement OpenFirmare GPIO LED driver, Grant Likely, (Thu Jul 17, 11:07 am)
Re: [PATCH] leds: implement OpenFirmare GPIO LED driver, David Gibson, (Thu Jul 17, 11:35 pm)
Re: [PATCH] leds: implement OpenFirmare GPIO LED driver, Grant Likely, (Fri Jul 18, 12:44 am)
Re: [PATCH] leds: implement OpenFirmare GPIO LED driver, Sean MacLennan, (Thu Jul 17, 10:58 am)
Re: [PATCH] leds: implement OpenFirmare GPIO LED driver, Stephen Rothwell, (Mon Jul 14, 11:10 pm)
Re: [PATCH] leds: implement OpenFirmare GPIO LED driver, Anton Vorontsov, (Tue Jul 15, 8:38 am)
[PATCH v2] leds: implement OpenFirmare GPIO LED driver, Anton Vorontsov, (Tue Jul 15, 8:40 am)
Re: [PATCH v2] leds: implement OpenFirmare GPIO LED driver, Richard Purdie, (Tue Jul 15, 8:54 am)
Re: [PATCH v2] leds: implement OpenFirmare GPIO LED driver, Anton Vorontsov, (Tue Jul 15, 9:24 am)
Re: [PATCH v2] leds: implement OpenFirmare GPIO LED driver, Richard Purdie, (Tue Jul 15, 9:31 am)
Re: [PATCH v2] leds: implement OpenFirmare GPIO LED driver, Anton Vorontsov, (Tue Jul 15, 10:23 am)
Re: [PATCH v2] leds: implement OpenFirmare GPIO LED driver, Richard Purdie, (Tue Jul 15, 10:43 am)
[PATCH v3] leds: implement OpenFirmare GPIO LED driver, Anton Vorontsov, (Tue Jul 15, 11:19 am)
Re: [PATCH v3] leds: implement OpenFirmare GPIO LED driver, Anton Vorontsov, (Thu Jul 17, 10:05 am)
Re: [PATCH v3] leds: implement OpenFirmare GPIO LED driver, Anton Vorontsov, (Thu Jul 17, 10:13 am)
Re: [PATCH v3] leds: implement OpenFirmare GPIO LED driver, Anton Vorontsov, (Thu Jul 17, 11:20 am)
Re: [PATCH v3] leds: implement OpenFirmare GPIO LED driver, Anton Vorontsov, (Thu Jul 17, 7:42 pm)
Re: [PATCH v3] leds: implement OpenFirmare GPIO LED driver, Anton Vorontsov, (Fri Jul 18, 6:05 am)
[PATCH 1/2] leds: make the default trigger name const, Trent Piepho, (Fri Jul 25, 5:01 pm)
Re: [PATCH 1/2] leds: make the default trigger name const, Grant Likely, (Sat Jul 26, 10:08 pm)
Re: [PATCH 1/2] leds: make the default trigger name const, Stephen Rothwell, (Sun Jul 27, 9:11 am)
Re: [PATCH 1/2] leds: make the default trigger name const, Anton Vorontsov, (Mon Jul 28, 5:53 am)
[PATCH v2] leds: make the default trigger name const, Trent Piepho, (Sun Jul 27, 10:02 pm)
[PATCH 2/2] leds: Support OpenFirmware led bindings, Trent Piepho, (Fri Jul 25, 5:01 pm)
Re: [PATCH 2/2] leds: Support OpenFirmware led bindings, Grant Likely, (Sat Jul 26, 10:21 pm)
Re: [PATCH 2/2] leds: Support OpenFirmware led bindings, Trent Piepho, (Mon Jul 28, 4:31 am)
Re: [PATCH 2/2] leds: Support OpenFirmware led bindings, Grant Likely, (Mon Jul 28, 1:09 pm)
Re: [PATCH 2/2] leds: Support OpenFirmware led bindings, Anton Vorontsov, (Mon Jul 28, 2:02 pm)
Re: [PATCH 2/2] leds: Support OpenFirmware led bindings, Trent Piepho, (Mon Jul 28, 2:26 pm)
Re: [PATCH 2/2] leds: Support OpenFirmware led bindings, Anton Vorontsov, (Mon Jul 28, 2:51 pm)
Re: [PATCH 2/2] leds: Support OpenFirmware led bindings, Trent Piepho, (Mon Jul 28, 3:11 pm)
Re: [PATCH 2/2] leds: Support OpenFirmware led bindings, Grant Likely, (Mon Jul 28, 2:49 pm)
Re: [PATCH 2/2] leds: Support OpenFirmware led bindings, Grant Likely, (Mon Jul 28, 2:06 pm)
Re: PIXIS gpio controller and gpio flags, Trent Piepho, (Sat Jul 19, 5:08 pm)
Re: PIXIS gpio controller and gpio flags, Anton Vorontsov, (Mon Jul 21, 1:53 pm)
Re: PIXIS gpio controller and gpio flags, Trent Piepho, (Mon Jul 21, 5:12 pm)
Re: PIXIS gpio controller and gpio flags, Anton Vorontsov, (Wed Jul 23, 10:56 am)
Re: PIXIS gpio controller and gpio flags, Trent Piepho, (Wed Jul 23, 7:42 pm)
[RFC PATCH] of_gpio: implement of_get_gpio_flags(), Anton Vorontsov, (Fri Jul 25, 12:48 pm)
Re: [RFC PATCH] of_gpio: implement of_get_gpio_flags(), Trent Piepho, (Sat Jul 26, 4:26 am)
Re: [PATCH v3] leds: implement OpenFirmare GPIO LED driver, Anton Vorontsov, (Thu Jul 17, 9:55 am)
Re: [PATCH v3] leds: implement OpenFirmare GPIO LED driver, Trent Piepho, (Thu Jul 17, 4:01 pm)