diff options
| -rw-r--r-- | target/linux/ifxmips/base-files/etc/inittab | 4 | ||||
| -rw-r--r-- | target/linux/ifxmips/config-2.6.25 | 5 | ||||
| -rw-r--r-- | target/linux/ifxmips/files/arch/mips/ifxmips/Kconfig | 14 | ||||
| -rw-r--r-- | target/linux/ifxmips/files/arch/mips/ifxmips/board.c | 22 | ||||
| -rw-r--r-- | target/linux/ifxmips/files/arch/mips/ifxmips/cgu.c | 16 | ||||
| -rw-r--r-- | target/linux/ifxmips/files/arch/mips/ifxmips/prom.c | 3 | ||||
| -rw-r--r-- | target/linux/ifxmips/files/arch/mips/pci/pci-ifxmips.c | 53 | ||||
| -rw-r--r-- | target/linux/ifxmips/files/drivers/leds/leds-ifxmips.c (renamed from target/linux/ifxmips/files/drivers/char/ifxmips_led.c) | 0 | ||||
| -rw-r--r-- | target/linux/ifxmips/files/drivers/serial/ifxmips_asc.c | 83 | ||||
| -rw-r--r-- | target/linux/ifxmips/files/include/asm-mips/ifxmips/ifxmips_cgu.h | 1 | ||||
| -rw-r--r-- | target/linux/ifxmips/image/u-boot/files/include/configs/danube.h | 3 | ||||
| -rw-r--r-- | target/linux/ifxmips/patches/100-board.patch | 22 | ||||
| -rw-r--r-- | target/linux/ifxmips/patches/110-drivers.patch | 111 | 
13 files changed, 225 insertions, 112 deletions
diff --git a/target/linux/ifxmips/base-files/etc/inittab b/target/linux/ifxmips/base-files/etc/inittab new file mode 100644 index 000000000..7989a7f60 --- /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 342fa1142..080ebbdd6 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 f01fcd362..3e68f7f9b 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 aabcb5fce..28f2e263c 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 <asm/io.h>  #include <asm/ifxmips/ifxmips.h> -#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 3dec89e7c..d1e2ff4fa 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 95630ae36..4e307d044 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 092a80ec4..bd500bdec 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 <linux/mm.h>  #include <asm/ifxmips/ifxmips.h>  #include <asm/ifxmips/ifxmips_irq.h> +#include <asm/ifxmips/ifxmips_cgu.h>  #include <asm/addrspace.h>  #include <linux/vmalloc.h> @@ -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/leds/leds-ifxmips.c index 090516c5a..090516c5a 100644 --- a/target/linux/ifxmips/files/drivers/char/ifxmips_led.c +++ b/target/linux/ifxmips/files/drivers/leds/leds-ifxmips.c diff --git a/target/linux/ifxmips/files/drivers/serial/ifxmips_asc.c b/target/linux/ifxmips/files/drivers/serial/ifxmips_asc.c index 63a4c2af9..17d933c20 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 <linux/console.h>  #include <linux/sysrq.h>  #include <linux/irq.h> - +#include <linux/platform_device.h>  #include <asm/system.h>  #include <asm/io.h>  #include <asm/uaccess.h> @@ -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 99ad9a7c8..cf1cbba93 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 23ec5327c..12cca1108 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 79d18cadc..38c8fd6b0 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 709108124..c4627972c 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  | 
