aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/mcs814x/patches-3.3
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/mcs814x/patches-3.3')
-rw-r--r--target/linux/mcs814x/patches-3.3/001-platform.patch43
-rw-r--r--target/linux/mcs814x/patches-3.3/003-ethernet.patch16
-rw-r--r--target/linux/mcs814x/patches-3.3/004-usb.patch29
-rw-r--r--target/linux/mcs814x/patches-3.3/005-mcs814x_rng.patch31
-rw-r--r--target/linux/mcs814x/patches-3.3/006-mcs814x_wdt.patch25
-rw-r--r--target/linux/mcs814x/patches-3.3/008-mcs814x_gpio.patch25
-rw-r--r--target/linux/mcs814x/patches-3.3/010-fdt_config_cmdline_extend.patch140
-rw-r--r--target/linux/mcs814x/patches-3.3/011-mcs814x_internal_phy.patch20
8 files changed, 329 insertions, 0 deletions
diff --git a/target/linux/mcs814x/patches-3.3/001-platform.patch b/target/linux/mcs814x/patches-3.3/001-platform.patch
new file mode 100644
index 0000000000..dc153a5d4e
--- /dev/null
+++ b/target/linux/mcs814x/patches-3.3/001-platform.patch
@@ -0,0 +1,43 @@
+--- a/arch/arm/Kconfig
++++ b/arch/arm/Kconfig
+@@ -869,6 +869,21 @@ config ARCH_EXYNOS
+ help
+ Support for SAMSUNG's EXYNOS SoCs (EXYNOS4/5)
+
++config ARCH_MCS814X
++ bool "Moschip MCS814x"
++ select CPU_ARM926T
++ select PCI
++ select FIQ
++ select GENERIC_IRQ_CHIP
++ select GENERIC_GPIO
++ select ARCH_REQUIRE_GPIOLIB
++ select CLKDEV_LOOKUP
++ select ARCH_USES_GETTIMEOFFSET
++ select NEED_MACH_MEMORY_H
++ select MULTI_IRQ_HANDLER
++ help
++ Support for Moschip MCS814x SoCs (MCS8140).
++
+ config ARCH_SHARK
+ bool "Shark"
+ select CPU_SA110
+@@ -1065,6 +1080,8 @@ source "arch/arm/plat-samsung/Kconfig"
+ source "arch/arm/plat-s3c24xx/Kconfig"
+ source "arch/arm/plat-s5p/Kconfig"
+
++source "arch/arm/mach-mcs814x/Kconfig"
++
+ source "arch/arm/plat-spear/Kconfig"
+
+ if ARCH_S3C2410
+--- a/arch/arm/Makefile
++++ b/arch/arm/Makefile
+@@ -179,6 +179,7 @@ machine-$(CONFIG_ARCH_S3C64XX) := s3c64
+ machine-$(CONFIG_ARCH_S5P64X0) := s5p64x0
+ machine-$(CONFIG_ARCH_S5PC100) := s5pc100
+ machine-$(CONFIG_ARCH_S5PV210) := s5pv210
++machine-$(CONFIG_ARCH_MCS814X) := mcs814x
+ machine-$(CONFIG_ARCH_EXYNOS4) := exynos
+ machine-$(CONFIG_ARCH_SA1100) := sa1100
+ machine-$(CONFIG_ARCH_SHARK) := shark
diff --git a/target/linux/mcs814x/patches-3.3/003-ethernet.patch b/target/linux/mcs814x/patches-3.3/003-ethernet.patch
new file mode 100644
index 0000000000..ff4faabfb8
--- /dev/null
+++ b/target/linux/mcs814x/patches-3.3/003-ethernet.patch
@@ -0,0 +1,16 @@
+--- a/drivers/net/ethernet/Kconfig
++++ b/drivers/net/ethernet/Kconfig
+@@ -176,4 +176,6 @@ source "drivers/net/ethernet/via/Kconfig
+ source "drivers/net/ethernet/xilinx/Kconfig"
+ source "drivers/net/ethernet/xircom/Kconfig"
+
++source "drivers/net/ethernet/mcs8140/Kconfig"
++
+ endif # ETHERNET
+--- a/drivers/net/ethernet/Makefile
++++ b/drivers/net/ethernet/Makefile
+@@ -74,3 +74,4 @@ obj-$(CONFIG_NET_VENDOR_TUNDRA) += tundr
+ obj-$(CONFIG_NET_VENDOR_VIA) += via/
+ obj-$(CONFIG_NET_VENDOR_XILINX) += xilinx/
+ obj-$(CONFIG_NET_VENDOR_XIRCOM) += xircom/
++obj-$(CONFIG_NUPORT_ETHERNET_DRIVER) += mcs8140/
diff --git a/target/linux/mcs814x/patches-3.3/004-usb.patch b/target/linux/mcs814x/patches-3.3/004-usb.patch
new file mode 100644
index 0000000000..47f747852c
--- /dev/null
+++ b/target/linux/mcs814x/patches-3.3/004-usb.patch
@@ -0,0 +1,29 @@
+--- a/drivers/usb/host/ehci-hcd.c
++++ b/drivers/usb/host/ehci-hcd.c
+@@ -1381,6 +1381,11 @@ MODULE_LICENSE ("GPL");
+ #define PLATFORM_DRIVER ehci_mv_driver
+ #endif
+
++#ifdef CONFIG_ARCH_MCS814X
++#include "ehci-mcs814x.c"
++#define PLATFORM_DRIVER mcs814x_ehci_driver
++#endif
++
+ #if !defined(PCI_DRIVER) && !defined(PLATFORM_DRIVER) && \
+ !defined(PS3_SYSTEM_BUS_DRIVER) && !defined(OF_PLATFORM_DRIVER) && \
+ !defined(XILINX_OF_PLATFORM_DRIVER)
+--- a/drivers/usb/host/ohci-hcd.c
++++ b/drivers/usb/host/ohci-hcd.c
+@@ -1121,6 +1121,12 @@ MODULE_LICENSE ("GPL");
+ #define PLATFORM_DRIVER ohci_xls_driver
+ #endif
+
++#ifdef CONFIG_ARCH_MCS814X
++#include "ohci-mcs814x.c"
++#define PLATFORM_DRIVER ohci_hcd_mcs814x_driver
++#endif
++
++
+ #if !defined(PCI_DRIVER) && \
+ !defined(PLATFORM_DRIVER) && \
+ !defined(OMAP1_PLATFORM_DRIVER) && \
diff --git a/target/linux/mcs814x/patches-3.3/005-mcs814x_rng.patch b/target/linux/mcs814x/patches-3.3/005-mcs814x_rng.patch
new file mode 100644
index 0000000000..7f7ce8e44c
--- /dev/null
+++ b/target/linux/mcs814x/patches-3.3/005-mcs814x_rng.patch
@@ -0,0 +1,31 @@
+--- a/drivers/char/hw_random/Kconfig
++++ b/drivers/char/hw_random/Kconfig
+@@ -188,6 +188,18 @@ config HW_RANDOM_TX4939
+
+ If unsure, say Y.
+
++config HW_RANDOM_MCS814X
++ tristate "Moschip MCS814x Random Number Generator"
++ depends on HW_RANDOM && ARCH_MCS814X
++ ---help---
++ This driver provides kernel-side support for the Random Number
++ Generator hardware found on Moschip MCS814x processors.
++
++ To compile this driver as a module, choose M here: the
++ module will be called mcs814x-rng.
++
++ If unusure, say Y.
++
+ config HW_RANDOM_MXC_RNGA
+ tristate "Freescale i.MX RNGA Random Number Generator"
+ depends on HW_RANDOM && ARCH_HAS_RNGA
+--- a/drivers/char/hw_random/Makefile
++++ b/drivers/char/hw_random/Makefile
+@@ -17,6 +17,7 @@ obj-$(CONFIG_HW_RANDOM_OMAP) += omap-rng
+ obj-$(CONFIG_HW_RANDOM_PASEMI) += pasemi-rng.o
+ obj-$(CONFIG_HW_RANDOM_VIRTIO) += virtio-rng.o
+ obj-$(CONFIG_HW_RANDOM_TX4939) += tx4939-rng.o
++obj-$(CONFIG_HW_RANDOM_MCS814X) += mcs814x-rng.o
+ obj-$(CONFIG_HW_RANDOM_MXC_RNGA) += mxc-rnga.o
+ obj-$(CONFIG_HW_RANDOM_OCTEON) += octeon-rng.o
+ obj-$(CONFIG_HW_RANDOM_NOMADIK) += nomadik-rng.o
diff --git a/target/linux/mcs814x/patches-3.3/006-mcs814x_wdt.patch b/target/linux/mcs814x/patches-3.3/006-mcs814x_wdt.patch
new file mode 100644
index 0000000000..83547aab78
--- /dev/null
+++ b/target/linux/mcs814x/patches-3.3/006-mcs814x_wdt.patch
@@ -0,0 +1,25 @@
+--- a/drivers/watchdog/Kconfig
++++ b/drivers/watchdog/Kconfig
+@@ -343,6 +343,12 @@ config IMX2_WDT
+ To compile this driver as a module, choose M here: the
+ module will be called imx2_wdt.
+
++config MCS814X_WATCHDOG
++ tristate "Moschip MCS814x watchdog"
++ depends on WATCHDOG_CORE && ARCH_MCS814X
++ help
++ Support for the Moschip MCS814x SoCs on-chip watchdog timer.
++
+ # AVR32 Architecture
+
+ config AT32AP700X_WDT
+--- a/drivers/watchdog/Makefile
++++ b/drivers/watchdog/Makefile
+@@ -53,6 +53,7 @@ obj-$(CONFIG_STMP3XXX_WATCHDOG) += stmp3
+ obj-$(CONFIG_NUC900_WATCHDOG) += nuc900_wdt.o
+ obj-$(CONFIG_TS72XX_WATCHDOG) += ts72xx_wdt.o
+ obj-$(CONFIG_IMX2_WDT) += imx2_wdt.o
++obj-$(CONFIG_MCS814X_WATCHDOG) += mcs814x_wdt.o
+
+ # AVR32 Architecture
+ obj-$(CONFIG_AT32AP700X_WDT) += at32ap700x_wdt.o
diff --git a/target/linux/mcs814x/patches-3.3/008-mcs814x_gpio.patch b/target/linux/mcs814x/patches-3.3/008-mcs814x_gpio.patch
new file mode 100644
index 0000000000..c19a9bae72
--- /dev/null
+++ b/target/linux/mcs814x/patches-3.3/008-mcs814x_gpio.patch
@@ -0,0 +1,25 @@
+--- a/drivers/gpio/Kconfig
++++ b/drivers/gpio/Kconfig
+@@ -450,6 +450,12 @@ config GPIO_MC33880
+ SPI driver for Freescale MC33880 high-side/low-side switch.
+ This provides GPIO interface supporting inputs and outputs.
+
++config GPIO_MCS814X
++ tristate "Moschip MCS814x GPIO support"
++ depends on ARCH_MCS814X
++ help
++ GPIO driver for Moschip MCS814x SoC gpio controllers.
++
+ config GPIO_74X164
+ tristate "74x164 serial-in/parallel-out 8-bits shift register"
+ depends on SPI_MASTER
+--- a/drivers/gpio/Makefile
++++ b/drivers/gpio/Makefile
+@@ -26,6 +26,7 @@ obj-$(CONFIG_GPIO_MAX7300) += gpio-max73
+ obj-$(CONFIG_GPIO_MAX7301) += gpio-max7301.o
+ obj-$(CONFIG_GPIO_MAX732X) += gpio-max732x.o
+ obj-$(CONFIG_GPIO_MC33880) += gpio-mc33880.o
++obj-$(CONFIG_GPIO_MCS814X) += gpio-mcs814x.o
+ obj-$(CONFIG_GPIO_MCP23S08) += gpio-mcp23s08.o
+ obj-$(CONFIG_GPIO_ML_IOH) += gpio-ml-ioh.o
+ obj-$(CONFIG_GPIO_MPC5200) += gpio-mpc5200.o
diff --git a/target/linux/mcs814x/patches-3.3/010-fdt_config_cmdline_extend.patch b/target/linux/mcs814x/patches-3.3/010-fdt_config_cmdline_extend.patch
new file mode 100644
index 0000000000..8735fd8e95
--- /dev/null
+++ b/target/linux/mcs814x/patches-3.3/010-fdt_config_cmdline_extend.patch
@@ -0,0 +1,140 @@
+The old logic assumes CMDLINE_FROM_BOOTLOADER vs. CMDLINE_FORCE and
+ignores CMDLINE_EXTEND. Here's the old logic:
+
+- CONFIG_CMDLINE_FORCE=true
+ CONFIG_CMDLINE
+- dt bootargs=non-empty:
+ dt bootargs
+- dt bootargs=empty, @data is non-empty string
+ @data is left unchanged
+- dt bootargs=empty, @data is empty string
+ CONFIG_CMDLINE (or "" if that's not defined)
+
+The new logic is now documented in of_fdt.h and is copied here for
+reference:
+
+- CONFIG_CMDLINE_FORCE=true
+ CONFIG_CMDLINE
+- CONFIG_CMDLINE_EXTEND=true, @data is non-empty string
+ @data + dt bootargs (even if dt bootargs are empty)
+- CONFIG_CMDLINE_EXTEND=true, @data is empty string
+ CONFIG_CMDLINE + dt bootargs (even if dt bootargs are empty)
+- CMDLINE_FROM_BOOTLOADER=true, dt bootargs=non-empty:
+ dt bootargs
+- CMDLINE_FROM_BOOTLOADER=true, dt bootargs=empty, @data is non-empty string
+ @data is left unchanged
+- CMDLINE_FROM_BOOTLOADER=true, dt bootargs=empty, @data is empty string
+ CONFIG_CMDLINE (or "" if that's not defined)
+
+Signed-off-by: Doug Anderson <diand...@chromium.org>
+CC: devicetree-discuss@lists.ozlabs.org
+CC: Grant Likely <grant.lik...@secretlab.ca>
+CC: Benjamin Herrenschmidt <b...@kernel.crashing.org>
+CC: Rob Herring <rob.herr...@calxeda.com>
+---
+
+--- a/drivers/of/fdt.c
++++ b/drivers/of/fdt.c
+@@ -663,6 +663,29 @@ int __init early_init_dt_scan_memory(uns
+ return 0;
+ }
+
++/*
++ * Convert configs to something easy to use in C code
++ */
++#if defined(CONFIG_CMDLINE_FORCE)
++static const int overwrite_incoming_cmdline = 1;
++static const int read_dt_cmdline;
++static const int concat_cmdline;
++#elif defined(CONFIG_CMDLINE_EXTEND)
++static const int overwrite_incoming_cmdline;
++static const int read_dt_cmdline = 1;
++static const int concat_cmdline = 1;
++#else /* CMDLINE_FROM_BOOTLOADER */
++static const int overwrite_incoming_cmdline;
++static const int read_dt_cmdline = 1;
++static const int concat_cmdline;
++#endif
++
++#ifdef CONFIG_CMDLINE
++static const char *config_cmdline = CONFIG_CMDLINE;
++#else
++static const char *config_cmdline = "";
++#endif
++
+ int __init early_init_dt_scan_chosen(unsigned long node, const char *uname,
+ int depth, void *data)
+ {
+@@ -677,22 +700,26 @@ int __init early_init_dt_scan_chosen(uns
+
+ early_init_dt_check_for_initrd(node);
+
+- /* Retrieve command line */
+- p = of_get_flat_dt_prop(node, "bootargs", &l);
+- if (p != NULL && l > 0)
+- strlcpy(data, p, min((int)l, COMMAND_LINE_SIZE));
+-
+- /*
+- * CONFIG_CMDLINE is meant to be a default in case nothing else
+- * managed to set the command line, unless CONFIG_CMDLINE_FORCE
+- * is set in which case we override whatever was found earlier.
+- */
+-#ifdef CONFIG_CMDLINE
+-#ifndef CONFIG_CMDLINE_FORCE
+- if (!((char *)data)[0])
+-#endif
+- strlcpy(data, CONFIG_CMDLINE, COMMAND_LINE_SIZE);
+-#endif /* CONFIG_CMDLINE */
++ /* Put CONFIG_CMDLINE in if forced or if data had nothing in it to start */
++ if (overwrite_incoming_cmdline || !((char *)data)[0])
++ strlcpy(data, config_cmdline, COMMAND_LINE_SIZE);
++
++ /* Retrieve command line unless forcing */
++ if (read_dt_cmdline) {
++ p = of_get_flat_dt_prop(node, "bootargs", &l);
++ if (p != NULL && l > 0) {
++ if (concat_cmdline) {
++ strlcat(data, " ", COMMAND_LINE_SIZE);
++ strlcat(data, p, min_t(int, (int)l,
++ COMMAND_LINE_SIZE));
++ } else
++ strlcpy(data, p, min_t(int, (int)l,
++ COMMAND_LINE_SIZE));
++ }
++ }
++
++ pr_debug("Command line is: %s\n", (char*)data);
++
+
+ pr_debug("Command line is: %s\n", (char*)data);
+
+--- a/include/linux/of_fdt.h
++++ b/include/linux/of_fdt.h
+@@ -91,6 +91,27 @@ extern int of_flat_dt_is_compatible(unsi
+ extern int of_flat_dt_match(unsigned long node, const char *const *matches);
+ extern unsigned long of_get_flat_dt_root(void);
+
++/*
++ * early_init_dt_scan_chosen - scan the device tree for ramdisk and bootargs
++ *
++ * The boot arguments will be placed into the memory pointed to by @data.
++ * That memory should be COMMAND_LINE_SIZE big and initialized to be a valid
++ * (possibly empty) string. Logic for what will be in @data after this
++ * function finishes:
++ *
++ * - CONFIG_CMDLINE_FORCE=true
++ * CONFIG_CMDLINE
++ * - CONFIG_CMDLINE_EXTEND=true, @data is non-empty string
++ * @data + dt bootargs (even if dt bootargs are empty)
++ * - CONFIG_CMDLINE_EXTEND=true, @data is empty string
++ * CONFIG_CMDLINE + dt bootargs (even if dt bootargs are empty)
++ * - CMDLINE_FROM_BOOTLOADER=true, dt bootargs=non-empty:
++ * dt bootargs
++ * - CMDLINE_FROM_BOOTLOADER=true, dt bootargs=empty, @data is non-empty string
++ * @data is left unchanged
++ * - CMDLINE_FROM_BOOTLOADER=true, dt bootargs=empty, @data is empty string
++ * CONFIG_CMDLINE (or "" if that's not defined)
++ */
+ extern int early_init_dt_scan_chosen(unsigned long node, const char *uname,
+ int depth, void *data);
+ extern void early_init_dt_check_for_initrd(unsigned long node);
diff --git a/target/linux/mcs814x/patches-3.3/011-mcs814x_internal_phy.patch b/target/linux/mcs814x/patches-3.3/011-mcs814x_internal_phy.patch
new file mode 100644
index 0000000000..1b546d7448
--- /dev/null
+++ b/target/linux/mcs814x/patches-3.3/011-mcs814x_internal_phy.patch
@@ -0,0 +1,20 @@
+--- a/drivers/net/phy/Kconfig
++++ b/drivers/net/phy/Kconfig
+@@ -135,6 +135,10 @@ config MICREL_PHY
+ ---help---
+ Currently has a driver for the KSZ8041
+
++config MCS814X_PHY
++ tristate "Driver for the Moschip MCS814x internal PHY"
++ depends on ARCH_MCS814X
++
+ config FIXED_PHY
+ bool "Driver for MDIO Bus/PHY emulation with fixed speed/link PHYs"
+ depends on PHYLIB=y
+--- a/drivers/net/phy/Makefile
++++ b/drivers/net/phy/Makefile
+@@ -38,3 +38,4 @@ obj-$(CONFIG_STE10XP) += ste10Xp.o
+ obj-$(CONFIG_MICREL_PHY) += micrel.o
+ obj-$(CONFIG_MDIO_OCTEON) += mdio-octeon.o
+ obj-$(CONFIG_MICREL_KS8995MA) += spi_ks8995.o
++obj-$(CONFIG_MCS814X_PHY) += mcs814x.o