All of lore.kernel.org
 help / color / mirror / Atom feed
From: bryan.wu@canonical.com (Bryan Wu)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 10/17] mach-ebsa110: retire custom LED code
Date: Wed,  3 Aug 2011 17:34:42 +0800	[thread overview]
Message-ID: <1312364089-32380-11-git-send-email-bryan.wu@canonical.com> (raw)
In-Reply-To: <1312364089-32380-1-git-send-email-bryan.wu@canonical.com>

Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
---
 arch/arm/mach-ebsa110/Makefile |    4 +-
 arch/arm/mach-ebsa110/leds.c   |   80 ++++++++++++++++++++++++----------------
 2 files changed, 49 insertions(+), 35 deletions(-)

diff --git a/arch/arm/mach-ebsa110/Makefile b/arch/arm/mach-ebsa110/Makefile
index 6520ac8..935e4af 100644
--- a/arch/arm/mach-ebsa110/Makefile
+++ b/arch/arm/mach-ebsa110/Makefile
@@ -4,9 +4,7 @@
 
 # Object file lists.
 
-obj-y			:= core.o io.o
+obj-y			:= core.o io.o leds.o
 obj-m			:=
 obj-n			:=
 obj-			:=
-
-obj-$(CONFIG_LEDS)	+= leds.o
diff --git a/arch/arm/mach-ebsa110/leds.c b/arch/arm/mach-ebsa110/leds.c
index 6a6ea57..55fb96a 100644
--- a/arch/arm/mach-ebsa110/leds.c
+++ b/arch/arm/mach-ebsa110/leds.c
@@ -1,51 +1,67 @@
 /*
- *  linux/arch/arm/mach-ebsa110/leds.c
+ * Driver for the LED found on the EBSA110 machine
+ * Based on Versatile and RealView machine LED code
  *
- *  Copyright (C) 1998 Russell King
- *
- * 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.
- *
- *  EBSA-110 LED control routines.  We use the led as follows:
- *
- *   - Red - toggles state every 50 timer interrupts
+ * License terms: GNU General Public License (GPL) version 2
+ * Author: Bryan Wu <bryan.wu@canonical.com>
  */
-#include <linux/module.h>
-#include <linux/spinlock.h>
+#include <linux/kernel.h>
 #include <linux/init.h>
+#include <linux/io.h>
+#include <linux/slab.h>
+#include <linux/leds.h>
 
 #include <mach/hardware.h>
-#include <asm/leds.h>
-#include <asm/system.h>
-#include <asm/mach-types.h>
-
-static spinlock_t leds_lock;
 
-static void ebsa110_leds_event(led_event_t ledevt)
+static void ebsa110_led_set(struct led_classdev *cdev,
+			      enum led_brightness b)
 {
-	unsigned long flags;
+	u8 reg = __raw_readb(SOFT_BASE);
 
-	spin_lock_irqsave(&leds_lock, flags);
+	if (b != LED_OFF)
+		reg |= 0x80;
+	else
+		reg &= ~0x80;
 
-	switch(ledevt) {
-	case led_timer:
-		*(volatile unsigned char *)SOFT_BASE ^= 128;
-		break;
+	__raw_writeb(reg, SOFT_BASE);
+}
 
-	default:
-		break;
-	}
+static enum led_brightness ebsa110_led_get(struct led_classdev *cdev)
+{
+	u8 reg = __raw_readb(SOFT_BASE);
 
-	spin_unlock_irqrestore(&leds_lock, flags);
+	return (reg & 0x80) ? LED_FULL : LED_OFF;
 }
 
-static int __init leds_init(void)
+static int __init ebsa110_leds_init(void)
 {
-	if (machine_is_ebsa110())
-		leds_event = ebsa110_leds_event;
+
+	struct led_classdev *cdev;
+	int ret;
+
+	if (!machine_is_ebsa110())
+		return -ENODEV;
+
+	cdev = kzalloc(sizeof(*cdev), GFP_KERNEL);
+	if (!cdev)
+		return -ENOMEM;
+
+	cdev->name = "ebsa110:0";
+	cdev->brightness_set = ebsa110_led_set;
+	cdev->brightness_get = ebsa110_led_get;
+	cdev->default_trigger = "heartbeat";
+
+	ret = led_classdev_register(NULL, cdev);
+	if (ret	< 0) {
+		kfree(cdev);
+		return ret;
+	}
 
 	return 0;
 }
 
