aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/ramips
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/ramips')
-rw-r--r--target/linux/ramips/patches-3.18/0015-MIPS-ralink-cleanup-early_printk.patch2
-rw-r--r--target/linux/ramips/patches-3.18/0030-pinctrl-ralink-add-pinctrl-driver.patch26
-rw-r--r--target/linux/ramips/patches-3.18/0048-GPIO-ralink-add-mt7621-gpio-controller.patch6
-rw-r--r--target/linux/ramips/patches-3.18/0053-mmc-MIPS-ralink-add-sdhci-for-mt7620a-SoC.patch2
-rw-r--r--target/linux/ramips/patches-3.18/0061-SPI-ralink-add-mt7621-SoC-spi-driver.patch4
-rw-r--r--target/linux/ramips/patches-3.18/0062-mt7621-add-ECHI-OCHI-XCHI-support.patch60
-rw-r--r--target/linux/ramips/patches-3.18/0065-mt7628-pww.patch4
-rw-r--r--target/linux/ramips/patches-3.18/0066-cevt.patch30
-rw-r--r--target/linux/ramips/patches-3.18/0200-linkit_bootstrap.patch2
-rw-r--r--target/linux/ramips/patches-3.18/0300-mt7628_fixes.patch10
-rw-r--r--target/linux/ramips/patches-3.18/0301-mt7688-detect.patch18
-rw-r--r--target/linux/ramips/patches-3.18/0302-mt762x-vendor-id.patch4
-rw-r--r--target/linux/ramips/patches-3.18/0303-alsa.patch32
-rw-r--r--target/linux/ramips/patches-3.18/0304-baud_250000.patch2
14 files changed, 101 insertions, 101 deletions
diff --git a/target/linux/ramips/patches-3.18/0015-MIPS-ralink-cleanup-early_printk.patch b/target/linux/ramips/patches-3.18/0015-MIPS-ralink-cleanup-early_printk.patch
index 3fffa804cf..1e5c90b6c8 100644
--- a/target/linux/ramips/patches-3.18/0015-MIPS-ralink-cleanup-early_printk.patch
+++ b/target/linux/ramips/patches-3.18/0015-MIPS-ralink-cleanup-early_printk.patch
@@ -50,7 +50,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
static inline void uart_w32(u32 val, unsigned reg)
{
-@@ -38,11 +43,46 @@
+@@ -38,11 +43,46 @@ static inline u32 uart_r32(unsigned reg)
return __raw_readl(uart_membase + reg);
}
diff --git a/target/linux/ramips/patches-3.18/0030-pinctrl-ralink-add-pinctrl-driver.patch b/target/linux/ramips/patches-3.18/0030-pinctrl-ralink-add-pinctrl-driver.patch
index 0387a8ee10..63e84019d9 100644
--- a/target/linux/ramips/patches-3.18/0030-pinctrl-ralink-add-pinctrl-driver.patch
+++ b/target/linux/ramips/patches-3.18/0030-pinctrl-ralink-add-pinctrl-driver.patch
@@ -24,7 +24,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
-@@ -453,6 +453,8 @@
+@@ -453,6 +453,8 @@ config RALINK
select CLKDEV_LOOKUP
select ARCH_HAS_RESET_CONTROLLER
select RESET_CONTROLLER
@@ -35,7 +35,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
bool "SGI IP22 (Indy/Indigo2)"
--- a/arch/mips/include/asm/mach-ralink/mt7620.h
+++ b/arch/mips/include/asm/mach-ralink/mt7620.h
-@@ -90,7 +90,6 @@
+@@ -90,7 +90,6 @@ enum mt762x_soc_type {
#define MT7620_DDR2_SIZE_MIN 32
#define MT7620_DDR2_SIZE_MAX 256
@@ -43,7 +43,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
#define MT7620_GPIO_MODE_UART0_SHIFT 2
#define MT7620_GPIO_MODE_UART0_MASK 0x7
#define MT7620_GPIO_MODE_UART0(x) ((x) << MT7620_GPIO_MODE_UART0_SHIFT)
-@@ -102,16 +101,36 @@
+@@ -102,16 +101,36 @@ enum mt762x_soc_type {
#define MT7620_GPIO_MODE_GPIO_UARTF 0x5
#define MT7620_GPIO_MODE_GPIO_I2S 0x6
#define MT7620_GPIO_MODE_GPIO 0x7
@@ -148,7 +148,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
+#endif
--- a/arch/mips/include/asm/mach-ralink/rt305x.h
+++ b/arch/mips/include/asm/mach-ralink/rt305x.h
-@@ -125,24 +125,29 @@
+@@ -125,24 +125,29 @@ static inline int soc_is_rt5350(void)
#define RT305X_GPIO_GE0_TXD0 40
#define RT305X_GPIO_GE0_RXCLK 51
@@ -263,7 +263,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
#include "common.h"
-@@ -47,118 +48,58 @@
+@@ -47,118 +48,58 @@ enum mt762x_soc_type mt762x_soc;
/* does the board have sdram or ddram */
static int dram_type;
@@ -498,7 +498,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
};
static void rt288x_wdt_reset(void)
-@@ -69,11 +50,6 @@
+@@ -69,11 +50,6 @@ static void rt288x_wdt_reset(void)
rt_sysc_w32(t, SYSC_REG_CLKCFG);
}
@@ -510,7 +510,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
void __init ralink_clk_init(void)
{
unsigned long cpu_rate, wmac_rate = 40000000;
-@@ -141,4 +117,6 @@
+@@ -141,4 +117,6 @@ void prom_soc_init(struct ralink_soc_inf
soc_info->mem_base = RT2880_SDRAM_BASE;
soc_info->mem_size_min = RT2880_MEM_SIZE_MIN;
soc_info->mem_size_max = RT2880_MEM_SIZE_MAX;
@@ -673,7 +673,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
};
static void rt305x_wdt_reset(void)
-@@ -114,14 +100,6 @@
+@@ -114,14 +100,6 @@ static void rt305x_wdt_reset(void)
rt_sysc_w32(t, SYSC_REG_SYSTEM_CONFIG);
}
@@ -688,7 +688,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
static unsigned long rt5350_get_mem_size(void)
{
void __iomem *sysc = (void __iomem *) KSEG1ADDR(RT305X_SYSC_BASE);
-@@ -290,11 +268,14 @@
+@@ -290,11 +268,14 @@ void prom_soc_init(struct ralink_soc_inf
soc_info->mem_base = RT305X_SDRAM_BASE;
if (soc_is_rt5350()) {
soc_info->mem_size = rt5350_get_mem_size();
@@ -876,7 +876,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
};
static void rt3883_wdt_reset(void)
-@@ -155,17 +73,6 @@
+@@ -155,17 +73,6 @@ static void rt3883_wdt_reset(void)
rt_sysc_w32(t, RT3883_SYSC_REG_SYSCFG1);
}
@@ -894,7 +894,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
void __init ralink_clk_init(void)
{
unsigned long cpu_rate, sys_rate;
-@@ -244,4 +151,6 @@
+@@ -244,4 +151,6 @@ void prom_soc_init(struct ralink_soc_inf
soc_info->mem_base = RT3883_SDRAM_BASE;
soc_info->mem_size_min = RT3883_MEM_SIZE_MIN;
soc_info->mem_size_max = RT3883_MEM_SIZE_MAX;
@@ -903,7 +903,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
}
--- a/drivers/pinctrl/Kconfig
+++ b/drivers/pinctrl/Kconfig
-@@ -103,6 +103,11 @@
+@@ -103,6 +103,11 @@ config PINCTRL_LANTIQ
select PINMUX
select PINCONF
@@ -917,7 +917,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
depends on SOC_FALCON
--- a/drivers/pinctrl/Makefile
+++ b/drivers/pinctrl/Makefile
-@@ -20,6 +20,7 @@
+@@ -20,6 +20,7 @@ obj-$(CONFIG_PINCTRL_BCM281XX) += pinctr
obj-$(CONFIG_PINCTRL_FALCON) += pinctrl-falcon.o
obj-$(CONFIG_PINCTRL_PALMAS) += pinctrl-palmas.o
obj-$(CONFIG_PINCTRL_ROCKCHIP) += pinctrl-rockchip.o
diff --git a/target/linux/ramips/patches-3.18/0048-GPIO-ralink-add-mt7621-gpio-controller.patch b/target/linux/ramips/patches-3.18/0048-GPIO-ralink-add-mt7621-gpio-controller.patch
index cb58e16a06..429af73b39 100644
--- a/target/linux/ramips/patches-3.18/0048-GPIO-ralink-add-mt7621-gpio-controller.patch
+++ b/target/linux/ramips/patches-3.18/0048-GPIO-ralink-add-mt7621-gpio-controller.patch
@@ -14,7 +14,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
-@@ -455,6 +455,9 @@
+@@ -455,6 +455,9 @@ config RALINK
select RESET_CONTROLLER
select PINCTRL
select PINCTRL_RT2880
@@ -26,7 +26,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
bool "SGI IP22 (Indy/Indigo2)"
--- a/drivers/gpio/Kconfig
+++ b/drivers/gpio/Kconfig
-@@ -898,6 +898,12 @@
+@@ -898,6 +898,12 @@ config GPIO_BCM_KONA
help
Turn on GPIO support for Broadcom "Kona" chips.
@@ -41,7 +41,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
config GPIO_VIPERBOARD
--- a/drivers/gpio/Makefile
+++ b/drivers/gpio/Makefile
-@@ -107,3 +107,5 @@
+@@ -107,3 +107,5 @@ obj-$(CONFIG_GPIO_XILINX) += gpio-xilinx
obj-$(CONFIG_GPIO_XTENSA) += gpio-xtensa.o
obj-$(CONFIG_GPIO_ZEVIO) += gpio-zevio.o
obj-$(CONFIG_GPIO_ZYNQ) += gpio-zynq.o
diff --git a/target/linux/ramips/patches-3.18/0053-mmc-MIPS-ralink-add-sdhci-for-mt7620a-SoC.patch b/target/linux/ramips/patches-3.18/0053-mmc-MIPS-ralink-add-sdhci-for-mt7620a-SoC.patch
index a3688138f8..2932eb6b07 100644
--- a/target/linux/ramips/patches-3.18/0053-mmc-MIPS-ralink-add-sdhci-for-mt7620a-SoC.patch
+++ b/target/linux/ramips/patches-3.18/0053-mmc-MIPS-ralink-add-sdhci-for-mt7620a-SoC.patch
@@ -25,7 +25,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
--- a/drivers/mmc/host/Kconfig
+++ b/drivers/mmc/host/Kconfig
-@@ -773,3 +773,5 @@
+@@ -773,3 +773,5 @@ config MMC_SUNXI
help
This selects support for the SD/MMC Host Controller on
Allwinner sunxi SoCs.
diff --git a/target/linux/ramips/patches-3.18/0061-SPI-ralink-add-mt7621-SoC-spi-driver.patch b/target/linux/ramips/patches-3.18/0061-SPI-ralink-add-mt7621-SoC-spi-driver.patch
index 589c67e707..5aa119e1df 100644
--- a/target/linux/ramips/patches-3.18/0061-SPI-ralink-add-mt7621-SoC-spi-driver.patch
+++ b/target/linux/ramips/patches-3.18/0061-SPI-ralink-add-mt7621-SoC-spi-driver.patch
@@ -1,6 +1,6 @@
--- a/drivers/spi/Kconfig
+++ b/drivers/spi/Kconfig
-@@ -439,6 +439,12 @@
+@@ -439,6 +439,12 @@ config SPI_RT2880
help
This selects a driver for the Ralink RT288x/RT305x SPI Controller.
@@ -15,7 +15,7 @@
depends on ARCH_S3C24XX
--- a/drivers/spi/Makefile
+++ b/drivers/spi/Makefile
-@@ -46,6 +46,7 @@
+@@ -46,6 +46,7 @@ obj-$(CONFIG_SPI_LM70_LLP) += spi-lm70l
obj-$(CONFIG_SPI_MPC512x_PSC) += spi-mpc512x-psc.o
obj-$(CONFIG_SPI_MPC52xx_PSC) += spi-mpc52xx-psc.o
obj-$(CONFIG_SPI_MPC52xx) += spi-mpc52xx.o
diff --git a/target/linux/ramips/patches-3.18/0062-mt7621-add-ECHI-OCHI-XCHI-support.patch b/target/linux/ramips/patches-3.18/0062-mt7621-add-ECHI-OCHI-XCHI-support.patch
index 98e8ca5a49..f407578762 100644
--- a/target/linux/ramips/patches-3.18/0062-mt7621-add-ECHI-OCHI-XCHI-support.patch
+++ b/target/linux/ramips/patches-3.18/0062-mt7621-add-ECHI-OCHI-XCHI-support.patch
@@ -5145,7 +5145,7 @@
/*
* For xHCI 1.0 host controllers, TD size is the number of max packet sized
* packets remaining in the TD (*not* including this TRB).
-@@ -3141,6 +3175,7 @@ static int queue_bulk_sg_tx(struct xhci_
+@@ -3161,6 +3195,7 @@ static int queue_bulk_sg_tx(struct xhci_
}
/* Set the TRB length, TD size, and interrupter fields. */
@@ -5153,7 +5153,7 @@
if (xhci->hci_version < 0x100) {
remainder = xhci_td_remainder(
urb->transfer_buffer_length -
-@@ -3150,6 +3185,12 @@ static int queue_bulk_sg_tx(struct xhci_
+@@ -3170,6 +3205,12 @@ static int queue_bulk_sg_tx(struct xhci_
trb_buff_len, total_packet_count, urb,
num_trbs - 1);
}
@@ -5166,7 +5166,7 @@
length_field = TRB_LEN(trb_buff_len) |
remainder |
TRB_INTR_TARGET(0);
-@@ -3212,6 +3253,9 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
+@@ -3234,6 +3275,9 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
int running_total, trb_buff_len, ret;
unsigned int total_packet_count;
u64 addr;
@@ -5176,10 +5176,10 @@
if (urb->num_sgs)
return queue_bulk_sg_tx(xhci, mem_flags, urb, slot_id, ep_index);
-@@ -3237,6 +3281,25 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
+@@ -3258,6 +3302,25 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
+ num_trbs++;
running_total += TRB_MAX_BUFF_SIZE;
}
- /* FIXME: this doesn't deal with URB_ZERO_PACKET - need one more */
+#if defined (CONFIG_USB_MT7621_XHCI_PLATFORM)
+ switch(urb->dev->speed){
+ case USB_SPEED_SUPER:
@@ -5202,7 +5202,7 @@
ret = prepare_transfer(xhci, xhci->devs[slot_id],
ep_index, urb->stream_id,
-@@ -3296,6 +3359,7 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
+@@ -3334,6 +3397,7 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
field |= TRB_ISP;
/* Set the TRB length, TD size, and interrupter fields. */
@@ -5210,7 +5210,7 @@
if (xhci->hci_version < 0x100) {
remainder = xhci_td_remainder(
urb->transfer_buffer_length -
-@@ -3305,6 +3369,10 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
+@@ -3343,6 +3407,10 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
trb_buff_len, total_packet_count, urb,
num_trbs - 1);
}
@@ -5221,19 +5221,19 @@
length_field = TRB_LEN(trb_buff_len) |
remainder |
TRB_INTR_TARGET(0);
-@@ -3394,7 +3462,11 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *
+@@ -3432,7 +3500,11 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *
field |= 0x1;
- /* xHCI 1.0 6.4.1.2.1: Transfer Type field */
+ /* xHCI 1.0/1.1 6.4.1.2.1: Transfer Type field */
+#if defined (CONFIG_USB_MT7621_XHCI_PLATFORM)
+ if (1) {
+#else
- if (xhci->hci_version == 0x100) {
+ if (xhci->hci_version >= 0x100) {
+#endif
if (urb->transfer_buffer_length > 0) {
if (setup->bRequestType & USB_DIR_IN)
field |= TRB_TX_TYPE(TRB_DATA_IN);
-@@ -3418,7 +3490,12 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *
+@@ -3456,7 +3528,12 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *
field = TRB_TYPE(TRB_DATA);
length_field = TRB_LEN(urb->transfer_buffer_length) |
@@ -5246,7 +5246,7 @@
TRB_INTR_TARGET(0);
if (urb->transfer_buffer_length > 0) {
if (setup->bRequestType & USB_DIR_IN)
-@@ -3541,6 +3618,9 @@ static int xhci_queue_isoc_tx(struct xhc
+@@ -3579,6 +3656,9 @@ static int xhci_queue_isoc_tx(struct xhc
u64 start_addr, addr;
int i, j;
bool more_trbs_coming;
@@ -5256,7 +5256,7 @@
ep_ring = xhci->devs[slot_id]->eps[ep_index].ring;
-@@ -3554,6 +3634,21 @@ static int xhci_queue_isoc_tx(struct xhc
+@@ -3592,6 +3672,21 @@ static int xhci_queue_isoc_tx(struct xhc
start_trb = &ep_ring->enqueue->generic;
start_cycle = ep_ring->cycle_state;
@@ -5278,7 +5278,7 @@
urb_priv = urb->hcpriv;
/* Queue the first TRB, even if it's zero-length */
for (i = 0; i < num_tds; i++) {
-@@ -3625,9 +3720,13 @@ static int xhci_queue_isoc_tx(struct xhc
+@@ -3663,9 +3758,13 @@ static int xhci_queue_isoc_tx(struct xhc
} else {
td->last_trb = ep_ring->enqueue;
field |= TRB_IOC;
@@ -5292,7 +5292,7 @@
/* Set BEI bit except for the last td */
if (i < num_tds - 1)
field |= TRB_BEI;
-@@ -3642,6 +3741,7 @@ static int xhci_queue_isoc_tx(struct xhc
+@@ -3680,6 +3779,7 @@ static int xhci_queue_isoc_tx(struct xhc
trb_buff_len = td_remain_len;
/* Set the TRB length, TD size, & interrupter fields. */
@@ -5300,7 +5300,7 @@
if (xhci->hci_version < 0x100) {
remainder = xhci_td_remainder(
td_len - running_total);
-@@ -3651,6 +3751,10 @@ static int xhci_queue_isoc_tx(struct xhc
+@@ -3689,6 +3789,10 @@ static int xhci_queue_isoc_tx(struct xhc
total_packet_count, urb,
(trbs_per_td - j - 1));
}
@@ -5349,7 +5349,7 @@
/* TODO: copied from ehci-hcd.c - can this be refactored? */
/*
* xhci_handshake - spin reading hc until handshake completes or fails
-@@ -198,7 +220,7 @@ int xhci_reset(struct xhci_hcd *xhci)
+@@ -199,7 +221,7 @@ int xhci_reset(struct xhci_hcd *xhci)
return ret;
}
@@ -5358,7 +5358,7 @@
static int xhci_free_msi(struct xhci_hcd *xhci)
{
int i;
-@@ -448,6 +470,11 @@ static void compliance_mode_recovery(uns
+@@ -449,6 +471,11 @@ static void compliance_mode_recovery(uns
"Attempting compliance mode recovery");
hcd = xhci->shared_hcd;
@@ -5370,7 +5370,7 @@
if (hcd->state == HC_STATE_SUSPENDED)
usb_hcd_resume_root_hub(hcd);
-@@ -497,6 +524,9 @@ static bool xhci_compliance_mode_recover
+@@ -498,6 +525,9 @@ static bool xhci_compliance_mode_recover
{
const char *dmi_product_name, *dmi_sys_vendor;
@@ -5380,7 +5380,7 @@
dmi_product_name = dmi_get_system_info(DMI_PRODUCT_NAME);
dmi_sys_vendor = dmi_get_system_info(DMI_SYS_VENDOR);
if (!dmi_product_name || !dmi_sys_vendor)
-@@ -542,6 +572,10 @@ int xhci_init(struct usb_hcd *hcd)
+@@ -543,6 +573,10 @@ int xhci_init(struct usb_hcd *hcd)
xhci_dbg_trace(xhci, trace_xhci_dbg_init,
"xHCI doesn't need link TRB QUIRK");
}
@@ -5391,7 +5391,7 @@
retval = xhci_mem_init(xhci, GFP_KERNEL);
xhci_dbg_trace(xhci, trace_xhci_dbg_init, "Finished xhci_init");
-@@ -626,7 +660,11 @@ int xhci_run(struct usb_hcd *hcd)
+@@ -627,7 +661,11 @@ int xhci_run(struct usb_hcd *hcd)
"// Set the interrupt modulation register");
temp = readl(&xhci->ir_set->irq_control);
temp &= ~ER_IRQ_INTERVAL_MASK;
@@ -5403,7 +5403,7 @@
writel(temp, &xhci->ir_set->irq_control);
/* Set the HCD state before we enable the irqs */
-@@ -651,6 +689,9 @@ int xhci_run(struct usb_hcd *hcd)
+@@ -652,6 +690,9 @@ int xhci_run(struct usb_hcd *hcd)
xhci_queue_vendor_command(xhci, command, 0, 0, 0,
TRB_TYPE(TRB_NEC_GET_FW));
}
@@ -5413,7 +5413,7 @@
xhci_dbg_trace(xhci, trace_xhci_dbg_init,
"Finished xhci_run for USB2 roothub");
return 0;
-@@ -1642,6 +1683,14 @@ int xhci_drop_endpoint(struct usb_hcd *h
+@@ -1648,6 +1689,14 @@ int xhci_drop_endpoint(struct usb_hcd *h
u32 drop_flag;
u32 new_add_flags, new_drop_flags;
int ret;
@@ -5428,7 +5428,7 @@
ret = xhci_check_args(hcd, udev, ep, 1, true, __func__);
if (ret <= 0)
-@@ -1689,6 +1738,40 @@ int xhci_drop_endpoint(struct usb_hcd *h
+@@ -1695,6 +1744,40 @@ int xhci_drop_endpoint(struct usb_hcd *h
xhci_endpoint_zero(xhci, xhci->devs[udev->slot_id], ep);
@@ -5469,7 +5469,7 @@
xhci_dbg(xhci, "drop ep 0x%x, slot id %d, new drop flags = %#x, new add flags = %#x\n",
(unsigned int) ep->desc.bEndpointAddress,
udev->slot_id,
-@@ -1721,6 +1804,19 @@ int xhci_add_endpoint(struct usb_hcd *hc
+@@ -1727,6 +1810,19 @@ int xhci_add_endpoint(struct usb_hcd *hc
u32 new_add_flags, new_drop_flags;
struct xhci_virt_device *virt_dev;
int ret = 0;
@@ -5489,7 +5489,7 @@
ret = xhci_check_args(hcd, udev, ep, 1, true, __func__);
if (ret <= 0) {
-@@ -1787,6 +1883,56 @@ int xhci_add_endpoint(struct usb_hcd *hc
+@@ -1793,6 +1889,56 @@ int xhci_add_endpoint(struct usb_hcd *hc
return -ENOMEM;
}
@@ -5546,7 +5546,7 @@
ctrl_ctx->add_flags |= cpu_to_le32(added_ctxs);
new_add_flags = le32_to_cpu(ctrl_ctx->add_flags);
-@@ -4454,8 +4600,14 @@ static u16 xhci_call_host_update_timeout
+@@ -4463,8 +4609,14 @@ static u16 xhci_call_host_update_timeout
u16 *timeout)
{
if (state == USB3_LPM_U1)
@@ -5561,7 +5561,7 @@
return xhci_calculate_u2_timeout(xhci, udev, desc);
return USB3_LPM_DISABLED;
-@@ -4840,7 +4992,9 @@ int xhci_gen_setup(struct usb_hcd *hcd,
+@@ -4849,7 +5001,9 @@ int xhci_gen_setup(struct usb_hcd *hcd,
hcd->self.no_sg_constraint = 1;
/* XHCI controllers don't stop the ep queue on short packets :| */
@@ -5571,7 +5571,7 @@
if (usb_hcd_is_primary_hcd(hcd)) {
xhci = kzalloc(sizeof(struct xhci_hcd), GFP_KERNEL);
-@@ -4903,6 +5057,10 @@ int xhci_gen_setup(struct usb_hcd *hcd,
+@@ -4912,6 +5066,10 @@ int xhci_gen_setup(struct usb_hcd *hcd,
goto error;
xhci_dbg(xhci, "Reset complete\n");
@@ -5582,7 +5582,7 @@
/* Set dma_mask and coherent_dma_mask to 64-bits,
* if xHC supports 64-bit addressing */
if (HCC_64BIT_ADDR(xhci->hcc_params) &&
-@@ -4997,8 +5155,57 @@ MODULE_DESCRIPTION(DRIVER_DESC);
+@@ -5006,8 +5164,57 @@ MODULE_DESCRIPTION(DRIVER_DESC);
MODULE_AUTHOR(DRIVER_AUTHOR);
MODULE_LICENSE("GPL");
diff --git a/target/linux/ramips/patches-3.18/0065-mt7628-pww.patch b/target/linux/ramips/patches-3.18/0065-mt7628-pww.patch
index 4b82a7ef9e..dc2ca95e4d 100644
--- a/target/linux/ramips/patches-3.18/0065-mt7628-pww.patch
+++ b/target/linux/ramips/patches-3.18/0065-mt7628-pww.patch
@@ -1,6 +1,6 @@
--- a/drivers/pwm/Kconfig
+++ b/drivers/pwm/Kconfig
-@@ -177,6 +177,15 @@
+@@ -177,6 +177,15 @@ config PWM_LPSS_PLATFORM
To compile this driver as a module, choose M here: the module
will be called pwm-lpss-platform.
@@ -18,7 +18,7 @@
depends on ARCH_MXS && OF
--- a/drivers/pwm/Makefile
+++ b/drivers/pwm/Makefile
-@@ -15,6 +15,7 @@
+@@ -15,6 +15,7 @@ obj-$(CONFIG_PWM_LPC32XX) += pwm-lpc32xx
obj-$(CONFIG_PWM_LPSS) += pwm-lpss.o
obj-$(CONFIG_PWM_LPSS_PCI) += pwm-lpss-pci.o
obj-$(CONFIG_PWM_LPSS_PLATFORM) += pwm-lpss-platform.o
diff --git a/target/linux/ramips/patches-3.18/0066-cevt.patch b/target/linux/ramips/patches-3.18/0066-cevt.patch
index 01cb588cd9..9eb6cb612b 100644
--- a/target/linux/ramips/patches-3.18/0066-cevt.patch
+++ b/target/linux/ramips/patches-3.18/0066-cevt.patch
@@ -3,7 +3,7 @@
@@ -45,18 +45,33 @@ static void (*systick_freq_scaling)(stru
static void systick_set_clock_mode(enum clock_event_mode mode,
struct clock_event_device *evt);
-
+
+static inline unsigned int read_count(struct systick_device *sdev)
+{
+ return ioread32(sdev->membase + SYSTICK_COUNT);
@@ -25,7 +25,7 @@
struct systick_device *sdev;
- u32 count;
+ int res;
-
+
sdev = container_of(evt, struct systick_device, dev);
- count = ioread32(sdev->membase + SYSTICK_COUNT);
- count = (count + delta) % SYSTICK_FREQ;
@@ -33,21 +33,21 @@
+ delta += read_count(sdev);
+ write_compare(sdev, delta);
+ res = ((int)(read_count(sdev) - delta) >= 0) ? -ETIME : 0;
-
+
- return 0;
+ return res;
}
-
+
static void systick_event_handler(struct clock_event_device *dev)
@@ -66,20 +81,25 @@ static void systick_event_handler(struct
-
+
static irqreturn_t systick_interrupt(int irq, void *dev_id)
{
- struct clock_event_device *dev = (struct clock_event_device *) dev_id;
+ int ret = 0;
+ struct clock_event_device *cdev;
+ struct systick_device *sdev;
-
+
- dev->event_handler(dev);
+ if (read_c0_cause() & STATUSF_IP7) {
+ cdev = (struct clock_event_device *) dev_id;
@@ -58,11 +58,11 @@
+ cdev->event_handler(cdev);
+ ret = 1;
+ }
-
+
- return IRQ_HANDLED;
+ return IRQ_RETVAL(ret);
}
-
+
static struct systick_device systick = {
.dev = {
- /*
@@ -76,7 +76,7 @@
@@ -126,13 +146,14 @@ static void systick_set_clock_mode(enum
systick_freq_scaling(sdev, 1);
break;
-
+
+ case CLOCK_EVT_MODE_UNUSED:
case CLOCK_EVT_MODE_SHUTDOWN:
if (systick_freq_scaling)
@@ -88,26 +88,26 @@
- iowrite32(0, systick.membase + SYSTICK_CONFIG);
+ iowrite32(CFG_CNT_EN, systick.membase + SYSTICK_CONFIG);
break;
-
+
default:
@@ -142,38 +163,45 @@ static void systick_set_clock_mode(enum
}
-
+
static const struct of_device_id systick_match[] = {
- { .compatible = "ralink,mt7620-systick", .data = mt7620_freq_scaling},
+ { .compatible = "ralink,mt7620a-systick", .data = mt7620_freq_scaling},
{},
};
-
+
static void __init ralink_systick_init(struct device_node *np)
{
const struct of_device_id *match;
+ int rating = 200;
-
+
systick.membase = of_iomap(np, 0);
if (!systick.membase)
return;
-
+
match = of_match_node(systick_match, np);
- if (match)
+ if (match) {
@@ -118,7 +118,7 @@
+ */
+ rating = 310;
+ }
-
+
- systick_irqaction.name = np->name;
- systick.dev.name = np->name;
- clockevents_calc_mult_shift(&systick.dev, SYSTICK_FREQ, 60);
diff --git a/target/linux/ramips/patches-3.18/0200-linkit_bootstrap.patch b/target/linux/ramips/patches-3.18/0200-linkit_bootstrap.patch
index 1471c7d329..70e8170c44 100644
--- a/target/linux/ramips/patches-3.18/0200-linkit_bootstrap.patch
+++ b/target/linux/ramips/patches-3.18/0200-linkit_bootstrap.patch
@@ -1,6 +1,6 @@
--- a/drivers/misc/Makefile
+++ b/drivers/misc/Makefile
-@@ -56,3 +56,4 @@
+@@ -56,3 +56,4 @@ obj-$(CONFIG_GENWQE) += genwqe/
obj-$(CONFIG_ECHO) += echo/
obj-$(CONFIG_VEXPRESS_SYSCFG) += vexpress-syscfg.o
obj-$(CONFIG_CXL_BASE) += cxl/
diff --git a/target/linux/ramips/patches-3.18/0300-mt7628_fixes.patch b/target/linux/ramips/patches-3.18/0300-mt7628_fixes.patch
index 1a5a0ba1a2..443e07afed 100644
--- a/target/linux/ramips/patches-3.18/0300-mt7628_fixes.patch
+++ b/target/linux/ramips/patches-3.18/0300-mt7628_fixes.patch
@@ -1,6 +1,6 @@
--- a/arch/mips/ralink/mt7620.c
+++ b/arch/mips/ralink/mt7620.c
-@@ -101,28 +101,28 @@
+@@ -101,28 +101,28 @@ static struct rt2880_pmx_group mt7620a_p
};
static struct rt2880_pmx_func pwm1_grp_mt7628[] = {
@@ -35,7 +35,7 @@
FUNC("pwm", 2, 45, 2),
FUNC("gpio", 1, 45, 2),
FUNC("uart1", 0, 45, 2),
-@@ -165,7 +165,7 @@
+@@ -165,7 +165,7 @@ static struct rt2880_pmx_func spi_cs1_gr
FUNC("-", 3, 6, 1),
FUNC("refclk", 2, 6, 1),
FUNC("gpio", 1, 6, 1),
@@ -44,7 +44,7 @@
};
static struct rt2880_pmx_func spis_grp_mt7628[] = {
-@@ -182,27 +182,43 @@
+@@ -182,27 +182,43 @@ static struct rt2880_pmx_func gpio_grp_m
FUNC("gpio", 0, 11, 1),
};
@@ -107,7 +107,7 @@
GRP_G("uart2", uart2_grp_mt7628, MT7628_GPIO_MODE_MASK, 1, MT7628_GPIO_MODE_UART2),
GRP_G("uart1", uart1_grp_mt7628, MT7628_GPIO_MODE_MASK, 1, MT7628_GPIO_MODE_UART1),
GRP_G("i2c", i2c_grp_mt7628, MT7628_GPIO_MODE_MASK, 1, MT7628_GPIO_MODE_I2C),
-@@ -216,6 +232,8 @@
+@@ -216,6 +232,8 @@ static struct rt2880_pmx_group mt7628an_
GRP_G("spi cs1", spi_cs1_grp_mt7628, MT7628_GPIO_MODE_MASK, 1, MT7628_GPIO_MODE_CS1),
GRP_G("spis", spis_grp_mt7628, MT7628_GPIO_MODE_MASK, 1, MT7628_GPIO_MODE_SPIS),
GRP_G("gpio", gpio_grp_mt7628, MT7628_GPIO_MODE_MASK, 1, MT7628_GPIO_MODE_GPIO),
@@ -116,7 +116,7 @@
{ 0 }
};
-@@ -529,7 +547,11 @@
+@@ -529,7 +547,11 @@ void prom_soc_init(struct ralink_soc_inf
(rev & CHIP_REV_ECO_MASK));
cfg0 = __raw_readl(sysc + SYSC_REG_SYSTEM_CONFIG0);
diff --git a/target/linux/ramips/patches-3.18/0301-mt7688-detect.patch b/target/linux/ramips/patches-3.18/0301-mt7688-detect.patch
index fc05a981a1..1fddf11dc3 100644
--- a/target/linux/ramips/patches-3.18/0301-mt7688-detect.patch
+++ b/target/linux/ramips/patches-3.18/0301-mt7688-detect.patch
@@ -20,7 +20,7 @@
/* does the board have sdram or ddram */
static int dram_type;
-@@ -391,7 +394,7 @@
+@@ -391,7 +394,7 @@ void __init ralink_clk_init(void)
#define RINT(x) ((x) / 1000000)
#define RFRAC(x) (((x) / 1000) % 1000)
@@ -29,7 +29,7 @@
if (xtal_rate == MHZ(40))
cpu_rate = MHZ(580);
else
-@@ -436,7 +439,8 @@
+@@ -436,7 +439,8 @@ void __init ralink_clk_init(void)
ralink_clk_add("10000e00.uart2", periph_rate);
ralink_clk_add("10180000.wmac", xtal_rate);
@@ -39,8 +39,8 @@
/*
* When the CPU goes into sleep mode, the BUS clock will be too low for
* USB to function properly
-@@ -536,8 +540,15 @@
- #endif
+@@ -533,8 +537,15 @@ void prom_soc_init(struct ralink_soc_inf
+ soc_info->compatible = "ralink,mt7620n-soc";
}
} else if (n0 == MT7620_CHIP_NAME0 && n1 == MT7628_CHIP_NAME1) {
- ralink_soc = MT762X_SOC_MT7628AN;
@@ -57,7 +57,7 @@
soc_info->compatible = "ralink,mt7628an-soc";
} else {
panic("mt762x: unknown SoC, n0:%08x n1:%08x\n", n0, n1);
-@@ -551,13 +562,13 @@
+@@ -548,13 +559,13 @@ void prom_soc_init(struct ralink_soc_inf
cfg0 = __raw_readl(sysc + SYSC_REG_SYSTEM_CONFIG0);
@@ -73,7 +73,7 @@
mt7628_dram_init(soc_info);
else
mt7620_dram_init(soc_info);
-@@ -570,7 +581,7 @@
+@@ -567,7 +578,7 @@ void prom_soc_init(struct ralink_soc_inf
pr_info("Digital PMU set to %s control\n",
(pmu1 & DIG_SW_SEL) ? ("sw") : ("hw"));
@@ -84,7 +84,7 @@
rt2880_pinmux_data = mt7620a_pinmux_data;
--- a/arch/mips/include/asm/mach-ralink/ralink_regs.h
+++ b/arch/mips/include/asm/mach-ralink/ralink_regs.h
-@@ -24,6 +24,7 @@
+@@ -24,6 +24,7 @@ enum ralink_soc_type {
MT762X_SOC_MT7620N,
MT762X_SOC_MT7621AT,
MT762X_SOC_MT7628AN,
@@ -94,7 +94,7 @@
--- a/drivers/net/ethernet/ralink/esw_rt3052.c
+++ b/drivers/net/ethernet/ralink/esw_rt3052.c
-@@ -611,7 +611,7 @@
+@@ -611,7 +611,7 @@ static void esw_hw_init(struct rt305x_es
rt305x_mii_write(esw, 0, 29, 0x598b);
/* select local register */
rt305x_mii_write(esw, 0, 31, 0x8000);
@@ -103,7 +103,7 @@
int i;
// u32 phy_val;
u32 val;
-@@ -1042,7 +1042,7 @@
+@@ -1042,7 +1042,7 @@ esw_get_port_tr_badgood(struct switch_de
int shift = attr->id == RT5350_ESW_ATTR_PORT_TR_GOOD ? 0 : 16;
u32 reg;
diff --git a/target/linux/ramips/patches-3.18/0302-mt762x-vendor-id.patch b/target/linux/ramips/patches-3.18/0302-mt762x-vendor-id.patch
index 6b05a13abd..ca56f5cb49 100644
--- a/target/linux/ramips/patches-3.18/0302-mt762x-vendor-id.patch
+++ b/target/linux/ramips/patches-3.18/0302-mt762x-vendor-id.patch
@@ -1,6 +1,6 @@
--- a/arch/mips/ralink/mt7620.c
+++ b/arch/mips/ralink/mt7620.c
-@@ -555,7 +555,7 @@
+@@ -552,7 +552,7 @@ void prom_soc_init(struct ralink_soc_inf
}
snprintf(soc_info->sys_type, RAMIPS_SYS_TYPE_LEN,
@@ -11,7 +11,7 @@
(rev & CHIP_REV_ECO_MASK));
--- a/arch/mips/ralink/mt7621.c
+++ b/arch/mips/ralink/mt7621.c
-@@ -168,7 +168,7 @@
+@@ -185,7 +185,7 @@ void prom_soc_init(struct ralink_soc_inf
rev = __raw_readl(sysc + SYSC_REG_CHIP_REV);
snprintf(soc_info->sys_type, RAMIPS_SYS_TYPE_LEN,
diff --git a/target/linux/ramips/patches-3.18/0303-alsa.patch b/target/linux/ramips/patches-3.18/0303-alsa.patch
index a35d7a9480..d6d489249f 100644
--- a/target/linux/ramips/patches-3.18/0303-alsa.patch
+++ b/target/linux/ramips/patches-3.18/0303-alsa.patch
@@ -1,6 +1,6 @@
--- a/sound/soc/Kconfig
+++ b/sound/soc/Kconfig
-@@ -56,6 +56,7 @@
+@@ -56,6 +56,7 @@ source "sound/soc/spear/Kconfig"
source "sound/soc/tegra/Kconfig"
source "sound/soc/txx9/Kconfig"
source "sound/soc/ux500/Kconfig"
@@ -10,14 +10,14 @@
source "sound/soc/codecs/Kconfig"
--- a/sound/soc/Makefile
+++ b/sound/soc/Makefile
-@@ -33,3 +33,4 @@
+@@ -33,3 +33,4 @@ obj-$(CONFIG_SND_SOC) += spear/
obj-$(CONFIG_SND_SOC) += tegra/
obj-$(CONFIG_SND_SOC) += txx9/
obj-$(CONFIG_SND_SOC) += ux500/
+obj-$(CONFIG_SND_SOC) += mtk/
--- a/sound/soc/codecs/Kconfig
+++ b/sound/soc/codecs/Kconfig
-@@ -725,7 +725,7 @@
+@@ -725,7 +725,7 @@ config SND_SOC_WM8955
tristate
config SND_SOC_WM8960
@@ -7371,7 +7371,7 @@
+#endif
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
-@@ -1851,7 +1851,8 @@
+@@ -1851,7 +1851,8 @@ static int soc_probe(struct platform_dev
/* Bodge while we unpick instantiation */
card->dev = &pdev->dev;
@@ -8107,7 +8107,7 @@
{ 0x4, 0x0000 },
{ 0x5, 0x0008 },
{ 0x6, 0x0000 },
-@@ -88,8 +89,8 @@
+@@ -88,8 +89,8 @@ static const struct reg_default wm8960_r
{ 0x25, 0x0050 },
{ 0x26, 0x0000 },
{ 0x27, 0x0000 },
@@ -8118,7 +8118,7 @@
{ 0x2a, 0x0040 },
{ 0x2b, 0x0000 },
{ 0x2c, 0x0000 },
-@@ -127,8 +128,15 @@
+@@ -127,8 +128,15 @@ struct wm8960_priv {
int playback_fs;
};
@@ -8135,7 +8135,7 @@
/* enumerated controls */
static const char *wm8960_polarity[] = {"No Inversion", "Left Inverted",
"Right Inverted", "Stereo Inversion"};
-@@ -181,8 +189,8 @@
+@@ -181,8 +189,8 @@ static int wm8960_get_deemph(struct snd_
struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol);
struct wm8960_priv *wm8960 = snd_soc_codec_get_drvdata(codec);
@@ -8146,7 +8146,7 @@
}
static int wm8960_put_deemph(struct snd_kcontrol *kcontrol,
-@@ -200,6 +208,70 @@
+@@ -200,6 +208,70 @@ static int wm8960_put_deemph(struct snd_
return wm8960_set_deemph(codec);
}
@@ -8217,7 +8217,7 @@
static const DECLARE_TLV_DB_SCALE(adc_tlv, -9700, 50, 0);
static const DECLARE_TLV_DB_SCALE(dac_tlv, -12700, 50, 1);
static const DECLARE_TLV_DB_SCALE(bypass_tlv, -2100, 300, 0);
-@@ -542,6 +614,7 @@
+@@ -542,6 +614,7 @@ static int wm8960_set_dai_fmt(struct snd
/* set iface */
snd_soc_write(codec, WM8960_IFACE1, iface);
@@ -8225,7 +8225,7 @@
return 0;
}
-@@ -623,11 +696,16 @@
+@@ -623,11 +696,16 @@ static int wm8960_set_bias_level_out3(st
break;
case SND_SOC_BIAS_PREPARE:
@@ -8242,7 +8242,7 @@
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
regcache_sync(wm8960->regmap);
-@@ -650,9 +728,13 @@
+@@ -650,9 +728,13 @@ static int wm8960_set_bias_level_out3(st
/* Set VMID to 2x250k */
snd_soc_update_bits(codec, WM8960_POWER1, 0x180, 0x100);
@@ -8256,7 +8256,7 @@
/* Enable anti-pop features */
snd_soc_write(codec, WM8960_APOP1,
WM8960_POBCTRL | WM8960_SOFT_ST |
-@@ -661,6 +743,7 @@
+@@ -661,6 +743,7 @@ static int wm8960_set_bias_level_out3(st
/* Disable VMID and VREF, let them discharge */
snd_soc_write(codec, WM8960_POWER1, 0);
msleep(600);
@@ -8264,7 +8264,7 @@
break;
}
-@@ -853,10 +936,15 @@
+@@ -853,10 +936,15 @@ static int wm8960_set_dai_pll(struct snd
if (pll_div.k) {
reg |= 0x20;
@@ -8281,7 +8281,7 @@
}
snd_soc_write(codec, WM8960_PLL1, reg);
-@@ -888,7 +976,11 @@
+@@ -888,7 +976,11 @@ static int wm8960_set_dai_clkdiv(struct
snd_soc_write(codec, WM8960_PLL1, reg | div);
break;
case WM8960_DCLKDIV:
@@ -8293,7 +8293,7 @@
snd_soc_write(codec, WM8960_CLOCK2, reg | div);
break;
case WM8960_TOCLKSEL:
-@@ -962,7 +1054,7 @@
+@@ -962,7 +1054,7 @@ static int wm8960_probe(struct snd_soc_c
{
struct wm8960_priv *wm8960 = snd_soc_codec_get_drvdata(codec);
struct wm8960_data *pdata = dev_get_platdata(codec->dev);
@@ -8302,7 +8302,7 @@
wm8960->set_bias_level = wm8960_set_bias_level_out3;
-@@ -973,11 +1065,7 @@
+@@ -973,11 +1065,7 @@ static int wm8960_probe(struct snd_soc_c
wm8960->set_bias_level = wm8960_set_bias_level_capless;
}
diff --git a/target/linux/ramips/patches-3.18/0304-baud_250000.patch b/target/linux/ramips/patches-3.18/0304-baud_250000.patch
index eebe31c918..6a364c06c6 100644
--- a/target/linux/ramips/patches-3.18/0304-baud_250000.patch
+++ b/target/linux/ramips/patches-3.18/0304-baud_250000.patch
@@ -1,6 +1,6 @@
--- a/drivers/tty/serial/serial_core.c
+++ b/drivers/tty/serial/serial_core.c
-@@ -356,6 +356,9 @@
+@@ -356,6 +356,9 @@ uart_get_baud_rate(struct uart_port *por
else if (flags == UPF_SPD_WARP)
altbaud = 460800;