X-Git-Url: http://git.rohieb.name/openwrt.git/blobdiff_plain/67251bb1a5eb25906240b3646561b488b3c22138..374bb82f67f49829cb443fe95a11d88c83675be4:/target/linux/lantiq/patches/104-board_xway.patch diff --git a/target/linux/lantiq/patches/104-board_xway.patch b/target/linux/lantiq/patches/104-board_xway.patch index e70ff8007..297fbd346 100644 --- a/target/linux/lantiq/patches/104-board_xway.patch +++ b/target/linux/lantiq/patches/104-board_xway.patch @@ -82,7 +82,7 @@ + .set = lq_ebu_set, + .base = 32, + .ngpio = 16, -+ .can_sleep = 1, ++ .can_sleep = 0, + .owner = THIS_MODULE, +}; + @@ -220,7 +220,7 @@ + .set = lq_stp_set, + .base = 48, + .ngpio = 24, -+ .can_sleep = 1, ++ .can_sleep = 0, + .owner = THIS_MODULE, +}; + @@ -615,7 +615,7 @@ +} --- /dev/null +++ b/arch/mips/lantiq/xway/devices.c -@@ -0,0 +1,278 @@ +@@ -0,0 +1,336 @@ +/* + * 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 @@ -638,6 +638,7 @@ +#include +#include +#include ++#include +#include + +#include @@ -668,6 +669,26 @@ + platform_device_register(&lq_gpio_leds); +} + ++/* gpio buttons */ ++static struct gpio_buttons_platform_data lq_gpio_buttons_platform_data; ++ ++static struct platform_device lq_gpio_buttons_platform_device = ++{ ++ .name = "gpio-buttons", ++ .id = 0, ++ .dev = { ++ .platform_data = (void *) &lq_gpio_buttons_platform_data, ++ }, ++}; ++ ++void __init ++lq_register_gpio_buttons(struct gpio_button *buttons, int cnt) ++{ ++ lq_gpio_buttons_platform_data.buttons = buttons; ++ lq_gpio_buttons_platform_data.nbuttons = cnt; ++ platform_device_register(&lq_gpio_buttons_platform_device); ++} ++ +/* serial to parallel conversion */ +static struct resource lq_stp_resource = +{ @@ -766,10 +787,18 @@ + .flags = IORESOURCE_MEM, +}; + ++static struct platform_device lq_ebu = ++{ ++ .name = "lq_ebu", ++ .resource = &lq_ebu_resource, ++ .num_resources = 1, ++}; ++ +void __init +lq_register_gpio_ebu(unsigned int value) +{ -+ platform_device_register_simple("lq_ebu", 0, &lq_ebu_resource, 1); ++ lq_ebu.dev.platform_data = (void*) value; ++ platform_device_register(&lq_ebu); +} + +/* ethernet */ @@ -842,13 +871,23 @@ + }, +}; + ++static unsigned int *cp1_base; ++unsigned int* ++lq_get_cp1_base(void) ++{ ++ return cp1_base; ++} ++EXPORT_SYMBOL(lq_get_cp1_base); ++ +void __init +lq_register_tapi(void) +{ +#define CP1_SIZE (1 << 20) + dma_addr_t dma; + mps_device.dev.platform_data = ++ cp1_base = + (void*)CPHYSADDR(dma_alloc_coherent(NULL, CP1_SIZE, &dma, GFP_ATOMIC)); ++ mps_device.dev.platform_data = cp1_base; + platform_device_register(&mps_device); + platform_device_register(&vmmc_device); +} @@ -894,9 +933,28 @@ + break; + } +} ++ ++void __init ++lq_register_crypto(const char *name) ++{ ++ platform_device_register_simple(name, 0, 0, 0); ++} ++ ++/* madwifi */ ++int lantiq_emulate_madwifi_eep = 0; ++EXPORT_SYMBOL(lantiq_emulate_madwifi_eep); ++ ++void __init ++lq_register_madwifi_eep(void) ++{ ++ lantiq_emulate_madwifi_eep = 1; ++} ++ ++ ++ --- /dev/null +++ b/arch/mips/lantiq/xway/devices.h -@@ -0,0 +1,25 @@ +@@ -0,0 +1,28 @@ +/* + * 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 @@ -917,9 +975,12 @@ +extern void __init lq_register_gpio_leds(struct gpio_led *leds, int cnt); +extern void __init lq_register_pci(struct lq_pci_data *data); +extern void __init lq_register_nor(struct physmap_flash_data *data); ++extern void __init lq_register_tapi(void); ++extern void __init lq_register_madwifi_eep(void); +extern void __init lq_register_wdt(void); +extern void __init lq_register_ethernet(struct lq_eth_data *eth); +extern void __init lq_register_asc(int port); ++extern void __init lq_register_gpio_buttons(struct gpio_button *buttons, int cnt); + +#endif --- /dev/null @@ -1820,13 +1881,13 @@ + struct timer_dev_timer timer[MAX_NUM_OF_32BIT_TIMER_BLOCKS * 2]; +}; + -+static int gptu_ioctl(struct inode *, struct file *, unsigned int, unsigned long); ++static long gptu_ioctl(struct file *, unsigned int, unsigned long); +static int gptu_open(struct inode *, struct file *); +static int gptu_release(struct inode *, struct file *); + +static struct file_operations gptu_fops = { + .owner = THIS_MODULE, -+ .ioctl = gptu_ioctl, ++ .unlocked_ioctl = gptu_ioctl, + .open = gptu_open, + .release = gptu_release +}; @@ -2340,7 +2401,7 @@ +} +EXPORT_SYMBOL(lq_set_counter); + -+static int gptu_ioctl(struct inode *inode, struct file *file, unsigned int cmd, ++static long gptu_ioctl(struct file *file, unsigned int cmd, + unsigned long arg) +{ + int ret;