Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 43024ed6 authored by Russell King's avatar Russell King
Browse files

ARM: footbridge: cleanup LEDs code



Cleanup the LEDs code to use ioremap()/writeb() to access the register.
This allows us to move the definitions out of a header file directly
into the ebsa285 support code.

Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent 8c65da6d
Loading
Loading
Loading
Loading
+0 −5
Original line number Diff line number Diff line
@@ -143,11 +143,6 @@ static struct map_desc fb_common_io_desc[] __initdata = {
		.pfn		= __phys_to_pfn(DC21285_ARMCSR_BASE),
		.length		= ARMCSR_SIZE,
		.type		= MT_DEVICE,
	}, {
		.virtual	= XBUS_BASE,
		.pfn		= __phys_to_pfn(0x40000000),
		.length		= XBUS_SIZE,
		.type		= MT_DEVICE,
	}
};

+14 −3
Original line number Diff line number Diff line
@@ -4,6 +4,7 @@
 * EBSA285 machine fixup
 */
#include <linux/init.h>
#include <linux/io.h>
#include <linux/spinlock.h>
#include <linux/slab.h>
#include <linux/leds.h>
@@ -17,6 +18,11 @@

/* LEDs */
#if defined(CONFIG_NEW_LEDS) && defined(CONFIG_LEDS_CLASS)
#define XBUS_AMBER_L	BIT(0)
#define XBUS_GREEN_L	BIT(1)
#define XBUS_RED_L	BIT(2)
#define XBUS_TOGGLE	BIT(7)

struct ebsa285_led {
	struct led_classdev     cdev;
	u8                      mask;
@@ -36,6 +42,7 @@ static const struct {
};

static unsigned char hw_led_state;
static void __iomem *xbus;

static void ebsa285_led_set(struct led_classdev *cdev,
		enum led_brightness b)
@@ -47,7 +54,7 @@ static void ebsa285_led_set(struct led_classdev *cdev,
		hw_led_state |= led->mask;
	else
		hw_led_state &= ~led->mask;
	*XBUS_LEDS = hw_led_state;
	writeb(hw_led_state, xbus);
}

static enum led_brightness ebsa285_led_get(struct led_classdev *cdev)
@@ -65,9 +72,13 @@ static int __init ebsa285_leds_init(void)
	if (!machine_is_ebsa285())
		return -ENODEV;

	xbus = ioremap(XBUS_CS2, SZ_4K);
	if (!xbus)
		return -ENOMEM;

	/* 3 LEDS all off */
	hw_led_state = XBUS_LED_AMBER | XBUS_LED_GREEN | XBUS_LED_RED;
	*XBUS_LEDS = hw_led_state;
	hw_led_state = XBUS_AMBER_L | XBUS_GREEN_L | XBUS_RED_L;
	writeb(hw_led_state, xbus);

	for (i = 0; i < ARRAY_SIZE(ebsa285_leds); i++) {
		struct ebsa285_led *led;
+1 −5
Original line number Diff line number Diff line
@@ -51,11 +51,7 @@
#define PCIMEM_SIZE		0x01000000
#define PCIMEM_BASE		MMU_IO(0xf0000000, 0x80000000)

#define XBUS_LEDS		((volatile unsigned char *)(XBUS_BASE + 0x12000))
#define XBUS_LED_AMBER		(1 << 0)
#define XBUS_LED_GREEN		(1 << 1)
#define XBUS_LED_RED		(1 << 2)
#define XBUS_LED_TOGGLE		(1 << 8)
#define XBUS_CS2		0x40012000

#define XBUS_SWITCH		((volatile unsigned char *)(XBUS_BASE + 0x12000))
#define XBUS_SWITCH_SWITCH	((*XBUS_SWITCH) & 15)