[adm5120] make use DMA_BIT_MASK
[openwrt.git] / target / linux / adm5120 / files / arch / mips / adm5120 / platform.c
index 175e1a5..d61e7c6 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>
@@ -61,16 +51,30 @@ unsigned char adm5120_eth_vlans[6] = {
        0x41, 0x42, 0x44, 0x48, 0x50, 0x60
 };
 EXPORT_SYMBOL_GPL(adm5120_eth_vlans);
+#endif
 
-#else
 /* Built-in ethernet switch */
+struct resource adm5120_switch_resources[] = {
+       [0] = {
+               .start  = ADM5120_SWITCH_BASE,
+               .end    = ADM5120_SWITCH_BASE+ADM5120_SWITCH_SIZE-1,
+               .flags  = IORESOURCE_MEM,
+       },
+       [1] = {
+               .start  = ADM5120_IRQ_SWITCH,
+               .end    = ADM5120_IRQ_SWITCH,
+               .flags  = IORESOURCE_IRQ,
+       },
+};
+
 struct adm5120_switch_platform_data adm5120_switch_data;
 struct platform_device adm5120_switch_device = {
        .name   = "adm5120-switch",
        .id     = -1,
+       .num_resources  = ARRAY_SIZE(adm5120_switch_resources),
+       .resource       = adm5120_switch_resources,
        .dev.platform_data = &adm5120_switch_data,
 };
-#endif
 
 /* USB Host Controller */
 struct resource adm5120_hcd_resources[] = {
@@ -86,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),
        }
 };
 
@@ -174,6 +177,45 @@ 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,
+};
+
 void adm5120_uart_set_mctrl(struct amba_device *dev, void __iomem *base,
                unsigned int mctrl)
 {
This page took 0.029732 seconds and 4 git commands to generate.