cns3xxx: remove the watchdog IRQ from the resources, it breaks the driver init and...
[librecmc/librecmc.git] / target / linux / cns3xxx / files / arch / arm / mach-cns3xxx / laguna.c
index 854318355e4a93dcc3c3c78e2e7f43b8f44f9a3a..cd1aa716dc5c820125aa07ee271fd17316a89a00 100644 (file)
@@ -36,6 +36,7 @@
 #include <linux/spi/spi.h>
 #include <linux/spi/flash.h>
 #include <linux/if_ether.h>
+#include <linux/pps-gpio.h>
 #include <asm/setup.h>
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
@@ -566,11 +567,6 @@ static struct resource laguna_watchdog_resources[] = {
                .end    = CNS3XXX_TC11MP_TWD_BASE + SZ_4K - 1,
                .flags  = IORESOURCE_MEM,
        },
-       [1] = {
-               .start  = IRQ_LOCALWDOG,
-               .end    = IRQ_LOCALWDOG,
-               .flags  = IORESOURCE_IRQ,
-       }
 };
 
 static struct platform_device laguna_watchdog = {
@@ -580,6 +576,22 @@ static struct platform_device laguna_watchdog = {
        .resource       = laguna_watchdog_resources,
 };
 
+/*
+ * GPS PPS
+ */
+static struct pps_gpio_platform_data laguna_pps_data = {
+       .gpio_pin = 0,
+       .gpio_label = "GPS_PPS",
+       .assert_falling_edge = 0,
+       .capture_clear = 0,
+};
+
+static struct platform_device laguna_pps_device = {
+       .name = "pps-gpio",
+       .id = -1,
+       .dev.platform_data = &laguna_pps_data,
+};
+
 /*
  * GPIO
  */
@@ -693,8 +705,6 @@ static struct gpio laguna_gpio_gw2380[] = {
  */
 static void __init laguna_init(void)
 {
-       cns3xxx_l2x0_init();
-
        platform_device_register(&laguna_watchdog);
 
        platform_device_register(&laguna_i2c_controller);
@@ -764,6 +774,9 @@ static int __init laguna_model_setup(void)
        u32 __iomem *mem;
        u32 reg;
 
+       if (!machine_is_gw2388())
+               return 0;
+
        printk("Running on Gateworks Laguna %s\n", laguna_info.model);
        cns3xxx_gpio_init( 0, 32, CNS3XXX_GPIOA_BASE_VIRT, IRQ_CNS3XXX_GPIOA,
                NR_IRQS_CNS3XXX);
@@ -869,6 +882,9 @@ static int __init laguna_model_setup(void)
                    (laguna_info.config_bitmap & SPI1_LOAD))
                        platform_device_register(&laguna_spi_controller);
 
+               if (laguna_info.config2_bitmap & GPS_LOAD)
+                       platform_device_register(&laguna_pps_device);
+
                /*
                 * Do any model specific setup not known by the bitmap by matching
                 *  the first 6 characters of the model name