-__initcall(leds_init);
+/*
+ * Since we may have triggers on any subsystem, defer registration
+ * until after subsystem_init.
+ */
+fs_initcall(ebsa110_leds_init);
-- 
1.7.5

  parent reply	other threads:[~2011-08-03  9:34 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-08-03  9:34 [PATCH v2 00/17] Introduce a led trigger for CPU activity and consolidate LED driver in ARM Bryan Wu
2011-08-03  9:34 ` [PATCH 01/17] leds: create a trigger for CPU activity Bryan Wu
2011-08-03 10:23   ` Michał Mirosław
2011-08-04  9:18     ` Bryan Wu
2011-08-03 10:28   ` Jamie Iles
2011-08-03 15:22     ` Linus Walleij
2011-08-03 15:30       ` Jamie Iles
2011-08-03 16:02         ` Jochen Friedrich
2011-08-03 16:12         ` Linus Walleij
2011-08-05  9:48           ` Bryan Wu
2011-08-03  9:34 ` [PATCH 02/17] arm: at91: convert old leds drivers to gpio_led and led_trigger drivers Bryan Wu
2011-08-03  9:34 ` [PATCH 03/17] mach-realview and mach-versatile: retire custom LED code Bryan Wu
2011-08-03 11:59   ` Russell King - ARM Linux
2011-08-17 11:06     ` Bryan Wu
2011-08-03  9:34 ` [PATCH 04/17] mach-ks8695: remove leds driver, since nobody use it Bryan Wu
2011-08-03  9:34 ` [PATCH 05/17] mach-shark: retire custom LED code Bryan Wu
2011-08-03  9:34 ` [PATCH 06/17] mach-orion5x: convert custom LED code to gpio_led and LED CPU trigger Bryan Wu
2011-08-03  9:34 ` [PATCH 07/17] mach-integrator: introduce cm_read function helper to read CM_CTRL register Bryan Wu
2011-08-03 11:29   ` Sergei Shtylyov
2011-08-04  8:54     ` Bryan Wu
2011-08-03 11:30   ` Sergei Shtylyov
2011-08-03  9:34 ` [PATCH 08/17] mach-integrator: retire custom LED code Bryan Wu
2011-08-03  9:34 ` [PATCH 09/17] mach-clps711x: retire custom LED code of P720T machine Bryan Wu
2011-08-03  9:34 ` Bryan Wu [this message]
2011-08-03  9:34 ` [PATCH 11/17] mach-footbridge: retire custom LED code Bryan Wu
2011-08-03  9:34 ` [PATCH 12/17] mach-pxa: " Bryan Wu
2011-08-03  9:34 ` [PATCH 13/17] plat-samsung: remove including old leds event API header file Bryan Wu
2011-08-03  9:34 ` [PATCH 14/17] mach-pnx4008: " Bryan Wu
2011-08-03  9:34 ` [PATCH 15/17] mach-omap1: retire custom LED code Bryan Wu
2011-08-03  9:34 ` [PATCH 16/17] mach-sa1100: " Bryan Wu
2011-08-03  9:34 ` [PATCH 17/17] ARM: use new LEDS CPU trigger stub to replace old one Bryan Wu
  -- strict thread matches above, loose matches on Subject: below --
2011-07-06 12:34 [PATCH 00/17] Introduce a led trigger for CPU activity Bryan Wu
2011-07-06 12:34 ` [PATCH 10/17] mach-ebsa110: retire custom LED code Bryan Wu
2011-07-10  9:36   ` Russell King - ARM Linux

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=1312364089-32380-11-git-send-email-bryan.wu@canonical.com \
    --to=bryan.wu@canonical.com \
    --cc=linux-arm-kernel@lists.infradead.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.