|
@@ -0,0 +1,49 @@
|
|
|
+/*
|
|
|
+ * Coldfire generic GPIO support
|
|
|
+ *
|
|
|
+ * (C) Copyright 2009, Steven King <sfking@fdwdc.com>
|
|
|
+ *
|
|
|
+ * This program is free software; you can redistribute it and/or modify
|
|
|
+ * it under the terms of the GNU General Public License as published by
|
|
|
+ * the Free Software Foundation; version 2 of the License.
|
|
|
+ *
|
|
|
+ * This program is distributed in the hope that it will be useful,
|
|
|
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
+ * GNU General Public License for more details.
|
|
|
+*/
|
|
|
+
|
|
|
+#include <linux/kernel.h>
|
|
|
+#include <linux/init.h>
|
|
|
+
|
|
|
+#include <asm/coldfire.h>
|
|
|
+#include <asm/mcfsim.h>
|
|
|
+#include <asm/mcfgpio.h>
|
|
|
+
|
|
|
+static struct mcf_gpio_chip mcf_gpio_chips[] = {
|
|
|
+ {
|
|
|
+ .gpio_chip = {
|
|
|
+ .label = "PP",
|
|
|
+ .request = mcf_gpio_request,
|
|
|
+ .free = mcf_gpio_free,
|
|
|
+ .direction_input = mcf_gpio_direction_input,
|
|
|
+ .direction_output = mcf_gpio_direction_output,
|
|
|
+ .get = mcf_gpio_get_value,
|
|
|
+ .set = mcf_gpio_set_value,
|
|
|
+ .ngpio = 16,
|
|
|
+ },
|
|
|
+ .pddr = MCFSIM_PADDR,
|
|
|
+ .podr = MCFSIM_PADAT,
|
|
|
+ .ppdr = MCFSIM_PADAT,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+static int __init mcf_gpio_init(void)
|
|
|
+{
|
|
|
+ unsigned i = 0;
|
|
|
+ while (i < ARRAY_SIZE(mcf_gpio_chips))
|
|
|
+ (void)gpiochip_add((struct gpio_chip *)&mcf_gpio_chips[i++]);
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+core_initcall(mcf_gpio_init);
|