diff options
author | Richard Purdie <richard@ted.(none)> | 2009-04-28 17:13:57 +0100 |
---|---|---|
committer | Richard Purdie <richard@ted.(none)> | 2009-04-28 17:13:57 +0100 |
commit | 6a6f5cc8206f35dba044f59ae59ed878c2f8fb94 (patch) | |
tree | d325b4fe4696551589573a1b43c19e82cc0cd0d1 /meta/packages/linux/linux-omap-2.6.29/0124-leds-gpio-broken-with-current-git.patch | |
parent | a8e1e028f85b4d6f37238b9cbb0bab19b5939b29 (diff) | |
parent | 0adc74b06210f1be01145a5977a36b83aca0aa68 (diff) | |
download | openembedded-core-6a6f5cc8206f35dba044f59ae59ed878c2f8fb94.tar.gz openembedded-core-6a6f5cc8206f35dba044f59ae59ed878c2f8fb94.tar.bz2 openembedded-core-6a6f5cc8206f35dba044f59ae59ed878c2f8fb94.tar.xz openembedded-core-6a6f5cc8206f35dba044f59ae59ed878c2f8fb94.zip |
Merge branch 'marcin/trunk' of git://git.pokylinux.org/poky-contrib
Diffstat (limited to 'meta/packages/linux/linux-omap-2.6.29/0124-leds-gpio-broken-with-current-git.patch')
-rw-r--r-- | meta/packages/linux/linux-omap-2.6.29/0124-leds-gpio-broken-with-current-git.patch | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/meta/packages/linux/linux-omap-2.6.29/0124-leds-gpio-broken-with-current-git.patch b/meta/packages/linux/linux-omap-2.6.29/0124-leds-gpio-broken-with-current-git.patch new file mode 100644 index 000000000..dc6e190e8 --- /dev/null +++ b/meta/packages/linux/linux-omap-2.6.29/0124-leds-gpio-broken-with-current-git.patch @@ -0,0 +1,79 @@ +From c810e850d830330cf04225a4cff8e981e153f269 Mon Sep 17 00:00:00 2001 +From: David Brownell <david-b@pacbell.net> +Date: Mon, 23 Feb 2009 14:08:14 -0800 +Subject: [PATCH 124/133] leds-gpio broken with current git? +MIME-Version: 1.0 +Content-Type: text/plain; charset=utf-8 +Content-Transfer-Encoding: 8bit + +On Monday 23 February 2009, David Brownell wrote: +> +> > Perhaps something broke with Tony's RC1 merge? +> > The LEDs are broken for me as well. +> +> Still works for me. Â Did you maybe not enable the twl4030 +> GPIO support in Kconfig? + +Oh, and if you did *not*, please give this patch a try. +I've been meaning to test it. + +- Dave + +============== +Sometimes it's awkward to make sure that the array in the +platform_data handed to the leds-gpio driver has only valid +data ... some leds may not be always available, and coping +with that currently requires patching or rebuilding the array. + +This patch fixes that by making it be OK to pass an invalid +GPIO (such as "-EINVAL") ... such table entries are skipped. +--- + drivers/leds/leds-gpio.c | 12 +++++++++++- + 1 files changed, 11 insertions(+), 1 deletions(-) + +diff --git a/drivers/leds/leds-gpio.c b/drivers/leds/leds-gpio.c +index b13bd29..83737e6 100644 +--- a/drivers/leds/leds-gpio.c ++++ b/drivers/leds/leds-gpio.c +@@ -90,13 +90,19 @@ static int gpio_led_probe(struct platform_device *pdev) + cur_led = &pdata->leds[i]; + led_dat = &leds_data[i]; + ++ /* skip leds that aren't available */ ++ led_dat->gpio = cur_led->gpio; ++ if (!gpio_is_valid(led_dat->gpio)) { ++ dev_dbg(&pdev->dev, "skipping %s\n", cur_led->name); ++ continue; ++ } ++ + ret = gpio_request(cur_led->gpio, cur_led->name); + if (ret < 0) + goto err; + + led_dat->cdev.name = cur_led->name; + led_dat->cdev.default_trigger = cur_led->default_trigger; +- led_dat->gpio = cur_led->gpio; + led_dat->can_sleep = gpio_cansleep(cur_led->gpio); + led_dat->active_low = cur_led->active_low; + if (pdata->gpio_blink_set) { +@@ -124,6 +130,8 @@ static int gpio_led_probe(struct platform_device *pdev) + err: + if (i > 0) { + for (i = i - 1; i >= 0; i--) { ++ if (!gpio_is_valid(leds_data[i].gpio)) ++ continue; + led_classdev_unregister(&leds_data[i].cdev); + cancel_work_sync(&leds_data[i].work); + gpio_free(leds_data[i].gpio); +@@ -144,6 +152,8 @@ static int __devexit gpio_led_remove(struct platform_device *pdev) + leds_data = platform_get_drvdata(pdev); + + for (i = 0; i < pdata->num_leds; i++) { ++ if (!gpio_is_valid(leds_data[i].gpio)) ++ continue; + led_classdev_unregister(&leds_data[i].cdev); + cancel_work_sync(&leds_data[i].work); + gpio_free(leds_data[i].gpio); +-- +1.6.0.4.790.gaa14a + |