cns3xxx: add PPS support for laguna
authorImre Kaloz <kaloz@openwrt.org>
Thu, 8 Nov 2012 05:42:31 +0000 (05:42 +0000)
committerImre Kaloz <kaloz@openwrt.org>
Thu, 8 Nov 2012 05:42:31 +0000 (05:42 +0000)
Many Laguna products have on-board GPS with Pulse-per-second (PPS)
support.  This patch adds kernel support (statically) and adds
the platform data in laguna board support.

Signed-off-by: Tim Harvey <tharvey@gateworks.com>
SVN-Revision: 34115

target/linux/cns3xxx/config-3.3
target/linux/cns3xxx/files/arch/arm/mach-cns3xxx/laguna.c

index 69637478879847ce279523342bde244f4cd3aa60..4090b311036e2a064f321d54aeb8a3600e47d281 100644 (file)
@@ -131,6 +131,7 @@ CONFIG_NEED_DMA_MAP_STATE=y
 CONFIG_NET_VENDOR_CAVIUM=y
 CONFIG_NLS=y
 CONFIG_NR_CPUS=2
 CONFIG_NET_VENDOR_CAVIUM=y
 CONFIG_NLS=y
 CONFIG_NR_CPUS=2
+CONFIG_NTP_PPS=y
 CONFIG_OUTER_CACHE=y
 CONFIG_OUTER_CACHE_SYNC=y
 CONFIG_PAGEFLAGS_EXTENDED=y
 CONFIG_OUTER_CACHE=y
 CONFIG_OUTER_CACHE_SYNC=y
 CONFIG_PAGEFLAGS_EXTENDED=y
@@ -143,7 +144,13 @@ CONFIG_PHYLIB=y
 CONFIG_PL310_ERRATA_588369=y
 CONFIG_PL310_ERRATA_727915=y
 CONFIG_PL310_ERRATA_769419=y
 CONFIG_PL310_ERRATA_588369=y
 CONFIG_PL310_ERRATA_727915=y
 CONFIG_PL310_ERRATA_769419=y
+CONFIG_PPS=y
+CONFIG_PPS_CLIENT_GPIO=y
+# CONFIG_PPS_CLIENT_KTIMER is not set
+# CONFIG_PPS_CLIENT_LDISC is not set
+# CONFIG_PPS_DEBUG is not set
 # CONFIG_PREEMPT_RCU is not set
 # CONFIG_PREEMPT_RCU is not set
+# CONFIG_PTP_1588_CLOCK is not set
 CONFIG_RAID_ATTRS=y
 CONFIG_RFS_ACCEL=y
 CONFIG_RPS=y
 CONFIG_RAID_ATTRS=y
 CONFIG_RFS_ACCEL=y
 CONFIG_RPS=y
index 854318355e4a93dcc3c3c78e2e7f43b8f44f9a3a..8b611c55826beea744224b8895755f814020a036 100644 (file)
@@ -36,6 +36,7 @@
 #include <linux/spi/spi.h>
 #include <linux/spi/flash.h>
 #include <linux/if_ether.h>
 #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>
 #include <asm/setup.h>
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
@@ -580,6 +581,22 @@ static struct platform_device laguna_watchdog = {
        .resource       = laguna_watchdog_resources,
 };
 
        .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
  */
 /*
  * GPIO
  */
@@ -869,6 +886,9 @@ static int __init laguna_model_setup(void)
                    (laguna_info.config_bitmap & SPI1_LOAD))
                        platform_device_register(&laguna_spi_controller);
 
                    (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
                /*
                 * Do any model specific setup not known by the bitmap by matching
                 *  the first 6 characters of the model name