All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chris Boot <bootc@bootc.net>
To: Chris Boot <bootc@bootc.net>
Cc: kernel list <linux-kernel@vger.kernel.org>,
	Andrew Morton <akpm@osdl.org>
Subject: Re: [RFC][PATCH] LED Class support for Soekris net48xx
Date: Sun, 09 Jul 2006 11:21:24 +0100	[thread overview]
Message-ID: <44B0D8A4.5070108@bootc.net> (raw)
In-Reply-To: <44AF7B00.9060108@bootc.net>

Chris Boot wrote:
> Hi all,
> 
> After many years using Linux and hanging about on LKML without having 
> done much actual kernel hacking, I've decided to have a go! The module 
> below adds LED Class device support for the Soekris net48xx Error LED. 
> Tested only on a net4801, but should work on a net4826 as well. I'd love 
> to find a way of detecting a Soekris net48xx device but there is no DMI 
> or any Soekris-specific PCI devices.
> 
> The patch is attached because Thunderbird kills tabs.
> 
> 
> ------------------------------------------------------------------------
> 

And here's the really belated sign-off!

Signed-off-by: Chris Boot <bootc@bootc.net>

> diff --git a/MAINTAINERS b/MAINTAINERS
> index 196a31c..c55f690 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -2666,6 +2666,11 @@ M:	shemminger@osdl.org
>  L:	netdev@vger.kernel.org
>  S:	Maintained
>  
> +SOEKRIS NET48XX LED SUPPORT
> +P:	Chris Boot
> +M:	bootc@bootc.net
> +S:	Maintained
> +
>  SPARC (sparc32):
>  P:	William L. Irwin
>  M:	wli@holomorphy.com
> diff --git a/drivers/leds/Kconfig b/drivers/leds/Kconfig
> index 9650998..9c39b98 100644
> --- a/drivers/leds/Kconfig
> +++ b/drivers/leds/Kconfig
> @@ -69,6 +69,13 @@ config LEDS_AMS_DELTA
>  	help
>  	  This option enables support for the LEDs on Amstrad Delta (E3).
>  
> +config LEDS_NET48XX
> +	tristate "LED Support for Soekris net48xx series Error LED"
> +	depends on LEDS_CLASS && SCx200_GPIO
> +	help
> +	  This option enables support for the Soekris net4801 and net4826 error
> +	  LED.
> +
>  comment "LED Triggers"
>  
>  config LEDS_TRIGGERS
> diff --git a/drivers/leds/Makefile b/drivers/leds/Makefile
> index 88d3b6e..6aa2aed 100644
> --- a/drivers/leds/Makefile
> +++ b/drivers/leds/Makefile
> @@ -12,6 +12,7 @@ obj-$(CONFIG_LEDS_IXP4XX)		+= leds-ixp4x
>  obj-$(CONFIG_LEDS_TOSA)			+= leds-tosa.o
>  obj-$(CONFIG_LEDS_S3C24XX)		+= leds-s3c24xx.o
>  obj-$(CONFIG_LEDS_AMS_DELTA)		+= leds-ams-delta.o
> +obj-$(CONFIG_LEDS_NET48XX)		+= leds-net48xx.o
>  
>  # LED Triggers
>  obj-$(CONFIG_LEDS_TRIGGER_TIMER)	+= ledtrig-timer.o
> diff --git a/drivers/leds/leds-net48xx.c b/drivers/leds/leds-net48xx.c
> new file mode 100644
> index 0000000..157b561
> --- /dev/null
> +++ b/drivers/leds/leds-net48xx.c
> @@ -0,0 +1,116 @@
> +/*
> + * LEDs driver for Soekris net48xx
> + *
> + * Copyright (C) 2006 Chris Boot <bootc@bootc.net>
> + *
> + * Based on leds-ams-delta.c
> + *
> + * 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 <linux/kernel.h>
> +#include <linux/init.h>
> +#include <linux/platform_device.h>
> +#include <linux/leds.h>
> +#include <linux/err.h>
> +#include <asm/io.h>
> +#include <linux/scx200_gpio.h>
> +
> +#define NET48XX_ERROR_LED_GPIO	20
> +
> +static struct platform_device *pdev;
> +
> +static void net48xx_error_led_set(struct led_classdev *led_cdev,
> +		enum led_brightness value)
> +{
> +	if (value)
> +		scx200_gpio_set_high(NET48XX_ERROR_LED_GPIO);
> +	else
> +		scx200_gpio_set_low(NET48XX_ERROR_LED_GPIO);
> +}
> +
> +static struct led_classdev net48xx_error_led = {
> +	.name		= "net48xx:error",
> +	.brightness_set	= net48xx_error_led_set,
> +};
> +
> +#ifdef CONFIG_PM
> +static int net48xx_led_suspend(struct platform_device *dev,
> +		pm_message_t state)
> +{
> +	return led_classdev_suspend(&net48xx_error_led);
> +}
> +
> +static int net48xx_led_resume(struct platform_device *dev)
> +{
> +	return led_classdev_resume(&net48xx_error_led);
> +}
> +#else
> +#define net48xx_led_suspend NULL
> +#define net48xx_led_resume NULL
> +#endif
> +
> +static int net48xx_led_probe(struct platform_device *pdev)
> +{
> +	if (!scx200_gpio_present())
> +		return ENODEV;
> +	
> +	return led_classdev_register(&pdev->dev,
> +		&net48xx_error_led);
> +}
> +
> +static int net48xx_led_remove(struct platform_device *pdev)
> +{
> +	led_classdev_unregister(&net48xx_error_led);
> +	return 0;
> +}
> +
> +static struct platform_driver net48xx_led_driver = {
> +	.probe		= net48xx_led_probe,
> +	.remove		= net48xx_led_remove,
> +	.suspend	= net48xx_led_suspend,
> +	.resume		= net48xx_led_resume,
> +	.driver		= {
> +		.name = "net48xx-led",
> +	},
> +};
> +
> +static int __init net48xx_led_init(void)
> +{
> +	int ret;
> +	
> +	if (!scx200_gpio_present()) {
> +		ret = ENODEV;
> +		goto out;
> +	}
> +	
> +	ret = platform_driver_register(&net48xx_led_driver);
> +	if (ret < 0)
> +		goto out;
> +	
> +	pdev = platform_device_register_simple("net48xx-led", -1, NULL, 0);
> +	if (IS_ERR(pdev)) {
> +		ret = PTR_ERR(pdev);
> +		platform_driver_unregister(&net48xx_led_driver);
> +		goto out;
> +	}
> +	
> +out:
> +	return ret;
> +}
> +
> +static void __exit net48xx_led_exit(void)
> +{
> +	platform_device_unregister(pdev);
> +	platform_driver_unregister(&net48xx_led_driver);
> +}
> +
> +module_init(net48xx_led_init);
> +module_exit(net48xx_led_exit);
> +
> +MODULE_AUTHOR("Chris Boot <bootc@bootc.net>");
> +MODULE_DESCRIPTION("Soekris net48xx LED driver");
> +MODULE_LICENSE("GPL");
> +


-- 
Chris Boot
bootc@bootc.net
http://www.bootc.net/

  parent reply	other threads:[~2006-07-09 10:21 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-07-08  9:29 [RFC][PATCH] LED Class support for Soekris net48xx Chris Boot
2006-07-08 15:10 ` [Soekris] " Jim Cromie
2006-07-08 15:48   ` Chris Boot
2006-07-09 10:21 ` Chris Boot [this message]
2006-07-23  3:21 ` Eric Lammerts
2006-07-23 13:46   ` Chris Boot
2006-07-26  1:34     ` Eric Lammerts

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=44B0D8A4.5070108@bootc.net \
    --to=bootc@bootc.net \
    --cc=akpm@osdl.org \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.