Merge tag 'iwlwifi-next-for-john-2014-10-29' of git://git.kernel.org/pub/scm/linux...
[firefly-linux-kernel-4.4.55.git] / arch / arm / mach-footbridge / ebsa285.c
index 1a7235fb52acb3cb8ae784dbeeda4fb3c940594a..aee8300f34906d584ba6e38df4ba7a4d54264a19 100644 (file)
@@ -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>
 
 /* 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;
@@ -104,6 +115,7 @@ MACHINE_START(EBSA285, "EBSA285")
        .video_start    = 0x000a0000,
        .video_end      = 0x000bffff,
        .map_io         = footbridge_map_io,
+       .init_early     = footbridge_sched_clock,
        .init_irq       = footbridge_init_irq,
        .init_time      = footbridge_timer_init,
        .restart        = footbridge_restart,