Revert r12510. Remove -rpath-link form TARGET_LDFLAGS as it breaks some
[openwrt.git] / target / linux / adm5120 / files / arch / mips / adm5120 / platform.c
index 6250ab6..26de8f0 100644 (file)
@@ -3,23 +3,12 @@
  *
  *  Generic ADM5120 platform devices
  *
- *  Copyright (C) 2007 OpenWrt.org
- *  Copyright (C) 2007 Gabor Juhos <juhosg at openwrt.org>
+ *  Copyright (C) 2007-2008 OpenWrt.org
+ *  Copyright (C) 2007-2008 Gabor Juhos <juhosg at openwrt.org>
  *
- *  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; either version 2
- *  of the License, or (at your option) any later version.
- *
- *  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.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the
- *  Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- *  Boston, MA  02110-1301, USA.
+ *  This program is free software; you can redistribute it and/or modify it
+ *  under the terms of the GNU General Public License version 2 as published
+ *  by the Free Software Foundation.
  *
  */
 
@@ -27,6 +16,7 @@
 #include <linux/kernel.h>
 #include <linux/list.h>
 #include <linux/device.h>
+#include <linux/dma-mapping.h>
 #include <linux/platform_device.h>
 
 #include <asm/bootinfo.h>
@@ -100,16 +90,15 @@ struct resource adm5120_hcd_resources[] = {
        },
 };
 
-static u64 adm5120_hcd_dma_mask = ~(u32)0;
-
+static u64 adm5120_hcd_dma_mask = DMA_BIT_MASK(24);
 struct platform_device adm5120_hcd_device = {
        .name           = "adm5120-hcd",
-       .id             = 0,
+       .id             = -1,
        .num_resources  = ARRAY_SIZE(adm5120_hcd_resources),
        .resource       = adm5120_hcd_resources,
        .dev = {
                .dma_mask       = &adm5120_hcd_dma_mask,
-               .coherent_dma_mask = 0xFFFFFFFF,
+               .coherent_dma_mask = DMA_BIT_MASK(24),
        }
 };
 
@@ -188,6 +177,57 @@ struct amba_device adm5120_uart1_device = {
        .periphid       = 0x0041010,
 };
 
+#define ADM5120_BUTTON_THRESHOLD       5
+#define ADM5120_BUTTON_INTERVAL                20
+
+struct gpio_button adm5120_buttons[ADM5120_NUM_BUTTONS] = {
+       {
+               .type           = EV_KEY,
+               .code           = BTN_0,
+               .threshold      = ADM5120_BUTTON_THRESHOLD,
+       }, {
+               .type           = EV_KEY,
+               .code           = BTN_1,
+               .threshold      = ADM5120_BUTTON_THRESHOLD,
+       }, {
+               .type           = EV_KEY,
+               .code           = BTN_2,
+               .threshold      = ADM5120_BUTTON_THRESHOLD,
+       }, {
+               .type           = EV_KEY,
+               .code           = BTN_3,
+               .threshold      = ADM5120_BUTTON_THRESHOLD,
+       }, {
+               .type           = EV_KEY,
+               .code           = BTN_4,
+               .threshold      = ADM5120_BUTTON_THRESHOLD,
+       }
+};
+
+struct gpio_buttons_platform_data adm5120_buttons_data = {
+       .poll_interval  = ADM5120_BUTTON_INTERVAL,
+       .nbuttons       = ARRAY_SIZE(adm5120_buttons),
+       .buttons        = adm5120_buttons,
+};
+
+struct platform_device adm5120_buttons_device = {
+       .name           = "gpio-buttons",
+       .id             = 0,
+       .dev.platform_data = &adm5120_buttons_data,
+};
+
+/* GPIO char device */
+struct resource adm5120_gpiodev_resource = {
+       .start  = 0x3fffff,
+};
+
+struct platform_device adm5120_gpiodev_device =        {
+       .name           = "GPIODEV",
+       .id             = -1,
+       .num_resources  = 1,
+       .resource       = &adm5120_gpiodev_resource,
+};
+
 void adm5120_uart_set_mctrl(struct amba_device *dev, void __iomem *base,
                unsigned int mctrl)
 {