mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2025-04-21 12:27:27 +03:00
ramips: add initial support for 3.2
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@30476 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
--- a/arch/mips/kernel/traps.c
|
||||
+++ b/arch/mips/kernel/traps.c
|
||||
@@ -54,6 +54,7 @@
|
||||
#include <asm/types.h>
|
||||
#include <asm/stacktrace.h>
|
||||
#include <asm/uasm.h>
|
||||
+#include <asm/time.h>
|
||||
|
||||
extern void check_wait(void);
|
||||
extern asmlinkage void r4k_wait(void);
|
||||
@@ -1583,6 +1584,8 @@ void __cpuinit per_cpu_trap_init(void)
|
||||
if (cpu_has_mips_r2) {
|
||||
cp0_compare_irq_shift = CAUSEB_TI - CAUSEB_IP;
|
||||
cp0_compare_irq = (read_c0_intctl() >> INTCTLB_IPTI) & 7;
|
||||
+ if (get_c0_compare_irq)
|
||||
+ cp0_compare_irq = get_c0_compare_irq();
|
||||
cp0_perfcount_irq = (read_c0_intctl() >> INTCTLB_IPPCI) & 7;
|
||||
if (cp0_perfcount_irq == cp0_compare_irq)
|
||||
cp0_perfcount_irq = -1;
|
||||
--- a/arch/mips/include/asm/time.h
|
||||
+++ b/arch/mips/include/asm/time.h
|
||||
@@ -52,6 +52,7 @@ extern int (*perf_irq)(void);
|
||||
*/
|
||||
#ifdef CONFIG_CEVT_R4K_LIB
|
||||
extern unsigned int __weak get_c0_compare_int(void);
|
||||
+extern unsigned int __weak get_c0_compare_irq(void);
|
||||
extern int r4k_clockevent_init(void);
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
--- a/drivers/mtd/chips/cfi_cmdset_0002.c
|
||||
+++ b/drivers/mtd/chips/cfi_cmdset_0002.c
|
||||
@@ -1627,7 +1627,7 @@ static int __xipram do_erase_chip(struct
|
||||
chip->erase_suspended = 0;
|
||||
}
|
||||
|
||||
- if (chip_ready(map, adr))
|
||||
+ if (chip_good(map, adr, map_word_ff(map)))
|
||||
break;
|
||||
|
||||
if (time_after(jiffies, timeo)) {
|
||||
@@ -1715,7 +1715,7 @@ static int __xipram do_erase_oneblock(st
|
||||
chip->erase_suspended = 0;
|
||||
}
|
||||
|
||||
- if (chip_ready(map, adr)) {
|
||||
+ if (chip_good(map, adr, map_word_ff(map))) {
|
||||
xip_enable(map, chip, adr);
|
||||
break;
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
--- a/drivers/mtd/chips/cfi_cmdset_0002.c
|
||||
+++ b/drivers/mtd/chips/cfi_cmdset_0002.c
|
||||
@@ -39,7 +39,7 @@
|
||||
#include <linux/mtd/xip.h>
|
||||
|
||||
#define AMD_BOOTLOC_BUG
|
||||
-#define FORCE_WORD_WRITE 0
|
||||
+#define FORCE_WORD_WRITE 1
|
||||
|
||||
#define MAX_WORD_RETRIES 3
|
||||
|
||||
@@ -50,7 +50,9 @@
|
||||
|
||||
static int cfi_amdstd_read (struct mtd_info *, loff_t, size_t, size_t *, u_char *);
|
||||
static int cfi_amdstd_write_words(struct mtd_info *, loff_t, size_t, size_t *, const u_char *);
|
||||
+#if !FORCE_WORD_WRITE
|
||||
static int cfi_amdstd_write_buffers(struct mtd_info *, loff_t, size_t, size_t *, const u_char *);
|
||||
+#endif
|
||||
static int cfi_amdstd_erase_chip(struct mtd_info *, struct erase_info *);
|
||||
static int cfi_amdstd_erase_varsize(struct mtd_info *, struct erase_info *);
|
||||
static void cfi_amdstd_sync (struct mtd_info *);
|
||||
@@ -183,6 +185,7 @@ static void fixup_amd_bootblock(struct m
|
||||
}
|
||||
#endif
|
||||
|
||||
+#if !FORCE_WORD_WRITE
|
||||
static void fixup_use_write_buffers(struct mtd_info *mtd)
|
||||
{
|
||||
struct map_info *map = mtd->priv;
|
||||
@@ -192,6 +195,7 @@ static void fixup_use_write_buffers(stru
|
||||
mtd->write = cfi_amdstd_write_buffers;
|
||||
}
|
||||
}
|
||||
+#endif /* !FORCE_WORD_WRITE */
|
||||
|
||||
/* Atmel chips don't use the same PRI format as AMD chips */
|
||||
static void fixup_convert_atmel_pri(struct mtd_info *mtd)
|
||||
@@ -1372,6 +1376,7 @@ static int cfi_amdstd_write_words(struct
|
||||
/*
|
||||
* FIXME: interleaved mode not tested, and probably not supported!
|
||||
*/
|
||||
+#if !FORCE_WORD_WRITE
|
||||
static int __xipram do_write_buffer(struct map_info *map, struct flchip *chip,
|
||||
unsigned long adr, const u_char *buf,
|
||||
int len)
|
||||
@@ -1483,7 +1488,6 @@ static int __xipram do_write_buffer(stru
|
||||
return ret;
|
||||
}
|
||||
|
||||
-
|
||||
static int cfi_amdstd_write_buffers(struct mtd_info *mtd, loff_t to, size_t len,
|
||||
size_t *retlen, const u_char *buf)
|
||||
{
|
||||
@@ -1562,6 +1566,7 @@ static int cfi_amdstd_write_buffers(stru
|
||||
|
||||
return 0;
|
||||
}
|
||||
+#endif /* !FORCE_WORD_WRITE */
|
||||
|
||||
|
||||
/*
|
||||
39
target/linux/ramips/patches-3.2/100-mips-ralink-core.patch
Normal file
39
target/linux/ramips/patches-3.2/100-mips-ralink-core.patch
Normal file
@@ -0,0 +1,39 @@
|
||||
--- a/arch/mips/Kconfig
|
||||
+++ b/arch/mips/Kconfig
|
||||
@@ -87,6 +87,9 @@ config ATH79
|
||||
help
|
||||
Support for the Atheros AR71XX/AR724X/AR913X SoCs.
|
||||
|
||||
+config MIPS_RALINK
|
||||
+ bool "Ralink MIPS SoC based boards"
|
||||
+
|
||||
config BCM47XX
|
||||
bool "Broadcom BCM47XX based boards"
|
||||
select CEVT_R4K
|
||||
@@ -794,6 +797,7 @@ source "arch/mips/jz4740/Kconfig"
|
||||
source "arch/mips/lantiq/Kconfig"
|
||||
source "arch/mips/lasat/Kconfig"
|
||||
source "arch/mips/pmc-sierra/Kconfig"
|
||||
+source "arch/mips/ralink/Kconfig"
|
||||
source "arch/mips/powertv/Kconfig"
|
||||
source "arch/mips/sgi-ip27/Kconfig"
|
||||
source "arch/mips/sibyte/Kconfig"
|
||||
@@ -1143,7 +1147,7 @@ config BOOT_ELF32
|
||||
|
||||
config MIPS_L1_CACHE_SHIFT
|
||||
int
|
||||
- default "4" if MACH_DECSTATION || MIKROTIK_RB532 || PMC_MSP4200_EVAL
|
||||
+ default "4" if MACH_DECSTATION || MIKROTIK_RB532 || PMC_MSP4200_EVAL || RALINK_RT288X
|
||||
default "6" if MIPS_CPU_SCACHE
|
||||
default "7" if SGI_IP22 || SGI_IP27 || SGI_IP28 || SNI_RM || CPU_CAVIUM_OCTEON
|
||||
default "5"
|
||||
--- a/arch/mips/Kbuild.platforms
|
||||
+++ b/arch/mips/Kbuild.platforms
|
||||
@@ -21,6 +21,7 @@ platforms += pmc-sierra
|
||||
platforms += pnx833x
|
||||
platforms += pnx8550
|
||||
platforms += powertv
|
||||
+platforms += ralink
|
||||
platforms += rb532
|
||||
platforms += sgi-ip22
|
||||
platforms += sgi-ip27
|
||||
@@ -0,0 +1,91 @@
|
||||
--- a/drivers/tty/serial/8250.c
|
||||
+++ b/drivers/tty/serial/8250.c
|
||||
@@ -318,9 +318,9 @@ static const struct serial8250_config ua
|
||||
},
|
||||
};
|
||||
|
||||
-#if defined(CONFIG_MIPS_ALCHEMY)
|
||||
+#if defined(CONFIG_MIPS_ALCHEMY) || defined (CONFIG_SERIAL_8250_RT288X)
|
||||
|
||||
-/* Au1x00 UART hardware has a weird register layout */
|
||||
+/* Au1x00 and RT288x UART hardware has a weird register layout */
|
||||
static const u8 au_io_in_map[] = {
|
||||
[UART_RX] = 0,
|
||||
[UART_IER] = 2,
|
||||
@@ -542,8 +542,8 @@ static inline void _serial_dl_write(stru
|
||||
serial_outp(up, UART_DLM, value >> 8 & 0xff);
|
||||
}
|
||||
|
||||
-#if defined(CONFIG_MIPS_ALCHEMY)
|
||||
-/* Au1x00 haven't got a standard divisor latch */
|
||||
+#if defined(CONFIG_MIPS_ALCHEMY) || defined (CONFIG_SERIAL_8250_RT288X)
|
||||
+/* Au1x00 and RT288x haven't got a standard divisor latch */
|
||||
static int serial_dl_read(struct uart_8250_port *up)
|
||||
{
|
||||
if (up->port.iotype == UPIO_AU)
|
||||
@@ -750,22 +750,19 @@ static int size_fifo(struct uart_8250_po
|
||||
*/
|
||||
static unsigned int autoconfig_read_divisor_id(struct uart_8250_port *p)
|
||||
{
|
||||
- unsigned char old_dll, old_dlm, old_lcr;
|
||||
+ unsigned char old_lcr;
|
||||
+ unsigned int old_dl;
|
||||
unsigned int id;
|
||||
|
||||
old_lcr = serial_inp(p, UART_LCR);
|
||||
serial_outp(p, UART_LCR, UART_LCR_CONF_MODE_A);
|
||||
|
||||
- old_dll = serial_inp(p, UART_DLL);
|
||||
- old_dlm = serial_inp(p, UART_DLM);
|
||||
+ old_dl = serial_dl_read(p);
|
||||
|
||||
- serial_outp(p, UART_DLL, 0);
|
||||
- serial_outp(p, UART_DLM, 0);
|
||||
+ serial_dl_write(p, 0);
|
||||
+ id = serial_dl_read(p);
|
||||
|
||||
- id = serial_inp(p, UART_DLL) | serial_inp(p, UART_DLM) << 8;
|
||||
-
|
||||
- serial_outp(p, UART_DLL, old_dll);
|
||||
- serial_outp(p, UART_DLM, old_dlm);
|
||||
+ serial_dl_write(p, old_dl);
|
||||
serial_outp(p, UART_LCR, old_lcr);
|
||||
|
||||
return id;
|
||||
@@ -891,7 +888,7 @@ static int broken_efr(struct uart_8250_p
|
||||
/*
|
||||
* Exar ST16C2550 "A2" devices incorrectly detect as
|
||||
* having an EFR, and report an ID of 0x0201. See
|
||||
- * http://linux.derkeiler.com/Mailing-Lists/Kernel/2004-11/4812.html
|
||||
+ * http://linux.derkeiler.com/Mailing-Lists/Kernel/2004-11/4812.html
|
||||
*/
|
||||
if (autoconfig_read_divisor_id(up) == 0x0201 && size_fifo(up) == 16)
|
||||
return 1;
|
||||
--- a/drivers/tty/serial/Kconfig
|
||||
+++ b/drivers/tty/serial/Kconfig
|
||||
@@ -258,6 +258,14 @@ config SERIAL_8250_ACORN
|
||||
system, say Y to this option. The driver can handle 1, 2, or 3 port
|
||||
cards. If unsure, say N.
|
||||
|
||||
+config SERIAL_8250_RT288X
|
||||
+ bool "Ralink RT288x/RT305x serial port support"
|
||||
+ depends on SERIAL_8250 != n && (SOC_RT288X || SOC_RT305X)
|
||||
+ help
|
||||
+ If you have a Ralink RT288x/RT305x SoC based board and want to use the
|
||||
+ serial port, say Y to this option. The driver can handle up to 2 serial
|
||||
+ ports. If unsure, say N.
|
||||
+
|
||||
config SERIAL_8250_RM9K
|
||||
bool "Support for MIPS RM9xxx integrated serial port"
|
||||
depends on SERIAL_8250 != n && SERIAL_RM9000
|
||||
--- a/include/linux/serial_core.h
|
||||
+++ b/include/linux/serial_core.h
|
||||
@@ -317,7 +317,7 @@ struct uart_port {
|
||||
#define UPIO_HUB6 (1)
|
||||
#define UPIO_MEM (2)
|
||||
#define UPIO_MEM32 (3)
|
||||
-#define UPIO_AU (4) /* Au1x00 type IO */
|
||||
+#define UPIO_AU (4) /* Au1x00 and RT288x type IO */
|
||||
#define UPIO_TSI (5) /* Tsi108/109 type IO */
|
||||
#define UPIO_RM9000 (6) /* RM9000 type IO */
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
--- a/arch/mips/pci/Makefile
|
||||
+++ b/arch/mips/pci/Makefile
|
||||
@@ -19,6 +19,7 @@ obj-$(CONFIG_BCM47XX) += pci-bcm47xx.o
|
||||
obj-$(CONFIG_BCM63XX) += pci-bcm63xx.o fixup-bcm63xx.o \
|
||||
ops-bcm63xx.o
|
||||
obj-$(CONFIG_MIPS_ALCHEMY) += pci-alchemy.o
|
||||
+obj-$(CONFIG_SOC_RT288X) += pci-rt288x.o
|
||||
|
||||
#
|
||||
# These are still pretty much in the old state, watch, go blind.
|
||||
29
target/linux/ramips/patches-3.2/103-ethernet.patch
Normal file
29
target/linux/ramips/patches-3.2/103-ethernet.patch
Normal file
@@ -0,0 +1,29 @@
|
||||
--- a/drivers/net/Kconfig
|
||||
+++ b/drivers/net/Kconfig
|
||||
@@ -277,6 +277,16 @@ source "drivers/net/plip/Kconfig"
|
||||
|
||||
source "drivers/net/ppp/Kconfig"
|
||||
|
||||
+config MIPS_RAMIPS_NET
|
||||
+ tristate "Ethernet driver for rt288x/rt305x"
|
||||
+ depends on MIPS_RALINK
|
||||
+ help
|
||||
+ This driver supports the etehrnet mac inside the ralink wisocs
|
||||
+
|
||||
+config RAMIPS_ETH_DEBUG
|
||||
+ bool "Enable debug messages in the Ralink ethernet driver"
|
||||
+ depends on MIPS_RAMIPS_NET
|
||||
+
|
||||
source "drivers/net/slip/Kconfig"
|
||||
|
||||
source "drivers/s390/net/Kconfig"
|
||||
--- a/drivers/net/Makefile
|
||||
+++ b/drivers/net/Makefile
|
||||
@@ -44,6 +44,7 @@ obj-$(CONFIG_PPP_SYNC_TTY) += ppp/
|
||||
obj-$(CONFIG_PPPOE) += ppp/
|
||||
obj-$(CONFIG_PPPOL2TP) += ppp/
|
||||
obj-$(CONFIG_PPTP) += ppp/
|
||||
+obj-$(CONFIG_MIPS_RAMIPS_NET) += ramips.o
|
||||
obj-$(CONFIG_SLIP) += slip/
|
||||
obj-$(CONFIG_SLHC) += slip/
|
||||
obj-$(CONFIG_NET_SB1000) += sb1000.o
|
||||
@@ -0,0 +1,26 @@
|
||||
--- a/drivers/watchdog/Kconfig
|
||||
+++ b/drivers/watchdog/Kconfig
|
||||
@@ -1020,6 +1020,13 @@ config LANTIQ_WDT
|
||||
help
|
||||
Hardware driver for the Lantiq SoC Watchdog Timer.
|
||||
|
||||
+config RAMIPS_WDT
|
||||
+ tristate "Ralink RT288X/RT305X Watchdog Timer"
|
||||
+ depends on SOC_RT288X || SOC_RT305X
|
||||
+ help
|
||||
+ Hardware driver for the built-in watchdog timer on the
|
||||
+ Ralink RT288X/RT305X SoCs.
|
||||
+
|
||||
# PARISC Architecture
|
||||
|
||||
# POWERPC Architecture
|
||||
--- a/drivers/watchdog/Makefile
|
||||
+++ b/drivers/watchdog/Makefile
|
||||
@@ -131,6 +131,7 @@ obj-$(CONFIG_TXX9_WDT) += txx9wdt.o
|
||||
obj-$(CONFIG_OCTEON_WDT) += octeon-wdt.o
|
||||
octeon-wdt-y := octeon-wdt-main.o octeon-wdt-nmi.o
|
||||
obj-$(CONFIG_LANTIQ_WDT) += lantiq_wdt.o
|
||||
+obj-$(CONFIG_RAMIPS_WDT) += ramips_wdt.o
|
||||
|
||||
# PARISC Architecture
|
||||
|
||||
25
target/linux/ramips/patches-3.2/105-ramips-spi-driver.patch
Normal file
25
target/linux/ramips/patches-3.2/105-ramips-spi-driver.patch
Normal file
@@ -0,0 +1,25 @@
|
||||
--- a/drivers/spi/Kconfig
|
||||
+++ b/drivers/spi/Kconfig
|
||||
@@ -289,6 +289,12 @@ config SPI_PXA2XX
|
||||
config SPI_PXA2XX_PCI
|
||||
def_bool SPI_PXA2XX && X86_32 && PCI
|
||||
|
||||
+config SPI_RAMIPS
|
||||
+ tristate "Ralink RT288x/RT305x SPI Controller"
|
||||
+ depends on (SOC_RT288X || SOC_RT305X) && SPI_MASTER
|
||||
+ help
|
||||
+ This selects a driver for the Ralink RT288x/RT305x SPI Controller.
|
||||
+
|
||||
config SPI_S3C24XX
|
||||
tristate "Samsung S3C24XX series SPI"
|
||||
depends on ARCH_S3C2410 && EXPERIMENTAL
|
||||
--- a/drivers/spi/Makefile
|
||||
+++ b/drivers/spi/Makefile
|
||||
@@ -45,6 +45,7 @@ obj-$(CONFIG_SPI_PL022) += spi-pl022.o
|
||||
obj-$(CONFIG_SPI_PPC4xx) += spi-ppc4xx.o
|
||||
obj-$(CONFIG_SPI_PXA2XX) += spi-pxa2xx.o
|
||||
obj-$(CONFIG_SPI_PXA2XX_PCI) += spi-pxa2xx-pci.o
|
||||
+obj-$(CONFIG_SPI_RAMIPS) += ramips_spi.o
|
||||
obj-$(CONFIG_SPI_S3C24XX) += spi-s3c24xx-hw.o
|
||||
spi-s3c24xx-hw-y := spi-s3c24xx.o
|
||||
spi-s3c24xx-hw-$(CONFIG_SPI_S3C24XX_FIQ) += spi-s3c24xx-fiq.o
|
||||
20
target/linux/ramips/patches-3.2/105-usb_dwc_otg.patch
Normal file
20
target/linux/ramips/patches-3.2/105-usb_dwc_otg.patch
Normal file
@@ -0,0 +1,20 @@
|
||||
--- a/drivers/usb/Kconfig
|
||||
+++ b/drivers/usb/Kconfig
|
||||
@@ -181,4 +181,6 @@ source "drivers/usb/gadget/Kconfig"
|
||||
|
||||
source "drivers/usb/otg/Kconfig"
|
||||
|
||||
+source "drivers/usb/dwc_otg/Kconfig"
|
||||
+
|
||||
endif # USB_SUPPORT
|
||||
--- a/drivers/usb/Makefile
|
||||
+++ b/drivers/usb/Makefile
|
||||
@@ -49,6 +49,8 @@ obj-$(CONFIG_EARLY_PRINTK_DBGP) += early
|
||||
obj-$(CONFIG_USB_ATM) += atm/
|
||||
obj-$(CONFIG_USB_SPEEDTOUCH) += atm/
|
||||
|
||||
+obj-$(CONFIG_DWC_OTG) += dwc_otg/
|
||||
+
|
||||
obj-$(CONFIG_USB_MUSB_HDRC) += musb/
|
||||
obj-$(CONFIG_USB_RENESAS_USBHS) += renesas_usbhs/
|
||||
obj-$(CONFIG_USB_OTG_UTILS) += otg/
|
||||
Reference in New Issue
Block a user