X-Git-Url: https://git.archive.openwrt.org/?a=blobdiff_plain;f=target%2Flinux%2Fadm5120%2Ffiles%2Farch%2Fmips%2Fadm5120%2Fplatform.c;h=26de8f0c63724d22f813e3c3b82fa2c05cc648b2;hb=efd888e4be8c8b29a77a06a7e6ae1318badf9719;hp=6250ab603c670df1ddb00b4cf4fa1a96d2a65d55;hpb=06b8f376442456d4fe011c3090868864c041aed9;p=openwrt.git diff --git a/target/linux/adm5120/files/arch/mips/adm5120/platform.c b/target/linux/adm5120/files/arch/mips/adm5120/platform.c index 6250ab603c..26de8f0c63 100644 --- a/target/linux/adm5120/files/arch/mips/adm5120/platform.c +++ b/target/linux/adm5120/files/arch/mips/adm5120/platform.c @@ -3,23 +3,12 @@ * * Generic ADM5120 platform devices * - * Copyright (C) 2007 OpenWrt.org - * Copyright (C) 2007 Gabor Juhos + * Copyright (C) 2007-2008 OpenWrt.org + * Copyright (C) 2007-2008 Gabor Juhos * - * 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 #include #include +#include #include #include @@ -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) {