From: John Crispin Date: Sat, 28 Jun 2008 16:56:04 +0000 (+0000) Subject: lots of ifxmips cleanups X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=185ca444e3696eed9ccb01618a99584f76709f0f;p=openwrt%2Fstaging%2Frmilecki.git lots of ifxmips cleanups SVN-Revision: 11596 --- diff --git a/target/linux/ifxmips/base-files/etc/inittab b/target/linux/ifxmips/base-files/etc/inittab new file mode 100644 index 00000000000..7989a7f60e7 --- /dev/null +++ b/target/linux/ifxmips/base-files/etc/inittab @@ -0,0 +1,4 @@ +::sysinit:/etc/init.d/rcS S boot +::shutdown:/etc/init.d/rcS K stop +ttyS0::askfirst:/bin/ash --login +ttyS1::askfirst:/bin/ash --login diff --git a/target/linux/ifxmips/config-2.6.25 b/target/linux/ifxmips/config-2.6.25 index 342fa1142ef..080ebbdd698 100644 --- a/target/linux/ifxmips/config-2.6.25 +++ b/target/linux/ifxmips/config-2.6.25 @@ -81,10 +81,7 @@ CONFIG_HW_RANDOM=y # CONFIG_IBM_NEW_EMAC_ZMII is not set # CONFIG_IDE is not set CONFIG_IFXMIPS=y -CONFIG_IFXMIPS_ASC_UART=y CONFIG_IFXMIPS_EEPROM=y -CONFIG_IFXMIPS_GPIO=y -CONFIG_IFXMIPS_LED=y CONFIG_IFXMIPS_MEI=y CONFIG_IFXMIPS_MII0=y CONFIG_IFXMIPS_SSC=y @@ -94,6 +91,7 @@ CONFIG_IRQ_CPU=y CONFIG_KALLSYMS=y # CONFIG_LEDS_ALIX is not set # CONFIG_LEDS_GPIO is not set +CONFIG_LEDS_IFXMIPS=y # CONFIG_LEMOTE_FULONG is not set CONFIG_LZO_COMPRESS=m CONFIG_LZO_DECOMPRESS=m @@ -220,6 +218,7 @@ CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y CONFIG_TRAD_SIGNALS=y CONFIG_USB=m # CONFIG_USBPCWATCHDOG is not set +# CONFIG_USB_DWC_HCD is not set # CONFIG_USB_EHCI_HCD is not set # CONFIG_USB_R8A66597_HCD is not set # CONFIG_USB_UHCI_HCD is not set diff --git a/target/linux/ifxmips/files/arch/mips/ifxmips/Kconfig b/target/linux/ifxmips/files/arch/mips/ifxmips/Kconfig index f01fcd3625e..3e68f7f9b97 100644 --- a/target/linux/ifxmips/files/arch/mips/ifxmips/Kconfig +++ b/target/linux/ifxmips/files/arch/mips/ifxmips/Kconfig @@ -2,24 +2,10 @@ menu "IFXMips built-in" -config IFXMIPS_ASC_UART - bool "IFXMips asc uart" - select SERIAL_CORE - select SERIAL_CORE_CONSOLE - default y - config MTD_IFXMIPS bool "IFXMips flash map" default y -config IFXMIPS_WDT - bool "IFXMips watchdog" - default y - -config IFXMIPS_LED - bool "IFXMips led" - default y - config IFXMIPS_SSC bool "IFXMips ssc" default y diff --git a/target/linux/ifxmips/files/arch/mips/ifxmips/board.c b/target/linux/ifxmips/files/arch/mips/ifxmips/board.c index aabcb5fce83..28f2e263c14 100644 --- a/target/linux/ifxmips/files/arch/mips/ifxmips/board.c +++ b/target/linux/ifxmips/files/arch/mips/ifxmips/board.c @@ -32,7 +32,7 @@ #include #include -#define MAX_IFXMIPS_DEVS 7 +#define MAX_IFXMIPS_DEVS 9 #define BOARD_DANUBE "Danube" #define BOARD_DANUBE_CHIPID 0x10129083 @@ -79,6 +79,24 @@ ifxmips_wdt[] = }, }; +static struct platform_device +ifxmips_asc0[] = +{ + { + .id = 0, + .name = "ifxmips_asc", + }, +}; + +static struct platform_device +ifxmips_asc1[] = +{ + { + .id = 1, + .name = "ifxmips_asc", + }, +}; + static struct physmap_flash_data ifxmips_mtd_data = { .width = 2, @@ -155,6 +173,8 @@ ifxmips_init_devices(void) ifxmips_devs[dev++] = ifxmips_mii; ifxmips_devs[dev++] = ifxmips_mtd; ifxmips_devs[dev++] = ifxmips_wdt; + //ifxmips_devs[dev++] = ifxmips_asc0; + ifxmips_devs[dev++] = ifxmips_asc1; #ifdef CONFIG_GPIO_DEVICE ifxmips_devs[dev++] = ifxmips_gpio_dev; #endif diff --git a/target/linux/ifxmips/files/arch/mips/ifxmips/cgu.c b/target/linux/ifxmips/files/arch/mips/ifxmips/cgu.c index 3dec89e7c1d..d1e2ff4fad3 100644 --- a/target/linux/ifxmips/files/arch/mips/ifxmips/cgu.c +++ b/target/linux/ifxmips/files/arch/mips/ifxmips/cgu.c @@ -413,3 +413,19 @@ cgu_get_clockout(int clkout) } return 0; } + +void cgu_setup_pci_clk(int external_clock) +{ + //set clock to 33Mhz + ifxmips_w32(ifxmips_r32(IFXMIPS_CGU_IFCCR) & ~0xf00000, IFXMIPS_CGU_IFCCR); + ifxmips_w32(ifxmips_r32(IFXMIPS_CGU_IFCCR) | 0x800000, IFXMIPS_CGU_IFCCR); + // internal or external clock + if(external_clock) + { + ifxmips_w32(ifxmips_r32(IFXMIPS_CGU_IFCCR) & ~ (1 << 16), IFXMIPS_CGU_IFCCR); + ifxmips_w32((1 << 30), IFXMIPS_CGU_PCICR); + } else { + ifxmips_w32(ifxmips_r32(IFXMIPS_CGU_IFCCR) | (1 << 16), IFXMIPS_CGU_IFCCR); + ifxmips_w32((1 << 31) | (1 << 30), IFXMIPS_CGU_PCICR); + } +} diff --git a/target/linux/ifxmips/files/arch/mips/ifxmips/prom.c b/target/linux/ifxmips/files/arch/mips/ifxmips/prom.c index 95630ae368b..4e307d0443c 100644 --- a/target/linux/ifxmips/files/arch/mips/ifxmips/prom.c +++ b/target/linux/ifxmips/files/arch/mips/ifxmips/prom.c @@ -125,8 +125,7 @@ prom_init(void) memsize -= prom_cp1_size; prom_cp1_base = (unsigned int*)(0xA0000000 + (memsize * 1024 * 1024)); - prom_printf(KERN_INFO "Using %dMB Ram and reserving %dMB for cp1\n", - memsize, prom_cp1_size); + prom_printf("Using %dMB Ram and reserving %dMB for cp1\n", memsize, prom_cp1_size); memsize *= 1024 * 1024; if(!*arcs_cmdline) diff --git a/target/linux/ifxmips/files/arch/mips/pci/pci-ifxmips.c b/target/linux/ifxmips/files/arch/mips/pci/pci-ifxmips.c index 092a80ec4c4..bd500bdec06 100644 --- a/target/linux/ifxmips/files/arch/mips/pci/pci-ifxmips.c +++ b/target/linux/ifxmips/files/arch/mips/pci/pci-ifxmips.c @@ -6,6 +6,7 @@ #include #include #include +#include #include #include @@ -17,26 +18,30 @@ extern int ifxmips_pci_read_config_dword(struct pci_bus *bus, unsigned int devfn, int where, int size, u32 *val); extern int ifxmips_pci_write_config_dword(struct pci_bus *bus, unsigned int devfn, int where, int size, u32 val); -struct pci_ops ifxmips_pci_ops = { +struct pci_ops ifxmips_pci_ops = +{ .read = ifxmips_pci_read_config_dword, .write = ifxmips_pci_write_config_dword }; -static struct resource pci_io_resource = { +static struct resource pci_io_resource = +{ .name = "io pci IO space", .start = IFXMIPS_PCI_IO_BASE, .end = IFXMIPS_PCI_IO_BASE + IFXMIPS_PCI_IO_SIZE - 1, .flags = IORESOURCE_IO }; -static struct resource pci_mem_resource = { +static struct resource pci_mem_resource = +{ .name = "ext pci memory space", .start = IFXMIPS_PCI_MEM_BASE, .end = IFXMIPS_PCI_MEM_BASE + IFXMIPS_PCI_MEM_SIZE - 1, .flags = IORESOURCE_MEM }; -static struct pci_controller ifxmips_pci_controller = { +static struct pci_controller ifxmips_pci_controller = +{ .pci_ops = &ifxmips_pci_ops, .mem_resource = &pci_mem_resource, .mem_offset = 0x00000000UL, @@ -45,12 +50,25 @@ static struct pci_controller ifxmips_pci_controller = { }; u32 ifxmips_pci_mapped_cfg; +u32 ifxmips_pci_external_clock = 0; + +static int __init +ifxmips_pci_set_external_clk(char *str) +{ + printk("cgu: setting up external pci clock\n"); + ifxmips_pci_external_clock = 1; + return 1; +} +__setup("pci_external_clk", ifxmips_pci_set_external_clk); -int pcibios_plat_dev_init(struct pci_dev *dev){ +int +pcibios_plat_dev_init(struct pci_dev *dev) +{ u8 pin; pci_read_config_byte(dev, PCI_INTERRUPT_PIN, &pin); - switch(pin) { + switch(pin) + { case 0: break; case 1: @@ -69,12 +87,13 @@ int pcibios_plat_dev_init(struct pci_dev *dev){ return 0; } -static void __init ifxmips_pci_startup (void){ +static void __init +ifxmips_pci_startup(void) +{ u32 temp_buffer; - ifxmips_w32(ifxmips_r32(IFXMIPS_CGU_IFCCR) & ~0xf00000, IFXMIPS_CGU_IFCCR); - ifxmips_w32(ifxmips_r32(IFXMIPS_CGU_IFCCR) | 0x800000, IFXMIPS_CGU_IFCCR); - ifxmips_w32(ifxmips_r32(IFXMIPS_CGU_IFCCR) | (1 << 16), IFXMIPS_CGU_IFCCR); - ifxmips_w32((1 << 31) | (1 << 30), IFXMIPS_CGU_PCICR); + + cgu_setup_pci_clk(ifxmips_pci_external_clock); + ifxmips_w32(ifxmips_r32(IFXMIPS_GPIO_P1_OUT) | (1 << 5), IFXMIPS_GPIO_P1_OUT); ifxmips_w32(ifxmips_r32(IFXMIPS_GPIO_P1_OD) | (1 << 5), IFXMIPS_GPIO_P1_OD); ifxmips_w32(ifxmips_r32(IFXMIPS_GPIO_P1_DIR) | (1 << 5), IFXMIPS_GPIO_P1_DIR); @@ -138,8 +157,10 @@ static void __init ifxmips_pci_startup (void){ ifxmips_w32(ifxmips_r32(IFXMIPS_GPIO_P1_OUT) | (1 << 5), IFXMIPS_GPIO_P1_OUT); } -int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin){ - switch (slot) { +int __init +pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin){ + switch(slot) + { case 13: /* IDSEL = AD29 --> USB Host Controller */ return (INT_NUM_IM1_IRL0 + 17); @@ -152,11 +173,13 @@ int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin){ } } -int pcibios_init(void){ +int +pcibios_init(void) +{ extern int pci_probe_only; pci_probe_only = 0; - printk ("PCI: Probing PCI hardware on host bus 0.\n"); + printk("PCI: Probing PCI hardware on host bus 0.\n"); ifxmips_pci_startup (); // IFXMIPS_PCI_REG32(PCI_CR_CLK_CTRL_REG) &= (~8); ifxmips_pci_mapped_cfg = (u32)ioremap_nocache(0x17000000, 0x800 * 16); diff --git a/target/linux/ifxmips/files/drivers/char/ifxmips_led.c b/target/linux/ifxmips/files/drivers/char/ifxmips_led.c deleted file mode 100644 index 090516c5ada..00000000000 --- a/target/linux/ifxmips/files/drivers/char/ifxmips_led.c +++ /dev/null @@ -1,192 +0,0 @@ -/* - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. - * - * Copyright (C) 2006 infineon - * Copyright (C) 2007 John Crispin - * - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define DRVNAME "ifxmips_led" - -#define IFXMIPS_LED_CLK_EDGE IFXMIPS_LED_FALLING -//#define IFXMIPS_LED_CLK_EDGE IFXMIPS_LED_RISING - -#define IFXMIPS_LED_SPEED IFXMIPS_LED_8HZ - -#define IFXMIPS_LED_GPIO_PORT 0 - -#define IFXMIPS_MAX_LED 24 - -struct ifxmips_led { - struct led_classdev cdev; - u8 bit; -}; - -void -ifxmips_led_set (unsigned int led) -{ - led &= 0xffffff; - ifxmips_w32(ifxmips_r32(IFXMIPS_LED_CPU0) | led, IFXMIPS_LED_CPU0); -} -EXPORT_SYMBOL(ifxmips_led_set); - -void -ifxmips_led_clear (unsigned int led) -{ - led = ~(led & 0xffffff); - ifxmips_w32(ifxmips_r32(IFXMIPS_LED_CPU0) & led, IFXMIPS_LED_CPU0); -} -EXPORT_SYMBOL(ifxmips_led_clear); - -void -ifxmips_led_blink_set (unsigned int led) -{ - led &= 0xffffff; - ifxmips_w32(ifxmips_r32(IFXMIPS_LED_CON0) | led, IFXMIPS_LED_CON0); -} -EXPORT_SYMBOL(ifxmips_led_blink_set); - -void -ifxmips_led_blink_clear (unsigned int led) -{ - led = ~(led & 0xffffff); - ifxmips_w32(ifxmips_r32(IFXMIPS_LED_CON0) & led, IFXMIPS_LED_CON0); -} -EXPORT_SYMBOL(ifxmips_led_blink_clear); - -void -ifxmips_ledapi_set(struct led_classdev *led_cdev, enum led_brightness value) -{ - struct ifxmips_led *led_dev = container_of(led_cdev, struct ifxmips_led, cdev); - - if(value) - ifxmips_led_set(1 << led_dev->bit); - else - ifxmips_led_clear(1 << led_dev->bit); -} - -void -ifxmips_led_setup_gpio (void) -{ - int i = 0; - - /* we need to setup pins SH,D,ST (4,5,6) */ - for (i = 4; i < 7; i++) - { - ifxmips_port_set_altsel0(IFXMIPS_LED_GPIO_PORT, i); - ifxmips_port_clear_altsel1(IFXMIPS_LED_GPIO_PORT, i); - ifxmips_port_set_dir_out(IFXMIPS_LED_GPIO_PORT, i); - ifxmips_port_set_open_drain(IFXMIPS_LED_GPIO_PORT, i); - } -} - -static int -ifxmips_led_probe(struct platform_device *dev) -{ - int i = 0; - - ifxmips_led_setup_gpio(); - - ifxmips_w32(0, IFXMIPS_LED_AR); - ifxmips_w32(0, IFXMIPS_LED_CPU0); - ifxmips_w32(0, IFXMIPS_LED_CPU1); - ifxmips_w32(LED_CON0_SWU, IFXMIPS_LED_CON0); - ifxmips_w32(0, IFXMIPS_LED_CON1); - - /* setup the clock edge that the shift register is triggered on */ - ifxmips_w32(ifxmips_r32(IFXMIPS_LED_CON0) & ~IFXMIPS_LED_EDGE_MASK, IFXMIPS_LED_CON0); - ifxmips_w32(ifxmips_r32(IFXMIPS_LED_CON0) | IFXMIPS_LED_CLK_EDGE, IFXMIPS_LED_CON0); - - /* per default leds 15-0 are set */ - ifxmips_w32(IFXMIPS_LED_GROUP1 | IFXMIPS_LED_GROUP0, IFXMIPS_LED_CON1); - - /* leds are update periodically by the FPID */ - ifxmips_w32(ifxmips_r32(IFXMIPS_LED_CON1) & ~IFXMIPS_LED_UPD_MASK, IFXMIPS_LED_CON1); - ifxmips_w32(ifxmips_r32(IFXMIPS_LED_CON1) | IFXMIPS_LED_UPD_SRC_FPI, IFXMIPS_LED_CON1); - - /* set led update speed */ - ifxmips_w32(ifxmips_r32(IFXMIPS_LED_CON1) & ~IFXMIPS_LED_MASK, IFXMIPS_LED_CON1); - ifxmips_w32(ifxmips_r32(IFXMIPS_LED_CON1) | IFXMIPS_LED_SPEED, IFXMIPS_LED_CON1); - - /* adsl 0 and 1 leds are updated by the arc */ - ifxmips_w32(ifxmips_r32(IFXMIPS_LED_CON0) | IFXMIPS_LED_ADSL_SRC, IFXMIPS_LED_CON0); - - /* per default, the leds are turned on */ - ifxmips_pmu_enable(IFXMIPS_PMU_PWDCR_LED); - - for(i = 0; i < IFXMIPS_MAX_LED; i++) - { - struct ifxmips_led *tmp = kzalloc(sizeof(struct ifxmips_led), GFP_KERNEL); - tmp->cdev.brightness_set = ifxmips_ledapi_set; - tmp->cdev.name = kmalloc(sizeof("ifxmips:led:00"), GFP_KERNEL); - sprintf((char*)tmp->cdev.name, "ifxmips:led:%02d", i); - tmp->cdev.default_trigger = NULL; - tmp->bit = i; - led_classdev_register(&dev->dev, &tmp->cdev); - } - - return 0; -} - -static int -ifxmips_led_remove(struct platform_device *pdev) -{ - return 0; -} - -static struct -platform_driver ifxmips_led_driver = { - .probe = ifxmips_led_probe, - .remove = ifxmips_led_remove, - .driver = { - .name = DRVNAME, - .owner = THIS_MODULE, - }, -}; - -int __init -ifxmips_led_init (void) -{ - int ret = platform_driver_register(&ifxmips_led_driver); - if (ret) - printk(KERN_INFO "ifxmips_led: Error registering platfom driver!"); - - return ret; -} - -void __exit -ifxmips_led_exit (void) -{ - platform_driver_unregister(&ifxmips_led_driver); -} - -module_init(ifxmips_led_init); -module_exit(ifxmips_led_exit); diff --git a/target/linux/ifxmips/files/drivers/leds/leds-ifxmips.c b/target/linux/ifxmips/files/drivers/leds/leds-ifxmips.c new file mode 100644 index 00000000000..090516c5ada --- /dev/null +++ b/target/linux/ifxmips/files/drivers/leds/leds-ifxmips.c @@ -0,0 +1,192 @@ +/* + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + * + * Copyright (C) 2006 infineon + * Copyright (C) 2007 John Crispin + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define DRVNAME "ifxmips_led" + +#define IFXMIPS_LED_CLK_EDGE IFXMIPS_LED_FALLING +//#define IFXMIPS_LED_CLK_EDGE IFXMIPS_LED_RISING + +#define IFXMIPS_LED_SPEED IFXMIPS_LED_8HZ + +#define IFXMIPS_LED_GPIO_PORT 0 + +#define IFXMIPS_MAX_LED 24 + +struct ifxmips_led { + struct led_classdev cdev; + u8 bit; +}; + +void +ifxmips_led_set (unsigned int led) +{ + led &= 0xffffff; + ifxmips_w32(ifxmips_r32(IFXMIPS_LED_CPU0) | led, IFXMIPS_LED_CPU0); +} +EXPORT_SYMBOL(ifxmips_led_set); + +void +ifxmips_led_clear (unsigned int led) +{ + led = ~(led & 0xffffff); + ifxmips_w32(ifxmips_r32(IFXMIPS_LED_CPU0) & led, IFXMIPS_LED_CPU0); +} +EXPORT_SYMBOL(ifxmips_led_clear); + +void +ifxmips_led_blink_set (unsigned int led) +{ + led &= 0xffffff; + ifxmips_w32(ifxmips_r32(IFXMIPS_LED_CON0) | led, IFXMIPS_LED_CON0); +} +EXPORT_SYMBOL(ifxmips_led_blink_set); + +void +ifxmips_led_blink_clear (unsigned int led) +{ + led = ~(led & 0xffffff); + ifxmips_w32(ifxmips_r32(IFXMIPS_LED_CON0) & led, IFXMIPS_LED_CON0); +} +EXPORT_SYMBOL(ifxmips_led_blink_clear); + +void +ifxmips_ledapi_set(struct led_classdev *led_cdev, enum led_brightness value) +{ + struct ifxmips_led *led_dev = container_of(led_cdev, struct ifxmips_led, cdev); + + if(value) + ifxmips_led_set(1 << led_dev->bit); + else + ifxmips_led_clear(1 << led_dev->bit); +} + +void +ifxmips_led_setup_gpio (void) +{ + int i = 0; + + /* we need to setup pins SH,D,ST (4,5,6) */ + for (i = 4; i < 7; i++) + { + ifxmips_port_set_altsel0(IFXMIPS_LED_GPIO_PORT, i); + ifxmips_port_clear_altsel1(IFXMIPS_LED_GPIO_PORT, i); + ifxmips_port_set_dir_out(IFXMIPS_LED_GPIO_PORT, i); + ifxmips_port_set_open_drain(IFXMIPS_LED_GPIO_PORT, i); + } +} + +static int +ifxmips_led_probe(struct platform_device *dev) +{ + int i = 0; + + ifxmips_led_setup_gpio(); + + ifxmips_w32(0, IFXMIPS_LED_AR); + ifxmips_w32(0, IFXMIPS_LED_CPU0); + ifxmips_w32(0, IFXMIPS_LED_CPU1); + ifxmips_w32(LED_CON0_SWU, IFXMIPS_LED_CON0); + ifxmips_w32(0, IFXMIPS_LED_CON1); + + /* setup the clock edge that the shift register is triggered on */ + ifxmips_w32(ifxmips_r32(IFXMIPS_LED_CON0) & ~IFXMIPS_LED_EDGE_MASK, IFXMIPS_LED_CON0); + ifxmips_w32(ifxmips_r32(IFXMIPS_LED_CON0) | IFXMIPS_LED_CLK_EDGE, IFXMIPS_LED_CON0); + + /* per default leds 15-0 are set */ + ifxmips_w32(IFXMIPS_LED_GROUP1 | IFXMIPS_LED_GROUP0, IFXMIPS_LED_CON1); + + /* leds are update periodically by the FPID */ + ifxmips_w32(ifxmips_r32(IFXMIPS_LED_CON1) & ~IFXMIPS_LED_UPD_MASK, IFXMIPS_LED_CON1); + ifxmips_w32(ifxmips_r32(IFXMIPS_LED_CON1) | IFXMIPS_LED_UPD_SRC_FPI, IFXMIPS_LED_CON1); + + /* set led update speed */ + ifxmips_w32(ifxmips_r32(IFXMIPS_LED_CON1) & ~IFXMIPS_LED_MASK, IFXMIPS_LED_CON1); + ifxmips_w32(ifxmips_r32(IFXMIPS_LED_CON1) | IFXMIPS_LED_SPEED, IFXMIPS_LED_CON1); + + /* adsl 0 and 1 leds are updated by the arc */ + ifxmips_w32(ifxmips_r32(IFXMIPS_LED_CON0) | IFXMIPS_LED_ADSL_SRC, IFXMIPS_LED_CON0); + + /* per default, the leds are turned on */ + ifxmips_pmu_enable(IFXMIPS_PMU_PWDCR_LED); + + for(i = 0; i < IFXMIPS_MAX_LED; i++) + { + struct ifxmips_led *tmp = kzalloc(sizeof(struct ifxmips_led), GFP_KERNEL); + tmp->cdev.brightness_set = ifxmips_ledapi_set; + tmp->cdev.name = kmalloc(sizeof("ifxmips:led:00"), GFP_KERNEL); + sprintf((char*)tmp->cdev.name, "ifxmips:led:%02d", i); + tmp->cdev.default_trigger = NULL; + tmp->bit = i; + led_classdev_register(&dev->dev, &tmp->cdev); + } + + return 0; +} + +static int +ifxmips_led_remove(struct platform_device *pdev) +{ + return 0; +} + +static struct +platform_driver ifxmips_led_driver = { + .probe = ifxmips_led_probe, + .remove = ifxmips_led_remove, + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, + }, +}; + +int __init +ifxmips_led_init (void) +{ + int ret = platform_driver_register(&ifxmips_led_driver); + if (ret) + printk(KERN_INFO "ifxmips_led: Error registering platfom driver!"); + + return ret; +} + +void __exit +ifxmips_led_exit (void) +{ + platform_driver_unregister(&ifxmips_led_driver); +} + +module_init(ifxmips_led_init); +module_exit(ifxmips_led_exit); diff --git a/target/linux/ifxmips/files/drivers/serial/ifxmips_asc.c b/target/linux/ifxmips/files/drivers/serial/ifxmips_asc.c index 63a4c2af9e6..17d933c20b1 100644 --- a/target/linux/ifxmips/files/drivers/serial/ifxmips_asc.c +++ b/target/linux/ifxmips/files/drivers/serial/ifxmips_asc.c @@ -41,7 +41,7 @@ #include #include #include - +#include #include #include #include @@ -60,7 +60,6 @@ static void ifxmipsasc_tx_chars(struct uart_port *port); extern void prom_printf(const char * fmt, ...); static struct uart_port ifxmipsasc_port[2]; static struct uart_driver ifxmipsasc_reg; -static unsigned int uartclk = 0; extern unsigned int ifxmips_get_fpi_hz(void); static void @@ -155,7 +154,6 @@ static void ifxmipsasc_tx_chars(struct uart_port *port) { struct circ_buf *xmit = &port->info->xmit; - if(uart_tx_stopped(port)) { ifxmipsasc_stop_tx(port); @@ -245,10 +243,7 @@ ifxmipsasc_startup(struct uart_port *port) unsigned long flags; int retval; - if(uartclk == 0) - uartclk = ifxmips_get_fpi_hz(); - - port->uartclk = uartclk; + port->uartclk = ifxmips_get_fpi_hz(); ifxmips_w32(ifxmips_r32(port->membase + IFXMIPS_ASC_CLC) & ~IFXMIPS_ASC_CLC_DISS, port->membase + IFXMIPS_ASC_CLC); ifxmips_w32(((ifxmips_r32(port->membase + IFXMIPS_ASC_CLC) & ~ASCCLC_RMCMASK)) | (1 << ASCCLC_RMCOFFSET), port->membase + IFXMIPS_ASC_CLC); @@ -260,17 +255,17 @@ ifxmipsasc_startup(struct uart_port *port) local_irq_save(flags); - retval = request_irq(port->irq, ifxmipsasc_rx_int, IRQF_DISABLED, "asc_rx", port); + retval = request_irq(port->irq, ifxmipsasc_tx_int, IRQF_DISABLED, "asc_tx", port); if(retval) { - printk("failed to request ifxmipsasc_rx_int\n"); + printk("failed to request ifxmipsasc_tx_int\n"); return retval; } - retval = request_irq(port->irq + 2, ifxmipsasc_tx_int, IRQF_DISABLED, "asc_tx", port); + retval = request_irq(port->irq + 2, ifxmipsasc_rx_int, IRQF_DISABLED, "asc_rx", port); if(retval) { - printk("failed to request ifxmipsasc_tx_int\n"); + printk("failed to request ifxmipsasc_rx_int\n"); goto err1; } @@ -402,7 +397,15 @@ static void ifxmipsasc_set_termios(struct uart_port *port, struct ktermios *new, static const char* ifxmipsasc_type(struct uart_port *port) { - return port->type == PORT_IFXMIPSASC ? "IFXMIPSASC" : NULL; + if(port->type == PORT_IFXMIPSASC) + { + if(port->membase == IFXMIPS_ASC_BASE_ADDR) + return "asc0"; + else + return "asc1"; + } else { + return NULL; + } } static void @@ -465,54 +468,53 @@ static struct uart_port ifxmipsasc_port[2] = membase: (void *)IFXMIPS_ASC_BASE_ADDR, mapbase: IFXMIPS_ASC_BASE_ADDR, iotype: SERIAL_IO_MEM, - irq: IFXMIPSASC_RIR(0), + irq: IFXMIPSASC_TIR(0), uartclk: 0, fifosize: 16, type: PORT_IFXMIPSASC, ops: &ifxmipsasc_pops, flags: ASYNC_BOOT_AUTOCONF, + line: 0 }, { membase: (void *)(IFXMIPS_ASC_BASE_ADDR + IFXMIPS_ASC_BASE_DIFF), mapbase: IFXMIPS_ASC_BASE_ADDR + IFXMIPS_ASC_BASE_DIFF, iotype: SERIAL_IO_MEM, - irq: IFXMIPSASC_RIR(1), + irq: IFXMIPSASC_TIR(1), uartclk: 0, fifosize: 16, type: PORT_IFXMIPSASC, ops: &ifxmipsasc_pops, flags: ASYNC_BOOT_AUTOCONF, + line: 1 } }; static void ifxmipsasc_console_write(struct console *co, const char *s, u_int count) { + int port = co->index; int i, fifocnt; unsigned long flags; - local_irq_save(flags); for(i = 0; i < count; i++) { - /* wait until the FIFO is not full */ - do - { - fifocnt = (ifxmips_r32((u32*)(IFXMIPS_ASC_BASE_ADDR + (co->index * IFXMIPS_ASC_BASE_DIFF) + IFXMIPS_ASC_FSTAT)) & ASCFSTAT_TXFFLMASK) + do { + fifocnt = (ifxmips_r32((u32*)(IFXMIPS_ASC_BASE_ADDR + (port * IFXMIPS_ASC_BASE_DIFF) + IFXMIPS_ASC_FSTAT)) & ASCFSTAT_TXFFLMASK) >> ASCFSTAT_TXFFLOFF; - }while(fifocnt == IFXMIPSASC_TXFIFO_FULL); + } while(fifocnt == IFXMIPSASC_TXFIFO_FULL); if(s[i] == '\0') break; if(s[i] == '\n') { - ifxmips_w32('\r', (u32*)(IFXMIPS_ASC_BASE_ADDR + (co->index * IFXMIPS_ASC_BASE_DIFF) + IFXMIPS_ASC_TBUF)); - do - { - fifocnt = (ifxmips_r32((u32*)(IFXMIPS_ASC_BASE_ADDR + (co->index * IFXMIPS_ASC_BASE_DIFF) + IFXMIPS_ASC_FSTAT)) & ASCFSTAT_TXFFLMASK) + ifxmips_w32('\r', (u32*)(IFXMIPS_ASC_BASE_ADDR + (port * IFXMIPS_ASC_BASE_DIFF) + IFXMIPS_ASC_TBUF)); + do { + fifocnt = (ifxmips_r32((u32*)(IFXMIPS_ASC_BASE_ADDR + (port * IFXMIPS_ASC_BASE_DIFF) + IFXMIPS_ASC_FSTAT)) & ASCFSTAT_TXFFLMASK) >> ASCFSTAT_TXFFLOFF; } while(fifocnt == IFXMIPSASC_TXFIFO_FULL); } - ifxmips_w32(s[i], (u32*)(IFXMIPS_ASC_BASE_ADDR + (co->index * IFXMIPS_ASC_BASE_DIFF) + IFXMIPS_ASC_TBUF)); + ifxmips_w32(s[i], (u32*)(IFXMIPS_ASC_BASE_ADDR + (port * IFXMIPS_ASC_BASE_DIFF) + IFXMIPS_ASC_TBUF)); } local_irq_restore(flags); @@ -521,23 +523,16 @@ ifxmipsasc_console_write(struct console *co, const char *s, u_int count) static int __init ifxmipsasc_console_setup(struct console *co, char *options) { - struct uart_port *port; + int port = co->index; int baud = 115200; int bits = 8; int parity = 'n'; int flow = 'n'; - - if(uartclk == 0) - uartclk = ifxmips_get_fpi_hz(); - co->index = 0; - port = &ifxmipsasc_port[co->index]; - ifxmipsasc_port[co->index].uartclk = uartclk; - ifxmipsasc_port[co->index].type = PORT_IFXMIPSASC; - + ifxmipsasc_port[port].uartclk = ifxmips_get_fpi_hz(); + ifxmipsasc_port[port].type = PORT_IFXMIPSASC; if(options) uart_parse_options(options, &baud, &parity, &bits, &flow); - - return uart_set_options(port, co, baud, parity, bits, flow); + return uart_set_options(&ifxmipsasc_port[port], co, baud, parity, bits, flow); } static struct console ifxmipsasc_console[2] = @@ -578,22 +573,20 @@ static struct uart_driver ifxmipsasc_reg = .major = TTY_MAJOR, .minor = 64, .nr = 2, - .cons = ifxmipsasc_console, + .cons = &ifxmipsasc_console[1], }; -static int __init +int __init ifxmipsasc_init(void) { - unsigned char res; - + int ret; uart_register_driver(&ifxmipsasc_reg); - res = uart_add_one_port(&ifxmipsasc_reg, &ifxmipsasc_port[0]); - res = uart_add_one_port(&ifxmipsasc_reg, &ifxmipsasc_port[1]); - - return res; + ret = uart_add_one_port(&ifxmipsasc_reg, &ifxmipsasc_port[0]); + ret = uart_add_one_port(&ifxmipsasc_reg, &ifxmipsasc_port[1]); + return 0; } -static void __exit +void __exit ifxmipsasc_exit(void) { uart_unregister_driver(&ifxmipsasc_reg); diff --git a/target/linux/ifxmips/files/include/asm-mips/ifxmips/ifxmips_cgu.h b/target/linux/ifxmips/files/include/asm-mips/ifxmips/ifxmips_cgu.h index 99ad9a7c8e8..cf1cbba9390 100644 --- a/target/linux/ifxmips/files/include/asm-mips/ifxmips/ifxmips_cgu.h +++ b/target/linux/ifxmips/files/include/asm-mips/ifxmips/ifxmips_cgu.h @@ -8,4 +8,5 @@ u32 cgu_get_pp32_clock(void); u32 cgu_get_ethernet_clock(int mii); u32 cgu_get_usb_clock(void); u32 cgu_get_clockout(int clkout); +void cgu_setup_pci_clk(int internal_clock); #endif diff --git a/target/linux/ifxmips/image/u-boot/files/include/configs/danube.h b/target/linux/ifxmips/image/u-boot/files/include/configs/danube.h index 23ec5327c27..12cca11082d 100644 --- a/target/linux/ifxmips/image/u-boot/files/include/configs/danube.h +++ b/target/linux/ifxmips/image/u-boot/files/include/configs/danube.h @@ -79,7 +79,8 @@ "serverip=192.168.45.100\0" \ "ipaddr=192.168.45.108\0" \ "update_uboot=tftp 0x80500000 u-boot.ifx;era 1:0-10; cp.b 0x80500000 0xb0000000 0x10000\0" \ - "update_openwrt=tftp 0x80500000 openwrt-ifxmips-squashfs.image; era 1:10-120; cp.b 0x80500000 0xb0030000 0x300000\0" + "update_openwrt=tftp 0x80500000 openwrt-ifxmips-squashfs.image; era 1:10-120; cp.b 0x80500000 0xb0030000 0x300000\0" \ + "bootargs=console=ttyS1,115200 rootfstype=squashfs,jffs2 init=/etc/preinit\0" #define CONFIG_BOOTCOMMAND "bootm 0xb0030000" diff --git a/target/linux/ifxmips/patches/100-board.patch b/target/linux/ifxmips/patches/100-board.patch index 79d18cadc35..38c8fd6b013 100644 --- a/target/linux/ifxmips/patches/100-board.patch +++ b/target/linux/ifxmips/patches/100-board.patch @@ -1,13 +1,13 @@ Index: linux-2.6.25.7/arch/mips/Kconfig =================================================================== ---- linux-2.6.25.7.orig/arch/mips/Kconfig 2008-06-18 00:28:54.000000000 +0200 -+++ linux-2.6.25.7/arch/mips/Kconfig 2008-06-18 00:35:50.000000000 +0200 +--- linux-2.6.25.7.orig/arch/mips/Kconfig 2008-06-26 10:42:44.000000000 +0200 ++++ linux-2.6.25.7/arch/mips/Kconfig 2008-06-26 22:05:19.000000000 +0200 @@ -78,6 +78,21 @@ select SYS_SUPPORTS_LITTLE_ENDIAN select GENERIC_HARDIRQS_NO__DO_IRQ +config IFXMIPS -+ bool "IFXMips support" ++ bool "Infineon Twinpass, Danube, Amazon-SE" + select DMA_NONCOHERENT + select IRQ_CPU + select CEVT_R4K @@ -34,8 +34,8 @@ Index: linux-2.6.25.7/arch/mips/Kconfig Index: linux-2.6.25.7/arch/mips/Makefile =================================================================== ---- linux-2.6.25.7.orig/arch/mips/Makefile 2008-06-18 00:29:07.000000000 +0200 -+++ linux-2.6.25.7/arch/mips/Makefile 2008-06-18 00:35:42.000000000 +0200 +--- linux-2.6.25.7.orig/arch/mips/Makefile 2008-06-26 10:42:55.000000000 +0200 ++++ linux-2.6.25.7/arch/mips/Makefile 2008-06-26 10:42:56.000000000 +0200 @@ -283,6 +283,13 @@ load-$(CONFIG_MIPS_COBALT) += 0xffffffff80080000 @@ -52,8 +52,8 @@ Index: linux-2.6.25.7/arch/mips/Makefile core-$(CONFIG_MACH_DECSTATION) += arch/mips/dec/ Index: linux-2.6.25.7/include/asm-mips/bootinfo.h =================================================================== ---- linux-2.6.25.7.orig/include/asm-mips/bootinfo.h 2008-06-18 00:28:54.000000000 +0200 -+++ linux-2.6.25.7/include/asm-mips/bootinfo.h 2008-06-18 00:29:08.000000000 +0200 +--- linux-2.6.25.7.orig/include/asm-mips/bootinfo.h 2008-06-26 10:42:44.000000000 +0200 ++++ linux-2.6.25.7/include/asm-mips/bootinfo.h 2008-06-26 10:42:56.000000000 +0200 @@ -94,6 +94,12 @@ #define MACH_MSP7120_FPGA 5 /* PMC-Sierra MSP7120 Emulation */ #define MACH_MSP_OTHER 255 /* PMC-Sierra unknown board type */ @@ -69,8 +69,8 @@ Index: linux-2.6.25.7/include/asm-mips/bootinfo.h extern char *system_type; Index: linux-2.6.25.7/arch/mips/kernel/traps.c =================================================================== ---- linux-2.6.25.7.orig/arch/mips/kernel/traps.c 2008-06-18 00:28:54.000000000 +0200 -+++ linux-2.6.25.7/arch/mips/kernel/traps.c 2008-06-18 00:29:08.000000000 +0200 +--- linux-2.6.25.7.orig/arch/mips/kernel/traps.c 2008-06-26 10:42:44.000000000 +0200 ++++ linux-2.6.25.7/arch/mips/kernel/traps.c 2008-06-26 10:42:56.000000000 +0200 @@ -1379,6 +1379,7 @@ */ if (cpu_has_mips_r2) { @@ -81,8 +81,8 @@ Index: linux-2.6.25.7/arch/mips/kernel/traps.c cp0_perfcount_irq = -1; Index: linux-2.6.25.7/arch/mips/pci/Makefile =================================================================== ---- linux-2.6.25.7.orig/arch/mips/pci/Makefile 2008-06-18 00:34:49.000000000 +0200 -+++ linux-2.6.25.7/arch/mips/pci/Makefile 2008-06-18 00:35:03.000000000 +0200 +--- linux-2.6.25.7.orig/arch/mips/pci/Makefile 2008-06-26 10:42:44.000000000 +0200 ++++ linux-2.6.25.7/arch/mips/pci/Makefile 2008-06-26 10:42:56.000000000 +0200 @@ -48,3 +48,4 @@ obj-$(CONFIG_VICTOR_MPC30X) += fixup-mpc30x.o obj-$(CONFIG_ZAO_CAPCELLA) += fixup-capcella.o diff --git a/target/linux/ifxmips/patches/110-drivers.patch b/target/linux/ifxmips/patches/110-drivers.patch index 709108124fc..c4627972ca1 100644 --- a/target/linux/ifxmips/patches/110-drivers.patch +++ b/target/linux/ifxmips/patches/110-drivers.patch @@ -1,12 +1,11 @@ Index: linux-2.6.25.7/drivers/char/Makefile =================================================================== ---- linux-2.6.25.7.orig/drivers/char/Makefile 2008-06-18 00:34:41.000000000 +0200 -+++ linux-2.6.25.7/drivers/char/Makefile 2008-06-18 00:36:56.000000000 +0200 -@@ -113,6 +113,11 @@ +--- linux-2.6.25.7.orig/drivers/char/Makefile 2008-06-26 09:53:43.000000000 +0200 ++++ linux-2.6.25.7/drivers/char/Makefile 2008-06-26 09:53:53.000000000 +0200 +@@ -113,6 +113,10 @@ obj-$(CONFIG_JS_RTC) += js-rtc.o js-rtc-y = rtc.o -+obj-$(CONFIG_IFXMIPS_LED) += ifxmips_led.o +obj-$(CONFIG_IFXMIPS_SSC) += ifxmips_ssc.o +obj-$(CONFIG_IFXMIPS_EEPROM) += ifxmips_eeprom.o +obj-$(CONFIG_IFXMIPS_MEI) += ifxmips_mei_core.o @@ -16,8 +15,8 @@ Index: linux-2.6.25.7/drivers/char/Makefile Index: linux-2.6.25.7/drivers/mtd/maps/Makefile =================================================================== ---- linux-2.6.25.7.orig/drivers/mtd/maps/Makefile 2008-06-18 00:34:41.000000000 +0200 -+++ linux-2.6.25.7/drivers/mtd/maps/Makefile 2008-06-18 00:36:56.000000000 +0200 +--- linux-2.6.25.7.orig/drivers/mtd/maps/Makefile 2008-06-26 09:53:43.000000000 +0200 ++++ linux-2.6.25.7/drivers/mtd/maps/Makefile 2008-06-26 09:53:53.000000000 +0200 @@ -68,3 +68,4 @@ obj-$(CONFIG_MTD_OMAP_NOR) += omap_nor.o obj-$(CONFIG_MTD_MTX1) += mtx-1_flash.o @@ -25,8 +24,8 @@ Index: linux-2.6.25.7/drivers/mtd/maps/Makefile +obj-$(CONFIG_MTD_IFXMIPS) += ifxmips.o Index: linux-2.6.25.7/drivers/net/Kconfig =================================================================== ---- linux-2.6.25.7.orig/drivers/net/Kconfig 2008-06-18 00:34:41.000000000 +0200 -+++ linux-2.6.25.7/drivers/net/Kconfig 2008-06-18 00:36:56.000000000 +0200 +--- linux-2.6.25.7.orig/drivers/net/Kconfig 2008-06-26 09:53:43.000000000 +0200 ++++ linux-2.6.25.7/drivers/net/Kconfig 2008-06-26 09:53:53.000000000 +0200 @@ -351,6 +351,12 @@ source "drivers/net/arm/Kconfig" @@ -42,8 +41,8 @@ Index: linux-2.6.25.7/drivers/net/Kconfig depends on ARM || MIPS || SUPERH Index: linux-2.6.25.7/drivers/serial/Kconfig =================================================================== ---- linux-2.6.25.7.orig/drivers/serial/Kconfig 2008-06-18 00:34:41.000000000 +0200 -+++ linux-2.6.25.7/drivers/serial/Kconfig 2008-06-18 00:36:56.000000000 +0200 +--- linux-2.6.25.7.orig/drivers/serial/Kconfig 2008-06-26 09:53:43.000000000 +0200 ++++ linux-2.6.25.7/drivers/serial/Kconfig 2008-06-26 09:53:53.000000000 +0200 @@ -1327,6 +1327,14 @@ Currently, only 8250 compatible ports are supported, but others can easily be added. @@ -61,8 +60,8 @@ Index: linux-2.6.25.7/drivers/serial/Kconfig depends on QUICC_ENGINE Index: linux-2.6.25.7/drivers/serial/Makefile =================================================================== ---- linux-2.6.25.7.orig/drivers/serial/Makefile 2008-06-18 00:34:41.000000000 +0200 -+++ linux-2.6.25.7/drivers/serial/Makefile 2008-06-18 00:36:56.000000000 +0200 +--- linux-2.6.25.7.orig/drivers/serial/Makefile 2008-06-26 09:53:43.000000000 +0200 ++++ linux-2.6.25.7/drivers/serial/Makefile 2008-06-26 09:53:53.000000000 +0200 @@ -66,4 +66,5 @@ obj-$(CONFIG_SERIAL_NETX) += netx-serial.o obj-$(CONFIG_SERIAL_OF_PLATFORM) += of_serial.o @@ -71,8 +70,8 @@ Index: linux-2.6.25.7/drivers/serial/Makefile obj-$(CONFIG_SERIAL_QE) += ucc_uart.o Index: linux-2.6.25.7/drivers/watchdog/Makefile =================================================================== ---- linux-2.6.25.7.orig/drivers/watchdog/Makefile 2008-06-18 00:34:41.000000000 +0200 -+++ linux-2.6.25.7/drivers/watchdog/Makefile 2008-06-18 00:36:56.000000000 +0200 +--- linux-2.6.25.7.orig/drivers/watchdog/Makefile 2008-06-26 09:53:43.000000000 +0200 ++++ linux-2.6.25.7/drivers/watchdog/Makefile 2008-06-26 09:53:53.000000000 +0200 @@ -96,6 +96,7 @@ obj-$(CONFIG_SIBYTE_WDOG) += sb_wdog.o obj-$(CONFIG_AR7_WDT) += ar7_wdt.o @@ -83,8 +82,8 @@ Index: linux-2.6.25.7/drivers/watchdog/Makefile Index: linux-2.6.25.7/drivers/net/Makefile =================================================================== ---- linux-2.6.25.7.orig/drivers/net/Makefile 2008-06-18 00:34:41.000000000 +0200 -+++ linux-2.6.25.7/drivers/net/Makefile 2008-06-18 00:36:56.000000000 +0200 +--- linux-2.6.25.7.orig/drivers/net/Makefile 2008-06-26 09:53:43.000000000 +0200 ++++ linux-2.6.25.7/drivers/net/Makefile 2008-06-26 09:53:53.000000000 +0200 @@ -254,3 +254,4 @@ obj-$(CONFIG_NETXEN_NIC) += netxen/ obj-$(CONFIG_NIU) += niu.o @@ -92,8 +91,8 @@ Index: linux-2.6.25.7/drivers/net/Makefile +obj-$(CONFIG_IFXMIPS_MII0) += ifxmips_mii0.o Index: linux-2.6.25.7/drivers/crypto/Kconfig =================================================================== ---- linux-2.6.25.7.orig/drivers/crypto/Kconfig 2008-06-18 18:10:24.000000000 +0200 -+++ linux-2.6.25.7/drivers/crypto/Kconfig 2008-06-18 18:11:46.000000000 +0200 +--- linux-2.6.25.7.orig/drivers/crypto/Kconfig 2008-06-26 09:53:43.000000000 +0200 ++++ linux-2.6.25.7/drivers/crypto/Kconfig 2008-06-26 09:53:53.000000000 +0200 @@ -9,6 +9,9 @@ If you say N, all options in this submenu will be skipped and disabled. @@ -106,10 +105,82 @@ Index: linux-2.6.25.7/drivers/crypto/Kconfig tristate "Support for VIA PadLock ACE" Index: linux-2.6.25.7/drivers/crypto/Makefile =================================================================== ---- linux-2.6.25.7.orig/drivers/crypto/Makefile 2008-06-18 18:09:30.000000000 +0200 -+++ linux-2.6.25.7/drivers/crypto/Makefile 2008-06-18 18:10:18.000000000 +0200 +--- linux-2.6.25.7.orig/drivers/crypto/Makefile 2008-06-26 09:53:43.000000000 +0200 ++++ linux-2.6.25.7/drivers/crypto/Makefile 2008-06-26 09:53:53.000000000 +0200 @@ -2,3 +2,4 @@ obj-$(CONFIG_CRYPTO_DEV_PADLOCK_SHA) += padlock-sha.o obj-$(CONFIG_CRYPTO_DEV_GEODE) += geode-aes.o obj-$(CONFIG_CRYPTO_DEV_HIFN_795X) += hifn_795x.o +obj-$(CONFIG_CRYPTO_DEV_IFXMIPS) += ifxdeu-aes.o ifxdeu-des.o ifxdeu-dma.o ifxdeu-generic.o ifxdeu-md5.o ifxdeu-sha1.o +Index: linux-2.6.25.7/drivers/usb/host/Kconfig +=================================================================== +--- linux-2.6.25.7.orig/drivers/usb/host/Kconfig 2008-06-26 09:53:43.000000000 +0200 ++++ linux-2.6.25.7/drivers/usb/host/Kconfig 2008-06-26 09:53:53.000000000 +0200 +@@ -260,3 +260,9 @@ + To compile this driver as a module, choose M here: the + module will be called r8a66597-hcd. + ++config USB_DWC_HCD ++ tristate "IFXMIPS USB Host Controller Driver" ++ depends on USB && IFXMIPS ++ default y ++ help ++ Danube USB Host Controller +Index: linux-2.6.25.7/drivers/usb/host/Makefile +=================================================================== +--- linux-2.6.25.7.orig/drivers/usb/host/Makefile 2008-06-26 09:53:43.000000000 +0200 ++++ linux-2.6.25.7/drivers/usb/host/Makefile 2008-06-26 09:53:53.000000000 +0200 +@@ -16,4 +16,6 @@ + obj-$(CONFIG_USB_SL811_CS) += sl811_cs.o + obj-$(CONFIG_USB_U132_HCD) += u132-hcd.o + obj-$(CONFIG_USB_R8A66597_HCD) += r8a66597-hcd.o +- ++obj-$(CONFIG_USB_DWC_HCD) += dwc_otg_hcd.o dwc_otg_hcd_intr.o dwc_otg_hcd_queue.o \ ++ dwc_otg_attr.o dwc_otg_driver.o dwc_otg_cil.o \ ++ dwc_otg_cil_intr.o dwc_otg_proc.o dwc_otg_ifx.o +Index: linux-2.6.25.7/drivers/leds/Kconfig +=================================================================== +--- linux-2.6.25.7.orig/drivers/leds/Kconfig 2008-06-26 09:53:43.000000000 +0200 ++++ linux-2.6.25.7/drivers/leds/Kconfig 2008-06-26 09:53:53.000000000 +0200 +@@ -151,6 +151,12 @@ + To compile this driver as a module, choose M here: the + module will be called leds-clevo-mail. + ++config LEDS_IFXMIPS ++ tristate "LED Support for IFXMIPS LEDs" ++ depends on LEDS_CLASS && IFXMIPS ++ help ++ This option enables support for the CM-X270 LEDs. ++ + comment "LED Triggers" + + config LEDS_TRIGGERS +Index: linux-2.6.25.7/drivers/leds/Makefile +=================================================================== +--- linux-2.6.25.7.orig/drivers/leds/Makefile 2008-06-26 09:53:43.000000000 +0200 ++++ linux-2.6.25.7/drivers/leds/Makefile 2008-06-26 09:53:53.000000000 +0200 +@@ -22,6 +22,7 @@ + obj-$(CONFIG_LEDS_CM_X270) += leds-cm-x270.o + obj-$(CONFIG_LEDS_CLEVO_MAIL) += leds-clevo-mail.o + obj-$(CONFIG_LEDS_HP6XX) += leds-hp6xx.o ++obj-$(CONFIG_LEDS_IFXMIPS) += leds-ifxmips.o + + # LED Triggers + obj-$(CONFIG_LEDS_TRIGGER_TIMER) += ledtrig-timer.o +Index: linux-2.6.25.7/drivers/watchdog/Kconfig +=================================================================== +--- linux-2.6.25.7.orig/drivers/watchdog/Kconfig 2008-06-26 10:21:00.000000000 +0200 ++++ linux-2.6.25.7/drivers/watchdog/Kconfig 2008-06-26 10:22:13.000000000 +0200 +@@ -670,6 +670,12 @@ + help + Hardware driver for the built-in watchdog timer on TXx9 MIPS SoCs. + ++config IFXMIPS_WDT ++ bool "IFXMips watchdog" ++ depends on IFXMIPS ++ help ++ Hardware driver for the IFXMIPS Watchdog Timer. ++ + # PARISC Architecture + + # POWERPC Architecture